Factory docs, home
Page navigation

A record from the Factory repository, docs/discovery-sources-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-29T14:01:50Z",
  "component": "Discovery sources (src/discovery-sources.ts, src/discovery-text.ts): lifecycle increment 2",
  "base": "217887b",
  "branch": "factory/lifecycle-sources",
  "disposition": "implemented by Opus 5.5, tests first; an independent adversarial pass (17 tests) found 17 defects, all fixed; Astra rounds 1-4 FAIL (five, three, one and one findings), all fixed; Astra round 5 PASS on the fixed revision (<local evidence archive>), so the increment is accepted locally and committed; afterwards only status wording changed (both module pages, the build review, the factory model, the Intelligence pages, the guide index, the lifecycle note and the README paragraph), and the site, checks and this receipt were refreshed. Supersedes the drafts preserved at <local evidence archive> to receipt-r4-draft.json",
  "scope": "docs/lifecycle.md §9 row 2 only: the deterministic discovery-sources collector, run only against a loopback corpus the tests serve. No live web request, model call, sign-in use, schedule, LaunchAgent or other lifecycle module is built or run; nothing composes it.",
  "spec": {
    "path": "<local evidence archive>",
    "sha256": "c84d125badf586044f3fc57ddba22ab47d04a0da75e8649b3cd68eff8e4c86a0",
    "review": "Astra round 3 PASS on the design only (<local evidence archive>)"
  },
  "acceptance": {
    "identical Captures on replay": "test/discovery-sources.test.ts \"identical Captures on replay: ...\" and \"two collectors racing on one occurrence ...\"",
    "oversized refused": "test/discovery-sources.test.ts \"a fetch over 2 MiB is refused ...\" and \"Capture text over 4 KiB is refused item by item ...\"",
    "forged quote": "test/discovery-sources.test.ts \"a Citation quotes at most 15 words verbatim; ...\" and \"a Capture, Citation or later collection is trusted only as this journal recorded it ...\"; adversarial: re-labelled, re-dated and fabricated Citations, unspaced over-long quotes, cite-then-verify",
    "cross-domain duplicate": "test/discovery-sources.test.ts \"novelty: new, unchanged, changed and repeat, with a cross-domain duplicate detected\"; adversarial: late occurrences are still priors",
    "drift": "test/discovery-sources.test.ts \"drift: ...\"; adversarial: refused items are unknown, earlier collections are refused",
    "injected instructions": "test/discovery-sources.test.ts \"injected instructions in page text are carried as inert data ...\"; adversarial: invisible tag characters are removed",
    "owner-email bait": "test/discovery-sources.test.ts \"owner-email bait: ...\" and \"validators keep no page text: ...\"; adversarial: soft-hyphen address, validators"
  },
  "ownerDecisions": {
    "state": "open: every default below is a proposal, not a signed commission (S5 unsigned: no brief or allow-list is commissioned, so any valid brief is taken as confirmed)",
    "defaultsUsed": [
      "13: public pages only; 15-word quotes; a 35-day cache"
    ],
    "proposalsOfThisIncrement": [
      "a full occurrence's 32 MiB byte Budget (spec §5 sets none)",
      "maxSources 64, maxDomains 32, maxUrlLength 256, maxKeyLength 64, maxValidatorLength 128, maxItemsPerPage 100, maxItemsPerOccurrence 1000, maxCapturesPerOccurrence 600, maxStartsPerDay 64, a 30 s fetch timeout (at most 120 s), a 1 024-unit quote",
      "strict word counting: each character of a script written without spaces is a word"
    ]
  },
  "adversarial": {
    "tests": "test/discovery-sources-adversarial.test.ts (17), unchanged by the fixer, sha256 d7c69f6e208c159962ffd11e6d3e5b2bd1090323786a75e2f07ba815eb63e1d3",
    "beforeFixes": "0 of 17 pass (<local evidence archive>)",
    "dispositions": "<local evidence archive>",
    "dispositionsSha256": "e4882456e993371c61aaf243d002c5cefff7348d8250f422d0a9af0f2ec0778a",
    "result": "all 17 confirmed and fixed, each class closed; none weakened, skipped or disputed"
  },
  "policyDigests": {
    "method": "taskPolicyDigest(taskId) for every task before the increment and after the fixes; <local evidence archive>, policy-digests-fix.json and policy-digests-fix-compare.txt",
    "unchanged": {
      "project-guidance/summarise": "sha256:d80572acf57a2d8295820c18099f4b96dea310dbf4cdfda20edff0ec887afd2a",
      "producer/propose": "sha256:c968ae728c657db94b3de4a07c86be013d3a9462aa3c503be5280a8011909375",
      "repository-assurance/review": "sha256:576b016aaac6d4d0e4fb5cd381c95c530edb1cf89d435969a23bc02a232ac963",
      "repository-assurance/fresh-scenario": "sha256:e0d63054ba0fdb23647381112cafd457df8e38e0b42e56506360febfb44b3567",
      "brief/explain-trade-offs": "sha256:9ab750bbfab79dfc494d2cb557e4c78cd991400a03becfe21602f0220ac1702a",
      "planning/propose-improvement": "sha256:cc1e170b76dec4cdb34121439343625f6500590854c7448d58ee3eefd79c52ba",
      "signal-intake/triage": "sha256:39e85bcdbafe046bccd6ee7834fd120d58dc71a050b921381d9d332c5d09f5b1",
      "signal-intake/search": "sha256:97d3de4cf937115d9bb26675e99de97a73f79e1b41ade55cdc1bc47815c0d5bb",
      "opportunity-synthesis/propose": "sha256:9520c8c24e984ab93e4a2935bbc722a4e68cef7d6b4616b0039e52e8871babe6",
      "growth/draft-pack": "sha256:cb99fbe11548af06a025b97ff84146db4ef32291ffc6388e34bc5894baa777ae",
      "capability-retirement/draft-case": "sha256:0204c52414a5aafbfcfe83cbae19d7674f4e07eea29ca3f7ec3d34fcf3effb20"
    }
  },
  "files": {
    "src/discovery-sources.ts": "50049a1ad1ca54242814331ad537e0fdb3ee541be87bffda1616569ecec6d253",
    "src/discovery-text.ts": "85465c48ab32df01ab2942606db2c75a846d8d0726bc7d1a25c75060ee27e993",
    "src/intelligence.ts": "ad3e6b255fc07c2f3fd77d3c42a66d1dc8cc80337ca6da86f168fea445b80bb9",
    "test/discovery-sources.test.ts": "9063eaf30df38f397de55e3d4e63e35f071205f086f38a72a98f1c59efa300c3",
    "test/discovery-text.test.ts": "5021a2893e58b2d1b78d8646aaa535dabe2065c32bf2b5f2224bb7a6852104a0",
    "test/discovery-sources-adversarial.test.ts": "d7c69f6e208c159962ffd11e6d3e5b2bd1090323786a75e2f07ba815eb63e1d3",
    "test/helpers/discovery-corpus.ts": "d17c0a909ab41d904a71ac2cae57a560be9c8280091869e4bdadcc44ae064330",
    "test/intelligence-lifecycle.test.ts": "9911745e2a85b0994389c407b7c961a30e0718c5e1833e9cd28b22ed0899a69a",
    "docs/agents/discovery-sources.md": "a54671a8d0f3283bdbfb8046ccac204690a2d2d1af1bf52d3a50e629f6ab91d4",
    "docs/guide/discovery-sources.md": "76300b0d4c66f157ca118b676ef9f7fa611ebcdcf6df4cf21713421b532b9baf"
  },
  "producer": {
    "model": "claude-opus-5-5",
    "effort": "not reported to the session",
    "role": "implementer and fixer; not the verifier"
  },
  "verification": {
    "logDirectory": "<local evidence archive>",
    "focused": {
      "command": "node --test test/discovery-sources.test.ts test/discovery-text.test.ts test/discovery-sources-adversarial.test.ts test/intelligence.test.ts test/intelligence-lifecycle.test.ts test/intelligence-adversarial.test.ts test/intelligence-lifecycle-adversarial.test.ts test/docs-site.test.ts",
      "passed": 136,
      "failed": 0,
      "skipped": 0,
      "log": "37-status-focused.log",
      "logSha256": "7f19e08b88c477758558bd55953081522bca8220fa1f4738fb5e882a3cbe6455",
      "reviewedRevisionLog": "33-r4fix-focused.log"
    },
    "typecheck": {
      "command": "npx tsc --project tsconfig.json",
      "exit": 0,
      "log": "36-status-tsc.log",
      "logSha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
      "reviewedRevisionLog": "32-r4fix-tsc.log"
    },
    "full": {
      "command": "npm run check",
      "passed": 997,
      "failed": 0,
      "skipped": 0,
      "log": "38-status-full-check.log",
      "logSha256": "f2f2301d335bb78c60e9f9d1f383392a0b51c84cb83d4a1008f29826b15bcde8",
      "reviewedRevisionLog": "34-r4fix-full-check.log",
      "note": "run after the post-verdict status wording and site rebuild, with this receipt at its content before the final refresh; only the receipt changed afterwards. The reviewed revision gave the same counts (34-r4fix-full-check.log)"
    },
    "docs": {
      "command": "rm -rf site && npm run docs",
      "pages": 60,
      "log": "35-status-docs-build.log",
      "logSha256": "41f570e2cbe7c75eba18eab29cbf3c6f2415ff32276ebc866e438985bb66c31c",
      "reviewedRevisionLog": "31-r4fix-docs-build.log"
    },
    "dashboard": "not run: apps/dashboard is unchanged"
  },
  "review": {
    "state": "passed",
    "reviewer": "Astra (gpt-6-astra, high) via codex exec, read-only; independent of the implementer",
    "adversarial": "17 findings, all fixed (dispositions.md)",
    "rounds": [
      {
        "round": 1,
        "verdict": "FAIL",
        "report": "<local evidence archive>",
        "sha256": "56596ff1f6515174e88e44f8d7c30b29cface12803d232868f2a6b5bb78ec876",
        "findings": 5,
        "disposition": "all five confirmed and fixed (dispositions.md, Astra round 1)"
      },
      {
        "round": 2,
        "verdict": "FAIL",
        "report": "<local evidence archive>",
        "sha256": "e047007c417ee2de8c1be3a73f3000c7520831801d1099efbf3508fcb4c2ccad",
        "findings": 3,
        "disposition": "round 1 findings 1, 2, 4 and 5 confirmed resolved and finding 3 partly; all three new findings confirmed and fixed (dispositions.md, Astra round 2)"
      },
      {
        "round": 3,
        "verdict": "FAIL",
        "report": "<local evidence archive>",
        "sha256": "8d1dfeb3a1e0c79f265786831d418fef33f98cdb3b0fa2b644c819afd9c60e66",
        "findings": 1,
        "disposition": "round 2 findings 2 and 3 confirmed resolved and finding 1 partly; the finding confirmed and fixed (dispositions.md, Astra round 3)"
      },
      {
        "round": 4,
        "verdict": "FAIL",
        "report": "<local evidence archive>",
        "sha256": "609544ca71e723462b6f38271bb1373dee98656e8d5dafe5030bc7a912ce7a1d",
        "findings": 1,
        "disposition": "round 3 finding 1's cases confirmed resolved; the broader finding confirmed and fixed (dispositions.md, Astra round 4)"
      },
      {
        "round": 5,
        "verdict": "PASS",
        "report": "<local evidence archive>",
        "sha256": "291c1e68b3398f71a4378204cee922a7db6d92e5a0850af968de253f5b012cb8",
        "findings": 0,
        "disposition": "round 4 confirmed resolved and rounds 1-3 and the adversarial dispositions still resolved; no material finding; receipt hashes matched and the recorded checks (997 full, 136 focused) were read; 19 read-only text tests run independently"
      }
    ],
    "verdict": "Astra round 5 PASS on the fixed revision (<local evidence archive>)"
  },
  "statusRecordedAt": "2026-09-29"
}

Source: docs/discovery-sources-receipt.json