Factory docs, home

A record from the Factory repository, docs/reference-copy-receipt.json, shown as committed except that its local paths appear as placeholders in angle brackets, such as <local evidence archive>, standing for files that are not published. Every hash, date and count is as recorded. The build review says what the Factory's receipts support.

{
  "recordedAt": "2026-09-29T23:40:08.000000+00:00",
  "reworkedAt": "2026-09-30T01:14:00.000000+01:00",
  "reworkedAgainAt": "2026-09-30T04:03:00.000000+01:00",
  "base": "cc8d5b7",
  "mergedWith": "c044d5b",
  "disposition": "accepted-local",
  "scope": "Packet P2: apply style-rules.md to docs/design.md, docs/values.md and docs/lifecycle.md, fixing the coordinator review's FAIL (no implementation existed). Reworked once to fix Astra r1 and Fable r1 findings, then again to fix coordinator review round 2 findings; see review below and ledger.md.",
  "implementer": {
    "model": "claude-sonnet-5",
    "effort": "not recorded by the dispatch",
    "tool": "Claude Code"
  },
  "changedFiles": {
    "docs/design.md": {
      "sha256": "3da8dcde51285843a6c3504be2fdc230bc8ccbfcae4e1c8529550c8c9124bb9c",
      "change": "r0: line 179 only, \"value loop\" -> \"value lifecycle\" (style-rules.md B1). r2 rework (coordinator review r2 finding 2): line 14, \"...retired deliberately when it no longer earns its cost\" -> \"...retired deliberately when its value no longer covers its cost\" (part C, the figurative-verb pattern). Line count (179), headings, and lines 9, 101 and 115 unchanged throughout; numstat against cc8d5b7 is now 2/2 (check-design.mjs)."
    },
    "docs/lifecycle.md": {
      "sha256": "c5debf860a390ed53d3a1b1636d151440e5f38e594f8be18dc9b2b5fcc659567",
      "change": "r0: heading \"## 3. The loop\" -> \"## 3. The flow\" (B1); one 67-word sentence and one 64-word sentence split on existing punctuation (B15); a provenance sentence added citing this edit and the change table. r1 rework (Astra r1, Fable r1 finding 1): the six numbered Principles items (lines 9, 10, 11, 12, 14, 15) had their bold labels removed; four (10, 11, 14, 15) kept a bare label-and-colon opening, while line 12 (item 4)'s mid-sentence colon, which had joined two halves of one sentence, was also made a full stop. r2 rework (coordinator review r2 finding 1): lines 10, 11, 14 and 15 rewritten as plain sentences (no label, no leading colon); line 14 spells out \"at most 5\" for \"\u2264 5\" (part C); line 13's bold lead-in now ends in a full stop, for consistency. Line 9 unchanged (its colon introduces a following list, which part C allows). Section 4, every path:line anchor, every table row and the one fenced code block unchanged throughout."
    },
    "docs/values.md": {
      "sha256": "435b3ecb2042e861df605bffe12bb9613ba44c823fa81ac028ade9e70bc0b5d5",
      "change": "r0: no change. r1 rework: branch merged with main (c044d5b, \"Make personality and fun a Factory core value\"), inheriting main's new intro sentence and value 7; the merge introduced one B10 finding (a curly apostrophe in \"Factory's\", line 3) fixed as the single-character change style-rules.md allows for wording-only fixes. No fact, value or claim altered beyond what the merge itself carried."
    }
  },
  "unchangedFiles": {},
  "verification": {
    "checkDesignScript": "PASS (<local evidence archive>, check-design.log)",
    "checkLifecycleScript": "PASS (<local evidence archive>, check-lifecycle.log)",
    "checkStyleScript": "PASS after the r1 rework extended it (<local evidence archive>): B14 now matches numbered list items as well as hyphen bullets; B8 now flags a spaced em dash used as punctuation; B15 and B16 are wired into the checked rule set, not merely defined. Re-run against the r2 state: still PASS, no finding outside docs/design.md line 115, docs/lifecycle.md section 4 and table cells. Note: check-style.mjs's mechanical B14 pattern does not itself catch a bold-label-and-colon opening once the bold is removed (part C, the rule this round's coordinator review found); that is a human/independent-review finding, not a lint gap.",
    "docsBuildExit": 0,
    "docsBuildWarnings": 0,
    "focusedTests": {
      "files": [
        "test/docs-site.test.ts",
        "test/website.test.ts",
        "test/intelligence-lifecycle.test.ts",
        "test/intelligence-lifecycle-adversarial.test.ts",
        "test/public-build.test.ts",
        "test/design-tokens.test.ts"
      ],
      "pass": 118,
      "fail": 0,
      "testFileChanged": false
    },
    "npmRunCheck": {
      "typecheckPassed": true,
      "tests": 1236,
      "pass": 1236,
      "fail": 0,
      "cancelled": 0,
      "log": "<local evidence archive>",
      "note": "P2-A7 (Astra r1 finding, Fable r1 finding 1): independent review (Fable 5.1) re-ran `npm run check` in this lane at be63dff on a quiet host, 30 September 2026, 04:58 to 05:05 BST: typecheck passed, 1236 tests, 1236 pass, 0 fail, 0 cancelled, exit 0 (fable-r1-be63dff-npm-check-2.log). The lane's two earlier runs and the reviewer's own first, contended run failed only three short-deadline process tests: test/repository-integration.test.ts:295, test/repository-nlink-adversarial.test.ts:454 and test/claude-producer-boundaries.test.ts:164, while other churn-wave-1 lanes' full suites loaded the host at the same time (11 to 39 concurrent node --test processes observed); this stays the suspected cause, not a confirmed one. None of these tests touch this packet's docs-only scope. See ledger.md's r2 close-out."
    }
  },
  "review": [
    {
      "reviewer": "Fable 5.1",
      "verdict": "PASS",
      "commit": "be63dff",
      "scope": "Document, generated-site and test bytes unchanged through 370b675; requested metadata corrections independently checked by Astra."
    },
    {
      "reviewer": "Astra",
      "verdict": "PASS",
      "commit": "370b675",
      "report": "<local evidence archive>"
    },
    {
      "reviewer": "Independent Codex reviewer",
      "verdict": "PASS",
      "commit": "370b675",
      "report": "<local evidence archive>"
    }
  ],
  "limits": [
    "This receipt covers only P2's own scope (design.md, values.md, lifecycle.md prose). It establishes no customer value and closes no epic.",
    "main advanced to c044d5b (\"Make personality and fun a Factory core value\") during this packet's lifetime; the r1 rework merged it in (see mergedWith and ledger.md) rather than leaving the receipt pinned to a drifted base.",
    "docs/lifecycle.md's provenance sentence cites P2/changes.md, an archive path outside the repository and not covered by any receipt hash.",
    "The packet named Sonnet 5.5 (high); the dispatch ran claude-sonnet-5 with no effort recorded; the coordinator accepted this as the owner's 'Claude Sonnet only' instruction (coordinator review r2, item 7)."
  ]
}

Source: docs/reference-copy-receipt.json