diff --git a/research/from-model-output-to-accepted-state/.gitattributes b/research/from-model-output-to-accepted-state/.gitattributes new file mode 100644 index 0000000..80494f3 --- /dev/null +++ b/research/from-model-output-to-accepted-state/.gitattributes @@ -0,0 +1,5 @@ +* -text + +evidence/blind-prompt/PROMPT.md whitespace=-blank-at-eof +evidence/device-activation/BUILD-RECEIPT-000001.md whitespace=-blank-at-eof +paper/From-Model-Output-to-Accepted-State-Owner-Review-v4-LinkedIn.md whitespace=-trailing-space diff --git a/research/from-model-output-to-accepted-state/BOUNDARIES.md b/research/from-model-output-to-accepted-state/BOUNDARIES.md new file mode 100644 index 0000000..e9687d3 --- /dev/null +++ b/research/from-model-output-to-accepted-state/BOUNDARIES.md @@ -0,0 +1,41 @@ +# Claim and reuse boundaries + +This file is load-bearing. A result copied from this packet should retain the relevant boundary. + +## What the checks establish + +- The files match the byte lengths and SHA-256 digests in `release-manifest.json`. +- The retained JSON reports parse and remain byte-identical to the audited local outputs. +- The paper outputs passed the local structure, visual, and privacy checks recorded in `evidence/RELEASE-BUILD-RECEIPT-000004.md`. The dependency-bearing validator used for those preparation checks is not included in this zero-dependency public packet. +- The finite fixture results are exact for the frozen records, events, queries, candidate fields, equality rules, and implementations named in their reports. +- `evidence/editorial-review/PUBLIC-DISPOSITION.md` records the owner's minimized editorial decisions and the supplied private source's byte identity. It does not authenticate the reviewer attribution or promote review assertions into evidence. + +## What the checks do not establish + +- scientific peer review, independent replication, mathematical novelty, or publication acceptance; +- truth of source assertions, trusted time, authorship identity, causal validity, or authority; +- production safety, security, privacy compliance, legal compliance, or fitness for a particular deployment; +- a universal minimal state, universal proof canonicalizer, optimal policy, or complete literature review; +- that a probability forecast is an outcome, that one resolved case establishes calibration, or that agent agreement is evidence of external truth; +- that requested model labels in the frozen-oracle packet attest the runtime model, seed, sampling process, or independence of the responses; +- that the private editorial review is evidence, authorship, peer review, source truth, or independent validation. +- that retained-source IDs expose or reproduce the corresponding private bytes. + +## Vocabulary crosswalk + +- **Output**: a produced representation awaiting qualification. It is not yet an outcome. +- **Outcome**: a later qualified observation about what occurred under a declared resolution rule. +- **UNRESOLVED**: a condition result in the paper. It does not silently become PASS. +- **HOLD**: a proposed operational disposition for unresolved required conditions. +- **Frozen-oracle packet**: BP-001, whose oracle and semantic rubric were fixed before collection and withheld from responders. The legacy `evidence/blind-prompt/` path is retained for receipt continuity. The term does not imply blinded assignment or blinded assessment. +- **BLOCK**: the execution result tested for BP-001's frozen `HOLD` value. BP-001 did not itself test the paper's `UNRESOLVED -> HOLD` crosswalk. +- **Accepted state**: the projection produced by the declared reducer from accepted events under pinned policy. It is not the entire world state. + +## Publication boundary + +This directory is prepared for review by pull request. An open PR, branch, commit, or passing verifier does not authorize merge, release tagging, DOI registration, deployment, or a claim that the owner has accepted every semantic mapping. + +The private editorial review and its locator remain outside the public packet. +Only the minimized owner disposition is authorized for this review surface. +Absolute local-machine paths, attachment locators, workspace-only paths, raw review +text, and private prompt responses are outside the publication boundary. diff --git a/research/from-model-output-to-accepted-state/CHANGELOG.md b/research/from-model-output-to-accepted-state/CHANGELOG.md new file mode 100644 index 0000000..66dbc2d --- /dev/null +++ b/research/from-model-output-to-accepted-state/CHANGELOG.md @@ -0,0 +1,42 @@ +# Owner-review revision lineage + +This changelog describes the public owner-review packet. Historical receipts remain +unchanged; each later receipt names its predecessor. + +## 0.1.0-owner-review.1 + +- Initial minimized public paper packet. +- Added authored source, figures, bounded evidence, license, boundaries, manifest, + and separate Python and JavaScript release verifiers. +- Receipt: `evidence/RELEASE-BUILD-RECEIPT-000001.md`. +- PDF SHA-256: `1707ffab851bc963a2874a6303c1e2d2aa5c9db2e262343d921f9d7df839b4ca`. + +## 0.1.0-owner-review.2 + +- Dispositioned private editorial feedback without publishing the raw review. +- Calibrated the diagnostic-count, refusal-arm, response-packet, operator-threat, + non-stale-label, and source-location language. +- Added LinkedIn document compatibility checks and a complete 35-page visual pass. +- Receipt: `evidence/RELEASE-BUILD-RECEIPT-000002.md`. +- PDF SHA-256: `019e372263176cb693e00a2be548c5f0dfb04c5027cb78b1f107070fc2e1afc4`. + +## 0.1.0-owner-review.3 + +- Separated the auditability contribution from unsupported-claim accuracy results. +- Added exploratory pairwise Fisher values with their clustering ceiling. +- Added the exact standalone Lean query-quotient source and compile receipt. +- Gave revised outputs a distinct v3 filename and repeated visual, technical, + privacy, and release-packet checks. +- Receipt: `evidence/RELEASE-BUILD-RECEIPT-000003.md`. +- PDF SHA-256: `26e7f35e5e4fb125ba4339d0179cccf662d5d0fcbf09d8e27693b3b74fb0767c`. + +## 0.1.0-owner-review.4 + +- Standardized BP-001 as the frozen-oracle packet while retaining its legacy path + for receipt continuity. +- Added the explicit Lean chronology and clean-room reproduction boundary. +- Added packet-local line-ending protection and a clean-clone runbook. +- Added a marker-blind claim register, separate author key, and external-review + template so demotion test 6 can be executed. +- Added this in-document and packet-level revision lineage. +- Final output digests are recorded in release receipt 000004. diff --git a/research/from-model-output-to-accepted-state/CITATION.cff b/research/from-model-output-to-accepted-state/CITATION.cff new file mode 100644 index 0000000..3127ed1 --- /dev/null +++ b/research/from-model-output-to-accepted-state/CITATION.cff @@ -0,0 +1,27 @@ +cff-version: 1.2.0 +message: "If you use or build on this owner-review release, cite the exact version or commit and retain its stated limitations." +title: "From Model Output to Accepted State" +type: report +authors: + - family-names: Tiller + given-names: Jake +version: "0.1.0-owner-review.4" +date-released: 2026-08-15 +license: CC-BY-4.0 +repository-code: "https://github.com/JakeTOpenSource/Resilience-Ledger" +url: "https://github.com/JakeTOpenSource/Resilience-Ledger/tree/main/research/from-model-output-to-accepted-state" +abstract: >- + Owner-review draft of a typed boundary from probabilistic model output to + accepted state, with deterministic replay, finite query-sufficiency and + transition-refinement fixtures, and a separately audited probabilistic + forecast lane. The packet includes bounded local evidence and offline + integrity verification; it is not an independent validation or deployment + authorization. +keywords: + - state transition protocol + - accepted state + - deterministic replay + - query sufficiency + - finite-state refinement + - probabilistic forecasts + - AI governance diff --git a/research/from-model-output-to-accepted-state/LICENSE.txt b/research/from-model-output-to-accepted-state/LICENSE.txt new file mode 100644 index 0000000..71db565 --- /dev/null +++ b/research/from-model-output-to-accepted-state/LICENSE.txt @@ -0,0 +1,20 @@ +From Model Output to Accepted State +Copyright (c) 2026 Jake Tiller + +This release packet, including its manuscript, figures, documentation, evidence +reports, and verification source, is licensed under the Creative Commons +Attribution 4.0 International License (CC BY 4.0). + +You may share and adapt the material for any purpose, including commercially, +provided that you give appropriate credit, provide a link to the license, and +indicate whether changes were made. + +Human-readable summary: https://creativecommons.org/licenses/by/4.0/ +Full legal text: https://creativecommons.org/licenses/by/4.0/legalcode + +The material is provided AS IS, without warranties or conditions of any kind. +It is independent educational research, not legal, compliance, security, +medical, financial, or other professional advice. Names and trademarks of cited +projects and organizations belong to their respective owners. This license does +not relicense third-party works that are quoted, cited, or linked. Citation does +not imply affiliation or endorsement. diff --git a/research/from-model-output-to-accepted-state/README.md b/research/from-model-output-to-accepted-state/README.md new file mode 100644 index 0000000..9068916 --- /dev/null +++ b/research/from-model-output-to-accepted-state/README.md @@ -0,0 +1,68 @@ +# From Model Output to Accepted State + +Status: **OWNER-REVIEW DRAFT**
+Release packet: `0.1.0-owner-review.4`
+Recorded: 2026-08-15 + +This packet publishes a bounded draft, its readable outputs, the authored manuscript and figure source, minimized local evidence reports, and offline integrity checks. The dependency-bearing assembly helper remains outside this zero-dependency public boundary. This is a review surface, not a claim of publication acceptance, independent replication, production safety, or deployment authority. + +## Start here + +1. Read [`paper/From-Model-Output-to-Accepted-State-Owner-Review-v4.pdf`](paper/From-Model-Output-to-Accepted-State-Owner-Review-v4.pdf). +2. Read [`BOUNDARIES.md`](BOUNDARIES.md) before reusing a result. +3. Follow [`REPRODUCE.md`](REPRODUCE.md) for a clean-clone check. +4. Run the packet verifier: + + ```powershell + powershell -NoProfile -ExecutionPolicy Bypass -File .\tools\verify.ps1 + ``` + +The verifier is offline. It checks the release allowlist, raw byte lengths, SHA-256 digests, payload root, UTF-8 boundaries, JSON syntax, Python syntax, PDF signature, and selected privacy and credential patterns. The JavaScript and Python implementations must return identical canonical reports. + +The packet adds no package dependency or runtime network call. The owner workspace used Chrome and pypdf to render and inspect the retained PDF, but those optional build dependencies and their helper scripts are deliberately outside this public release boundary. The authored content, figures, styles, rendered outputs, evidence reports, and raw-byte verification floor are included. + +## What is in the packet + +| Path | Function | +|---|---| +| `paper/` | Tagged owner-review PDF and a LinkedIn-safe Markdown rendering. | +| `content_*.py`, `figures.py`, `style.py`, `figures/` | Authored manuscript, figure source, rendered SVG figures, and print style. | +| `evidence/device-activation/` | Frozen finite query-sufficiency result and its original local receipt. | +| `evidence/transition-stable-quotient/` | Frozen future-stability refinement result and its original local receipt. | +| `evidence/blind-prompt/` | Legacy receipt-stable locator for the frozen-oracle packet prompt and aggregate-only public summary. Raw responses, quote-bearing reports, per-response digests, and owner-private mappings are excluded. | +| `evidence/editorial-review/` | Public minimized owner disposition of a private editorial review. The raw review and private locator are excluded. | +| `evidence/lean-query-quotient/` | Exact standalone Lean source and append-only pinned compile receipt. The module is not imported by the package root and is not an upstream Mathlib contribution. | +| `release-manifest.json` | Complete raw-byte allowlist for every packet file except the manifest itself. | +| `claims.json`, `author-markers.json`, `reviewer-markers.template.json` | Marker-blind claims, the separate author key, and a reviewer template for demotion test 6. | +| `REPRODUCE.md`, `CHANGELOG.md` | Clean-clone verification and append-only owner-review revision lineage. | +| `tools/` | Deterministic manifest writer plus separate Python and JavaScript verifiers derived from one release contract. | + +## Bounded results + +- The paper separates candidate output, authorized action, observation, acceptance, and later outcome rather than treating them as one status. +- In one synthetic 151-trace device fixture, all 1,023 nonempty subsets of ten declared candidate fields were checked for seven declared queries. Exactly one five-field subset was minimum by field count within that frozen model. It is not a universal device state or bit minimum. +- In the same finite model, the full seven-query signature was already transition-stable at 33 classes. Removing `nextPermittedActions` produced 18 static classes that refined to the same 33 classes after one round. This is a local Moore/Myhill-Nerode-style result, not new automata theory. +- Three frozen response configurations reproduced 27 of 27 exact answer fields in BP-001, the frozen-oracle packet. Six semantic functions were unambiguously unanimous; other semantic mappings remain bounded or unresolved as stated in the paper. Requested model labels were metadata, not runtime identity attestation. + +## Editorial review disposition + +[`evidence/editorial-review/PUBLIC-DISPOSITION.md`](evidence/editorial-review/PUBLIC-DISPOSITION.md) +binds one private owner-supplied editorial review by byte count and SHA-256 and +publishes only the owner's minimized dispositions. The reviewer attribution is +owner-attested, not runtime-authenticated. The review is editorial assistance, +not evidence, authorship, peer review, source truth, or independent validation. + +## Related-work credit + +With his permission, Jake Macdonald's OpenGoldenRatio (OGR) v0.1 is cited as parallel related work. Macdonald reviewed the bounded comparison and helped clarify the distinction between STP's governed path from candidate output to accepted state and OGR's containment of actor or agent relations. He contributed no code, data, experiments, or authorship to this release. See [`RELATED-WORK.md`](RELATED-WORK.md). + +## Reuse + +The packet is licensed under CC BY 4.0. Cite the exact version or commit you used, keep the status and limitations attached to extracted results, and identify modifications. A passing integrity check establishes byte consistency with this manifest; it does not establish that a claim is true or authorized for a new context. + +The release contains no absolute local-machine path, Codex attachment locator, +workspace-only `work/...` locator, raw prompt response, private review text, account +credential, email address, phone number, or local network address. Retained private +inputs are identified only by bounded source IDs and digests. + +See repository for full list of sources and contributions. diff --git a/research/from-model-output-to-accepted-state/RELATED-WORK.md b/research/from-model-output-to-accepted-state/RELATED-WORK.md new file mode 100644 index 0000000..2fd61ed --- /dev/null +++ b/research/from-model-output-to-accepted-state/RELATED-WORK.md @@ -0,0 +1,23 @@ +# Related work and contribution boundary + +## OpenGoldenRatio + +Jake Macdonald granted permission to cite *OpenGoldenRatio (OGR) v0.1: Containment-First Multi-Agent Governance Protocol* as parallel related work and reviewed the comparison in this draft. + +The comparison retained in the paper is narrow: + +- STP follows the governed transformation from candidate output toward accepted state. +- OGR focuses on containment and governed relationships among actors or agents, including whether a permitted action may propagate consequence. +- Both separate proposal, evidence, permission, and consequence more carefully than a single undifferentiated approval state. + +Macdonald's contribution to this project was review and clarification of that comparison. He did not contribute code, data, experiments, implementation, or authorship, and OGR is not used as evidence that STP works. Neither work is described as deriving from, implementing, or subsuming the other. + +Citation: + +> J. Macdonald. *OpenGoldenRatio (OGR) v0.1: Containment-First Multi-Agent Governance Protocol*. Zenodo, 2026. https://doi.org/10.5281/zenodo.18969396 + +Pinned demonstrator reviewed for the paper: + +`https://github.com/macess888-cmyk/open-golden-ratio-demo/commit/58450185582f4ecf1410b33f77e22d8d4b0441a2` + +See the paper's references and related-work section for the full bounded comparison. diff --git a/research/from-model-output-to-accepted-state/REPRODUCE.md b/research/from-model-output-to-accepted-state/REPRODUCE.md new file mode 100644 index 0000000..a0d47fc --- /dev/null +++ b/research/from-model-output-to-accepted-state/REPRODUCE.md @@ -0,0 +1,90 @@ +# Reproduce the release integrity check + +This procedure verifies the exact bytes of this owner-review packet. It does not +rebuild the PDF, reproduce excluded inputs, independently replicate an experiment, +or establish the truth, novelty, authorship, authority, safety, or fitness of a +claim. + +## Requirements + +- Git +- Python 3 +- Node.js + +No package installation or runtime network access is required after cloning. + +## Obtain a clean checkout + +Use the exact release commit or tag identified by the repository release or pull +request. + +```sh +git clone https://github.com/JakeTOpenSource/Resilience-Ledger.git +cd Resilience-Ledger +git checkout --detach +git status --porcelain=v1 +cd research/from-model-output-to-accepted-state +``` + +`git status --porcelain=v1` must print nothing. The repository-root and packet-local +`.gitattributes` files disable line-ending conversion so byte comparisons do not +produce a false failure on Windows. Do not remove that rule when re-homing the +packet. + +## Windows + +```powershell +powershell -NoProfile -ExecutionPolicy Bypass -File .\tools\verify.ps1 +``` + +A successful result reports `VERIFY PASS`, cross-language parity, the checked file +count, payload root, manifest SHA-256, and `status=PASS`. + +## macOS or Linux + +```sh +python3 -B tools/update_claim_register.py --check || exit 1 +python_report="$(python3 tools/verify_release.py)" || exit 1 +node_report="$(node tools/verify-release.mjs)" || exit 1 + +if [ "$python_report" != "$node_report" ]; then + printf '%s\n' "Cross-language canonical report mismatch" >&2 + exit 1 +fi + +printf '%s\n' "$python_report" +``` + +If Python 3 is installed as `python`, substitute that executable name. + +## Claim-marker reassignment + +For demotion test 6, give an external reviewer only: + +- `claims.json`, which embeds the neutral four-marker policy; +- `reviewer-markers.template.json`; +- the packet files named by accessible `sources` records in `claims.json`; and +- any public external source the reviewer retrieves and verifies against its + registered identity: commit and tree for a tree record, or commit, path, byte + length, and SHA-256 for a blob record. + +Copy `reviewer-markers.template.json` outside the checkout before filling it; editing +the packet copy correctly breaks its byte manifest and clean-worktree check. Withhold +`author-markers.json`, `content_a.py`, `content_b.py`, `content_c.py`, the PDF, and +the LinkedIn companion until the reviewer seals the assignments. A retained or +unavailable source stays unavailable and must be recorded that way; it may not be +silently treated as reviewed. The separation is a procedural blind, not +cryptographic secrecy after publication. After the reviewer seals assignments, +compare by `claim_id`: a mismatch is `CONTESTED/HOLD`, a missing assignment is +`INCOMPLETE`, and neither result can auto-promote a claim. + +## Boundaries + +Do not redirect verifier output into this packet: an added file correctly causes an +allowlist failure. Do not run `tools/update_manifest.py` as a verification step; it +rewrites the manifest and is a maintainer-only release operation. Do not run +`tools/update_claim_register.py` during verification; use its `--check` option. + +After verification, `git status --porcelain=v1` should still print nothing. A pass +establishes consistency with the committed manifest and checkout. The Git commit or +release tag is the external identity anchor. diff --git a/research/from-model-output-to-accepted-state/author-markers.json b/research/from-model-output-to-accepted-state/author-markers.json new file mode 100644 index 0000000..e4221e4 --- /dev/null +++ b/research/from-model-output-to-accepted-state/author-markers.json @@ -0,0 +1,653 @@ +{ + "schema_version": "fmota-marker-assignments.v1", + "claim_register_sha256": "48e1d732cb8fd59ff54f47b996a2bc48ff25b62b386ba411e364f49e4b03817f", + "assignment_role": "AUTHOR_KEY", + "assignment_set_id": "author-v4", + "assignments": [ + { + "claim_id": "FMOTA-V4-CLM-001", + "marker": "PROPOSED", + "ceiling": "Design, definition, or protocol proposal only; not implementation or outcome evidence.", + "rationale": "See the marked manuscript unit and its registered review sources.", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-002", + "marker": "TESTED", + "ceiling": "Exact only within the registered artifact, fixture, command, or derivation; no external validity unless separately stated.", + "rationale": "See the marked manuscript unit and its registered review sources.", + "relied_on_source_ids": [ + "EV-PUBLIC-STP-COMMIT" + ], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-003", + "marker": "TESTED", + "ceiling": "Exact only within the registered artifact, fixture, command, or derivation; no external validity unless separately stated.", + "rationale": "See the marked manuscript unit and its registered review sources.", + "relied_on_source_ids": [ + "EV-DEVICE-ANALYSIS", + "EV-DEVICE-RECEIPT", + "EV-TRANSITION-REPORT", + "EV-TRANSITION-RECEIPT", + "EV-BP-PROMPT", + "EV-BP-SUMMARY", + "EV-BP-EVALUATOR", + "EV-BP-RECEIPT", + "EV-PUBLIC-STP-COMMIT" + ], + "unavailable_source_ids": [ + "EV-BP-EVALUATOR", + "EV-BP-RECEIPT" + ] + }, + { + "claim_id": "FMOTA-V4-CLM-004", + "marker": "TESTED", + "ceiling": "Exact only within the registered artifact, fixture, command, or derivation; no external validity unless separately stated.", + "rationale": "See the marked manuscript unit and its registered review sources.", + "relied_on_source_ids": [ + "EV-RL-LEDGER-LIB", + "EV-RL-REPLAY-PY", + "EV-RL-VERIFY-REPLAYERS", + "EV-RL-GATE", + "EV-RL-ATLAS-DATA-CONTRACT", + "EV-RL-ATLAS-RUNTIME-CONTRACT", + "EV-RL-OBSERVATION-000001" + ], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-005", + "marker": "TESTED", + "ceiling": "Exact only within the registered artifact, fixture, command, or derivation; no external validity unless separately stated.", + "rationale": "See the marked manuscript unit and its registered review sources.", + "relied_on_source_ids": [ + "EV-PUBLIC-STP-COMMIT" + ], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-006", + "marker": "OPEN", + "ceiling": "Unresolved; it cannot support acceptance, equivalence, or a positive operational claim.", + "rationale": "See the marked manuscript unit and its registered review sources.", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-007", + "marker": "PROPOSED", + "ceiling": "Design, definition, or protocol proposal only; not implementation or outcome evidence.", + "rationale": "See the marked manuscript unit and its registered review sources.", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-008", + "marker": "PROPOSED", + "ceiling": "Design, definition, or protocol proposal only; not implementation or outcome evidence.", + "rationale": "See the marked manuscript unit and its registered review sources.", + "relied_on_source_ids": [ + "EV-BP-PROMPT", + "EV-BP-SUMMARY" + ], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-009", + "marker": "OPEN", + "ceiling": "Unresolved; it cannot support acceptance, equivalence, or a positive operational claim.", + "rationale": "See the marked manuscript unit and its registered review sources.", + "relied_on_source_ids": [ + "EV-RL-TREE-275D" + ], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-010", + "marker": "PROPOSED", + "ceiling": "Design, definition, or protocol proposal only; not implementation or outcome evidence.", + "rationale": "See the marked manuscript unit and its registered review sources.", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-011", + "marker": "TESTED", + "ceiling": "Exact only within the registered artifact, fixture, command, or derivation; no external validity unless separately stated.", + "rationale": "See the marked manuscript unit and its registered review sources.", + "relied_on_source_ids": [ + "EV-PUBLIC-STP-COMMIT" + ], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-012", + "marker": "PROPOSED", + "ceiling": "Design, definition, or protocol proposal only; not implementation or outcome evidence.", + "rationale": "See the marked manuscript unit and its registered review sources.", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-013", + "marker": "PROPOSED", + "ceiling": "Design, definition, or protocol proposal only; not implementation or outcome evidence.", + "rationale": "See the marked manuscript unit and its registered review sources.", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-014", + "marker": "TESTED", + "ceiling": "Exact only within the registered artifact, fixture, command, or derivation; no external validity unless separately stated.", + "rationale": "See the marked manuscript unit and its registered review sources.", + "relied_on_source_ids": [ + "EV-PUBLIC-STP-COMMIT" + ], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-015", + "marker": "PROPOSED", + "ceiling": "Design, definition, or protocol proposal only; not implementation or outcome evidence.", + "rationale": "See the marked manuscript unit and its registered review sources.", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-016", + "marker": "TESTED", + "ceiling": "Exact only within the registered artifact, fixture, command, or derivation; no external validity unless separately stated.", + "rationale": "See the marked manuscript unit and its registered review sources.", + "relied_on_source_ids": [ + "EV-PUBLIC-STP-COMMIT" + ], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-017", + "marker": "PROPOSED", + "ceiling": "Design, definition, or protocol proposal only; not implementation or outcome evidence.", + "rationale": "See the marked manuscript unit and its registered review sources.", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-018", + "marker": "PROPOSED", + "ceiling": "Design, definition, or protocol proposal only; not implementation or outcome evidence.", + "rationale": "See the marked manuscript unit and its registered review sources.", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-019", + "marker": "TESTED", + "ceiling": "Exact only within the registered artifact, fixture, command, or derivation; no external validity unless separately stated.", + "rationale": "See the marked manuscript unit and its registered review sources.", + "relied_on_source_ids": [ + "EV-RL-LEDGER-LIB", + "EV-RL-REPLAY-PY", + "EV-RL-VERIFY-REPLAYERS" + ], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-020", + "marker": "TESTED", + "ceiling": "Exact only within the registered artifact, fixture, command, or derivation; no external validity unless separately stated.", + "rationale": "See the marked manuscript unit and its registered review sources.", + "relied_on_source_ids": [ + "EV-RL-LEDGER-LIB", + "EV-RL-REPLAY-PY", + "EV-RL-VERIFY-REPLAYERS", + "EV-RL-CI-GATES" + ], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-021", + "marker": "TESTED", + "ceiling": "Exact only within the registered artifact, fixture, command, or derivation; no external validity unless separately stated.", + "rationale": "See the marked manuscript unit and its registered review sources.", + "relied_on_source_ids": [ + "EV-PUBLIC-STP-COMMIT" + ], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-022", + "marker": "TESTED", + "ceiling": "Exact only within the registered artifact, fixture, command, or derivation; no external validity unless separately stated.", + "rationale": "See the marked manuscript unit and its registered review sources.", + "relied_on_source_ids": [ + "EV-PUBLIC-STP-COMMIT" + ], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-023", + "marker": "TESTED", + "ceiling": "Exact only within the registered artifact, fixture, command, or derivation; no external validity unless separately stated.", + "rationale": "See the marked manuscript unit and its registered review sources.", + "relied_on_source_ids": [ + "EV-RL-LEDGER-LIB", + "EV-RL-REPLAY-PY", + "EV-RL-VERIFY-REPLAYERS" + ], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-024", + "marker": "OPEN", + "ceiling": "Unresolved; it cannot support acceptance, equivalence, or a positive operational claim.", + "rationale": "See the marked manuscript unit and its registered review sources.", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-025", + "marker": "OPEN", + "ceiling": "Unresolved; it cannot support acceptance, equivalence, or a positive operational claim.", + "rationale": "See the marked manuscript unit and its registered review sources.", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-026", + "marker": "OPEN", + "ceiling": "Unresolved; it cannot support acceptance, equivalence, or a positive operational claim.", + "rationale": "See the marked manuscript unit and its registered review sources.", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-027", + "marker": "TESTED", + "ceiling": "Exact only within the registered artifact, fixture, command, or derivation; no external validity unless separately stated.", + "rationale": "See the marked manuscript unit and its registered review sources.", + "relied_on_source_ids": [ + "EV-RL-GATE" + ], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-028", + "marker": "PROPOSED", + "ceiling": "Design, definition, or protocol proposal only; not implementation or outcome evidence.", + "rationale": "See the marked manuscript unit and its registered review sources.", + "relied_on_source_ids": [ + "EV-RL-LEDGER-LIB", + "EV-RL-REPLAY-PY", + "EV-RL-VERIFY-REPLAYERS" + ], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-029", + "marker": "TESTED", + "ceiling": "Exact only within the registered artifact, fixture, command, or derivation; no external validity unless separately stated.", + "rationale": "See the marked manuscript unit and its registered review sources.", + "relied_on_source_ids": [ + "EV-PUBLIC-STP-COMMIT" + ], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-030", + "marker": "TESTED", + "ceiling": "Exact only within the registered artifact, fixture, command, or derivation; no external validity unless separately stated.", + "rationale": "See the marked manuscript unit and its registered review sources.", + "relied_on_source_ids": [ + "EV-RL-LEDGER-LIB", + "EV-RL-REPLAY-PY", + "EV-RL-VERIFY-REPLAYERS" + ], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-031", + "marker": "OPEN", + "ceiling": "Unresolved; it cannot support acceptance, equivalence, or a positive operational claim.", + "rationale": "See the marked manuscript unit and its registered review sources.", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-032", + "marker": "OPEN", + "ceiling": "Unresolved; it cannot support acceptance, equivalence, or a positive operational claim.", + "rationale": "See the marked manuscript unit and its registered review sources.", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-033", + "marker": "PROPOSED", + "ceiling": "Design, definition, or protocol proposal only; not implementation or outcome evidence.", + "rationale": "See the marked manuscript unit and its registered review sources.", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-034", + "marker": "PROPOSED", + "ceiling": "Design, definition, or protocol proposal only; not implementation or outcome evidence.", + "rationale": "See the marked manuscript unit and its registered review sources.", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-035", + "marker": "PROPOSED", + "ceiling": "Design, definition, or protocol proposal only; not implementation or outcome evidence.", + "rationale": "See the marked manuscript unit and its registered review sources.", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-036", + "marker": "PROPOSED", + "ceiling": "Design, definition, or protocol proposal only; not implementation or outcome evidence.", + "rationale": "See the marked manuscript unit and its registered review sources.", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-037", + "marker": "PROPOSED", + "ceiling": "Design, definition, or protocol proposal only; not implementation or outcome evidence.", + "rationale": "See the marked manuscript unit and its registered review sources.", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-038", + "marker": "PROPOSED", + "ceiling": "Design, definition, or protocol proposal only; not implementation or outcome evidence.", + "rationale": "See the marked manuscript unit and its registered review sources.", + "relied_on_source_ids": [ + "EV-RL-GATE" + ], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-039", + "marker": "TESTED", + "ceiling": "Exact only within the registered artifact, fixture, command, or derivation; no external validity unless separately stated.", + "rationale": "See the marked manuscript unit and its registered review sources.", + "relied_on_source_ids": [ + "EV-DEVICE-ANALYSIS", + "EV-DEVICE-RECEIPT", + "EV-TRANSITION-REPORT", + "EV-TRANSITION-RECEIPT", + "EV-BP-PROMPT", + "EV-BP-SUMMARY", + "EV-BP-EVALUATOR", + "EV-BP-RECEIPT" + ], + "unavailable_source_ids": [ + "EV-BP-EVALUATOR", + "EV-BP-RECEIPT" + ] + }, + { + "claim_id": "FMOTA-V4-CLM-062", + "marker": "OPEN", + "ceiling": "Unresolved; it cannot support acceptance, equivalence, or a positive operational claim.", + "rationale": "See the marked manuscript unit and its registered review sources.", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-040", + "marker": "TESTED", + "ceiling": "Exact only within the registered artifact, fixture, command, or derivation; no external validity unless separately stated.", + "rationale": "See the marked manuscript unit and its registered review sources.", + "relied_on_source_ids": [ + "EV-RL-GATE" + ], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-041", + "marker": "TESTED", + "ceiling": "Exact only within the registered artifact, fixture, command, or derivation; no external validity unless separately stated.", + "rationale": "See the marked manuscript unit and its registered review sources.", + "relied_on_source_ids": [ + "EV-RL-ATLAS-DATA-CONTRACT", + "EV-RL-ATLAS-RUNTIME-CONTRACT", + "EV-RL-GATE" + ], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-042", + "marker": "OBSERVED", + "ceiling": "Observed in the named run or artifact only; no causal or general claim.", + "rationale": "See the marked manuscript unit and its registered review sources.", + "relied_on_source_ids": [ + "EV-RL-OBSERVATION-000001" + ], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-043", + "marker": "OBSERVED", + "ceiling": "Observed in the named run or artifact only; no causal or general claim.", + "rationale": "See the marked manuscript unit and its registered review sources.", + "relied_on_source_ids": [ + "EV-RL-OBSERVATION-000002" + ], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-044", + "marker": "OBSERVED", + "ceiling": "Observed in the named run or artifact only; no causal or general claim.", + "rationale": "See the marked manuscript unit and its registered review sources.", + "relied_on_source_ids": [ + "EV-RL-OBSERVATION-000003", + "EV-RL-CHECKPOINT-000013" + ], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-045", + "marker": "OPEN", + "ceiling": "Unresolved; it cannot support acceptance, equivalence, or a positive operational claim.", + "rationale": "See the marked manuscript unit and its registered review sources.", + "relied_on_source_ids": [ + "EV-RL-OBSERVATION-000003", + "EV-RL-CHECKPOINT-000013" + ], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-046", + "marker": "TESTED", + "ceiling": "Exact only within the registered artifact, fixture, command, or derivation; no external validity unless separately stated.", + "rationale": "See the marked manuscript unit and its registered review sources.", + "relied_on_source_ids": [ + "EV-BP-PROMPT", + "EV-BP-SUMMARY", + "EV-BP-EVALUATOR", + "EV-BP-RECEIPT" + ], + "unavailable_source_ids": [ + "EV-BP-EVALUATOR", + "EV-BP-RECEIPT" + ] + }, + { + "claim_id": "FMOTA-V4-CLM-047", + "marker": "OPEN", + "ceiling": "Unresolved; it cannot support acceptance, equivalence, or a positive operational claim.", + "rationale": "See the marked manuscript unit and its registered review sources.", + "relied_on_source_ids": [ + "EV-BP-PROMPT", + "EV-BP-SUMMARY", + "EV-BP-EVALUATOR", + "EV-BP-RECEIPT" + ], + "unavailable_source_ids": [ + "EV-BP-EVALUATOR", + "EV-BP-RECEIPT" + ] + }, + { + "claim_id": "FMOTA-V4-CLM-048", + "marker": "TESTED", + "ceiling": "Exact only within the registered artifact, fixture, command, or derivation; no external validity unless separately stated.", + "rationale": "See the marked manuscript unit and its registered review sources.", + "relied_on_source_ids": [ + "EV-RL-OBSERVATION-000001", + "EV-RL-GATE" + ], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-049", + "marker": "OPEN", + "ceiling": "Unresolved; it cannot support acceptance, equivalence, or a positive operational claim.", + "rationale": "See the marked manuscript unit and its registered review sources.", + "relied_on_source_ids": [ + "EV-RL-OBSERVATION-000001", + "EV-RL-OBSERVATION-000002", + "EV-RL-TREE-275D" + ], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-050", + "marker": "OBSERVED", + "ceiling": "Observed in the named run or artifact only; no causal or general claim.", + "rationale": "See the marked manuscript unit and its registered review sources.", + "relied_on_source_ids": [ + "EV-TYPED-REFUSAL-ARMS", + "EV-TYPED-REFUSAL-STATS" + ], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-051", + "marker": "OPEN", + "ceiling": "Unresolved; it cannot support acceptance, equivalence, or a positive operational claim.", + "rationale": "See the marked manuscript unit and its registered review sources.", + "relied_on_source_ids": [ + "EV-TYPED-REFUSAL-ARMS", + "EV-TYPED-REFUSAL-STATS", + "EV-TYPED-REFUSAL-TREE", + "EV-TYPED-REFUSAL-CORPUS" + ], + "unavailable_source_ids": [ + "EV-TYPED-REFUSAL-CORPUS" + ] + }, + { + "claim_id": "FMOTA-V4-CLM-052", + "marker": "OBSERVED", + "ceiling": "Observed in the named run or artifact only; no causal or general claim.", + "rationale": "See the marked manuscript unit and its registered review sources.", + "relied_on_source_ids": [ + "EV-STABLE-PREREGISTRATION", + "EV-STABLE-DECISION-LOGS", + "EV-STABLE-CELLS" + ], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-053", + "marker": "TESTED", + "ceiling": "Exact only within the registered artifact, fixture, command, or derivation; no external validity unless separately stated.", + "rationale": "See the marked manuscript unit and its registered review sources.", + "relied_on_source_ids": [ + "EV-STABLE-REPLAY", + "EV-STABLE-CELLS", + "EV-STABLE-GATE" + ], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-054", + "marker": "OPEN", + "ceiling": "Unresolved; it cannot support acceptance, equivalence, or a positive operational claim.", + "rationale": "See the marked manuscript unit and its registered review sources.", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-055", + "marker": "PROPOSED", + "ceiling": "Design, definition, or protocol proposal only; not implementation or outcome evidence.", + "rationale": "See the marked manuscript unit and its registered review sources.", + "relied_on_source_ids": [ + "EV-PUBLIC-STP-COMMIT" + ], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-056", + "marker": "PROPOSED", + "ceiling": "Design, definition, or protocol proposal only; not implementation or outcome evidence.", + "rationale": "See the marked manuscript unit and its registered review sources.", + "relied_on_source_ids": [ + "EV-PUBLIC-STP-COMMIT" + ], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-057", + "marker": "PROPOSED", + "ceiling": "Design, definition, or protocol proposal only; not implementation or outcome evidence.", + "rationale": "See the marked manuscript unit and its registered review sources.", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-058", + "marker": "OPEN", + "ceiling": "Unresolved; it cannot support acceptance, equivalence, or a positive operational claim.", + "rationale": "See the marked manuscript unit and its registered review sources.", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-059", + "marker": "PROPOSED", + "ceiling": "Design, definition, or protocol proposal only; not implementation or outcome evidence.", + "rationale": "See the marked manuscript unit and its registered review sources.", + "relied_on_source_ids": [ + "EV-PUBLIC-STP-COMMIT" + ], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-060", + "marker": "OPEN", + "ceiling": "Unresolved; it cannot support acceptance, equivalence, or a positive operational claim.", + "rationale": "See the marked manuscript unit and its registered review sources.", + "relied_on_source_ids": [ + "EV-LEAN-QUERY-SOURCE", + "EV-LEAN-QUERY-RECEIPT" + ], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-061", + "marker": "TESTED", + "ceiling": "Exact only within the registered artifact, fixture, command, or derivation; no external validity unless separately stated.", + "rationale": "See the marked manuscript unit and its registered review sources.", + "relied_on_source_ids": [ + "EV-WINDOWS-CLEAN-CLONE-V3", + "EV-REPRODUCE-RUNBOOK", + "EV-PACKET-EOL-RULE" + ], + "unavailable_source_ids": [] + } + ] +} diff --git a/research/from-model-output-to-accepted-state/claims.json b/research/from-model-output-to-accepted-state/claims.json new file mode 100644 index 0000000..a5cf058 --- /dev/null +++ b/research/from-model-output-to-accepted-state/claims.json @@ -0,0 +1,1394 @@ +{ + "schema_version": "fmota-claim-register.v1", + "status": "OWNER_REVIEW", + "paper_output_path": "paper/From-Model-Output-to-Accepted-State-Owner-Review-v4.pdf", + "paper_source_sha256": { + "content_a.py": "02dafb2397764c730f8d8f007de502984e86615151ec82b9d4fbeff4eabff317", + "content_b.py": "7802aa784bfdfedf33a72034b70f79a995a39c9e98ee8a502e37a9596ee098d0", + "content_c.py": "80bab59a91296a91e98a271b036835c5018e2f9125f8b3474ce947f2a34ee059" + }, + "marker_policy": { + "source_path": "content_a.py", + "source_sha256": "02dafb2397764c730f8d8f007de502984e86615151ec82b9d4fbeff4eabff317", + "section": "2 / Table 1", + "definitions": { + "TESTED": { + "meaning": "Exact behavior over a named finite corpus, reproducible by a stated command.", + "never_means": "That the behavior generalizes past that corpus." + }, + "OBSERVED": { + "meaning": "A bounded inspection of a named surface at a recorded time.", + "never_means": "That the surface still looks that way, or that other surfaces match." + }, + "PROPOSED": { + "meaning": "Specified or reasoned beyond the tested artifact boundary. It may have a partial fixture, but the marked claim itself is not established.", + "never_means": "Implemented behavior. Do not cite it as a result." + }, + "OPEN": { + "meaning": "I do not know, and I say where the evidence stops.", + "never_means": "That the question is unimportant." + } + } + }, + "blinding_protocol": "Give claims.json, registered accessible sources, and reviewer-markers.template.json to the reviewer before exposing the marked manuscript or author-markers.json. This is procedural blinding, not cryptographic secrecy after publication.", + "comparison_rule": "Compare by claim_id only. Equal markers agree. Any mismatch is MATERIAL_DISAGREEMENT and places the claim in CONTESTED/HOLD until owner adjudication; missing assignments are INCOMPLETE. Never auto-promote.", + "sources": [ + { + "source_id": "EV-PUBLIC-STP-COMMIT", + "kind": "public_git_blob", + "repository": "JakeTOpenSource/Resilience-Ledger", + "commit": "275d0b3e7474ef58456c82a042163567cd12122f", + "path": "research/stp-v1.2/release-manifest.json", + "expected_bytes": 3613, + "expected_sha256": "2f95ed233a20060d1cbca3fae555410732242b26d9fb08afe482bc3390077704", + "access": "PUBLIC_EXTERNAL", + "verification_status": "VERIFIED_BYTES" + }, + { + "source_id": "EV-RL-TREE-275D", + "kind": "public_git_tree", + "repository": "JakeTOpenSource/Resilience-Ledger", + "commit": "275d0b3e7474ef58456c82a042163567cd12122f", + "tree": "ed1342684125e9165f27fdc6d9702b102665b324", + "access": "PUBLIC_EXTERNAL", + "verification_status": "VERIFIED_BYTES" + }, + { + "source_id": "EV-RL-GATE", + "kind": "public_git_blob", + "repository": "JakeTOpenSource/Resilience-Ledger", + "commit": "275d0b3e7474ef58456c82a042163567cd12122f", + "path": "governance/harnesses/run-all.js", + "expected_bytes": 925, + "expected_sha256": "2725275449ea6bd25d460e328885dcf11685af2854582fef2db8aa61f6f33a96", + "access": "PUBLIC_EXTERNAL", + "verification_status": "VERIFIED_BYTES" + }, + { + "source_id": "EV-RL-LEDGER-LIB", + "kind": "public_git_blob", + "repository": "JakeTOpenSource/Resilience-Ledger", + "commit": "275d0b3e7474ef58456c82a042163567cd12122f", + "path": "governance/ledger/lib.js", + "expected_bytes": 18577, + "expected_sha256": "8e824d144f5416fc969ab49f13639325c4a5cfc32970a006e3732181b9c68ac8", + "access": "PUBLIC_EXTERNAL", + "verification_status": "VERIFIED_BYTES" + }, + { + "source_id": "EV-RL-REPLAY-PY", + "kind": "public_git_blob", + "repository": "JakeTOpenSource/Resilience-Ledger", + "commit": "275d0b3e7474ef58456c82a042163567cd12122f", + "path": "governance/harnesses/replay.py", + "expected_bytes": 7946, + "expected_sha256": "db6fdd073034e0c2173af0d65dca6c3db3e73cd4841f25bbc3fbb91aee069279", + "access": "PUBLIC_EXTERNAL", + "verification_status": "VERIFIED_BYTES" + }, + { + "source_id": "EV-RL-VERIFY-REPLAYERS", + "kind": "public_git_blob", + "repository": "JakeTOpenSource/Resilience-Ledger", + "commit": "275d0b3e7474ef58456c82a042163567cd12122f", + "path": "governance/harnesses/verify-replayers.js", + "expected_bytes": 1854, + "expected_sha256": "7e63495fe344b007b221061c73c8b70dbf536e924db1ce9da9a7d14426da6b49", + "access": "PUBLIC_EXTERNAL", + "verification_status": "VERIFIED_BYTES" + }, + { + "source_id": "EV-RL-CI-GATES", + "kind": "public_git_blob", + "repository": "JakeTOpenSource/Resilience-Ledger", + "commit": "275d0b3e7474ef58456c82a042163567cd12122f", + "path": ".github/workflows/gates.yml", + "expected_bytes": 2914, + "expected_sha256": "066c58b7841bb0363ed28bb9196f568a0de82f663b891cb8ae6ce6d22d579723", + "access": "PUBLIC_EXTERNAL", + "verification_status": "VERIFIED_BYTES" + }, + { + "source_id": "EV-RL-ATLAS-DATA-CONTRACT", + "kind": "public_git_blob", + "repository": "JakeTOpenSource/Resilience-Ledger", + "commit": "275d0b3e7474ef58456c82a042163567cd12122f", + "path": "governance/contracts/atlas-data-sync.contract.v2.json", + "expected_bytes": 10165, + "expected_sha256": "7366c7042ec2e40a501fe091f9367eb5e8e8449763b69afadf29762864d58263", + "access": "PUBLIC_EXTERNAL", + "verification_status": "VERIFIED_BYTES" + }, + { + "source_id": "EV-RL-ATLAS-RUNTIME-CONTRACT", + "kind": "public_git_blob", + "repository": "JakeTOpenSource/Resilience-Ledger", + "commit": "275d0b3e7474ef58456c82a042163567cd12122f", + "path": "governance/contracts/atlas-runtime-contract.v1.json", + "expected_bytes": 2558, + "expected_sha256": "7cd8c2a89f6df20995789f066643240a4cbcbc3ca67d2dc1cc4c71129b22ffd5", + "access": "PUBLIC_EXTERNAL", + "verification_status": "VERIFIED_BYTES" + }, + { + "source_id": "EV-RL-OBSERVATION-000001", + "kind": "public_git_blob", + "repository": "JakeTOpenSource/Resilience-Ledger", + "commit": "275d0b3e7474ef58456c82a042163567cd12122f", + "path": "governance/ledger/events/deployment/000001-wp0-production-observation.json", + "expected_bytes": 6252, + "expected_sha256": "34bde4ec2eb4d1bfb70b8d44df6439cb295bd1dc1293df0ae47490193ad3fa97", + "access": "PUBLIC_EXTERNAL", + "verification_status": "VERIFIED_BYTES" + }, + { + "source_id": "EV-RL-OBSERVATION-000002", + "kind": "public_git_blob", + "repository": "JakeTOpenSource/Resilience-Ledger", + "commit": "275d0b3e7474ef58456c82a042163567cd12122f", + "path": "governance/ledger/events/deployment/000002-public-explanation-production-observed.json", + "expected_bytes": 10952, + "expected_sha256": "4917a927727e3b0cc03cd057100a698ccc18e51751f69dd33f5bed14344fa24f", + "access": "PUBLIC_EXTERNAL", + "verification_status": "VERIFIED_BYTES" + }, + { + "source_id": "EV-RL-OBSERVATION-000003", + "kind": "public_git_blob", + "repository": "JakeTOpenSource/Resilience-Ledger", + "commit": "5f9cc145763bc51b183e93b4f7059b25aa6ee2ca", + "path": "governance/ledger/events/deployment/000003-service-worker-drift-closed.json", + "expected_bytes": 4782, + "expected_sha256": "f03960cb1927a2c89fa5b9e98bd9cdf0cdd977c6b45fe19937346264251158e4", + "access": "PUBLIC_EXTERNAL", + "verification_status": "VERIFIED_BYTES" + }, + { + "source_id": "EV-RL-CHECKPOINT-000013", + "kind": "public_git_blob", + "repository": "JakeTOpenSource/Resilience-Ledger", + "commit": "5f9cc145763bc51b183e93b4f7059b25aa6ee2ca", + "path": "governance/ledger/checkpoints/checkpoint-000013.json", + "expected_bytes": 4922, + "expected_sha256": "17a2bf4ee223dcbd55bdf22dd66aebac95c6c3273d958fb0a15f4608917fcbb2", + "access": "PUBLIC_EXTERNAL", + "verification_status": "VERIFIED_BYTES" + }, + { + "source_id": "EV-DEVICE-ANALYSIS", + "kind": "packet_file", + "path": "evidence/device-activation/expected-analysis.json", + "expected_bytes": 2737, + "expected_sha256": "7c550d125d383f7238ff936c7d05a3815ceb35132326253b973562fbca4b0a80", + "access": "PUBLIC_PACKET", + "verification_status": "VERIFIED_BYTES" + }, + { + "source_id": "EV-DEVICE-RECEIPT", + "kind": "packet_file", + "path": "evidence/device-activation/BUILD-RECEIPT-000001.md", + "expected_bytes": 3158, + "expected_sha256": "ee60b9aa4baa0286fb5899255380d6bf9772ca9240354bddc3b1a75fce1b9ab6", + "access": "PUBLIC_PACKET", + "verification_status": "VERIFIED_BYTES" + }, + { + "source_id": "EV-TRANSITION-REPORT", + "kind": "packet_file", + "path": "evidence/transition-stable-quotient/expected-report.json", + "expected_bytes": 2627, + "expected_sha256": "1b0e78adcac732561a0263ef2704d53b397597c502f81e88a0999a37232df183", + "access": "PUBLIC_PACKET", + "verification_status": "VERIFIED_BYTES" + }, + { + "source_id": "EV-TRANSITION-RECEIPT", + "kind": "packet_file", + "path": "evidence/transition-stable-quotient/BUILD-RECEIPT-000001.md", + "expected_bytes": 4016, + "expected_sha256": "4d0b0f50c361c51734db51a786fdc40b85de591e077d295677dbd40d63967514", + "access": "PUBLIC_PACKET", + "verification_status": "VERIFIED_BYTES" + }, + { + "source_id": "EV-BP-PROMPT", + "kind": "packet_file", + "path": "evidence/blind-prompt/PROMPT.md", + "expected_bytes": 1662, + "expected_sha256": "6b0628ef41bdf3b8d871238aa39ac44af43576887d5e0b1ed44ad8e7cdeccaf1", + "access": "PUBLIC_PACKET", + "verification_status": "VERIFIED_BYTES" + }, + { + "source_id": "EV-BP-SUMMARY", + "kind": "packet_file", + "path": "evidence/blind-prompt/PUBLIC-SUMMARY.md", + "expected_bytes": 1925, + "expected_sha256": "b04998e04354f0027a42aa2f082b4d934bd50a76aa387e22d73705bde5fe95c4", + "access": "PUBLIC_PACKET", + "verification_status": "VERIFIED_BYTES" + }, + { + "source_id": "EV-BP-EVALUATOR", + "kind": "retained_digest", + "retained_source_id": "BP-EVALUATOR-001", + "expected_bytes": 20945, + "expected_sha256": "de2c28735762a153602fc6e4bb777520c2aa3c687837e3f64b6277c459d67fe9", + "access": "RETAINED_RESTRICTED", + "verification_status": "DECLARED_ONLY" + }, + { + "source_id": "EV-BP-RECEIPT", + "kind": "retained_digest", + "retained_source_id": "BP-RECEIPT-001", + "expected_bytes": 4488, + "expected_sha256": "537e8cc13e8425e53304dd22637df6d186efa4df0be0f910a747b5f78632c815", + "access": "RETAINED_RESTRICTED", + "verification_status": "DECLARED_ONLY" + }, + { + "source_id": "EV-LEAN-QUERY-SOURCE", + "kind": "packet_file", + "path": "evidence/lean-query-quotient/QueryQuotient.lean", + "expected_bytes": 3791, + "expected_sha256": "cfbb166202ade30abc0c79287ff8c1acf216e91a863121ade923218caede9896", + "access": "PUBLIC_PACKET", + "verification_status": "VERIFIED_BYTES" + }, + { + "source_id": "EV-LEAN-QUERY-RECEIPT", + "kind": "packet_file", + "path": "evidence/lean-query-quotient/BUILD-RECEIPT-000005.md", + "expected_bytes": 4233, + "expected_sha256": "8cdb9da9a9ddaba90c63390f1e94d11e18ca32f7d2a95b46b6ce3e1a27de79b2", + "access": "PUBLIC_PACKET", + "verification_status": "VERIFIED_BYTES" + }, + { + "source_id": "EV-TYPED-REFUSAL-ARMS", + "kind": "public_git_blob", + "repository": "JakeTOpenSource/typed-refusal-harness", + "commit": "721a824c9f735d3972d720b41685469a1020fa91", + "path": "data/arms.json", + "expected_bytes": 4937, + "expected_sha256": "504ca00f4286f25ee80ebe4cc9aacb2a05326b66c45602e40113117bbb40389b", + "access": "PUBLIC_EXTERNAL", + "verification_status": "VERIFIED_BYTES" + }, + { + "source_id": "EV-TYPED-REFUSAL-STATS", + "kind": "public_git_blob", + "repository": "JakeTOpenSource/typed-refusal-harness", + "commit": "721a824c9f735d3972d720b41685469a1020fa91", + "path": "data/stats.py", + "expected_bytes": 5364, + "expected_sha256": "8ecd41b40b7b75eaaa93ee0caa017e764182a3e0aee0a6f1beda7aa86277c802", + "access": "PUBLIC_EXTERNAL", + "verification_status": "VERIFIED_BYTES" + }, + { + "source_id": "EV-TYPED-REFUSAL-TREE", + "kind": "public_git_tree", + "repository": "JakeTOpenSource/typed-refusal-harness", + "commit": "721a824c9f735d3972d720b41685469a1020fa91", + "tree": "ae82fa57c0b34bb2166424128d2537822e53bc26", + "access": "PUBLIC_EXTERNAL", + "verification_status": "VERIFIED_BYTES" + }, + { + "source_id": "EV-TYPED-REFUSAL-CORPUS", + "kind": "retained_digest", + "retained_source_id": "TR-CORPUS-TITLE-29", + "expected_bytes": 11666245, + "expected_sha256": "188ab1c50a46f0dd2ff32aaa5f65c759a07710e052d297644b1a8f6b58ff413d", + "access": "RETAINED_RESTRICTED", + "verification_status": "UNAVAILABLE" + }, + { + "source_id": "EV-STABLE-PREREGISTRATION", + "kind": "public_git_blob", + "repository": "JakeTOpenSource/the-stable", + "commit": "77408db59cad3f968ac9ba5a0c0c6689a90e80d4", + "path": "experiments/replication-2026-07-17/PREREGISTRATION.md", + "expected_bytes": 7602, + "expected_sha256": "eff780cff6a4522370af2f00d01a7dc121ab143677f805cbdc865620dad7820b", + "access": "PUBLIC_EXTERNAL", + "verification_status": "VERIFIED_BYTES" + }, + { + "source_id": "EV-STABLE-DECISION-LOGS", + "kind": "public_git_blob", + "repository": "JakeTOpenSource/the-stable", + "commit": "77408db59cad3f968ac9ba5a0c0c6689a90e80d4", + "path": "experiments/replication-2026-07-17/decision-logs.json", + "expected_bytes": 144527, + "expected_sha256": "9fb48b2c0a837f91581c5faf5a043126348b6f86e64bf2383182f65978ffdca6", + "access": "PUBLIC_EXTERNAL", + "verification_status": "VERIFIED_BYTES" + }, + { + "source_id": "EV-STABLE-REPLAY", + "kind": "public_git_blob", + "repository": "JakeTOpenSource/the-stable", + "commit": "77408db59cad3f968ac9ba5a0c0c6689a90e80d4", + "path": "bridge/replay-replication.js", + "expected_bytes": 5373, + "expected_sha256": "2fd2afa0b90395194b3165e19c580c4af626dfae7f54cb44193b1c326d25ebb0", + "access": "PUBLIC_EXTERNAL", + "verification_status": "VERIFIED_BYTES" + }, + { + "source_id": "EV-STABLE-CELLS", + "kind": "public_git_blob", + "repository": "JakeTOpenSource/the-stable", + "commit": "77408db59cad3f968ac9ba5a0c0c6689a90e80d4", + "path": "bridge/replication-cells.json", + "expected_bytes": 8097, + "expected_sha256": "326b544a425daf07fe38790d58ee1dfdba825536bec84e7f81a3c46b187e2939", + "access": "PUBLIC_EXTERNAL", + "verification_status": "VERIFIED_BYTES" + }, + { + "source_id": "EV-STABLE-GATE", + "kind": "public_git_blob", + "repository": "JakeTOpenSource/the-stable", + "commit": "77408db59cad3f968ac9ba5a0c0c6689a90e80d4", + "path": "stable-gate.js", + "expected_bytes": 15250, + "expected_sha256": "7ab31a6cd8daa969a61230cb545db30c27b8cf80820150b07bc7328c5e16a9a2", + "access": "PUBLIC_EXTERNAL", + "verification_status": "VERIFIED_BYTES" + }, + { + "source_id": "EV-WINDOWS-CLEAN-CLONE-V3", + "kind": "packet_file", + "path": "evidence/reproduction/WINDOWS-CLEAN-CLONE-V3.md", + "expected_bytes": 3453, + "expected_sha256": "7f5476957fad26c621a730dba01a441a17262bf6a6b3d89a3c3f1168f9c6f7c2", + "access": "PUBLIC_PACKET", + "verification_status": "VERIFIED_BYTES" + }, + { + "source_id": "EV-REPRODUCE-RUNBOOK", + "kind": "packet_file", + "path": "REPRODUCE.md", + "expected_bytes": 3408, + "expected_sha256": "dde7934c3a54cc2b1b1156314dbbcd22d1855cd448f0478bfa770678a8cbffcf", + "access": "PUBLIC_PACKET", + "verification_status": "VERIFIED_BYTES" + }, + { + "source_id": "EV-PACKET-EOL-RULE", + "kind": "packet_file", + "path": ".gitattributes", + "expected_bytes": 239, + "expected_sha256": "7ccb36d6cee337107bbdd2ac846114861d66e81b803cfead82bbb8e639598a54", + "access": "PUBLIC_PACKET", + "verification_status": "VERIFIED_BYTES" + }, + { + "source_id": "EV-PAPER-CONTEXT", + "kind": "paper_context", + "access": "PUBLIC_PACKET", + "verification_status": "NOT_EVIDENCE" + } + ], + "claims": [ + { + "claim_id": "FMOTA-V4-CLM-001", + "section": "Abstract", + "scope": "paragraph", + "fragment": "FRONT", + "claim_text": "This paper proposes the State Transition Protocol as a typed boundary around a probabilistic proposer. A conceptual ten-stage lifecycle separates proposal from authority, execution, observation, acceptance, and correction. The broader observation algebra and six-condition reporting surface are also design proposals.", + "claim_text_sha256": "7e376684c19a7fca6cbd535703619017bb7619bda15731c44e81f40c06b1964a", + "review_source_ids": [ + "EV-PAPER-CONTEXT" + ], + "review_questions": [ + "Which one Table 1 marker is supported by the registered and available material?", + "What is the strongest reading the registered material actually supports?" + ] + }, + { + "claim_id": "FMOTA-V4-CLM-002", + "section": "Abstract", + "scope": "paragraph", + "fragment": "FRONT", + "claim_text": "The public packet implements a narrower seven-event instrument profile over synthetic fixtures; it is not a complete implementation of that lifecycle. Within the tested slice, deterministic reducers rebuild a finite projection from pinned inputs.", + "claim_text_sha256": "fdc1f50ea21fb6b1cf498ee026e539b8294ef4d2e800c3bc31662809b46d9e09", + "review_source_ids": [ + "EV-PUBLIC-STP-COMMIT" + ], + "review_questions": [ + "Which one Table 1 marker is supported by the registered and available material?", + "What is the strongest reading the registered material actually supports?" + ] + }, + { + "claim_id": "FMOTA-V4-CLM-003", + "section": "Abstract", + "scope": "paragraph", + "fragment": "FRONT", + "claim_text": "Three additional local packets test a finite query representation, transition-stable refinement, and recovery of frozen answer fields from one compact prompt. That prompt declared separate gate, forecast, and pending-resolution fields; all three responses recovered the frozen finite outputs. No real forecast was issued or resolved. These local results extend the analysis but are not part of the pinned public commit.", + "claim_text_sha256": "1ead4ada9fe250f8bae6a08a4c258dce6720eb3ceddb213670cd9c9738dfab1d", + "review_source_ids": [ + "EV-DEVICE-ANALYSIS", + "EV-DEVICE-RECEIPT", + "EV-TRANSITION-REPORT", + "EV-TRANSITION-RECEIPT", + "EV-BP-PROMPT", + "EV-BP-SUMMARY", + "EV-BP-EVALUATOR", + "EV-BP-RECEIPT", + "EV-PUBLIC-STP-COMMIT" + ], + "review_questions": [ + "Which one Table 1 marker is supported by the registered and available material?", + "What is the strongest reading the registered material actually supports?" + ] + }, + { + "claim_id": "FMOTA-V4-CLM-004", + "section": "Abstract", + "scope": "paragraph", + "fragment": "FRONT", + "claim_text": "The evidence is finite and I state its limits precisely. Separate JavaScript and Python ports derived from the same specification and fixture corpus produce the same projection root over the pinned inputs, and did so on runtime versions two releases apart from the pinned continuous-integration environment. This is cross-language replay parity, not independent reproduction. Thirty-four runner-reported numbered holds across twelve suites are a diagnostic inventory, not a coverage measure. A data contract found that six public views of one 439-term source had drifted apart, and that 258 shared terms disagreed on review status. A production observation found 100 of 102 paths matching and left two unresolved rather than rounding them off.", + "claim_text_sha256": "5567e94afbc4d50b334d0dcec5f4851c3a960513baa6c4d9386936046a8b5d3a", + "review_source_ids": [ + "EV-RL-LEDGER-LIB", + "EV-RL-REPLAY-PY", + "EV-RL-VERIFY-REPLAYERS", + "EV-RL-GATE", + "EV-RL-ATLAS-DATA-CONTRACT", + "EV-RL-ATLAS-RUNTIME-CONTRACT", + "EV-RL-OBSERVATION-000001" + ], + "review_questions": [ + "Which one Table 1 marker is supported by the registered and available material?", + "What is the strongest reading the registered material actually supports?" + ] + }, + { + "claim_id": "FMOTA-V4-CLM-005", + "section": "1The problem, in plain terms", + "scope": "paragraph", + "fragment": "SUMMARY", + "claim_text": "The public evidence is narrower than the conceptual protocol. It establishes finite behavior for an instrumented seven-event profile and related harnesses. It does not establish end-to-end conformance with the proposed ten-stage lifecycle.", + "claim_text_sha256": "816a828171333eb93eda9bb7a125535d5b95e3ef97b904bd66263d48d51e1945", + "review_source_ids": [ + "EV-PUBLIC-STP-COMMIT" + ], + "review_questions": [ + "Which one Table 1 marker is supported by the registered and available material?", + "What is the strongest reading the registered material actually supports?" + ] + }, + { + "claim_id": "FMOTA-V4-CLM-006", + "section": "Artifact identity is part of the result", + "scope": "paragraph", + "fragment": "CLAIMS", + "claim_text": "The Calibration Ledger document I hold does not match the Ledger digest printed in State Transition Protocol v1.1, and I could not retrieve the bytes that digest was computed over. I do not know whether the document is a later revision, a sibling artifact, or an unrelated export. I have not treated the two as equivalent anywhere in this paper.", + "claim_text_sha256": "6002d12197f284aefdd5e95c5036f4086408b9b87c2f99220373c7243861728e", + "review_source_ids": [ + "EV-PAPER-CONTEXT" + ], + "review_questions": [ + "Which one Table 1 marker is supported by the registered and available material?", + "What is the strongest reading the registered material actually supports?" + ] + }, + { + "claim_id": "FMOTA-V4-CLM-007", + "section": "Two lanes, one acceptance boundary", + "scope": "paragraph", + "fragment": "BOUNDARY", + "claim_text": "The proposed record order is FREEZE_FORECAST \u2192 CHOOSE_ACTION \u2192 APPEND_RESOLUTION \u2192 SCORE_FORECAST \u2192 UPDATE_CALIBRATION. Before a qualified resolution is appended, the forecast remains pending. Pending is not zero, false, success, or failure. A reducer for these proposed records can verify the order, identities, score, and replay without claiming that the forecast was true when issued or that the selected action was wise.", + "claim_text_sha256": "2540976e28d195ddd74fa36cb0d64cfb356e648dc4c0b562f5ba52107828a6ef", + "review_source_ids": [ + "EV-PAPER-CONTEXT" + ], + "review_questions": [ + "Which one Table 1 marker is supported by the registered and available material?", + "What is the strongest reading the registered material actually supports?" + ] + }, + { + "claim_id": "FMOTA-V4-CLM-008", + "section": "Two lanes, one acceptance boundary", + "scope": "paragraph", + "fragment": "BOUNDARY", + "claim_text": "BP-001 used HOLD as a frozen gate value and asked for its execution output, BLOCK. This paper maps an UNRESOLVED condition to HOLD as a post-test vocabulary crosswalk. BP-001 established HOLD to BLOCK only; it did not test the crosswalk.", + "claim_text_sha256": "0bb27775359f45e922a12b70a36c74a52b50d4a96b54ed712096213d356c40fb", + "review_source_ids": [ + "EV-BP-PROMPT", + "EV-BP-SUMMARY", + "EV-PAPER-CONTEXT" + ], + "review_questions": [ + "Which one Table 1 marker is supported by the registered and available material?", + "What is the strongest reading the registered material actually supports?" + ] + }, + { + "claim_id": "FMOTA-V4-CLM-009", + "section": "What the threat model covers", + "scope": "paragraph", + "fragment": "BOUNDARY", + "claim_text": "The trusted computing base is not one object. It is the policy, the schemas, the reducers, the canonicalization rules, the authority registry, the keys, the clocks, the instrument contracts, the evidence stores, and the release process. This implementation does not provide an independently operated root of trust for all of them.", + "claim_text_sha256": "73d26d9db98fef14b0504036d6023db98f5699e4f9db81378183c355b0685491", + "review_source_ids": [ + "EV-RL-TREE-275D", + "EV-PAPER-CONTEXT" + ], + "review_questions": [ + "Which one Table 1 marker is supported by the registered and available material?", + "What is the strongest reading the registered material actually supports?" + ] + }, + { + "claim_id": "FMOTA-V4-CLM-010", + "section": "4A proposed ten-stage lifecycle", + "scope": "paragraph", + "fragment": "LIFECYCLE", + "claim_text": "The candidate lifecycle runs PROPOSE, NORMALIZE, CHECK, AUTHORIZE, PREPARE, EXECUTE, OBSERVE, ACCEPT, OUTCOME, CORRECT. It is not a pipeline that succeeds. Every stage can refuse, return unknown, and stop. A failed attempt stays in the history without moving accepted state. This is the conceptual protocol, not the event vocabulary of the current executable packet.", + "claim_text_sha256": "19306c4d186fd84b38f153f5acd8ef7c065d129bdf1649c378dd9833cdfb1990", + "review_source_ids": [ + "EV-PAPER-CONTEXT" + ], + "review_questions": [ + "Which one Table 1 marker is supported by the registered and available material?", + "What is the strongest reading the registered material actually supports?" + ] + }, + { + "claim_id": "FMOTA-V4-CLM-011", + "section": "The executable slice is narrower", + "scope": "paragraph", + "fragment": "LIFECYCLE", + "claim_text": "The pinned public packet is a proposed Instrumented Transition and Survivability Profile tested over synthetic fixtures. Its event vocabulary is PLAN \u2192 AUTHORIZE? \u2192 INVOKE \u2192 COMMIT \u2192 SENSING_EFFECT? \u2192 OBSERVE \u2192 SETTLE. A question mark means the phase is optional only when the pinned instrument profile permits omission. These seven event types exercise a bounded instrument profile. They do not implement the complete ten-stage lifecycle, and SETTLE is not silently renamed ACCEPT.", + "claim_text_sha256": "e16cd70810bb7569a048df1a6d5f49f8aabc99fc3b003ab1b37a48fa7442f244", + "review_source_ids": [ + "EV-PUBLIC-STP-COMMIT" + ], + "review_questions": [ + "Which one Table 1 marker is supported by the registered and available material?", + "What is the strongest reading the registered material actually supports?" + ] + }, + { + "claim_id": "FMOTA-V4-CLM-012", + "section": "The executable slice is narrower", + "scope": "paragraph", + "fragment": "LIFECYCLE", + "claim_text": "Observe. A declared witness measures a postcondition, recording procedure, result type, operating conditions, freshness, and known uncertainty. Accept. A named authority advances the projection only when the required predicates and receipts satisfy policy. Acceptance is never inferred from a tool's success code. Outcome. A later observation records consequence, which can arrive long after acceptance. Correct. A correction opens a new governed transition that names the prior record and states the proposed replacement and reason. It never edits the record it corrects. The replacement changes accepted state only after a new acceptance record satisfies the current policy. CORRECT cannot bypass ACCEPT.", + "claim_text_sha256": "ee780c5705b2ed2b52959773620f7e9ae861f1fc0a37265f9fc59d252b14f4e0", + "review_source_ids": [ + "EV-PAPER-CONTEXT" + ], + "review_questions": [ + "Which one Table 1 marker is supported by the registered and available material?", + "What is the strongest reading the registered material actually supports?" + ] + }, + { + "claim_id": "FMOTA-V4-CLM-013", + "section": "How required checks aggregate", + "scope": "block", + "fragment": "LIFECYCLE", + "claim_text": "The transition gate maps condition FAIL to REFUSE, carries UNRESOLVED through unchanged, and otherwise returns PASS. An empty required set returns UNRESOLVED with reason INVALID_POLICY, never a vacuous pass. Policy may be stricter. Policy may not map an unresolved required predicate to pass.", + "claim_text_sha256": "7dcba09e70f592c80a349e467becf05a608161b68e275d42a2e8b060d331e2ee", + "review_source_ids": [ + "EV-PAPER-CONTEXT" + ], + "review_questions": [ + "Which one Table 1 marker is supported by the registered and available material?", + "What is the strongest reading the registered material actually supports?" + ] + }, + { + "claim_id": "FMOTA-V4-CLM-014", + "section": "How required checks aggregate", + "scope": "paragraph", + "fragment": "LIFECYCLE", + "claim_text": "The public instrument and concurrency reducers test narrower, reason-specific PASS, FAIL, and UNKNOWN outputs, including local NOT_REQUIRED obligation positions. They do not expose this general set aggregator, a mixed false-plus-unknown precedence fixture, or the empty-set INVALID_POLICY rule. The general normalization above is therefore a design target, not a reported test result.", + "claim_text_sha256": "fd2ece349714ed2b46c46c437e7c72fbcd0f65d2abd9a0d4aec4204dd767e7b4", + "review_source_ids": [ + "EV-PUBLIC-STP-COMMIT", + "EV-PAPER-CONTEXT" + ], + "review_questions": [ + "Which one Table 1 marker is supported by the registered and available material?", + "What is the strongest reading the registered material actually supports?" + ] + }, + { + "claim_id": "FMOTA-V4-CLM-015", + "section": "5Measurement before acceptance", + "scope": "paragraph", + "fragment": "OBSERVATION", + "claim_text": "For a scalar quantity, one conservative decision rule could require |delta_hat| + k u_delta \u2264 epsilon, with k, the meaning of u_delta, the interval, and the procedure fixed before evaluation. That rule is an example, not a universal definition. If the required uncertainty or operating conditions are missing, the evaluator returns UNKNOWN rather than NO_CHANGE. The full tuple above is a design proposal.", + "claim_text_sha256": "23fce1ef9cd771eb40e9ddaf14a8f16d2f46a2088e6e05ae76ad0ec6ba53a752", + "review_source_ids": [ + "EV-PAPER-CONTEXT" + ], + "review_questions": [ + "Which one Table 1 marker is supported by the registered and available material?", + "What is the strongest reading the registered material actually supports?" + ] + }, + { + "claim_id": "FMOTA-V4-CLM-016", + "section": "5Measurement before acceptance", + "scope": "paragraph", + "fragment": "OBSERVATION", + "claim_text": "The public instrument profile tests the narrower label NO_CHANGE_DETECTED bound to a declared resolution and observation window; it does not implement the full uncertainty-aware tuple.", + "claim_text_sha256": "95b13287bde69528d5728244325f09a6bbe9aaade341bed310702aec6c3cb2ff", + "review_source_ids": [ + "EV-PUBLIC-STP-COMMIT" + ], + "review_questions": [ + "Which one Table 1 marker is supported by the registered and available material?", + "What is the strongest reading the registered material actually supports?" + ] + }, + { + "claim_id": "FMOTA-V4-CLM-017", + "section": "Forecasts are records about later events", + "scope": "paragraph", + "fragment": "OBSERVATION", + "claim_text": "The architectural consequence is to estimate, freeze, and later score the forecast as one lane, then select an action under a separately declared policy. If the action can change the event distribution, the record must identify that action and either forecast Pr(Y | I_t, action) or preserve a clearly labeled pre-action scenario. Otherwise the intervention can be mistaken for forecast error. This is related to the feedback problem studied as performative prediction [42].", + "claim_text_sha256": "3f36236e105687284b08b70a2e9b2c2f19a0e40ebb318122a6f2cadfa428dedd", + "review_source_ids": [ + "EV-PAPER-CONTEXT" + ], + "review_questions": [ + "Which one Table 1 marker is supported by the registered and available material?", + "What is the strongest reading the registered material actually supports?" + ] + }, + { + "claim_id": "FMOTA-V4-CLM-018", + "section": "Three meanings of calibration that must remain separate", + "scope": "paragraph", + "fragment": "OBSERVATION", + "claim_text": "So this paper uses protocol-calibrated predicate for the project's strict software condition. It is computable from declared inputs. It implies no SI traceability, no calibration hierarchy, and no probability that a system is healthy. The bridge to metrology is procedural. The protocol can carry measurement identity, uncertainty, conditions, and decision rules without collapsing them. It does not compute an uncertainty budget, qualify a laboratory, or establish forecast calibration.", + "claim_text_sha256": "f938d237f90332a8fd2de8776cccb662cf1fcf6dc87fefb845796ee8f136448f", + "review_source_ids": [ + "EV-PAPER-CONTEXT" + ], + "review_questions": [ + "Which one Table 1 marker is supported by the registered and available material?", + "What is the strongest reading the registered material actually supports?" + ] + }, + { + "claim_id": "FMOTA-V4-CLM-019", + "section": "6Cross-language replay parity", + "scope": "block", + "fragment": "REPLAY", + "claim_text": "C serializes nulls, booleans, finite numbers, and strings, preserves array order, sorts object keys recursively, and emits no insignificant whitespace. This is not RFC 8785 canonicalization and makes no claim about Unicode keys outside the pinned corpus, whose keys are ASCII.", + "claim_text_sha256": "acecb5ce03804585e0337a756ab476818a44b7f3069af2972a9bb1bef1bd6e9c", + "review_source_ids": [ + "EV-RL-LEDGER-LIB", + "EV-RL-REPLAY-PY", + "EV-RL-VERIFY-REPLAYERS" + ], + "review_questions": [ + "Which one Table 1 marker is supported by the registered and available material?", + "What is the strongest reading the registered material actually supports?" + ] + }, + { + "claim_id": "FMOTA-V4-CLM-020", + "section": "6Cross-language replay parity", + "scope": "paragraph", + "fragment": "REPLAY", + "claim_text": "One result strengthens it slightly. Continuous integration pins Node 22.17.1 and Python 3.12.10. I reran both reducers on Node 24.18.0 and Python 3.14.6, two release lines later, and got the identical projection root with all checks holding. That is evidence the parity is not an artifact of one pinned runtime.", + "claim_text_sha256": "1b891c6f067dd63842d09daa5265275dc9bfea341e317f72f5c4ddd5ac2a76bd", + "review_source_ids": [ + "EV-RL-LEDGER-LIB", + "EV-RL-REPLAY-PY", + "EV-RL-VERIFY-REPLAYERS", + "EV-RL-CI-GATES" + ], + "review_questions": [ + "Which one Table 1 marker is supported by the registered and available material?", + "What is the strongest reading the registered material actually supports?" + ] + }, + { + "claim_id": "FMOTA-V4-CLM-021", + "section": "6Cross-language replay parity", + "scope": "table_row", + "fragment": "REPLAY", + "claim_text": "1Records satisfy a declared structural schema", + "claim_text_sha256": "c415760e240a8af2a6731b0086b65bcdede6496ba2d3e02e907880cd7122e497", + "review_source_ids": [ + "EV-PUBLIC-STP-COMMIT" + ], + "review_questions": [ + "Which one Table 1 marker is supported by the registered and available material?", + "What is the strongest reading the registered material actually supports?" + ] + }, + { + "claim_id": "FMOTA-V4-CLM-022", + "section": "6Cross-language replay parity", + "scope": "table_row", + "fragment": "REPLAY", + "claim_text": "2One implementation repeats its own result", + "claim_text_sha256": "69257484fc563a48b80f29afa2d2f3e9d8b08c928e6b476b1a0d78f34e6a2b37", + "review_source_ids": [ + "EV-PUBLIC-STP-COMMIT" + ], + "review_questions": [ + "Which one Table 1 marker is supported by the registered and available material?", + "What is the strongest reading the registered material actually supports?" + ] + }, + { + "claim_id": "FMOTA-V4-CLM-023", + "section": "6Cross-language replay parity", + "scope": "table_row", + "fragment": "REPLAY", + "claim_text": "3Cross-language ports agree on pinned inputs", + "claim_text_sha256": "3984b5ee23d3835ff87276152df995ab183b89c36040fee2d2593386484ec4ca", + "review_source_ids": [ + "EV-RL-LEDGER-LIB", + "EV-RL-REPLAY-PY", + "EV-RL-VERIFY-REPLAYERS" + ], + "review_questions": [ + "Which one Table 1 marker is supported by the registered and available material?", + "What is the strongest reading the registered material actually supports?" + ] + }, + { + "claim_id": "FMOTA-V4-CLM-024", + "section": "6Cross-language replay parity", + "scope": "table_row", + "fragment": "REPLAY", + "claim_text": "4Another team reproduces from a minimized packet", + "claim_text_sha256": "27618071e86b47de34cdc7ad46bb0c2eda9e98d7477c0b7b0131329d3652c857", + "review_source_ids": [ + "EV-PAPER-CONTEXT" + ], + "review_questions": [ + "Which one Table 1 marker is supported by the registered and available material?", + "What is the strongest reading the registered material actually supports?" + ] + }, + { + "claim_id": "FMOTA-V4-CLM-025", + "section": "6Cross-language replay parity", + "scope": "table_row", + "fragment": "REPLAY", + "claim_text": "5A new study obtains fresh evidence for the question", + "claim_text_sha256": "9ad96cc1b818919193dba7da78b8dbcdfb024208c024f451c52d46bad1d65bea", + "review_source_ids": [ + "EV-PAPER-CONTEXT" + ], + "review_questions": [ + "Which one Table 1 marker is supported by the registered and available material?", + "What is the strongest reading the registered material actually supports?" + ] + }, + { + "claim_id": "FMOTA-V4-CLM-026", + "section": "6Cross-language replay parity", + "scope": "table_row", + "fragment": "REPLAY", + "claim_text": "6The result stays informative in another system", + "claim_text_sha256": "f4d505aebd70bebeb08b44b88b8601332d0344d2fd34128d07ecd6f1c7c7ff9f", + "review_source_ids": [ + "EV-PAPER-CONTEXT" + ], + "review_questions": [ + "Which one Table 1 marker is supported by the registered and available material?", + "What is the strongest reading the registered material actually supports?" + ] + }, + { + "claim_id": "FMOTA-V4-CLM-027", + "section": "The integrity ladder", + "scope": "paragraph", + "fragment": "REPLAY", + "claim_text": "A privileged custodian can replace an entire unanchored history and recompute every hash. A chain therefore supports consistency checks against a trusted anchor; it does not make storage immutable or prove that additions were the only changes. Resisting replacement needs external checkpoints, signatures, access control, or independent witnesses. The repository's additions-only check states this ceiling in its output rather than implying otherwise: it reports that Git branch protection and an external witness are required to resist history replacement.", + "claim_text_sha256": "32f639c80265989fe4973bcc8ed7d59bc22cd151ce18261aacff0e58014ce605", + "review_source_ids": [ + "EV-RL-GATE" + ], + "review_questions": [ + "Which one Table 1 marker is supported by the registered and available material?", + "What is the strongest reading the registered material actually supports?" + ] + }, + { + "claim_id": "FMOTA-V4-CLM-028", + "section": "The chain construction", + "scope": "block", + "fragment": "REPLAY", + "claim_text": "D is this protocol's domain separation tag. Its value is arbitrary by construction, in the sense that any distinct constant separates domains equally well, and it is fixed here so that two implementations agree. The profile must also pin the length encoding, duplicate-key handling, number and Unicode rendering, media type, schema version, and the initial value h(-1). The current implementation uses local canonicalizers and does not claim RFC 8785 conformance.", + "claim_text_sha256": "c215a7e813a94911589cd1da2b8cd4b6d1af16484a160256fc091e8e05b6d6f8", + "review_source_ids": [ + "EV-RL-LEDGER-LIB", + "EV-RL-REPLAY-PY", + "EV-RL-VERIFY-REPLAYERS", + "EV-PAPER-CONTEXT" + ], + "review_questions": [ + "Which one Table 1 marker is supported by the registered and available material?", + "What is the strongest reading the registered material actually supports?" + ] + }, + { + "claim_id": "FMOTA-V4-CLM-029", + "section": "Claim-relative evidence surfaces, and the surface this work has not tested", + "scope": "table_row", + "fragment": "REPLAY", + "claim_text": "Artifact-internal structureOne artifact satisfies its declared shape and consistency rules A coherent false record or a faulty rule can pass", + "claim_text_sha256": "2cd2dac02ad664ab3276609d4ee92d5e969f2912a0859fd0b0882509862ed3a9", + "review_source_ids": [ + "EV-PUBLIC-STP-COMMIT" + ], + "review_questions": [ + "Which one Table 1 marker is supported by the registered and available material?", + "What is the strongest reading the registered material actually supports?" + ] + }, + { + "claim_id": "FMOTA-V4-CLM-030", + "section": "Claim-relative evidence surfaces, and the surface this work has not tested", + "scope": "table_row", + "fragment": "REPLAY", + "claim_text": "Cross-implementation replaySeparate implementations produce the same projection from the same bytes A shared specification, fixture, or source record can be wrong in common", + "claim_text_sha256": "9f306b7b6bd6b271d49fa994674a05d58168e42e7f0b3d42829262e4c7192fb8", + "review_source_ids": [ + "EV-RL-LEDGER-LIB", + "EV-RL-REPLAY-PY", + "EV-RL-VERIFY-REPLAYERS" + ], + "review_questions": [ + "Which one Table 1 marker is supported by the registered and available material?", + "What is the strongest reading the registered material actually supports?" + ] + }, + { + "claim_id": "FMOTA-V4-CLM-031", + "section": "Claim-relative evidence surfaces, and the surface this work has not tested", + "scope": "table_row", + "fragment": "REPLAY", + "claim_text": "Physical observationA declared physical quantity covaries with a declared execution condition Instrument, driver, clock, host, custody, calibration, and inference model", + "claim_text_sha256": "93916ee669996069297638450199d5091afc7183eff0c1aa0837f06735162b56", + "review_source_ids": [ + "EV-PAPER-CONTEXT" + ], + "review_questions": [ + "Which one Table 1 marker is supported by the registered and available material?", + "What is the strongest reading the registered material actually supports?" + ] + }, + { + "claim_id": "FMOTA-V4-CLM-032", + "section": "Claim-relative evidence surfaces, and the surface this work has not tested", + "scope": "paragraph", + "fragment": "REPLAY", + "claim_text": "A physical trace is not unforgeable, and the countermeasure literature on masking, hiding, and noise injection exists precisely because traces can be shaped. A sensor reading is not self-authenticating, since custody, calibration, and the path from probe to record are attackable. A correlation between load and an assertion about behavior is not a mechanism. Supporting a narrow physical predicate would require a declared measurand, calibration reference, operating limits, uncertainty budget, known sensing footprint, and a pre-registered discrimination task with false-accept and false-reject rates. Those conditions have not been met here.", + "claim_text_sha256": "56940125ed86f0f4818687405124a320f1acb29deac8f9b64d5e736ef9c2c6a0", + "review_source_ids": [ + "EV-PAPER-CONTEXT" + ], + "review_questions": [ + "Which one Table 1 marker is supported by the registered and available material?", + "What is the strongest reading the registered material actually supports?" + ] + }, + { + "claim_id": "FMOTA-V4-CLM-033", + "section": "7Evidence state, reported as a vector", + "scope": "paragraph", + "fragment": "EVIDENCE", + "claim_text": "R is the non-stale-label fraction: the share of applicable conditions not labeled stale. An unknown condition counts as non-stale while staying non-decisive, so R is not a measure of fresh evidence about the world. A stronger receipt-coverage measure would need deterministic receipt selection bound to subject, check, generation, and evaluation cut, with ties on sequence returning a typed conflict rather than a choice. The current schema does not carry those bindings, so I make no fixture claim for it.", + "claim_text_sha256": "4101353f6f8f5d79e0c88a9a23607494d553c0535168b2a3309efbebf0d50738", + "review_source_ids": [ + "EV-PAPER-CONTEXT" + ], + "review_questions": [ + "Which one Table 1 marker is supported by the registered and available material?", + "What is the strongest reading the registered material actually supports?" + ] + }, + { + "claim_id": "FMOTA-V4-CLM-034", + "section": "Probability does not select policy", + "scope": "paragraph", + "fragment": "EVIDENCE", + "claim_text": "An infinite representation space does not imply infinitely many behavioral answers. Many encodings can implement the same policy or forecast function. A unique optimizer may also exist on an infinite domain. Where several admissible actions remain incomparable and no authorized preference rule exists, the honest output is the frontier and an unresolved selection, not a hidden default.", + "claim_text_sha256": "ca4142f59bcab13104446baf32cafc7ef3b230c177f7a1a81d6500b4bd0eccf1", + "review_source_ids": [ + "EV-PAPER-CONTEXT" + ], + "review_questions": [ + "Which one Table 1 marker is supported by the registered and available material?", + "What is the strongest reading the registered material actually supports?" + ] + }, + { + "claim_id": "FMOTA-V4-CLM-035", + "section": "A proposed drift vector", + "scope": "paragraph", + "fragment": "EVIDENCE", + "claim_text": "The following design records drift as eight components whose units remain separate. No committed reducer computes the complete vector, so the table is a specification target rather than a reported implementation result.", + "claim_text_sha256": "ae73831e7001294df9cf6b99c277602fc108d823f18eab5fb35a68391475c248", + "review_source_ids": [ + "EV-PAPER-CONTEXT" + ], + "review_questions": [ + "Which one Table 1 marker is supported by the registered and available material?", + "What is the strongest reading the registered material actually supports?" + ] + }, + { + "claim_id": "FMOTA-V4-CLM-036", + "section": "A proposed drift vector", + "scope": "paragraph", + "fragment": "EVIDENCE", + "claim_text": "DRIFT_DETECTED requires a decisive component that the pinned policy marks blocking. DRIFT_NOT_DETECTED means no declared test detected drift. It does not mean drift is absent, and the two readings are not interchangeable.", + "claim_text_sha256": "51be17256a4e724e4b28030300482a0769241a6f2a6cbb5251832480079cf869", + "review_source_ids": [ + "EV-PAPER-CONTEXT" + ], + "review_questions": [ + "Which one Table 1 marker is supported by the registered and available material?", + "What is the strongest reading the registered material actually supports?" + ] + }, + { + "claim_id": "FMOTA-V4-CLM-037", + "section": "Six signals", + "scope": "paragraph", + "fragment": "EVIDENCE", + "claim_text": "The order is normative, not cosmetic. Conditions are reported as protocol calibration, consequence, evidence, integrity, privacy, activity, and a conforming surface renders them in that sequence so that two deployments can be read against each other without remapping. Any total order would serve equally well. This one is fixed so that the choice is not left to each renderer.", + "claim_text_sha256": "9b630b606f0e3e5576d4154732cc3c73de3ef213a0c3f8b0863ad0a6987549f8", + "review_source_ids": [ + "EV-PAPER-CONTEXT" + ], + "review_questions": [ + "Which one Table 1 marker is supported by the registered and available material?", + "What is the strongest reading the registered material actually supports?" + ] + }, + { + "claim_id": "FMOTA-V4-CLM-038", + "section": "Six signals", + "scope": "paragraph", + "fragment": "EVIDENCE", + "claim_text": "Each predicate returns PASS, FAIL, UNKNOWN, STALE, ERROR, or NOT_APPLICABLE under a pinned policy. The public case study renders partial lamps, but it does not implement this general six-predicate decision contract.", + "claim_text_sha256": "df9c201f34a125cf39a5f8fee02f28fe4e28bcc07b5c1c80b8121ee0b381d4fb", + "review_source_ids": [ + "EV-RL-GATE", + "EV-PAPER-CONTEXT" + ], + "review_questions": [ + "Which one Table 1 marker is supported by the registered and available material?", + "What is the strongest reading the registered material actually supports?" + ] + }, + { + "claim_id": "FMOTA-V4-CLM-039", + "section": "8.2 Finite activation, quotient, and frozen-oracle packets", + "scope": "paragraph", + "fragment": "RESULTS", + "claim_text": "The packets share a recorded operator, orchestration platform, prompt, and response schema. Their requested model labels are metadata; common model ancestry is plausible but not established. Agreement is therefore bounded prompt-oracle agreement, not independent validation. The expected activation analysis, quotient report, and BP-001 evaluator report are pinned locally by digests 7c550d125d38, 1b0e78adcac7, and de2c28735762. Appendix C gives the full values and either public packet locators or retained source IDs.", + "claim_text_sha256": "29fef20f4ebeea591860b26a2b62c40a5a2f6e6a10c78120d36e16aaa7dbc2a2", + "review_source_ids": [ + "EV-DEVICE-ANALYSIS", + "EV-DEVICE-RECEIPT", + "EV-TRANSITION-REPORT", + "EV-TRANSITION-RECEIPT", + "EV-BP-PROMPT", + "EV-BP-SUMMARY", + "EV-BP-EVALUATOR", + "EV-BP-RECEIPT", + "EV-PAPER-CONTEXT" + ], + "review_questions": [ + "Which one Table 1 marker is supported by the registered and available material?", + "What is the strongest reading the registered material actually supports?" + ] + }, + { + "claim_id": "FMOTA-V4-CLM-062", + "section": "8.3 Related work boundary", + "scope": "paragraph", + "fragment": "RESULTS", + "claim_text": "Two narrower separations remain. First, UNRESOLVED is a condition about evidence, not a verdict about an action. AgentBound composes three authorities into the lattice Deny < Review < Permit, where Review is a deferred authorization carrying a dischargeable obligation, and satisfying human approval converts it to execution [50]. ESAA is binary, emitting output.rejected on contract violation [49]. Neither carries a state for a required check that is missing, stale, or errored. This design does. UNRESOLVED records that the evidence was not obtained, it is not discharged by an approver, and the aggregation rule in section 4 forbids any policy from mapping it to a pass. An empty required set returns UNRESOLVED with reason INVALID_POLICY rather than a vacuous pass. Second, observation and acknowledgement are separate planes from acceptance. Both cited systems gate before execution and treat the applied effect as the record. This design records submission, acknowledgement, partial execution, commit, failure, timeout, and unknown effect as distinct outcomes, and requires a declared instrument's qualified observation before a named authority may advance accepted state. A tool's success code is not an observation, and an observation is not an acceptance. The record types proposed in sections 4 and 7 are one candidate discharge mechanism for the disclosure and correctness duties named by the Leiden Declaration [51]. These comparisons rest on the arXiv HTML renders of both papers, not on their PDFs or any implementation, and no systematic review was completed. This paragraph positions the work and makes no priority claim.", + "claim_text_sha256": "38f32cc7e2ca54550831e6077e007f7c706e222924cfffea6d8c2d148a0c7089", + "review_source_ids": [ + "EV-PAPER-CONTEXT" + ], + "review_questions": [ + "Which one Table 1 marker is supported by the registered and available material?", + "What is the strongest reading the registered material actually supports?" + ] + }, + { + "claim_id": "FMOTA-V4-CLM-040", + "section": "9.1 The gate", + "scope": "paragraph", + "fragment": "RESULTS", + "claim_text": "Four of the sixteen scripts print a named pass with no numbered hold: the replay driver, the runtime check, the home surface check, and the public explanation check. Their results are therefore omitted from the total of 34. That total is a runner-reported diagnostic inventory, not a coverage measure or a count of everything checked.", + "claim_text_sha256": "26261620178d53cc72aff703ae045e0f2e7e2d3ab3386e0808d3ef72a1df5e94", + "review_source_ids": [ + "EV-RL-GATE" + ], + "review_questions": [ + "Which one Table 1 marker is supported by the registered and available material?", + "What is the strongest reading the registered material actually supports?" + ] + }, + { + "claim_id": "FMOTA-V4-CLM-041", + "section": "9.2 One source, six incompatible views", + "scope": "paragraph", + "fragment": "RESULTS", + "claim_text": "The repair did not declare one file true. It registered a candidate source, measured every projection against it, stored the mismatch sets by digest, and added mutation tests. Historical regeneration stayed impossible for some consumers because their selection rules were never recorded. The 439-term source remains a candidate inventory, and no check here validates a single definition.", + "claim_text_sha256": "90770fc9f8dc4a20e6aee4e317d97969a7980ec1e11b232b81f6f8525c4a538a", + "review_source_ids": [ + "EV-RL-ATLAS-DATA-CONTRACT", + "EV-RL-ATLAS-RUNTIME-CONTRACT", + "EV-RL-GATE" + ], + "review_questions": [ + "Which one Table 1 marker is supported by the registered and available material?", + "What is the strongest reading the registered material actually supports?" + ] + }, + { + "claim_id": "FMOTA-V4-CLM-042", + "section": "9.3 Source, deployment, and live bytes", + "scope": "paragraph", + "fragment": "RESULTS", + "claim_text": "The two mismatches were left unresolved rather than rounded away. Production served a homepage without the deferral script the repository carried, and a service worker naming cache aaig-v84 where the repository named aaig-v85. The receipt also records that the reported source commit was an empty string, and that the deployment completed roughly ten minutes before the then-current main commit existed, so that commit could not have been its source. The event decision was DEFER.", + "claim_text_sha256": "ce648398282c1a8787f673739963d8da22cb4a1cb4681d323d5e6b4c309dda69", + "review_source_ids": [ + "EV-RL-OBSERVATION-000001" + ], + "review_questions": [ + "Which one Table 1 marker is supported by the registered and available material?", + "What is the strongest reading the registered material actually supports?" + ] + }, + { + "claim_id": "FMOTA-V4-CLM-043", + "section": "9.3 Source, deployment, and live bytes", + "scope": "paragraph", + "fragment": "RESULTS", + "claim_text": "A later Git-connected deployment linked provider record to merged source with an exact commit relationship, and sampled two live routes. Both returned 200. Both differed from committed bytes by exactly one declared 214-byte analytics insertion with zero source bytes removed, which is why raw byte identity is recorded as mismatched and the transform relationship as matched. Both routes recorded no content security policy header. That receipt explicitly declines to establish global edge convergence, installed cache state, accessibility, privacy, security, semantic truth, durability, or any future state.", + "claim_text_sha256": "f308aba5939ca6f21985c08a29d1b668f7dd87202f9527b5ba7200ff8319b928", + "review_source_ids": [ + "EV-RL-OBSERVATION-000002" + ], + "review_questions": [ + "Which one Table 1 marker is supported by the registered and available material?", + "What is the strongest reading the registered material actually supports?" + ] + }, + { + "claim_id": "FMOTA-V4-CLM-044", + "section": "9.3 Source, deployment, and live bytes", + "scope": "paragraph", + "fragment": "RESULTS", + "claim_text": "The service-worker drift from the first receipt stayed open for two cache generations. A third receipt now closes it: production served bytes identical to the committed file, with both naming cache aaig-v87. Closing it required publishing a checkpoint, and the projection root was unchanged at 22852b5a3025, because an observation with no effect must not advance accepted state.", + "claim_text_sha256": "e839307f27610b7de9e30f5336250a80b7aff2a008eaee82c99007560170c78d", + "review_source_ids": [ + "EV-RL-OBSERVATION-000003", + "EV-RL-CHECKPOINT-000013" + ], + "review_questions": [ + "Which one Table 1 marker is supported by the registered and available material?", + "What is the strongest reading the registered material actually supports?" + ] + }, + { + "claim_id": "FMOTA-V4-CLM-045", + "section": "9.3 Source, deployment, and live bytes", + "scope": "paragraph", + "fragment": "RESULTS", + "claim_text": "The closure is bounded and the receipt says so. It records that the aaig-v85 and aaig-v86 generations were never observed in production and cannot be reconstructed, that one edge was sampled, and that installed client caches were not inspected. The process failure is the part worth keeping: an unresolved finding aged out of view for two versions because nothing scheduled its re-observation. The protocol recorded the gap faithfully and did not close it for me.", + "claim_text_sha256": "903fa2ed67086eb6889bdc7205ed62bf76208b97ada528f4c3fb0e461c984f0c", + "review_source_ids": [ + "EV-RL-OBSERVATION-000003", + "EV-RL-CHECKPOINT-000013" + ], + "review_questions": [ + "Which one Table 1 marker is supported by the registered and available material?", + "What is the strongest reading the registered material actually supports?" + ] + }, + { + "claim_id": "FMOTA-V4-CLM-046", + "section": "9.4 Finite representations and frozen-oracle results", + "scope": "paragraph", + "fragment": "RESULTS", + "claim_text": "The BP-001 evaluator made 27 exact comparisons: nine frozen result groups across three requested configurations. All 27 matched the oracle, all three response shapes passed, and the exact answer vectors matched pairwise. The exact layer includes the gate, the two forecast optima, historical insufficiency, the Pareto set, absence of a unique action, the unresolved pending state, the encoding distinction, and the five-step record order.", + "claim_text_sha256": "a92d86f310e89387cf3e50e04dff92f33e6f62b5ce1674e22797ab65b0839632", + "review_source_ids": [ + "EV-BP-PROMPT", + "EV-BP-SUMMARY", + "EV-BP-EVALUATOR", + "EV-BP-RECEIPT" + ], + "review_questions": [ + "Which one Table 1 marker is supported by the registered and available material?", + "What is the strongest reading the registered material actually supports?" + ] + }, + { + "claim_id": "FMOTA-V4-CLM-047", + "section": "9.4 Finite representations and frozen-oracle results", + "scope": "paragraph", + "fragment": "RESULTS", + "claim_text": "The semantic layer is deliberately weaker. Its quote links pass deterministic existence checks, but the function-to-quote judgment remains DRAFT_OWNER_REVIEW. Six functions have unambiguous unanimous quote support: gate and forecast separation, freezing before resolution, append-only resolution, cohort calibration, typed unresolved state, and preservation of a Pareto frontier without hidden scalarization. The owner-review map also marks forecast scoring, F04, present in all three responses. One mapped quote says to score the frozen forecast after resolution without naming a declared scoring rule, so strict F04 unanimity remains unresolved and is not promoted to the six-function count. F04 still has direct scoring-rule support in two responses. Query-relative projection and behavioral quotienting also recurred in two of three responses, so functions F01 through F09 each have quote support in at least two. Deterministic replay audit, explicit separation of belief scoring from action optimization, and the general claim ceiling, F10 through F12, were absent from all three. Agreement is therefore signal about recoverable output structure, not evidence that the responses supplied the complete architecture.", + "claim_text_sha256": "3b51d501801e98d3957c21d8a647c3503a4aa5f5e2b4ff00d1aa038f198e4cfa", + "review_source_ids": [ + "EV-BP-PROMPT", + "EV-BP-SUMMARY", + "EV-BP-EVALUATOR", + "EV-BP-RECEIPT" + ], + "review_questions": [ + "Which one Table 1 marker is supported by the registered and available material?", + "What is the strongest reading the registered material actually supports?" + ] + }, + { + "claim_id": "FMOTA-V4-CLM-048", + "section": "10.1 A receipt that contradicts itself", + "scope": "paragraph", + "fragment": "NEGATIVE", + "claim_text": "The schema contract gate passes this file. It validates each object against its own schema and never cross-checks the two. So a receipt can be internally inconsistent on the question of whether anything was authorized, and a green gate will not notice. This is exactly the projection drift the design warns about, occurring inside a single artifact of the system that names it.", + "claim_text_sha256": "1b3e863d1abfc1353c9cb6b344b9b23d9bd9d3dec0015f19608f75318398df37", + "review_source_ids": [ + "EV-RL-OBSERVATION-000001", + "EV-RL-GATE" + ], + "review_questions": [ + "Which one Table 1 marker is supported by the registered and available material?", + "What is the strongest reading the registered material actually supports?" + ] + }, + { + "claim_id": "FMOTA-V4-CLM-049", + "section": "10.1 A receipt that contradicts itself", + "scope": "paragraph", + "fragment": "NEGATIVE", + "claim_text": "A second instance sits beside it. The two deployment receipts use different status vocabularies. The first is schema 1.0.0 with no declared vocabulary and pass-and-fail values. The second is schema 2.0.0 declaring stp-v1.1-status-axes with values such as SUPPORTED, APPLIED, and MATCHED. No mapping between them exists in the repository, so the two production observations in one stream cannot be compared axis by axis.", + "claim_text_sha256": "c52773b91bae8235a62979b7c331e53a4b8b7217f7249804455baa97a9969fe4", + "review_source_ids": [ + "EV-RL-OBSERVATION-000001", + "EV-RL-OBSERVATION-000002", + "EV-RL-TREE-275D" + ], + "review_questions": [ + "Which one Table 1 marker is supported by the registered and available material?", + "What is the strongest reading the registered material actually supports?" + ] + }, + { + "claim_id": "FMOTA-V4-CLM-050", + "section": "10.2 A larger-model control recorded fewer unsupported claims than every eligible structured arm", + "scope": "paragraph", + "fragment": "NEGATIVE", + "claim_text": "The larger-model control recorded zero unsupported claims out of 151, matching the excluded P4 count and recording fewer than each eligible structured arm, P1 through P3. Exploratory claim-level Fisher comparisons yield p = 0.0061 against P1, p = 0.0044 against P2, and p = 0.0002 against P3. Because model identity and scaffolding changed together, these comparisons do not identify a causal effect. Within the published aggregate, replacing the model coincided with a lower unsupported-claim count than any eligible scaffold around the weaker model, while P1 through P3 each remained below that weaker model's P0 baseline.", + "claim_text_sha256": "dd7f230659e41b895211c04fe2a2c2d7233ae64a971a2e1ca082aa79d47c17e7", + "review_source_ids": [ + "EV-TYPED-REFUSAL-ARMS", + "EV-TYPED-REFUSAL-STATS" + ], + "review_questions": [ + "Which one Table 1 marker is supported by the registered and available material?", + "What is the strongest reading the registered material actually supports?" + ] + }, + { + "claim_id": "FMOTA-V4-CLM-051", + "section": "What this experiment does not support", + "scope": "paragraph", + "fragment": "NEGATIVE", + "claim_text": "The generating prompts, the per-run answers, the corpus file, and the preregistration artifact are all absent from the repository. The repository states that six predictions were registered before any arm ran and that three were falsified, and exactly one of the six is quoted anywhere, partially. I could recompute the published aggregate from arms.json and stats.py. I could not reproduce a single original run. No significance criterion was preregistered, so every p value here is post-hoc. The archive also does not publish the question-level or run-level counts needed for a cluster-preserving permutation, bootstrap, or multilevel analysis. The retained evidence bears on auditability and claim discipline by making those limits visible. It does not establish that structure or model choice causally improved accuracy.", + "claim_text_sha256": "1450e9bf0858e888ab294585f6b82912faf12f314444fe3b6ae09f8d5f292af0", + "review_source_ids": [ + "EV-TYPED-REFUSAL-ARMS", + "EV-TYPED-REFUSAL-STATS", + "EV-TYPED-REFUSAL-TREE", + "EV-TYPED-REFUSAL-CORPUS" + ], + "review_questions": [ + "Which one Table 1 marker is supported by the registered and available material?", + "What is the strongest reading the registered material actually supports?" + ] + }, + { + "claim_id": "FMOTA-V4-CLM-052", + "section": "10.3 A committed registration record and a replication that denied its own doctrine", + "scope": "paragraph", + "fragment": "NEGATIVE", + "claim_text": "Recorded criterion (c) could not be evaluated at all. All six haiku iterative sessions were truncated mid-play by a session limit, so 30 of 36 sessions were scored. The repository record acknowledges the confound rather than hiding it: models ran in sequential blocks with haiku last, so budget exhaustion clusters on the final block. That is missing data with a known mechanism, recorded as missing.", + "claim_text_sha256": "441236645234e0d019488cb12103a9112799030a2f62a1751b06ee8301a4368d", + "review_source_ids": [ + "EV-STABLE-PREREGISTRATION", + "EV-STABLE-DECISION-LOGS", + "EV-STABLE-CELLS" + ], + "review_questions": [ + "Which one Table 1 marker is supported by the registered and available material?", + "What is the strongest reading the registered material actually supports?" + ] + }, + { + "claim_id": "FMOTA-V4-CLM-053", + "section": "10.3 A committed registration record and a replication that denied its own doctrine", + "scope": "paragraph", + "fragment": "NEGATIVE", + "claim_text": "The replay of all 36 recorded cells runs offline through the published harness, asserts twelve checks, and is wired into the repository gate. It reproduces the denied verdict from the recorded artifacts; it does not reproduce the original model sessions or constitute independent validation.", + "claim_text_sha256": "260d72b2594062a9581067adcb1b5b502e4bb7ac55dc8c0b6f66f1abdcef2d91", + "review_source_ids": [ + "EV-STABLE-REPLAY", + "EV-STABLE-CELLS", + "EV-STABLE-GATE" + ], + "review_questions": [ + "Which one Table 1 marker is supported by the registered and available material?", + "What is the strongest reading the registered material actually supports?" + ] + }, + { + "claim_id": "FMOTA-V4-CLM-054", + "section": "11What this does not establish", + "scope": "paragraph", + "fragment": "BOUNDARY_SECTION", + "claim_text": "One risk deserves naming on its own. Strict preservation of unknowns can make a system unusable. If unresolved evidence blocks every action, availability and safety trade against each other, and the protocol offers no principled exchange rate between them.", + "claim_text_sha256": "0cbc68900442701d771298ac13c0a47a9a687c85ba01be609520b559124b86f7", + "review_source_ids": [ + "EV-PAPER-CONTEXT" + ], + "review_questions": [ + "Which one Table 1 marker is supported by the registered and available material?", + "What is the strongest reading the registered material actually supports?" + ] + }, + { + "claim_id": "FMOTA-V4-CLM-055", + "section": "A.2 Unknown preservation", + "scope": "paragraph", + "fragment": "BACK", + "claim_text": "For the proposed normalized aggregate over a finite nonempty required set, the result is PASS only when every condition passes, FAIL if any fails, and UNRESOLVED if none fails and any is unknown, stale, or errored. An empty set returns UNRESOLVED with reason INVALID_POLICY. No unresolved required predicate produces a pass. The rule says nothing about predicates omitted from the set. This general precedence rule has not been exercised by a mixed false-plus-unknown public fixture.", + "claim_text_sha256": "0c275515d4376cdfee86061c4930fb564aa21ccdcaa509f37dcc353345d94a06", + "review_source_ids": [ + "EV-PUBLIC-STP-COMMIT", + "EV-PAPER-CONTEXT" + ], + "review_questions": [ + "Which one Table 1 marker is supported by the registered and available material?", + "What is the strongest reading the registered material actually supports?" + ] + }, + { + "claim_id": "FMOTA-V4-CLM-056", + "section": "A.5 Illustrative effect-trace counterexample", + "scope": "paragraph", + "fragment": "BACK", + "claim_text": "Consider two declared effects, alpha and beta. Schedule (alpha, beta) emits the ordered trace [dispatch-alpha, dispatch-beta], while schedule (beta, alpha) emits [dispatch-beta, dispatch-alpha]. If both schedules reduce to the same accepted projection, equal projections still do not entail equal ordered effect traces. This is a counterexample by construction at the specification level. No public fixture in the pinned repository implements it, so it is not a tested result.", + "claim_text_sha256": "6f439988d99e76ac8c8f22732c507ce2b7ce57bb537f2ba7a651bc546b20147d", + "review_source_ids": [ + "EV-PUBLIC-STP-COMMIT", + "EV-PAPER-CONTEXT" + ], + "review_questions": [ + "Which one Table 1 marker is supported by the registered and available material?", + "What is the strongest reading the registered material actually supports?" + ] + }, + { + "claim_id": "FMOTA-V4-CLM-057", + "section": "A.6 Bounded lane balance", + "scope": "block", + "fragment": "BACK", + "claim_text": "A_x arrivals into lane x \u00b7 S_x service capacity of lane x \u00b7 B_x backlog \u00b7 C_x declared finite capacity \u00b7 H declared finite horizon \u00b7 all lane quantities finite, nonnegative, and in one declared unit.", + "claim_text_sha256": "9a27e0780b6ee3e7628adf450c2060ac640b40014fa118ae00bdd83c7a0d59c1", + "review_source_ids": [ + "EV-PAPER-CONTEXT" + ], + "review_questions": [ + "Which one Table 1 marker is supported by the registered and available material?", + "What is the strongest reading the registered material actually supports?" + ] + }, + { + "claim_id": "FMOTA-V4-CLM-058", + "section": "A.6 Bounded lane balance", + "scope": "paragraph", + "fragment": "BACK", + "claim_text": "The autonomy rule in section 3 treats observation, settlement, and recovery capacity as separate constraints. Applying it to a live lane would require declared measurement procedures and a justified rule for projecting beyond the observed window. This project supplies neither. A finite-capacity pass is therefore a local trace result, not evidence that a live lane will keep pace.", + "claim_text_sha256": "37303224d5683ce1f195164620b266e490aa5db957b85d048ca001d7a240be6f", + "review_source_ids": [ + "EV-PAPER-CONTEXT" + ], + "review_questions": [ + "Which one Table 1 marker is supported by the registered and available material?", + "What is the strongest reading the registered material actually supports?" + ] + }, + { + "claim_id": "FMOTA-V4-CLM-059", + "section": "A.6 Bounded lane balance", + "scope": "paragraph", + "fragment": "BACK", + "claim_text": "Where a bounded check is wanted before an estimator exists, the survivability harness substitutes finite reachable-state traversal at a declared horizon. The profile fixes H = 7 rounds and a no-change tolerance of epsilon = 0.02 in the lane's declared unit. Both are conventions. A longer horizon evaluates a different, generally more expensive bounded question, and neither value is derived from anything. Under an exact-H recovery condition, one horizon is not uniformly stronger or weaker than another without additional monotonicity and absorbing-target assumptions. Every disturbed and controlled state must stay legal, preserve the named invariant, and retain the required essential function, and every state in the frontier at round H must be in the recovery target set. Merely reaching the target before H is insufficient unless the required H-frontier condition also holds. An invalid model, an undefined controller, or an exceeded bound returns UNKNOWN rather than a pass.", + "claim_text_sha256": "26c1ec92fbd81bd4a643e591470f25dda9d39302dbfc595d169d11e98bfc505d", + "review_source_ids": [ + "EV-PUBLIC-STP-COMMIT", + "EV-PAPER-CONTEXT" + ], + "review_questions": [ + "Which one Table 1 marker is supported by the registered and available material?", + "What is the strongest reading the registered material actually supports?" + ] + }, + { + "claim_id": "FMOTA-V4-CLM-060", + "section": "A.8 Query factorization and exact kernels", + "scope": "paragraph", + "fragment": "BACK", + "claim_text": "The included source and receipt are the complete public evidence boundary for this result. The receipt points to an earlier local package receipt and binds additional package files that this minimized packet does not include, so a public reader cannot replay the complete local receipt chain from these bytes alone. The local package working directory was not itself a Git repository when the compile was recorded; the public release commit anchors the released copies, not their full pre-release history. Other modules imported by ZeroState.lean are outside A.8 and do not support the quotient claim. Clean-room reconstruction of the pinned package environment remains open.", + "claim_text_sha256": "5ed145abfbf954597964e87473d70f253078dbb15d9a801bf2ed9443b8ffff68", + "review_source_ids": [ + "EV-LEAN-QUERY-SOURCE", + "EV-LEAN-QUERY-RECEIPT" + ], + "review_questions": [ + "Which one Table 1 marker is supported by the registered and available material?", + "What is the strongest reading the registered material actually supports?" + ] + }, + { + "claim_id": "FMOTA-V4-CLM-061", + "section": "DReproduction and revision lineage", + "scope": "paragraph", + "fragment": "BACK", + "claim_text": "Clean-clone packet verification is documented in REPRODUCE.md. From a full Git checkout at the release commit or tag, the offline Python and JavaScript verifiers must independently return the same canonical report over the declared file allowlist, raw byte lengths, SHA-256 digests, and payload root. The repository-root and packet-local .gitattributes rules disable line-ending conversion so a normal Windows checkout does not create a false byte mismatch. A clean-clone test with core.autocrlf=true passed before this revision was prepared. This verifies packet identity only; it does not rebuild the PDF, recover excluded inputs, independently replicate an experiment, or establish claim truth, originality, authority, safety, or fitness.", + "claim_text_sha256": "f8ea4cadeaea4218515013c9737b07ec7a61e687159d731ee9e960c41778dc66", + "review_source_ids": [ + "EV-WINDOWS-CLEAN-CLONE-V3", + "EV-REPRODUCE-RUNBOOK", + "EV-PACKET-EOL-RULE" + ], + "review_questions": [ + "Which one Table 1 marker is supported by the registered and available material?", + "What is the strongest reading the registered material actually supports?" + ] + } + ] +} diff --git a/research/from-model-output-to-accepted-state/content_a.py b/research/from-model-output-to-accepted-state/content_a.py new file mode 100644 index 0000000..2a894b6 --- /dev/null +++ b/research/from-model-output-to-accepted-state/content_a.py @@ -0,0 +1,388 @@ +"""Paper body, part A: front matter through the lifecycle.""" + +FRONT = r""" +
+
Working paper · owner-review draft
+

From Model Output to Accepted State

+
A typed state boundary for AI-assisted operations
+ +
+ +
+

Abstract

+

A language model produces plausible proposals. A proposal is not an authorization, +a completed action, an observation, or an accepted record of state. I built a +reference implementation, contracts, reducers, and test harnesses that keep those +records separate within the evaluated boundary. I used them on a public software +project and found real defects, including defects in the system itself.

+ +

This paper proposes the State Transition Protocol as a typed boundary around a +probabilistic proposer. A conceptual ten-stage lifecycle separates proposal from +authority, execution, observation, acceptance, and correction. The broader +observation algebra and six-condition reporting surface are also design proposals. +PROPOSED

+ +

The public packet implements a narrower seven-event instrument profile over +synthetic fixtures; it is not a complete implementation of that lifecycle. Within +the tested slice, deterministic reducers rebuild a finite projection from pinned +inputs. TESTED

+ +

Three additional local packets test a finite query representation, +transition-stable refinement, and recovery of frozen answer fields from one compact +prompt. That prompt declared separate gate, forecast, and pending-resolution fields; +all three responses recovered the frozen finite outputs. No real forecast was issued +or resolved. These +local results extend the analysis but are not part of the pinned public commit. +TESTED

+ +

The evidence is finite and I state its limits precisely. Separate JavaScript and +Python ports derived from the same specification and fixture corpus produce the same +projection root over the pinned inputs, and did so on runtime versions two releases +apart from the pinned continuous-integration environment. This is cross-language +replay parity, not independent reproduction. Thirty-four runner-reported numbered +holds across twelve suites are a diagnostic inventory, not a coverage measure. A +data contract found that six public views of one 439-term source had drifted apart, +and that 258 shared terms disagreed on review status. A production observation found +100 of 102 paths matching and left two unresolved rather than rounding them off. +TESTED

+ +

The most useful results are the ones that went against me. In a refusal experiment, +an unstructured larger-model control recorded zero unsupported claims, matching the +excluded P4 arm and below the rates in the eligible P1-P3 structured arms. That +comparison concerns unsupported-claim counts; it does not establish that either +structure or model choice causally improved accuracy. The auditability contribution +lies in making the artifacts, assumptions, and limits behind the comparison +inspectable. An experiment described by its repository as preregistered denied its +own doctrine on a single counterexample. One deployment receipt in this repository +contradicts itself across two fields, and the schema gate passes it. Those are +reported here at full strength.

+
+""" + +SUMMARY = r""" +

1The problem, in plain terms

+ +

An AI system can report that something happened when several +different things may be true. It may have suggested an action. A tool may have +accepted the request. The action may have started and not finished. A sensor may +have returned an unclear reading. A person may have looked at the record without +accepting it. The world may have moved again before anyone asked.

+ +

I hit this while building Delta Atlas, a public set of tools for finding gaps +and unstated assumptions in AI plans. The project grew into static pages, JSON +data, harnesses, and hosted releases. The same confusion kept appearing at every +level. A model answered confidently from a stale copy of the glossary. A test +passed while checking only the records that happened to be loaded. A merge +completed without showing that the host served the merged bytes. A deployment +succeeded without showing that every route had converged. A green panel reported +on synthetic evidence.

+ +

None of that needed a new theory of attention. It needed a boundary. A +transformer maps context to candidate continuations. Once a candidate can call a +tool, move money, change infrastructure, or become the memory the next session +reads, the surrounding system has to answer questions the architecture never +addresses.

+ +

Can a system use a stochastic model as a proposer while rebuilding +its governed state through explicit, typed, replayable transitions, without +mistaking a deterministic procedure for truth?

+ +

The supported answer is narrow and useful. A reference implementation can force +explicit promotion steps and produce identical accepted-state projections from +pinned policy, pinned event bytes, and a pinned reducer version. It can hold +unresolved evidence open instead of rounding it to pass. It can keep +counterexamples and corrections in the record. It cannot show that a source was +honest, that an authority was lawful, that an observation was complete, or that +the chosen policy was wise.

+ +

The public evidence is narrower than the conceptual protocol. It establishes +finite behavior for an instrumented seven-event profile and related harnesses. It +does not establish end-to-end conformance with the proposed ten-stage lifecycle. +TESTED

+ +

Six terms used throughout

+

An output is anything a component emits before validation or acceptance. +An outcome is a later qualified record of consequence. A receipt is a typed record of one check, action, observation, decision, +or correction. A reducer is a deterministic function that rebuilds accepted +state from policy and event history. A projection is that rebuilt view, not +the world. An instrument is whatever acts on or observes a system, with its +own limits. An unaccepted output remains in candidate or receipt space. It is not +silently promoted to governed state or relabeled as an outcome.

+""" + +CLAIMS = r""" +

2How to read the claims

+ +

Confidence in prose is not evidence. Result-bearing empirical and implementation +claims use one of four markers at paragraph, table-row, or block level. Unmarked +prose explains terminology, motivation, or limits and should not be read as an +additional empirical result. The marker sets what you are entitled to conclude.

+ + + + + + + + + + + + + + + + + +
Table 1. Claim markers. A marker states the strongest reading the +evidence supports, not the author's confidence.
MarkerWhat it meansWhat it never means
TESTEDExact behavior over a named finite corpus, reproducible by a stated command.That the behavior generalizes past that corpus.
OBSERVEDA bounded inspection of a named surface at a recorded time.That the surface still looks that way, or that other surfaces match.
PROPOSEDSpecified or reasoned beyond the tested artifact boundary. It may have a + partial fixture, but the marked claim itself is not established.Implemented behavior. Do not cite it as a result.
OPENI do not know, and I say where the evidence stops.That the question is unimportant.
+ +

Implemented, tested, merged, deployed, observed, and accepted are six verbs, not +one. A result can hold several at once. None of them implies the next. Section 11 +states the full claim boundary once, so the rest of the paper does not repeat it +paragraph by paragraph.

+ +

Digests and locators

+

Every result-bearing project artifact referenced here is pinned by SHA-256 over its exact bytes. Digests +appear in text as the first twelve hexadecimal characters, which is enough to +identify a file and short enough to read. Appendix C lists full values, exact +locators, and the applicable verification boundary. Public case-study claims are bound to commit +275d0b3e7474 of the Resilience-Ledger +repository.

+ +
+

Artifact identity is part of the result

+

The Calibration Ledger document I hold does not match the Ledger digest printed +in State Transition Protocol v1.1, and I could not retrieve the bytes that digest +was computed over. I do not know whether the document is a later revision, a +sibling artifact, or an unrelated export. I have not treated the two as equivalent +anywhere in this paper. OPEN

+

That mismatch is evidence, not clutter. An identity check stopped a convenient +substitution that prose alone would have waved through.

+
+""" + +BOUNDARY = r""" +

3The boundary

+ +

Write W(k) for an external world state that is partly hidden, +O for the qualified observations recorded so far, and A(k) +for the accepted projection. A model generates a candidate change stochastically. +The probability it assigns gives the candidate no standing.

+ +
+
delta(k) ~ pi( A(k), O(≤k), H(k) ) candidate generation +A(k) = R( P(g), L(≤k) ) accepted projection
+
pi the candidate-generating distribution, not an +authorization policy  ·  +P(g) pinned policy bytes at generation g  ·  +L(≤k) the valid event prefix through sequence k  ·  +R a pinned reducer version  ·  H(k) whatever context the +model had, which the protocol does not model
+
+ +

The determinism claim is narrower than the word usually suggests. It starts at +identified input bytes and a policy generation, and it ends at a projected record. +It does not cover the model that produced the candidate. It does not cover +undisclosed external state, physical effects, the people involved, the network in +between, or anything that happens afterward.

+ +

Two lanes, one acceptance boundary

+

In plain terms, the deterministic lane decides whether the current record permits +an action. A parallel forecast lane may record uncertainty about a later event. The +two records can inform one another, but neither can silently become the other. A +high forecast probability cannot promote an unresolved gate to pass.

+ +
+
g_t = G( P(g), L(≤t) ) in PASS | UNRESOLVED | FAIL +execute_t = 1 only if g_t = PASS + +f_t = ( forecast_id, claim, event, p, I_t, horizon, resolution_rule, + scoring_rule_id, model_id, policy_id, scenario_id, digest ) +a_s = ( action_id, forecast_id, policy_id, selected_at ) +r_u = ( resolution_id, forecast_id, event, action_id_or_none, outcome, + resolution_time, witness, qualification, digest ) +s_v = ( score_id, forecast_id, resolution_id, scoring_rule_id, + score, computed_at, digest ) +c_w = ( calibration_id, cohort_rule_id, eligible_score_ids, + statistic, computed_at, digest )
+
g_t is the exact gate result at time t  ·  +f_t is a registered forecast frozen before the event resolves  ·  +a_s binds any selected action to the frozen forecast and policy  ·  +r_u is the later qualified resolution, where u is not earlier than t + ·  +s_v records the score computed from the frozen forecast and linked resolution + ·  c_w records a declared cohort statistic over identified eligible scores + ·  +I_t identifies the information available when the forecast was issued + ·  p is a declared probability, not execution authority. The internal +belief of a person or model is not directly observable. The auditable object is the +registered forecast and its later resolution.
+
+ +

The proposed record order is +FREEZE_FORECASTCHOOSE_ACTION → +APPEND_RESOLUTIONSCORE_FORECAST → +UPDATE_CALIBRATION. Before a qualified resolution is appended, the +forecast remains pending. Pending is not zero, false, success, or failure. A reducer +for these proposed records can verify the order, identities, score, and replay without claiming that +the forecast was true when issued or that the selected action was wise. +PROPOSED

+ +

BP-001 used HOLD as a frozen gate value and asked for its execution +output, BLOCK. This paper maps an UNRESOLVED condition to +HOLD as a post-test vocabulary crosswalk. BP-001 established +HOLD to BLOCK only; it did not test the crosswalk. +PROPOSED

+ +
+ {FIG1} +
Figure 1. The proposer sits inside a wider boundary. Only the + tinted span is deterministic. The world is reached through a declared instrument + and is never read directly.
+
+ +

Planes that cannot promote themselves

+ + + + + + + + + + + + +
Table 2. Seven planes. Each answers a different question, and none +of them establishes the next one on its own.
PlaneQuestion it answersWhat it cannot settle alone
External worldWhat is actually the case?It may be hidden, and it moves.
ObservationWhat did a declared instrument report?Whether the report was complete or correct.
ProposalWhat change was suggested?Anything. A suggestion carries no authority.
AuthorityWho permitted which bounded next step?Whether the step ran, or whether it was wise.
ExecutionWhat was attempted, committed, or compensated?Final world state. An acknowledgement is not an effect.
Accepted stateWhat does the named process now recognize?That governed state matches the world.
Derived memoryWhat summary is available later?Evidence. Surviving a restart proves storage, not truth.
+ +

Caches, telemetry, routing models, and interface state are further planes and +stay derivative. A fresh telemetry value grants no authority. A cached summary does +not become a source by persisting. A predictive model does not become an +observation because its average accuracy was good.

+ +

What the threat model covers

+

Mistaken, stochastic, and adversarial proposals. Stale, missing, conflicting, +and correlated evidence. Scope growth. Partial and duplicate effects. Schema +change. Evaluator failure. Replay of an old authorization. Confidential material +reaching a public record. Permanent unknowns that starve availability.

+ +

It also covers ordinary operator error, which is the failure I hit most. A +system can be secure against an outsider and still fail because a person picked +the wrong scope, accepted a misleading threshold, read an acknowledgement as a +resolution, or trusted two witnesses that shared one source.

+ +

The trusted computing base is not one object. It is the policy, the schemas, the +reducers, the canonicalization rules, the authority registry, the keys, the clocks, +the instrument contracts, the evidence stores, and the release process. This +implementation does not provide an independently operated root of trust for all of +them. OPEN

+""" + +LIFECYCLE = r""" +

4A proposed ten-stage lifecycle

+ +

The candidate lifecycle runs PROPOSE, NORMALIZE, +CHECK, AUTHORIZE, PREPARE, +EXECUTE, OBSERVE, ACCEPT, +OUTCOME, CORRECT. It is not a pipeline that succeeds. +Every stage can refuse, return unknown, and stop. A failed attempt stays in the +history without moving accepted state. This is the conceptual protocol, not the +event vocabulary of the current executable packet. +PROPOSED

+ +
+

The executable slice is narrower

+

The pinned public packet is a proposed Instrumented Transition and Survivability +Profile tested over synthetic fixtures. Its event vocabulary is +PLANAUTHORIZE?INVOKE → +COMMITSENSING_EFFECT? → +OBSERVESETTLE. A question mark means the phase is +optional only when the pinned instrument profile permits omission. These seven +event types exercise a bounded instrument profile. They do not implement the +complete ten-stage lifecycle, and SETTLE is not silently renamed +ACCEPT. TESTED

+
+ +
+ {FIG2} +
Figure 2. Proposed lifecycle. Only a valid acceptance record + advances governed state. Refusal and unresolved are recorded at whichever stage + produced them, and both are kept. A correction must pass through a new governed + transition and cannot bypass acceptance.
+
+ +

Propose. A person, model, or program describes a candidate change, naming +its subject, scope, requested operation, policy generation, and consequence class. +Normalize. The candidate becomes one supported schema, and the record keeps +whatever was rejected or lost. Normalization cannot invent a mapping between two +vocabularies that merely look alike. Check. Required predicates evaluate +structure, invariants, evidence, concurrency, budget, and consequence, each +returning a typed result and a stable reason.

+ +

Authorize. An authority receipt binds an actor to an exact subject, +operation, scope, policy, time window, and replay namespace. A full pass returns +permission to prepare and nothing further. Prepare. The system builds a +bounded effect request. This is the last point where an unsafe action can be +stopped without needing to compensate. Execute. A tool attempts the effect, +and the record separates submission, acknowledgement, partial execution, commit, +failure, timeout, and unknown effect.

+ +

Observe. A declared witness measures a postcondition, recording procedure, +result type, operating conditions, freshness, and known uncertainty. Accept. +A named authority advances the projection only when the required predicates and +receipts satisfy policy. Acceptance is never inferred from a tool's success code. +Outcome. A later observation records consequence, which can arrive long after +acceptance. Correct. A correction opens a new governed transition that names +the prior record and states the proposed replacement and reason. It never edits the +record it corrects. The replacement changes accepted state only after a new +acceptance record satisfies the current policy. CORRECT cannot bypass +ACCEPT. PROPOSED

+ +

How required checks aggregate

+ +
+
FAIL if any required predicate is decisively false +UNRESOLVED else if any required predicate is UNKNOWN, STALE, or ERROR +PASS only when every required predicate passes
+
The transition gate maps condition FAIL to REFUSE, +carries UNRESOLVED through unchanged, and otherwise returns PASS. An +empty required set returns UNRESOLVED with reason INVALID_POLICY, +never a vacuous pass. Policy may be stricter. Policy may not map an unresolved +required predicate to pass. PROPOSED
+
+ +

The public instrument and concurrency reducers test narrower, reason-specific +PASS, FAIL, and UNKNOWN outputs, including +local NOT_REQUIRED obligation positions. They do not expose this general +set aggregator, a mixed false-plus-unknown precedence fixture, or the empty-set +INVALID_POLICY rule. The general normalization above is therefore a +design target, not a reported test result. +TESTED

+ +

The rule says nothing about completeness. A system can pass every declared check +while omitting the one that mattered. That is a limit of the predicate set, not of +the aggregation, and no aggregation rule can repair it.

+ +

A short trace

+

A configuration change is proposed. The schema check passes. The current +dependency version cannot be observed, so the compatibility check returns unknown. +A valid authority receipt permits preparation only. The tool accepts the request, +and the postcondition instrument returns a real domain null while settlement stays +unresolved.

+ +

The projection does not advance. The history keeps the proposal, the check +results, the preparation authority, the acknowledgement, the domain null, and the +unresolved settlement. Later a qualified observation identifies the version and +confirms the postcondition, and a new acceptance record advances the projection. +The earlier unknown stays in the history. It is not overwritten, because it was +true when it was recorded.

+""" diff --git a/research/from-model-output-to-accepted-state/content_b.py b/research/from-model-output-to-accepted-state/content_b.py new file mode 100644 index 0000000..a4756e7 --- /dev/null +++ b/research/from-model-output-to-accepted-state/content_b.py @@ -0,0 +1,453 @@ +"""Paper body, part B: observation, replay, evidence state.""" + +OBSERVATION = r""" +

5Measurement before acceptance

+ +

A consequential system has to separate what happened from what was recorded +about what happened. A tool can return success while producing an unexpected +effect. A sensor can return a valid null. A result can be missing because nothing +was sampled, because it fell below a detection limit, or because a stated rule +censored it. Those support different decisions. Storing each as an empty field +destroys the information the next check needs.

+ +

An observation is therefore a tagged record, never a bare value.

+ +
+
DOMAIN_VALUE(value, unit_or_schema, uncertainty) +DOMAIN_NULL(reason) +BELOW_LIMIT(limit, procedure) +NO_CHANGE(quantity, delta_hat, u_delta, epsilon, rule, interval, procedure, conditions) +ABSENT(reason) +CENSORED(rule, bound) +INTERCURRENT(event, strategy)
+
DOMAIN_NULL is a meaningful null the domain supplies, not a +missing field. BELOW_LIMIT records that a procedure could not quantify below a +stated limit, and does not assert zero. NO_CHANGE is a positive measurement +claim and is never inferred from an empty event stream. It records an observed +change estimate, an uncertainty statement, a tolerance, and a pinned decision rule. +ABSENT records that the required observation was not obtained.
+
+ +

For a scalar quantity, one conservative decision rule could require +|delta_hat| + k u_delta ≤ epsilon, with k, the meaning of +u_delta, the interval, and the procedure fixed before evaluation. That +rule is an example, not a universal definition. If the required uncertainty or +operating conditions are missing, the evaluator returns UNKNOWN rather +than NO_CHANGE. The full tuple above is a design proposal. +PROPOSED

+ +

The public instrument profile tests the narrower label +NO_CHANGE_DETECTED bound to a declared resolution and observation +window; it does not implement the full uncertainty-aware tuple. +TESTED

+ +

Condition evaluation is a separate type, and keeping both is the point.

+ +
+
PASS | FAIL | UNKNOWN | STALE | ERROR | NOT_APPLICABLE
+
Applicability is settled first. NOT_APPLICABLE leaves the +required set and every metric denominator. An absent record maps to UNKNOWN, +a known expired record to STALE, and an evaluator crash to ERROR. An +evaluator failure is not an observation of the world and cannot become one.
+
+ +

Clinical trial guidance keeps a related discipline. ICH E9(R1) ties each +objective to a defined estimand and separates intercurrent events from missing +data [12]. A participant's death can make a later value nonexistent rather than +missing. Administrative censoring limits follow-up. A sample may never have been +collected. I borrowed the record-keeping discipline. The protocol supplies no +estimand, no imputation rule, and no sensitivity analysis, and adopting the +vocabulary does not import the statistics.

+ +

An observation feeding a consequential predicate should identify its subject, +the quantity evaluated, the instrument and version, the procedure, the time or +interval, the operating conditions, the result type, the uncertainty, the freshness +rule, and the source artifact. Where sensing changes the subject, the sensing +action gets its own effect record. Reading a database consumes capacity. A medical +test may require an invasive sample. A probe alters a cache. Observation and +sensing effect answer different questions and are recorded separately.

+ +

Forecasts are records about later events

+

A forecast is evaluated only after its declared event has a qualified resolution. +For a binary event with outcome y and forecast p, the Brier +score is a proper scoring rule [39, 40]. If the forecaster's information implies a +true conditional event probability q, its expected value separates into +a reducible error term and irreducible event variance.

+ +
+
BS(p, y) = (p - y)^2 +E_q[BS(p,Y)] = (p - q)^2 + q(1 - q) + +F_mu(p) = E_q[BS(p,Y)] + mu p +arg min F_mu = clip( q - mu/2, 0, 1 )
+
The last two lines are a diagnostic counterexample, not a +recommended objective. With q = 1/2 and mu = 1/2, the uncoupled Brier +objective selects p = 1/2, while the coupled objective selects +p = 1/4. Rewarding the same optimizer for a lower reported risk changes the +report rather than the event probability.
+
+ +

The architectural consequence is to estimate, freeze, and later score the +forecast as one lane, then select an action under a separately declared policy. If +the action can change the event distribution, the record must identify that action +and either forecast Pr(Y | I_t, action) or preserve a clearly labeled +pre-action scenario. Otherwise the intervention can be mistaken for forecast error. +This is related to the feedback problem studied as performative prediction [42]. +PROPOSED

+ +

Three meanings of calibration that must remain separate

+

Forecast calibration is a property of a cohort of comparable, frozen forecasts: +among cases issued near probability r, the observed event frequency +should approach r under the declared grouping and resolution rules +[40, 41]. One resolved forecast has a score. It cannot establish calibration. Model +agreement is recurrence, not calibration, and an unresolved forecast is not part of +a resolved calibration denominator.

+ +

Metrology defines metrological traceability as a property of a measurement +result that relates it to a reference through a documented unbroken calibration +chain, with every link contributing uncertainty [8]. The same source warns that +traceability does not show the uncertainty is fit for a purpose and does not prove +the absence of mistakes.

+ +

A green indicator is not that. A high pass fraction is not that. Two programs +agreeing is not that. Conformity assessment adds a second distinction: a +measurement result is not an accept-or-reject decision, and the gap between them is +governed by stated requirements, uncertainty, acceptance limits, and the tolerated +risk of accepting a nonconforming item [9].

+ +

So this paper uses protocol-calibrated predicate for the project's strict +software condition. It is computable from declared inputs. It implies no SI +traceability, no calibration hierarchy, and no probability that a system is healthy. +The bridge to metrology is procedural. The protocol can carry measurement identity, +uncertainty, conditions, and decision rules without collapsing them. It does not +compute an uncertainty budget, qualify a laboratory, or establish forecast +calibration. PROPOSED

+""" + +REPLAY = r""" +

6Cross-language replay parity

+ +

The National Academies separates computational reproducibility, replication, and +generalization [10]. Reproducibility asks whether the same data, code, and +conditions give consistent results. Replication uses newly obtained data. The +reducer evidence here is reproducibility, and only that.

+ +
+
C( R_js(P, L) ) = C( R_py(P, L) ) + + both roots = 22852b5a3025d4ed7ee1d26cc4efcd51ae2e3e02ba2a20332c2a09827d6462ca
+
C serializes nulls, booleans, finite numbers, and strings, +preserves array order, sorts object keys recursively, and emits no insignificant +whitespace. This is not RFC 8785 canonicalization and makes no claim about Unicode +keys outside the pinned corpus, whose keys are ASCII. TESTED
+
+ +

The JavaScript and Python reducers are ports derived from the same specification +and fixture corpus. Their agreement can catch language-specific, transcription, and +runtime defects. It is not clean-room independence and it is weaker than replication, +because both ports can share a specification error, the same fixtures, and the same +assumptions. It says nothing about whether a recorded event was true.

+ +

One result strengthens it slightly. Continuous integration pins Node 22.17.1 and +Python 3.12.10. I reran both reducers on Node 24.18.0 and Python 3.14.6, two +release lines later, and got the identical projection root with all checks holding. +That is evidence the parity is not an artifact of one pinned runtime. +TESTED

+ + + + + + + + + + + +
Table 3. The validation ladder. Current artifacts reach level three +for selected finite cases. Levels four through six are open.
#LevelStatus here
1Records satisfy a declared structural schemaTESTED
2One implementation repeats its own resultTESTED
3Cross-language ports agree on pinned inputsTESTED
4Another team reproduces from a minimized packetOPEN
5A new study obtains fresh evidence for the questionOPEN
6The result stays informative in another systemOPEN
+ +

Ordering is not causation

+

Sequence numbers, previous digests, and parent references show that named bytes +were linked and that one computation consumed another record. Lamport's +happened-before relation supports partial order without treating wall-clock time as +a complete order [2]. That supports replay, conflict detection, and audit.

+ +

It does not establish a causal effect. If a change ships and the error rate later +falls, the history shows the deployment preceded the measurement. The fall could be +a traffic shift, a cache change, a provider action, a changed measurement +procedure, or something else entirely. The same trace fits several causes. Causal +inference starts from a defined effect and the conditions under which it is +identified [13], and a trustworthy event history supplies none of them.

+ +

The integrity ladder

+

Six claims usually get compressed into the single word verified. They are +separate, and no lower step establishes a higher one.

+ +
    +
  1. A hash link can expose a byte change relative to a trusted commitment that covers the linked event.
  2. +
  3. A signature shows a key signed declared bytes.
  4. +
  5. An authority policy decides whether that key and scope are acceptable.
  6. +
  7. A measurement profile decides whether an observation fits the predicate.
  8. +
  9. An acceptance record advances governed state.
  10. +
  11. A later outcome record describes consequence.
  12. +
+ +

A privileged custodian can replace an entire unanchored history and recompute +every hash. A chain therefore supports consistency checks against a trusted anchor; +it does not make storage immutable or prove that additions were the only changes. +Resisting replacement needs external checkpoints, signatures, access control, or +independent witnesses. The repository's additions-only check states this ceiling in +its output rather than implying otherwise: it reports that Git branch protection and +an external witness are required to resist history replacement. +TESTED

+ +

The chain construction

+

A portable chain profile needs an unambiguous encoding and a domain separator, so +that a digest computed for one purpose is not accepted in another domain. The +construction below is proposed. The public instrument packet instead uses a +fixture-scoped digest chain and does not implement this full portable profile.

+ +
+
b(k) = Canon( event(k) without event_hash ) +h(k) = H( D || len(b(k)) || b(k) || h(k-1) ) + +D = "STP_EVENTCHAIN_SHA256_V1.2_JAKETOPENSOURCE_DELTAATLAS_2026"
+
D is this protocol's domain separation tag. Its value is +arbitrary by construction, in the sense that any distinct constant separates domains +equally well, and it is fixed here so that two implementations agree. The profile +must also pin the length encoding, duplicate-key handling, number and Unicode +rendering, media type, schema version, and the initial value h(-1). The +current implementation uses local canonicalizers and does not claim RFC 8785 +conformance. PROPOSED
+
+ +

Claim-relative evidence surfaces, and the surface this work has not tested

+ +

Every automated check reported in section 9 is software checking software. That +bounds what those checks can establish. Independence is not a global property of a +tool or a count of verifiers. It is relative to a claim and a candidate failure +mode. A shared parser weakens separation for parser failures; a shared specification +weakens separation for specification failures; a shared operator weakens separation +for provenance and execution failures. Those dependencies do not make every +observation equivalent for every question. They identify the failure modes that can +corrupt the observations together.

+ + + + + + + + + + + + +
Table 4. Claim-relative evidence surfaces. Shared dependencies reduce +separation for the named failure modes; no row is a universal rank.
Evidence surfaceClaim it can testShared dependency that limits itStatus here
Artifact-internal structureOne artifact satisfies its declared shape and consistency rulesA coherent false record or a faulty rule can passTESTED
Cross-implementation replaySeparate implementations produce the same projection from the same bytesA shared specification, fixture, or source record can be wrong in commonTESTED
Physical observationA declared physical quantity covaries with a declared execution conditionInstrument, driver, clock, host, custody, calibration, and inference modelOPEN
+ +

The cross-language replay result supports agreement between two execution paths +and can expose language-specific, transcription, or runtime defects. It cannot +detect a specification or fixture error reproduced by both paths. Adding another +port changes the evidence only if it removes a dependency relevant to the failure +mode under examination.

+ +

Power draw, timing, and electromagnetic emission are established side channels, +studied since differential power analysis [36]. A monitor on a machine's power rail +can add separation for some claims about physical execution because it does not +depend on the same process-table report. It does not thereby establish that the +software result was correct, authorized, or caused by the reported operation.

+ +

I built a bounded loop between an agent harness and an Nvidia GPU that sampled +power draw during agent runs. No result from it is part of this paper's +evidence. Several readings shared a sensor, driver, clock, host, and operator. +For failure modes at or upstream of that measurement chain, they are repeated +observations with common dependencies, not independent confirmation. They may still +describe variation across runs, but that is a different claim.

+ +

A physical trace is not unforgeable, and the countermeasure literature on masking, +hiding, and noise injection exists precisely because traces can be shaped. A sensor +reading is not self-authenticating, since custody, calibration, and the path from +probe to record are attackable. A correlation between load and an assertion about +behavior is not a mechanism. Supporting a narrow physical predicate would require a +declared measurand, calibration reference, operating limits, uncertainty budget, +known sensing footprint, and a pre-registered discrimination task with false-accept +and false-reject rates. Those conditions have not been met here. +OPEN

+ +

Additions-only is a protocol rule, not a storage guarantee

+

The rule governs how accepted protocol events are handled: a correction adds a +new record and does not edit the record it corrects. A hash chain can expose +divergence from an anchored prefix, but it cannot prevent a privileged rewrite of an +unanchored history. The rule also does not authorize indefinite retention of raw +evidence or personal data. Data minimization, storage limitation, correction, and +erasure all conflict with a naive permanent log [14]. Three stores keep those +obligations separable.

+ +
+ {FIG3} +
Figure 3. An erasure record can persist in the event history + after the restricted object is destroyed. Hashing a personal record does not + anonymize it, and a deletion receipt does not establish legal compliance.
+
+""" + +EVIDENCE = r""" +

7Evidence state, reported as a vector

+ +

For one subject, one policy generation, and one evaluation cut, let J +be the finite nonempty set of required applicable checks. Every check maps exactly +once into pass, fail, unknown, stale, or evaluator error. Not-applicable checks are +excluded from J and from every denominator.

+ +
+
N_app = P + F + U + S + E applicable +N_dec = P + F decisive + +C = N_dec / N_app decisive evidence coverage +Q = P / N_dec decisive conformance +R = 1 - (S / N_app) non-stale-label fraction
+
A zero denominator returns UNDEFINED, never zero. Policy +must map raw observations such as ABSENT and CENSORED into +the condition partition before C and Q are computed.
+
+ +

Pass and fail contribute equally to C. One failed check out of one +applicable check gives C = 1 and Q = 0, which is complete +decisive coverage of a failed result. If that check is policy-blocking, the +interface shows red. The coverage arithmetic alone does not, and should not.

+ +

R is the non-stale-label fraction: the share of applicable conditions not +labeled stale. An unknown condition counts as non-stale while staying non-decisive, +so R is not a measure of fresh evidence about the world. A stronger +receipt-coverage measure would need deterministic receipt selection bound to subject, +check, generation, and evaluation cut, with ties on sequence returning a typed +conflict rather than a choice. The current schema does not carry those bindings, so +I make no fixture claim for it. PROPOSED

+ +

C is deterministic and verdict-symmetric. Q is deliberately +verdict-sensitive. The system as a whole is not policy-neutral, because policy +chooses the applicable checks, the thresholds, the freshness windows, and the +evidence requirements. For that reason C is never called a probability of +truth, correctness, or safety.

+ +

Probability does not select policy

+

The gate, forecast, and action policy answer different questions. The gate asks +whether an action is admissible. The forecast describes uncertainty over declared +events. The policy decides how to compare safety, heat, latency, opportunity, and +other consequence dimensions. Those dimensions remain a vector unless an +authorized policy supplies a scalarization or another selection rule.

+ +
+
J_j(a | x, B_(x,a)) = sup sum q(e) L_j(a, e; x) + q in B_(x,a) e in E_x + +a dominates b iff J_j(a) ≤ J_j(b) for every j, + and J_j(a) < J_j(b) for at least one j
+
x is the recorded decision context  ·  +E_x is the declared event set in that context  ·  +B_(x,a) is the declared set of admissible event distributions for context x +and action a; when action cannot affect the distribution, B_(x,a) = B_x + ·  L_j is the loss in consequence dimension j  ·  a +Pareto-minimal set can contain several incomparable actions. Choosing one by +weighted sum introduces policy through the weights; it does not reveal a uniquely +correct action [46, 48].
+
+ +

An infinite representation space does not imply infinitely many behavioral +answers. Many encodings can implement the same policy or forecast function. A +unique optimizer may also exist on an infinite domain. Where several admissible +actions remain incomparable and no authorized preference rule exists, the honest +output is the frontier and an unresolved selection, not a hidden default. +PROPOSED

+ +

A proposed drift vector

+

The following design records drift as eight components whose units remain +separate. No committed reducer computes the complete vector, so the table is a +specification target rather than a reported implementation result. +PROPOSED

+ + + + + + + + + + + + + +
Table 5. Proposed drift components. Missing evidence is not zero drift.
ComponentDefinitionRange
D_semunresolved or contested required semantics, over required semantics0 to 1
D_replaycount of distinct valid reducer projections, minus oneinteger ≥ 0
D_scheddistinct projection and effect-trace classes over permitted schedules, minus oneinteger ≥ 0
D_invaccepted prefixes that violate an invariantcount
D_effectunknown effects, duplicate risks, unresolved observation conflictscount
D_capacityper-lane overflow, retaining each lane's unitvector
D_freshrequired stale receipts, over required applicable receipts0 to 1
D_policyunknown or mismatched policy-generation bindingscount
+ +

D_replay and D_sched are defined only after completeness checks. A +missing or invalid required output makes the component UNDEFINED and the aggregate +UNKNOWN. Invalid outputs are never discarded to reach a cleaner number. Capacity is +never summed across incompatible units, because observation, settlement, and +recovery lanes measure different things.

+ +

DRIFT_DETECTED requires a decisive component that the pinned policy +marks blocking. DRIFT_NOT_DETECTED means no declared test detected +drift. It does not mean drift is absent, and the two readings are not +interchangeable. PROPOSED

+ +

Six signals

+
+ {FIG4} +
Figure 4. Proposed six-condition surface. The conditions stay + separate so that a strong + dimension cannot conceal a failing one. Every color carries a text label and a + reason code.
+
+ +

The order is normative, not cosmetic. Conditions are reported as protocol +calibration, consequence, evidence, integrity, privacy, activity, and a conforming +surface renders them in that sequence so that two deployments can be read against +each other without remapping. Any total order would serve equally well. This one is +fixed so that the choice is not left to each renderer. +PROPOSED

+ +

The display labels are shorthand for directional policy predicates. A conforming +record names the predicate so that PASS always has a stable meaning:

+ + + +

Each predicate returns PASS, FAIL, UNKNOWN, +STALE, ERROR, or NOT_APPLICABLE under a pinned +policy. The public case study renders partial lamps, but it does not implement this +general six-predicate decision contract. PROPOSED

+ +

On the consequence signal, red means +NO_BLOCKING_CONSEQUENCE = FAIL: a named blocking consequence is active +under the pinned policy. It can request acknowledgement before another scoped action +begins. Acknowledgement does not make the condition safe, and some red conditions +are non-waivable and require refusal. +The public educational interface does not claim to control a host chat or an +external tool. Without a durable, enforceable gate the indicator is informational, +and I say so rather than implying enforcement.

+ +

The record separates NOTIFIED, PRESENTED, +ACKNOWLEDGED, AUTHORIZED, OVERRIDDEN, +INTERVENED, and RESOLVED. Understanding is never inferred +from a click. Intervention does not prove an adverse effect was prevented. +Resolution requires its own observation.

+""" diff --git a/research/from-model-output-to-accepted-state/content_c.py b/research/from-model-output-to-accepted-state/content_c.py new file mode 100644 index 0000000..a6b04cd --- /dev/null +++ b/research/from-model-output-to-accepted-state/content_c.py @@ -0,0 +1,1111 @@ +"""Paper body, part C: results, negative results, boundary, guide, back matter.""" + +RESULTS = r""" +

8Methods and artifact scope

+ +

8.1 Evidence units and pinned sources

+ +

This paper is a bounded artifact audit and a single-project case study. The +primary implementation evidence is pinned to commit +275d0b3e7474ef58456c82a042163567cd12122f of the public +Resilience Ledger repository. I reran its public gate on Node 24.18.0 and Python +3.14.6. Continuous integration declares Node 22.17.1 and Python 3.12.10. The same +recorded projection root was produced by separate JavaScript and Python +implementations derived from one specification and fixture corpus. This is +cross-language replay parity, not clean-room or external replication.

+ +

The protocol suites use finite event files, policies, fixtures, and rejection +mutations as their units. Their results are exact only for those bytes and that +code. Deployment observations use paths or routes sampled at named times. Interface +checks establish source or rendering structure and make no claim about reader +comprehension. These evidence families are reported separately because their +denominators are not interchangeable.

+ +

The Typed Refusal reanalysis uses a hand-decomposed claim as its unit. Its archive +reports twelve frozen questions and three runs per P0 through P4 arm, plus a separate +larger-model control, but publishes only pooled arm totals. The exact model version, +generating prompts, answers, run-level data, question-level data, corpus bytes, and +preregistration record are absent. Wilson intervals and Fisher exact tests were +recomputed from data/arms.json by data/stats.py; they are +exploratory claim-level summaries under a working independence assumption. The +claims are clustered within questions and runs, so those intervals and p values do +not establish arm-level precision or significance.

+ +

The 2026-07-17 replication declares 36 sessions, of which 30 were scored after six +final-block sessions were truncated. Its registration record and decision logs are +public at commit 77408db59cad3f968ac9ba5a0c0c6689a90e80d4 +of JakeTOpenSource/the-stable, and its recorded cells were replayed +offline. The inspected public history does not independently establish that the +registration file predates data collection, so I treat it as a committed +registration record rather than verified prospective registration. The Typed +Refusal aggregates are pinned separately at commit +721a824c9f735d3972d720b41685469a1020fa91 of +JakeTOpenSource/typed-refusal-harness. No external evaluator selected, +ran, or scored these experiments, and no qualified instrument or live consequential +adapter was evaluated.

+ +

8.2 Finite activation, quotient, and frozen-oracle packets

+ +

Three local owner-review packets test the newer mathematical layer. The Generic +Device Activation Fixture enumerates 151 synthetic trace prefixes of length at most +ten. It evaluates seven declared queries against ten candidate representation +fields, exhaustively checks all 1,023 nonempty candidate subsets, and retains a +collision witness whenever a representation merges records whose query answers +differ. Separate Python and JavaScript generators produce the same frozen dataset; +the exhaustive subset analysis is then performed in Python. The result is exact +only for those traces, queries, fields, and transition rules.

+ +

The transition-stable quotient packet uses the same 151 records and ten declared +events. Each state-event pair is either enabled, advancing to its child trace, or +refused, remaining at the current trace. This gives 1,510 finite transitions. A +partition begins from a declared query signature and repeatedly splits any class +whose members differ in event status or successor class. Separate Python and +JavaScript analyzers produce byte-identical canonical reports. This is a finite +application of established sequential-machine refinement [43-45], not a new +minimization theorem.

+ +

The frozen-oracle packet fixed one prompt, one response schema, a nine-group +oracle, and a twelve-function semantic rubric before three responses were requested. +The responses were requested under gpt-5.6-sol/high, +gpt-5.6-sol/low, and gpt-5.6-terra/high configurations. +Those labels are request metadata because the retained responses contain no runtime +model attestation, model-build digest, seed, or sampling parameters. Responders saw +the prompt and schema, not the oracle or rubric. The name means only that the oracle +and rubric were fixed before collection and withheld from responders; no blinded +assignment or blinded assessment occurred. Exact fields were compared with the +oracle. Semantic recurrence was mapped separately and required a verbatim quote from +the corresponding response. That map remains +DRAFT_OWNER_REVIEW.

+ +

The packets share a recorded operator, orchestration platform, prompt, and response +schema. Their requested model labels are metadata; common model ancestry is plausible +but not established. Agreement is therefore bounded prompt-oracle agreement, +not independent validation. The expected activation analysis, quotient report, and +BP-001 evaluator report are pinned locally by digests +7c550d125d38, +1b0e78adcac7, and +de2c28735762. Appendix C gives the full values and +either public packet locators or retained source IDs. TESTED

+ +

8.3 Related work boundary

+ +

The design joins established lines of work rather than treating their components +as new. Causal ordering and state-machine replication [2, 6], event sourcing and +transaction or compensation boundaries [3-5], runtime assurance [7], metrology +and conformity assessment [8, 9, 11], and reproducibility, estimands, and causal +inference [10, 12, 13] provide the main technical background. Canonicalization, +transparent logs, provenance, and software supply-chain records inform the evidence +identity boundary [15-20]. Accessibility, assurance-case, status-condition, and +interchange specifications inform the reporting surface [18, 27, 31-34].

+ +

Proper scoring and empirical forecast calibration supply the probabilistic lane +[39-41]. Performative prediction supplies the warning that a decision can change +the distribution it is later scored against [42]. Sequential-machine equivalence +and partition refinement supply the finite transition-stable construction [43-45]. +Convex and vector optimization supply the distinction between a Pareto frontier and +a policy-selected point [46]. Robust convex optimization supplies the +worst-case-over-a-declared-uncertainty-set pattern [48]. Mathlib's pinned +Function.FactorsThrough definition supplies the formal vocabulary for +query-relative sufficiency [47]. These are established sources used to express the +proposal; none validates the case study.

+ +

Two systems published in 2026 share this design's spine and are named directly. +ESAA has agents emit structured intentions that a deterministic orchestrator +validates and persists to an append-only log, separating agent cognition from state +mutation through constrained outputs and replay-based verification [49]. AgentBound +evaluates each proposed action using three independent authorities and emits +cryptographically verifiable governance receipts binding an action to the exact +delegation and policy artifacts that governed it, supporting independent replay [50]. +Append-only event history, deterministic replay, receipt-bound policy identity, and +refusing to let a model mutate state directly are established work, not contributed +here.

+ +

The Leiden Declaration states the corresponding obligation from the research side +[51]. Published in June 2026 and endorsed by the International Mathematical Union, it +requires transparent disclosure of automated tools in a stated section of a paper, and +it holds that the responsibility for correctness, for the adequacy of the arguments, +and for the completeness and accuracy of citations remains exclusively with the human +authors. Credit and responsibility belong to people rather than to automated systems. +The declaration states values and principles rather than formats, and it specifies no +artifact for discharging those duties beyond a disclosure section and existing peer +review. No conformance with the declaration is claimed here, and the declaration does +not endorse this work.

+ +

Two narrower separations remain. First, UNRESOLVED is a condition about evidence, +not a verdict about an action. AgentBound composes three authorities into the lattice +Deny < Review < Permit, where Review is a deferred authorization carrying a +dischargeable obligation, and satisfying human approval converts it to execution [50]. +ESAA is binary, emitting output.rejected on contract violation [49]. +Neither carries a state for a required check that is missing, stale, or errored. This +design does. UNRESOLVED records that the evidence was not obtained, it is not +discharged by an approver, and the aggregation rule in section 4 forbids any policy +from mapping it to a pass. An empty required set returns UNRESOLVED with reason +INVALID_POLICY rather than a vacuous pass. Second, observation and +acknowledgement are separate planes from acceptance. Both cited systems gate before +execution and treat the applied effect as the record. This design records submission, +acknowledgement, partial execution, commit, failure, timeout, and unknown effect as +distinct outcomes, and requires a declared instrument's qualified observation before a +named authority may advance accepted state. A tool's success code is not an +observation, and an observation is not an acceptance. The record types proposed in +sections 4 and 7 are one candidate discharge mechanism for the disclosure and +correctness duties named by the Leiden Declaration [51]. These comparisons rest on the +arXiv HTML renders of both papers, not on their PDFs or any implementation, and no +systematic review was completed. This paragraph positions the work and makes no +priority claim. OPEN

+ +

Privacy, security, financial, medical-device, and AI-governance sources are used +as domain constraints or comparison points [14, 21-26, 28-30]. They do not +establish compliance. The transformer, biological-mechanics, and side-channel +sources supply limited architecture or measurement context [1, 35, 36], not +validation of this protocol.

+ +

Hamilton-Zero makes one scientific boundary concrete. Its architecture +analytically preserves a variational upper bound, while the authors warn that a +finite-sample Monte Carlo estimate can appear below the true ground-state energy +because of estimator noise or mixing bias [38]. A guarantee on the represented +state therefore does not automatically attach to the sampled estimate or the +published comparison. This is a domain example, not validation of this protocol.

+ +

With his permission, Jake Macdonald's OpenGoldenRatio (OGR) v0.1 +is cited as parallel related work [37]. After reviewing this draft, Macdonald +helped sharpen the comparison: STP follows governed transformation from candidate +output toward accepted state, while OGR centers containment and governed relations +among actors or agents. His contribution here was review and clarification of that +comparison. He did not contribute code, data, experiments, or authorship, and OGR +is not evidence that STP works.

+ +

9Results

+ +

Five result families are kept apart because their denominators and their meaning +differ. Protocol conformance yields exact finite outputs. Agent behavior yields +bounded empirical observations. Interface work yields structural conformance and no +comprehension claim. Live operations yield bounded observations at named times. +Finite mathematical packets yield exact local results over declared traces, query +sets, candidate fields, transition semantics, and prompt-oracle comparisons.

+ +

9.1 The gate

+ +

One command runs the public suite. It executes sixteen scripts and prints +thirty-four numbered holds across twelve named suites, with every denominator equal +to its numerator.

+ + + + + + + + + + + + + + + + + + +
Table 6. Public gate composition at commit +275d0b3e7474, from node governance/harnesses/run-all.js.
SuiteHoldsWhat the strongest hold in it establishes
Ledger falsification10Ten mutations of the event history are rejected
Governance chain516 event files, 6 stream chains, 12 checkpoints bind
Authority falsification4Four forged authority paths are rejected
Cross-language replay parity3JavaScript and Python implementations derived from one specification and fixture corpus produce the same root
Append-only history2Git comparison permits additions only
Privacy boundary285 records scanned, 3 synthetic leak canaries caught
Atlas data sync2Six projections match baseline, 4 mutations rejected
Six-signal public surface2Six conditions render with non-color cues
Schema contract1Schemas, validators, and envelopes agree
Atlas data materialization1Three profiles replay, three malformed inputs rejected
Atlas foundational repair1The repaired foundation still holds
Authority1The authority profile evaluates its seven conditions
Twelve suites34All holding at this commit
+ +

Four of the sixteen scripts print a named pass with no numbered +hold: the replay driver, the runtime check, the home surface check, and the public +explanation check. Their results are therefore omitted from the total of 34. That +total is a runner-reported diagnostic inventory, not a coverage measure or a count +of everything checked. TESTED

+ +

9.2 One source, six incompatible views

+ +

The candidate source holds 439 terms and labels every one of them reviewed. Six +public projections were measured against it. The count drift was the least of it.

+ + + + + + + + + + + + + +
Table 7. Projection drift against the 439-term candidate source. +Identical counts shared records matching on every field. Status differs +counts shared records whose review status disagrees.
ProjectionTermsSharedIdenticalAbsentExtraStatus differs
ask-inline-data435435040258
ground-truth-inline-data435435040258
explore-inline-data43543512540258
gap-check-inline-data433433060256
canon-json-projection21420402351026
canon-markdowntext document: pins a canonical text digest only, with no per-term comparison
+ +

Three findings matter more than the counts. First, the source calls all 439 terms +reviewed while three projections report 258 candidate and 177 reviewed, so the +authoritative label was contradicted by every consumer. Second, in four of the five +comparable projections not one shared record matched on every field. Third, the +canon projection contains ten identifiers with no counterpart in the source at all, +which is divergent provenance rather than staleness.

+ +

The repair did not declare one file true. It registered a candidate source, +measured every projection against it, stored the mismatch sets by digest, and added +mutation tests. Historical regeneration stayed impossible for some consumers because +their selection rules were never recorded. The 439-term source remains a candidate +inventory, and no check here validates a single definition. +TESTED

+ +

9.3 Source, deployment, and live bytes

+ +

The project once shipped by manual upload, which left the relation between +repository and production unclear. The first recorded reconciliation compared every +deployable path.

+ + + + + + + + + + + +
Table 8. Production observation +34bde4ec2eb4, recorded 2026-08-11.
MeasureValueReading
Deployable paths checked102the declared set
Returned HTTP 200102all reachable
Missing0
Semantic matches100
Semantic mismatches2index.html and sw.js
Line-ending-only differences1CITATION.cff
+ +

The two mismatches were left unresolved rather than rounded away. Production +served a homepage without the deferral script the repository carried, and a service +worker naming cache aaig-v84 where the repository named +aaig-v85. The receipt also records that the reported source commit was +an empty string, and that the deployment completed roughly ten minutes before the +then-current main commit existed, so that commit could not have been its source. +The event decision was DEFER. OBSERVED

+ +

A later Git-connected deployment linked provider record to merged source with an +exact commit relationship, and sampled two live routes. Both returned 200. Both +differed from committed bytes by exactly one declared 214-byte analytics insertion +with zero source bytes removed, which is why raw byte identity is recorded as +mismatched and the transform relationship as matched. Both routes recorded no +content security policy header. That receipt explicitly declines to establish global +edge convergence, installed cache state, accessibility, privacy, security, semantic +truth, durability, or any future state. OBSERVED

+ +

The service-worker drift from the first receipt stayed open for two cache +generations. A third receipt now closes it: production served bytes identical to the +committed file, with both naming cache aaig-v87. Closing it required +publishing a checkpoint, and the projection root was unchanged at +22852b5a3025, because an observation with no effect must +not advance accepted state. OBSERVED

+ +

The closure is bounded and the receipt says so. It records that the +aaig-v85 and aaig-v86 generations were never observed in +production and cannot be reconstructed, that one edge was sampled, and that installed +client caches were not inspected. The process failure is the part worth keeping: an +unresolved finding aged out of view for two versions because nothing scheduled its +re-observation. The protocol recorded the gap faithfully and did not close it for me. +OPEN

+ +

9.4 Finite representations and frozen-oracle results

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 9. One layer in plain language, formal language, finite result, +and claim ceiling. Every result is local to the retained owner-review packet.
Plain statementFormal objectFinite resultClaim ceiling
A forecast is not permission.execute = 1 only if g = PASS, for every +p.All three BP-001 responses returned BLOCK when +the gate was held.Exact prompt-oracle agreement, not operational enforcement.
In the frozen objective, coupling the report to its reward moves the optimum.argmin E[(p-Y)^2] = 1/2; adding (1/2)p gives +p* = 1/4.All three responses recovered both frozen values.A synthetic algebraic counterexample, not real-world calibration.
Current state is sufficient only for named questions.r(x)=r(y) implies sigma_Q(x)=sigma_Q(y).Across 151 traces and seven queries, all 1,023 nonempty subsets of ten fields +were checked. One five-field set was sufficient. It realized 47 tuples for 33 query +classes.Set-minimal within ten supplied fields, not globally minimal. The 47 tuples +overrefine the exact 33-class query quotient.
A useful summary must also survive permitted next steps.x equiv_Q y only when every permitted continuation preserves equal +query answers.The full seven-query partition stayed 33 to 33. Removing +nextPermittedActions began at 18 classes and refined to the same 33-class +partition in one round.Exact for one finite graph, ten events, and declared refusal semantics.
Several actions can remain equally admissible without being equal.Keep every nondominated risk vector until policy supplies a preference rule.All three responses retained A, B, C as Pareto-minimal and refused +to invent a unique action.Agreement on the frozen example, not a universal risk policy.
+ +

The BP-001 evaluator made 27 exact comparisons: nine frozen +result groups across three requested configurations. All 27 matched the oracle, all +three response shapes passed, and the exact answer vectors matched pairwise. The +exact layer includes the gate, the two forecast optima, historical insufficiency, +the Pareto set, absence of a unique action, the unresolved pending state, the +encoding distinction, and the five-step record order. +TESTED

+ +

The semantic layer is deliberately weaker. Its quote links pass deterministic +existence checks, but the function-to-quote judgment remains +DRAFT_OWNER_REVIEW. Six functions have unambiguous unanimous quote +support: gate and forecast separation, freezing before resolution, append-only +resolution, cohort calibration, typed unresolved state, and preservation of a +Pareto frontier without hidden scalarization. The owner-review map also marks +forecast scoring, F04, present in all three responses. One mapped quote says to +score the frozen forecast after resolution without naming a declared scoring rule, +so strict F04 unanimity remains unresolved and is not promoted to the six-function +count. F04 still has direct scoring-rule support in two responses. Query-relative +projection and behavioral quotienting also recurred in two of three responses, so +functions F01 through F09 each have quote support in at least two. Deterministic +replay audit, explicit separation of belief scoring from action optimization, and +the general claim ceiling, F10 through F12, were absent from all three. Agreement +is therefore signal about recoverable output structure, not evidence that the +responses supplied the complete architecture. +OPEN

+ +

The model labels are retained exactly as requested but not promoted to runtime +identity. The runs share material common causes, including the prompt, schema, +orchestration platform, and possible training or system dependencies. No result in +this subsection is described as independent replication, human understanding, +truth, novelty, safety, or forecast calibration.

+""" + +NEGATIVE = r""" +

10The results that went against me

+ +

These are the most informative findings in the project. Each one narrowed a claim +I had already made.

+ +

10.1 A receipt that contradicts itself

+ +

The first deployment receipt reports its status twice. The envelope records +evidence: VERIFIED and authority: UNVERIFIED. The payload +record inside the same file reports evidence: PASS and +authority: PASS_WITH_LIMITS. Five other axes agree. Two do not, and +they disagree about whether authority was established.

+ +

The schema contract gate passes this file. It validates each object against its +own schema and never cross-checks the two. So a receipt can be internally +inconsistent on the question of whether anything was authorized, and a green gate +will not notice. This is exactly the projection drift the design warns about, +occurring inside a single artifact of the system that names it. +TESTED

+ +

A second instance sits beside it. The two deployment receipts use different status +vocabularies. The first is schema 1.0.0 with no declared vocabulary and pass-and-fail +values. The second is schema 2.0.0 declaring stp-v1.1-status-axes with +values such as SUPPORTED, APPLIED, and MATCHED. +No mapping between them exists in the repository, so the two production observations +in one stream cannot be compared axis by axis. OPEN

+ +

10.2 A larger-model control recorded fewer unsupported claims than every eligible structured arm

+ +

The Typed Refusal archive reports unsupported-claim aggregates across five arms +of increasing structure, against a corpus of United States Code Title 29 identified +by digest 188ab1c50a46. A sixth arm, an off-model +control, was a larger model given the corpus and no structure at all. The corpus +bytes and original runs are not in the public archive.

+ + + + + + + + + + + + + +
Table 10. Typed Refusal Harness. Rates are unsupported claims per 100 +hand-decomposed claims. Wilson intervals and two-tailed Fisher exact tests against +P0 are exploratory claim-level summaries under a working independence assumption; +question and run clustering could not be modeled from the published aggregate.
ArmStructure addedUnsupportedClaimsRate95% CIExploratory p vs P0
P0corpus only, no index, no tool209022.214.9-31.8baseline
P1hash-verified snapshot, single-unit pull5875.72.5-12.80.0021
P2typed rejections as final answers61055.72.6-11.90.0012
P3byte receipt required per quotation91009.04.8-16.20.0148
P4frozen answers with inline receipts0990.00.0-3.7excluded
Controllarger model, corpus only, no structure01510.00.0-2.5not tested
+ +

The eligible structured-arm ordering is non-monotone: P1 and P2 each recorded 5.7 +unsupported claims per 100, while P3 recorded 9.0. Pairwise two-tailed Fisher exact +tests on the published claim-level aggregates give p = 1.000 for P1 versus P2, +p = 0.579 for P1 versus P3, and p = 0.428 for P2 versus P3. The three Wilson +intervals overlap. Under the same working-independence assumption, these exploratory +summaries do not support ranking P1, P2, and P3 and do not establish equivalence +among them.

+ +

At the claim level, the archived aggregates yield p = 0.0021 for P1, p = 0.0012 +for P2, and p = 0.0148 for P3 against P0. No decision threshold was registered, and +the independence assumption is not supported by the clustered design, so these +values are not treated as confirmatory or as arm-level significance tests. P4's +zero count is descriptive only. Its answers were supplied by construction, and one +of its three runs ignored the cards, so the arm is excluded from accuracy claims.

+ +

The larger-model control recorded zero unsupported claims out of 151, matching +the excluded P4 count and recording fewer than each eligible structured arm, P1 +through P3. Exploratory claim-level Fisher comparisons yield p = 0.0061 against P1, +p = 0.0044 against P2, and p = 0.0002 against P3. Because model identity and +scaffolding changed together, these comparisons do not identify a causal effect. +Within the published aggregate, replacing the model coincided with a lower +unsupported-claim count than any eligible scaffold around the weaker model, while +P1 through P3 each remained below that weaker model's P0 baseline. +OBSERVED

+ +
+

What this experiment does not support

+

The generating prompts, the per-run answers, the corpus file, and the +preregistration artifact are all absent from the repository. The repository states +that six predictions were registered before any arm ran and that three were +falsified, and exactly one of the six is quoted anywhere, partially. I could +recompute the published aggregate from arms.json and +stats.py. I could not reproduce a single original run. No significance +criterion was preregistered, so every p value here is post-hoc. The archive also +does not publish the question-level or run-level counts needed for a +cluster-preserving permutation, bootstrap, or multilevel analysis. The retained +evidence bears on auditability and claim discipline by making those limits visible. +It does not establish that structure or model choice causally improved accuracy. +OPEN

+
+ +

10.3 A committed registration record and a replication that denied its own doctrine

+ +

A separate experiment is described by its repository as preregistered. The pinned +repository contains a registration file naming three criteria and decision logs for +a test of the claim that live per-probe feedback eliminates the premature nulls that +committed plans produce. The design was two rounds by three models by three +replicates by two arms, for 36 sessions. The inspected public history does not +independently prove that the registration file predates those sessions.

+ + + + + + + + + +
Table 11. Replication of 2026-07-17. Verdict: doctrine denied. +Token counts are block totals of output tokens over six sessions per cell group.
ModelOne-shotIterativeRatioScored result
claude-opus-4-85,56735,1526.3×6/6 clean one-shot; 1 premature null iterative
claude-sonnet-515,67348,8003.1×12/12 scored as calibrated under the experiment rubric
claude-haiku-4-538,80941,3991.1×3 clean, 3 premature one-shot; iterative arm lost
+ +

Recorded criterion (a) was satisfied, though not by the model that motivated the +doctrine. Recorded criterion (b) failed, and that failure denied the doctrine: one opus iterative +session produced a genuine premature null, skipping the domain floor extreme after +seven matching probes sat in front of it. The recorded bar was zero +counterexamples, and one is enough.

+ +

Recorded criterion (c) could not be evaluated at all. All six haiku iterative sessions were +truncated mid-play by a session limit, so 30 of 36 sessions were scored. The +repository record acknowledges the confound rather than hiding it: models ran in +sequential blocks with haiku last, so budget exhaustion clusters on the final block. +That is missing data with a known mechanism, recorded as missing. +OBSERVED

+ +

Two things survived. Sonnet was scored as calibrated under that experiment's +rubric in 12 of 12 sessions across both arms, which the document itself downgrades +to a rubric-specific signal rather than a capability benchmark. That label is not +empirical forecast calibration as defined in section 5 and is not a +protocol-calibrated predicate. And all four valid premature nulls fell on the same round, with zero on +the other across its 15 valid sessions, which points to a shared failure pattern +across models that per-probe feedback did not close.

+ +

The replay of all 36 recorded cells runs offline through the published harness, +asserts twelve checks, and is wired into the repository gate. It reproduces the +denied verdict from the recorded artifacts; it does not reproduce the original model +sessions or constitute independent validation. +TESTED

+ +

10.4 Smaller corrections

+ + +
+ {FIG5} +
Figure 5. The repair pattern used in the corrections reported + above. In these cases, the missing step was a regression gate.
+
+""" + +BOUNDARY_SECTION = r""" +

11What this does not establish

+ +

Stated once, in full, so that no section has to hedge itself.

+ +

Nothing here establishes that a recorded event was true. A false sensor produces +a well-formed receipt. A valid credential holder makes a bad decision. Two programs +agree because they share one mistake. Comparison against a previously trusted digest +reveals a byte difference without showing the earlier bytes described reality.

+ +

Nothing here establishes causation, lawful authority, regulatory compliance, +statistical reliability, general safety, or independent validation. The reducers +share a specification and may share its errors. Most fixtures are synthetic. Most +witnesses are not organizationally independent. There is no live authority service +with independently managed keys, trusted time, revocation, and atomic single-use +consumption. There is no durable non-equivocating log for a threat model that +includes full history replacement. There is no general proof of liveness, fairness, +concurrency safety, or survivability. There is no preregistered human study, and no +external replication of the architecture.

+ +

The case study is one project's repair history, produced by one person, largely +in one computing environment, on data and interfaces that changed while the work +proceeded. It may not transfer.

+ +

The single-operator design is a separate validity threat. I selected and +classified source artifacts, chose fixtures and checks, wrote the manuscript claims, +and applied the claim markers to my own work. Those controls make the decisions +inspectable, but they do not make them independent: the same judgment can preserve +one error across evidence selection, fixture design, testing, prose, and marker +assignment.

+ +

The activation and quotient results are exhaustive only inside a synthetic +finite model. Their minima depend on the supplied candidate fields and declared +queries. Their stable partition depends on the 151 trace prefixes, ten events, +enabled-or-refused transition rule, and finite continuation graph. They establish +no fact about an iPhone, another device, an open environment, an unmodeled event, or +a richer query. A five-field sufficient representation is not the unique data +structure for the behavior, and its 47 realized tuples are not the exact 33-class +behavioral quotient.

+ +

The frozen-oracle packet is a three-response check, not a model +benchmark. Requested model labels are unattested metadata. The runs share the prompt, +schema, platform, operator, and possible training or system dependencies. +Twenty-seven exact oracle matches do not establish semantic understanding. The +semantic map is an owner-review judgment over quote-linked text, and its three +universal absences are part of the result. No real event resolved, so the packet +contains neither a forecast outcome nor evidence of forecast calibration.

+ +

The local Lean source states query-signature sufficiency and kernel exactness +using Mathlib's pinned Function.FactorsThrough vocabulary [47]. The +module compiled directly in the local pinned environment, but it is not imported by +the package root and no upstream Mathlib review occurred. It is a local formalization +aid, not an accepted library contribution or external proof review.

+ +

One risk deserves naming on its own. Strict preservation of unknowns can make a +system unusable. If unresolved evidence blocks every action, availability and safety +trade against each other, and the protocol offers no principled exchange rate +between them. OPEN

+ +

Six tests that would demote these claims

+
    +
  1. Clean-room replay. Give an external team the minimized public packet and +nothing else. Disagreement demotes the replay claim or exposes a hidden dependency.
  2. +
  3. Formal non-promotion check. Model the lifecycle and either prove or refute +that proposal, acknowledgement, and unresolved evidence cannot advance accepted +state.
  4. +
  5. Qualified instrument pilot. Use one real instrument with a metrology +review, operating limits, uncertainty, and a known sensing footprint. Failure +narrows the observation contract.
  6. +
  7. False-assurance study. Pre-register a comparison between one composite +status and the six-signal view, measuring correct intervention, missed danger, false +reassurance, and response time. No benefit leaves Six Signals an accessibility +design and not a comprehension improvement.
  8. +
  9. Narrow live adapter. Implement one bounded consequential tool end to end. +Any unrecorded or duplicated effect falsifies the finality boundary.
  10. +
  11. External marker re-assignment. Give an external reviewer the pinned +evidence and marker rules, but not the author's assigned markers. Material +disagreement demotes the affected claim or exposes an underspecified marker rule.
  12. +
+""" + +GUIDE = r""" +

12Adapting this

+ +

The names here do not matter. The separation does. Nine steps, in order, and the +first one is the one people skip.

+ +
    +
  1. Pick one consequential transition. Not an ontology. One action whose wrong +execution or false acceptance would actually hurt.
  2. +
  3. List what you currently collapse. Write the exact phrases your system +treats as success: request accepted, job started, HTTP 200, database commit, sensor +value, human review, deployment succeeded, customer outcome. Decide which are +genuinely different states.
  4. +
  5. Type absence. Define what a real zero means in your domain, then define +no-change, missing measurement, censoring, staleness, and evaluator failure +separately. Never let an empty field pick between them.
  6. +
  7. Bind authority to an operation. Not to a role, and not to a tool. Separate +risks a user may accept from constraints that must refuse. Record expiry, +revocation, and replay behavior.
  8. +
  9. Build the smallest reducer. Rebuild accepted state from the event prefix +using assigned sequence and causal references. Keep presentation and telemetry +derivative. Write a second implementation if the state is load-bearing.
  10. +
  11. Attack it. Change a subject identifier. Duplicate an event. Remove a +blocking check. Replace a source digest. Reorder events. Force an evaluator error. +Return an acknowledgement with no effect. Keep every successful attack as a +regression test.
  12. +
  13. Report a vector. Show consequence, evidence, integrity, privacy, activity, +and the local complete condition separately, with reason codes and source links. +Never color alone.
  14. +
  15. Release less than you collected. Allowlist a public derivative. Keep +sensitive evidence in a restricted store with retention rules. Record what the public +verifier can and cannot recreate.
  16. +
  17. Invite a clean-room challenge. The useful first external test either +matches your bounded result or finds your instructions underspecified. Both results +are worth more than another internal pass.
  18. +
+ +

13What I do not know

+ +

I do not know whether this combination is novel in an academic sense. Section 8.3 +names two systems published in 2026 that share the spine of this design, which narrows +what could be novel to the two separations stated there. I have not completed the +systematic literature review needed to assess even those two, so I make no priority +claim. +I do not know whether six signals are understood better than one status, because I +have run no user study. I do not know whether strict preservation of unknowns is +affordable in a high-volume system. I do not know how any of this behaves under +network partition, adversarial witnesses, or fast schema churn. I do not know +whether the missing Ledger bytes would resolve the terminology conflict in section 2 +or deepen it.

+ +

Those are part of the result. The clearest implementation finding in this work is narrow: +specific false-pass paths became explicit tests, and unresolved conditions stayed +visible instead of being rounded to green. The next tests are external reproduction, +one real qualified instrument, and one bounded live adapter.

+""" + +BACK = r""" +

14Lineage, credits, and AI-assistance disclosure

+ +

Where this came from

+ +

The ideas in this paper did not start here, and they did not start with me alone. +The early conceptual work was done in April and May 2026 in extended dialogue with +language models, principally Claude and Gemini. I set the problems, argued with the +answers, and kept what survived. What the models contributed was real and I am not +going to describe it as tooling.

+ +

I published early versions of these ideas publicly on LinkedIn in May and June +2026, before the software described here existed. Those mutable posts provide +lineage context but are not evidence for this paper. The bounded contribution here +is the checkable implementation: what happened when I built it, tested it, tried to +break it, and recorded the places it failed.

+ +

I make no originality claim over the component ideas. Causal ordering, event +sourcing, compensating transactions, safety and liveness, measurement uncertainty, +conformity assessment, and provenance modeling are all established fields, cited in +section 15, and none of them are mine. The synthesis is what I did, and section 13 +states what is left of it once the neighbours named in section 8.3 are +accounted for.

+ +

Credits and disclosure

+ +

I supplied and classified the source artifacts, set the operating, acceptance, and +privacy constraints, chose which claims to make public, and am responsible for the +manuscript and every release decision.

+ +

Generative AI systems were used as research, coding, testing, and editing tools. +Recorded uses include brainstorming, terminology extraction, source discovery, +repository inspection, code drafting, test generation, adversarial review, and +manuscript editing. Their outputs were treated as candidate material, never as +evidence, authority, authorship, or independent validation. Checks run by agents +that share models, prompts, tools, or specifications are not described anywhere in +this paper as independent replication. The synthesis and the prose benefited +materially from that assistance, and I reviewed the final text.

+ +

Owner-attested AI editorial-review disclosure: Claude (Opus 5) provided editorial +review on 15 August 2026. I independently checked each adopted suggestion against the +source artifacts and retained evidence. This review is editorial assistance, not +evidence, authorship, or independent validation. A minimized disposition note is +included at evidence/editorial-review/PUBLIC-DISPOSITION.md in +the release packet.

+ +

15References

+
+
    +
  1. A. Vaswani et al. Attention Is All You Need. NeurIPS, 2017. papers.nips.cc/paper/7181
  2. +
  3. L. Lamport. Time, Clocks, and the Ordering of Events in a Distributed System. CACM 21(7), 1978. doi:10.1145/359545.359563
  4. +
  5. M. Fowler. Event Sourcing. 2005. martinfowler.com/eaaDev/EventSourcing.html
  6. +
  7. J. Gray. The Transaction Concept: Virtues and Limitations. VLDB, 1981.
  8. +
  9. H. Garcia-Molina and K. Salem. Sagas. SIGMOD, 1987. doi:10.1145/38713.38742
  10. +
  11. F. B. Schneider. Implementing Fault-Tolerant Services Using the State Machine Approach. ACM Computing Surveys 22(4), 1990. doi:10.1145/98163.98167
  12. +
  13. D. Seto et al. The Simplex Architecture for Safe On-Line Control System Upgrades. ACC, 1998. doi:10.1109/ACC.1998.703255
  14. +
  15. JCGM 200:2012. International Vocabulary of Metrology, 3rd ed. doi:10.59161/jcgm200-2012
  16. +
  17. JCGM 106:2012. The Role of Measurement Uncertainty in Conformity Assessment. doi:10.59161/jcgm106-2012
  18. +
  19. National Academies. Reproducibility and Replicability in Science. 2019. doi:10.17226/25303
  20. +
  21. JCGM 100:2008. Guide to the Expression of Uncertainty in Measurement.
  22. +
  23. ICH E9(R1). Estimands and Sensitivity Analysis in Clinical Trials. Final addendum.
  24. +
  25. M. A. Hernán and J. M. Robins. Causal Inference: What If. 2020. miguelhernan.org/whatifbook
  26. +
  27. EU General Data Protection Regulation, Articles 5 and 17. Regulation 2016/679.
  28. +
  29. A. Rundgren, B. Jordan, S. Erdtman. JSON Canonicalization Scheme. RFC 8785, 2020.
  30. +
  31. B. Laurie et al. Certificate Transparency Version 2.0. RFC 9162, 2021.
  32. +
  33. W3C. PROV-DM: The PROV Data Model. Recommendation, 2013.
  34. +
  35. W3C. Web Content Accessibility Guidelines 2.2. Recommendation, 2024.
  36. +
  37. S. Torres-Arias et al. in-toto: Providing Farm-to-Table Guarantees for Bits and Bytes. USENIX Security, 2019.
  38. +
  39. SLSA. Supply-chain Levels for Software Artifacts, v1.2. slsa.dev/spec/v1.2
  40. +
  41. NIST SP 800-207. Zero Trust Architecture. 2020.
  42. +
  43. NIST SP 800-82 Rev. 3. Guide to Operational Technology Security. 2023.
  44. +
  45. NIST AI 100-1. Artificial Intelligence Risk Management Framework 1.0. 2023.
  46. +
  47. CPMI-IOSCO. Principles for Financial Market Infrastructures. 2012.
  48. +
  49. U.S. SEC. Risk Management Controls for Brokers or Dealers With Market Access. Rule 15c3-5.
  50. +
  51. BCBS 239. Principles for Effective Risk Data Aggregation and Risk Reporting. 2013.
  52. +
  53. OMG. Structured Assurance Case Metamodel, v2.3. 2023.
  54. +
  55. U.S. FDA. Predetermined Change Control Plan for AI-Enabled Device Software Functions. 2025.
  56. +
  57. U.S. FDA. Applying Human Factors and Usability Engineering to Medical Devices. 2016.
  58. +
  59. EU Artificial Intelligence Act, Regulation 2024/1689, Articles 12, 14, 19.
  60. +
  61. Kubernetes. KEP-1623, Standardize Conditions. kubernetes.dev/resources/keps/1623
  62. +
  63. CNCF. CloudEvents Specification 1.0.2. 2022.
  64. +
  65. JSON Schema. Core and Validation, Draft 2020-12.
  66. +
  67. Model Context Protocol. Specification revision 2026-07-28.
  68. +
  69. L. Marom, S. Tibbits, G. Zardini, M. J. Buehler. A Category-Theoretic Framework from Biological Mechanics to Engineered Stimulus-Response Systems. arXiv:2604.26367, 2026.
  70. +
  71. P. Kocher, J. Jaffe, B. Jun. Differential Power Analysis. CRYPTO, 1999. doi:10.1007/3-540-48405-1_25
  72. +
  73. J. Macdonald. OpenGoldenRatio (OGR) v0.1: Containment-First Multi-Agent Governance Protocol. Zenodo, 2026. doi:10.5281/zenodo.18969396. Executable demonstration at commit 58450185582f4ecf1410b33f77e22d8d4b0441a2.
  74. +
  75. T. Heightman, E. Orlova, P. Mantrov, and A. Ustimenko. Hamilton-Zero: A Neural Tensor-Network Foundation Model for Ground States of Arbitrary Quadratic Qubit Hamiltonians. arXiv:2608.11911v2 [quant-ph], 2026. doi:10.48550/arXiv.2608.11911.
  76. +
  77. G. W. Brier. Verification of Forecasts Expressed in Terms of Probability. Monthly Weather Review 78(1), 1950. doi:10.1175/1520-0493(1950)078<0001:VOFEIT>2.0.CO;2.
  78. +
  79. T. Gneiting and A. E. Raftery. Strictly Proper Scoring Rules, Prediction, and Estimation. Journal of the American Statistical Association 102(477), 2007. doi:10.1198/016214506000001437.
  80. +
  81. A. P. Dawid. Calibration-Based Empirical Probability. Annals of Statistics 13(4), 1985. doi:10.1214/aos/1176349736.
  82. +
  83. J. C. Perdomo, T. Zrnic, C. Mendler-Dünner, and M. Hardt. Performative Prediction. Proceedings of Machine Learning Research 119, 2020. proceedings.mlr.press/v119/perdomo20a.html.
  84. +
  85. E. F. Moore. Gedanken-experiments on Sequential Machines. In Automata Studies, 1956. doi:10.1515/9781400882618-006.
  86. +
  87. A. Nerode. Linear Automaton Transformations. Proceedings of the American Mathematical Society 9(4), 1958. doi:10.1090/S0002-9939-1958-0135681-9.
  88. +
  89. J. E. Hopcroft. An n log n Algorithm for Minimizing States in a Finite Automaton. Stanford CS-TR-71-190, 1971. i.stanford.edu/TR/CS-TR-71-190.html.
  90. +
  91. S. Boyd and L. Vandenberghe. Convex Optimization. Cambridge University Press, 2004. web.stanford.edu/~boyd/cvxbook.
  92. +
  93. Leanprover-community. Mathlib Function.FactorsThrough, pinned at commit 520045ab14e26149ee970e2e617ca04b09bde5d6. Mathlib/Logic/Function/Basic.lean, lines 832-885.
  94. +
  95. A. Ben-Tal and A. Nemirovski. Robust Convex Optimization. Mathematics of Operations Research 23(4), 1998. doi:10.1287/moor.23.4.769.
  96. +
  97. ESAA: Event Sourcing for Autonomous Agents in LLM-Based Software Engineering. arXiv:2602.23193, 2026. arxiv.org/abs/2602.23193.
  98. +
  99. AgentBound: Verifiable Behavioral Governance for Autonomous AI Agents. arXiv:2606.30970, 2026. arxiv.org/abs/2606.30970.
  100. +
  101. Leiden Declaration on Artificial Intelligence and Mathematics. Working group convened by J. Portegies, Eindhoven University of Technology. June 2026, endorsed by the International Mathematical Union. leidendeclaration.ai.
  102. +
+
+ +

AProperties, assumptions, and limits

+ +

A.1 Proposal non-promotion

+

Let L(k) be a valid event prefix and A(k) = R(P, L(k)). +Let U(P) be the nonempty set of policy-authorized projection-update +events, containing only qualified ACCEPT records that close a governed +transition. A CORRECT record begins a new governed transition and may +propose a superseding state, but it cannot update A(k) without a later +qualified ACCEPT. Appending only records whose types lie outside +U(P), including proposal, preparation, tool acknowledgement, and an +unaccepted correction, cannot change A(k).

+

By induction over the appended sequence. The base projection is +unchanged, and each step records history without invoking the update function. The +result depends on complete reference validation and on there being no second update +path. A reducer defect or an incomplete policy invalidates the assumption, and +section 10.1 shows a related assumption failing in practice.

+ +

A.2 Unknown preservation

+

For the proposed normalized aggregate over a finite nonempty required set, the +result is PASS only when +every condition passes, FAIL if any fails, and UNRESOLVED +if none fails and any is unknown, stale, or errored. An empty set returns +UNRESOLVED with reason INVALID_POLICY. No unresolved +required predicate produces a pass. The rule says nothing about predicates omitted +from the set. This general precedence rule has not been exercised by a mixed +false-plus-unknown public fixture. PROPOSED

+ +

A.3 Deterministic replay

+

With fixed policy bytes, event bytes, schema versions, canonicalization, reducer +code, and deterministic dependencies, repeated evaluation returns the same +projection. This is a property of the computational boundary. It does not establish +that the events are true, complete, or authorized.

+ +

A.4 Hash-link mutation detection

+

Assuming second-preimage resistance, an unambiguous canonical encoding, and a +trusted externally anchored tip that transitively commits the event, modifying that +event changes the committed tip except with negligible probability. A checkpoint +protects only the prefix it commits. An anchor before a modified event does not +prevent changing a later event and rehashing the suffix, so detecting suffix +replacement requires an authenticated current tip.

+ +

A.5 Illustrative effect-trace counterexample

+

Consider two declared effects, alpha and beta. Schedule +(alpha, beta) emits the ordered trace +[dispatch-alpha, dispatch-beta], while schedule +(beta, alpha) emits [dispatch-beta, dispatch-alpha]. If both +schedules reduce to the same accepted projection, equal projections still do not +entail equal ordered effect traces. This is a counterexample by construction at the +specification level. No public fixture in the pinned repository implements it, so it +is not a tested result. PROPOSED

+ +

A.6 Bounded lane balance

+

Capacity is tracked per lane, and the three lanes do not share a unit. +Observation, settlement, and recovery each measure something different, so their +backlogs are held as a vector and never summed. For a declared lane +x, a finite trace is evaluated by the deterministic recurrence:

+ +
+
B_x[k+1] = max( 0, B_x[k] + A_x[k] - S_x[k] ) + +M_x(H) = max { B_x[k] : 0 <= k <= H } + +finite_capacity_pass_x(H) iff M_x(H) <= C_x
+
A_x arrivals into lane x  ·  S_x service +capacity of lane x  ·  B_x backlog  ·  C_x declared +finite capacity  ·  H declared finite horizon  ·  all lane +quantities finite, nonnegative, and in one declared unit. +PROPOSED
+
+ +

For declared arrays, initial backlog, horizon, and capacity, these equations +answer one bounded question: whether the computed backlog exceeds capacity anywhere +in that finite trace. They do not establish stationarity, asymptotic stability, +recurrence class, a queue-length distribution, or a future arrival or service rate. +No stochastic queueing theorem is claimed or tested here.

+ +

The autonomy rule in section 3 treats observation, settlement, and recovery +capacity as separate constraints. Applying it to a live lane would require declared +measurement procedures and a justified rule for projecting beyond the observed +window. This project supplies neither. A finite-capacity pass is therefore a local +trace result, not evidence that a live lane will keep pace. +OPEN

+ +

Where a bounded check is wanted before an estimator exists, the survivability +harness substitutes finite reachable-state traversal at a declared horizon. The +profile fixes H = 7 rounds and a no-change tolerance of +epsilon = 0.02 in the lane's declared unit. Both are conventions. A +longer horizon evaluates a different, generally more expensive bounded question, +and neither value is derived from anything. Under an exact-H recovery +condition, one horizon is not uniformly stronger or weaker than another without +additional monotonicity and absorbing-target assumptions. Every disturbed and +controlled state must stay legal, preserve the named invariant, and retain the +required essential function, and every state in the frontier at round +H must be in the recovery target set. Merely reaching the target +before H is insufficient unless the required H-frontier +condition also holds. An invalid model, an undefined +controller, or an exceeded bound returns UNKNOWN rather than a pass. +PROPOSED

+ +

A.7 Brier loss and the coupled-objective shift

+

Let Y be binary with Pr(Y=1)=q. For a forecast +p, direct expansion gives:

+ +
+
E[(p-Y)^2] + = q(p-1)^2 + (1-q)p^2 + = p^2 - 2pq + q + = (p-q)^2 + q(1-q)
+
The final term is constant in p, so the unique minimum on +the unit interval is p = q. This is the binary Brier result [39, 40].
+
+ +

If the same objective adds mu p, its derivative is +2(p-q)+mu. Strict convexity gives the constrained minimizer +clip(q-mu/2, 0, 1). At q=1/2 and mu=1/2, the +optimum moves from 1/2 to 1/4. The lower report is not a +better estimate of q. It is the optimum of a different objective. The +counterexample proves that an incentive attached directly to the report can distort +the report; it does not prove that every coupled system does so.

+ +

A.8 Query factorization and exact kernels

+

For a finite family of queries, let sigma_Q(x) be the vector of all +declared answers at state x, and let r(x) be a proposed +representation. The representation is sufficient exactly when equal represented +values never hide unequal query signatures:

+ +
+
r(x) = r(y) implies sigma_Q(x) = sigma_Q(y) + +equivalently, sigma_Q = d after r on the image of r
+
This is sigma_Q.FactorsThrough r in Mathlib's pinned +vocabulary [47]. The decoder d need only be defined on represented values +that occur.
+
+ +

Exactness requires the reverse factorization as well. Then +r(x)=r(y) if and only if sigma_Q(x)=sigma_Q(y), so the two +functions induce the same kernel partition. Their class labels and data structures +may still differ. The local QueryQuotient.lean module proves component +factorization, the sufficiency equivalence, separation of unequal signatures, and +this kernel characterization. It compiled directly against the pinned Mathlib +environment; the exact source and standalone compile receipt are included in the +owner-review packet. This is not an upstream-reviewed contribution.

+ +

The included source and receipt are the complete public evidence boundary for this +result. The receipt points to an earlier local package receipt and binds additional +package files that this minimized packet does not include, so a public reader cannot +replay the complete local receipt chain from these bytes alone. The local package +working directory was not itself a Git repository when the compile was recorded; +the public release commit anchors the released copies, not their full pre-release +history. Other modules imported by ZeroState.lean are outside A.8 and do +not support the quotient claim. Clean-room reconstruction of the pinned package +environment remains open. OPEN

+ +

In the finite activation packet, the unique five-field candidate minimum is +sufficient for all seven queries over 151 traces. It realizes 47 representation +values, while the full query signature realizes 33 classes. It therefore preserves +the answers but does not implement the exact quotient. The result is relative to +the supplied ten fields and exhaustive 1,023-subset search.

+ +

A.9 Future-stable refinement

+

Static query equality is the initial relation +x equiv_0 y when sigma_Q(x)=sigma_Q(y). Define the next +relation by retaining a pair only when it was previously equivalent and every +declared event has the same enabled-or-refused status and leads to states equivalent +under the previous relation. Each round can split classes and never merge them. On +a finite state set the descending sequence must stabilize.

+ +

At the fixed point, equivalent states have the same query answers after every +permitted finite continuation. Conversely, any transition-stable equivalence lying +inside the initial query kernel survives every refinement round by induction, so it +lies inside the fixed point. The limit is therefore the largest transition-stable +equivalence contained in the declared query kernel, or the coarsest stable +refinement of its partition. This is established sequential-machine refinement, +not a new theorem [43-45].

+ +

The frozen packet's full seven-query partition began with 33 classes and was +already stable. Omitting nextPermittedActions began with 18 classes and +refined to 33 in one round. Both reached the same partition digest +2f129b2ac6c0. The witness is concrete: after +BOOT, ACCEPT_CONSENT is enabled and advances; from the +empty trace it is refused and remains in place. This proves the distinction only in +the pinned finite graph.

+ +

A.10 Pareto existence and policy selection

+

Let a finite nonempty action set carry a finite risk vector. Say action +a dominates b when every component of a is no +worse and at least one is strictly better. A Pareto-minimal action must exist. Start +from any action. If it is dominated, move to a dominator. Strict dominance cannot +cycle, and a finite set cannot support an infinite descent, so the process ends at +a nondominated action.

+ +

If every scalarization weight is positive, a minimizer of the weighted sum is +Pareto-minimal: a dominator would make at least one positively weighted component +smaller and none larger, contradicting minimality [46]. The converse does not give +one authorized weight vector, and neither existence result gives uniqueness. In the +BP-001 fixture, all three actions are nondominated. Returning +the frontier and an unresolved selection is therefore the complete result until +policy supplies a preference rule.

+ +

BProvenance, reuse, and attribution

+ +

The intended public release will use CC BY 4.0. Adaptation will be welcome, +including commercial adaptation, with attribution to the author and identification +of what was modified. I cite my own sources throughout and expect the same in +return, which is the whole of what I am asking.

+ +

For publication, the exact release bytes will be hashed with SHA-256, recorded in +the public event history described in section 6, sealed by a checkpoint, and checked +again in continuous integration. Until that workflow runs against the final release, +this owner-review draft has no completed publication commitment. Once complete, the +record can support artifact identity and chronology for the committed bytes. It does +not by itself prove authorship, originality, independent creation, or legal +priority.

+ +
+

Interoperability fixtures in this specification

+

Several values here are arbitrary by construction, meaning any distinct value +would serve the same technical purpose. They are fixed so that implementations can +exchange and replay the same records. They are technical fixtures, not watermarks or +evidence of origin:

+ +

An implementation that adopts this protocol may reproduce these values under the +license. Attribution and identification of modifications are license obligations, +separate from any technical identity check.

+
+ +

CArtifact index

+

Full SHA-256 values for every digest abbreviated in the text. The table separates +public file bytes, derived outputs, and declared digests because they have different +verification ceilings.

+ +

Verification note: REPRODUCE.md gives the clean-clone +procedure for this release packet. Its offline Python and JavaScript verifiers cover +the included allowlisted bytes. For external repository rows, check out the named +commit and hash the exact file bytes with a local SHA-256 tool. +Rows identified only by retained source ID are not public inputs; their digests bind +the bytes inspected locally without exposing a workstation path. The projection-root +row is reproduced by the named verifier, not by hashing that script. The refusal +corpus row cannot be recomputed from the public repository because the source bytes +are absent. No single command can reproduce public, retained, and derived rows with +different access boundaries.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Table 12. Public locators, retained source IDs, and expected digests. +Repository abbreviations are RL for Resilience-Ledger, TS for the-stable, and TR for +typed-refusal-harness.
ArtifactExact locator and statusExpected SHA-256 or root
Atlas data-sync contractpublic blob: RL@275d0b3e7474
governance/contracts/atlas-data-sync.contract.v2.json
7366c7042ec2e40a501fe091f9367eb5e8e8449763b69afadf29762864d58263
Atlas runtime contractpublic blob: RL@275d0b3e7474
governance/contracts/atlas-runtime-contract.v1.json
7cd8c2a89f6df20995789f066643240a4cbcbc3ca67d2dc1cc4c71129b22ffd5
Production observation 000001public blob: RL@275d0b3e7474
governance/ledger/events/deployment/000001-wp0-production-observation.json
34bde4ec2eb4d1bfb70b8d44df6439cb295bd1dc1293df0ae47490193ad3fa97
Production observation 000002public blob: RL@275d0b3e7474
governance/ledger/events/deployment/000002-public-explanation-production-observed.json
4917a927727e3b0cc03cd057100a698ccc18e51751f69dd33f5bed14344fa24f
STP v1.2 release manifestpublic blob: RL@275d0b3e7474
research/stp-v1.2/release-manifest.json
2f95ed233a20060d1cbca3fae555410732242b26d9fb08afe482bc3390077704
Cross-language projection rootderived output: RL@275d0b3e7474
node governance/harnesses/verify-replayers.js
22852b5a3025d4ed7ee1d26cc4efcd51ae2e3e02ba2a20332c2a09827d6462ca
Refusal corpus, US Code Title 29declared only: TR@721a824c9f73
data/arms.json#corpus.sha256; source bytes absent
188ab1c50a46f0dd2ff32aaa5f65c759a07710e052d297644b1a8f6b58ff413d
Replication registration recordpublic blob: TS@77408db59cad
experiments/replication-2026-07-17/PREREGISTRATION.md
eff780cff6a4522370af2f00d01a7dc121ab143677f805cbdc865620dad7820b
Replication decision logspublic blob: TS@77408db59cad
experiments/replication-2026-07-17/decision-logs.json
9fb48b2c0a837f91581c5faf5a043126348b6f86e64bf2383182f65978ffdca6
Generic activation datasetretained source DA-DATASET-001, 98,769 bytes; synthetic input not included in this minimized packeta2dece0b00e9659e3f50df307bd41dedc722a1c5b93b16153f616d1f2b58a179
Generic activation checker configretained source DA-CONFIG-001, 540 bytes; configuration not included in this minimized packet7d6545f4d5cfa603b33f94ef42f747e4bf5e98631edfef30896cb5d24fb31c4d
Generic activation analysisowner-review packet, 2,737 bytes
evidence/device-activation/expected-analysis.json
7c550d125d383f7238ff936c7d05a3815ceb35132326253b973562fbca4b0a80
Generic activation receiptowner-review packet, 3,158 bytes
evidence/device-activation/BUILD-RECEIPT-000001.md
ee60b9aa4baa0286fb5899255380d6bf9772ca9240354bddc3b1a75fce1b9ab6
Transition-stable quotient reportowner-review packet, 2,627 bytes
evidence/transition-stable-quotient/expected-report.json
1b0e78adcac732561a0263ef2704d53b397597c502f81e88a0999a37232df183
Transition-stable partition over frozen case IDsderived output: stablePartitionSha256 in the transition-stable quotient report2f129b2ac6c060d253831dbded1810cfd64b030fa6b8a0514d6e048fc7086187
Transition-stable quotient receiptowner-review packet, 4,016 bytes
evidence/transition-stable-quotient/BUILD-RECEIPT-000001.md
4d0b0f50c361c51734db51a786fdc40b85de591e077d295677dbd40d63967514
BP-001 promptowner-review packet, 1,662 bytes
evidence/blind-prompt/PROMPT.md; legacy locator retained for receipt continuity
6b0628ef41bdf3b8d871238aa39ac44af43576887d5e0b1ed44ad8e7cdeccaf1
BP-001 response schemaretained source BP-SCHEMA-001, 1,808 bytes; not included in this minimized packet3656a398b63255eefc2121327da65884cca365a965f5601d6eab18e33aa0a505
BP-001 run manifestretained source BP-RUN-MANIFEST-001, 2,175 bytes; not included in this minimized packet5e104bff1ccd4cffc684667f84783a06414cfb7177da1b43717f0c90145e2f63
BP-001 evaluator reportretained source BP-EVALUATOR-001, 20,945 bytes; quote-bearing report not includedde2c28735762a153602fc6e4bb777520c2aa3c687837e3f64b6277c459d67fe9
BP-001 packet receiptretained source BP-RECEIPT-001, 4,488 bytes; private packet receipt not included537e8cc13e8425e53304dd22637df6d186efa4df0be0f910a747b5f78632c815
Lean query quotient sourceowner-review packet, standalone module, 3,791 bytes
evidence/lean-query-quotient/QueryQuotient.lean
cfbb166202ade30abc0c79287ff8c1acf216e91a863121ade923218caede9896
Lean query quotient compile receiptowner-review packet, 4,233 bytes
evidence/lean-query-quotient/BUILD-RECEIPT-000005.md
8cdb9da9a9ddaba90c63390f1e94d11e18ca32f7d2a95b46b6ce3e1a27de79b2
+ +

DReproduction and revision lineage

+ +

Clean-clone packet verification is documented in REPRODUCE.md. From +a full Git checkout at the release commit or tag, the offline Python and JavaScript +verifiers must independently return the same canonical report over the declared file +allowlist, raw byte lengths, SHA-256 digests, and payload root. The repository-root +and packet-local .gitattributes rules disable line-ending conversion so +a normal Windows checkout does not create a false byte mismatch. A clean-clone test +with core.autocrlf=true passed before this revision was prepared. This +verifies packet identity only; it does not rebuild the PDF, recover excluded inputs, +independently replicate an experiment, or establish claim truth, originality, +authority, safety, or fitness. TESTED

+ +

Demotion test 6 now has a machine-readable review surface. The release contains a +marker-blind claims.json, a separate author-markers.json, and +reviewer-markers.template.json. The register excludes the four Table 1 +legend examples and assigns a release-scoped ID to every substantive marked unit. A +reviewer receives the claims, their embedded neutral marker policy, and registered +accessible sources before seeing the author key. Matching markers agree; a mismatch +becomes CONTESTED/HOLD; +a missing assignment is INCOMPLETE. No comparison can auto-promote a +claim. Because the marked manuscript is public, the separation is a procedural blind, +not cryptographic secrecy.

+ +

CHANGELOG.md retains the fuller packet history. In summary: +owner-review.1 created the minimized public packet; owner-review.2 dispositioned +private editorial feedback and tightened claim ceilings; owner-review.3 added the +standalone Lean source and receipt plus the statistical corrections; and +owner-review.4 standardizes BP-001 terminology, states the Lean chronology boundary, +adds clean-clone instructions and packet-local line-ending protection, and makes the +external marker-reassignment test executable. Each release receipt is append-only and +names its predecessor. A revision identifier describes artifact lineage, not +scientific priority or acceptance.

+ + +""" diff --git a/research/from-model-output-to-accepted-state/evidence/RELEASE-BUILD-RECEIPT-000001.md b/research/from-model-output-to-accepted-state/evidence/RELEASE-BUILD-RECEIPT-000001.md new file mode 100644 index 0000000..ac92137 --- /dev/null +++ b/research/from-model-output-to-accepted-state/evidence/RELEASE-BUILD-RECEIPT-000001.md @@ -0,0 +1,60 @@ +# Release build receipt 000001 + +Status: `OWNER_REVIEW / PREPARED_NOT_MERGED`
+Recorded: 2026-08-15
+Release: `from-model-output-to-accepted-state-0.1.0-owner-review.1` + +## Scope + +This receipt covers the minimized public packet in `research/from-model-output-to-accepted-state/`. It records local preparation and verification. It does not authorize merge, release tagging, DOI registration, deployment, or a change from owner-review draft to accepted publication. + +Excluded from the packet: raw model transcripts, private semantic maps, private correspondence, screenshots, absolute local-machine paths, credentials, caches, unrelated repository files, and any artifact not named by `release-manifest.json`. Relative project locators retained inside the manuscript are evidence references, not local-machine paths. + +## Source baseline + +- Repository: `JakeTOpenSource/Resilience-Ledger` +- Base branch: `origin/main` +- Base commit: `5f9cc14` (`Merge pull request #13 from JakeTOpenSource/receipt/close-sw-drift`) +- Working branch: `agent/publish-accepted-state-owner-review` + +## Tooling + +- Python `3.14.6` +- Node.js `24.18.0` +- Git `2.54.0.windows.1` +- pypdf `6.14.2` + +## Pre-binding checks + +The release manifest was first generated before this receipt was added, then checked by separate Python and JavaScript implementations. + +```text +VERIFY PASS +cross_language_parity=PASS +files=32 +payload_root=5bba3bfd4fea9bd7c5bc8f261503affba5a25d9a9d9699cd15ae301060244348 +manifest_sha256=8a35757fd5ca14b5ec2b69c6f28bd7f385392f6a2feec49091f16095f075a1e0 +status=PASS +``` + +The paper-specific validator returned: + +```text +PASS source: 6 files +PASS PDF: 34 pages, 19 bookmarks, 28 links +PASS tagged figures: 10 with alternate text +PASS page words: min=270 max=527 +``` + +The final manifest is regenerated after this receipt is present. The committed `release-manifest.json` and Git commit are the final byte anchor; rerun `tools/verify.ps1` to verify that final state. + +## Included output identities + +| Output | Bytes | SHA-256 | +|---|---:|---| +| `paper/From-Model-Output-to-Accepted-State-Owner-Review.pdf` | 949907 | `1707ffab851bc963a2874a6303c1e2d2aa5c9db2e262343d921f9d7df839b4ca` | +| `paper/From-Model-Output-to-Accepted-State-Owner-Review-LinkedIn.md` | 103786 | `e4152d92a02893eb855b78d1ec48e2f836cff25c24c2a09e0b0ba9712c9465a6` | + +## Interpretation ceiling + +A passing release check proves that the checked files match the committed manifest and declared packet structure. It does not prove the manuscript's claims, the truth of its sources, independent replication, novelty, external-world outcomes, authority, or fitness for use. The evidence reports retain their original local receipts and narrower ceilings. diff --git a/research/from-model-output-to-accepted-state/evidence/RELEASE-BUILD-RECEIPT-000002.md b/research/from-model-output-to-accepted-state/evidence/RELEASE-BUILD-RECEIPT-000002.md new file mode 100644 index 0000000..e76da10 --- /dev/null +++ b/research/from-model-output-to-accepted-state/evidence/RELEASE-BUILD-RECEIPT-000002.md @@ -0,0 +1,141 @@ +# Release build receipt 000002 + +Status: `OWNER_REVIEW / PREPARED_NOT_MERGED`
+Recorded: `2026-08-15T10:53:02-04:00`
+Release: `from-model-output-to-accepted-state-0.1.0-owner-review.2`
+Previous receipt SHA-256: `0e0a1c8ef73bfdd6797bb1dcdb4168264d2e9f5bd3193a1cb7ca3c0f9b175aa3` + +## Scope + +This append-only receipt covers the owner-review revision that dispositioned one +private editorial review, updated the manuscript sources, rebuilt the public PDF +and LinkedIn companion, and visually inspected all 35 rendered pages. It does not +authorize merge, release tagging, DOI registration, deployment, publication as an +accepted paper, or any change from owner-review draft status. + +The raw editorial review, its private locator, model transcript data, credentials, +caches, and unrelated repository files remain outside the public packet. + +## Source baseline + +- Repository: `JakeTOpenSource/Resilience-Ledger` +- Base branch: `origin/main` +- Base commit: `5f9cc145763bc51b183e93b4f7059b25aa6ee2ca` +- Prior branch commit: `d29bd6bf3b10b7ac6e9290cf9d9e92158cba0b45` +- Working branch: `agent/publish-accepted-state-owner-review` + +## Editorial-review boundary + +The owner supplied a 19,061-byte private review and attested that it was produced +by Claude (Opus 5) on 2026-08-15. The supplied bytes have SHA-256 +`1d56f0017a29e4a059276440943334cd3b6c09aea6f5bf57c1e7ed2d6ebb8d1e`. +This identifies the supplied bytes but does not authenticate a model, runtime, +account, seed, sampling process, or author identity. + +The public disposition is 4,120 bytes with SHA-256 +`d16ecec5d503722c9f7a1945cb7378fff391514a1fbde2bc58431e0ed870b5c8`. +It records accepted, partially accepted, and rejected editorial suggestions without +publishing the private review. Adopted changes were checked against manuscript +sources and retained evidence. The review is editorial assistance, not evidence, +authorship, peer review, source truth, or independent validation. + +## Adopted manuscript calibration + +- The abstract calls the 34 runner-reported numbered holds a diagnostic inventory, + not a coverage measure. +- The exploratory refusal aggregates no longer imply a ranking among P1, P2, and P3 + or a causal accuracy benefit from structure or model choice. +- The compact response exercise is described as oracle-hidden output recovery, not + blinded experimentation, model attestation, determinism, or independent systems. +- The single-operator and self-applied-marker threat is explicit and has an external + marker-reassignment demotion test. +- The unlocated LinkedIn term inventory was removed; mutable posts remain lineage + context rather than paper evidence. +- The non-stale-label fraction and candidate-generating distribution notation were + made explicit. + +No manuscript change was made for extraction-only table-layout concerns, the +incorrect current-Lean-receipt-drift claim, or the proposed determinism label. + +## Tooling + +- Python `3.12.13` +- Node.js `24.18.0` +- Git `2.54.0.windows.1` +- PDF structure validation: `pypdf` +- Page rendering and inspection: `pypdfium2`, 35 pages + +## Paper build and validation + +The owner-workspace builder regenerated the five SVG figures, owner-review HTML, +PDF, and LinkedIn companion from the revised source fragments. The paper-specific +validator returned: + +```text +PASS source: 6 files +PASS PDF: 35 pages, 19 bookmarks, 28 links +PASS tagged figures: 10 with alternate text +PASS page words: min=82 max=539 +``` + +All 35 pages were rendered to PNG and inspected. No clipping, overflow, broken +glyphs, missing page numbers, orphaned headings or captions, or table-cell collisions +were found. Page 35 is intentionally sparse because it contains the final two rows +of the paginated artifact index. + +## LinkedIn document-post readiness + +LinkedIn Help was consulted on 2026-08-15. Its organic document-post guidance allows +PDF files up to 100 MB and 300 pages, requires one page size throughout, recommends +flattening or merging multiple PDF layers, requires secure hyperlinks and an upload +title, and does not permit replacing the uploaded document in place. Relevant +official pages: + +- `https://www.linkedin.com/help/linkedin/answer/a518909/upload-and-share-documents-on-linkedin` +- `https://www.linkedin.com/help/linkedin/answer/a564109/media-file-types-supported-on-linkedin` +- `https://www.linkedin.com/help/linkedin/answer/a523054/document-uploads-on-linkedin-faq` + +The rebuilt PDF is 956,800 bytes and 35 pages. All pages have one 612 by 792 point +media box. It is unencrypted, has no optional-content layer dictionary, JavaScript, +or embedded files, and contains 28 URI annotations, all using HTTPS. All nine font +families found in page resources are embedded subsets. The PDF title metadata is +`From Model Output to Accepted State`. Selectable text, tagged figure descriptions, +bookmarks, and link annotations remain present. + +This is a pre-upload compatibility check, not a LinkedIn ingestion test or a promise +about future platform rendering. Because LinkedIn cannot replace a posted document, +any later manuscript change requires a new post or a separately versioned document. + +## Pre-binding release check + +The manifest was generated after the revised sources, disposition note, and rebuilt +outputs were present, but before this receipt was added. Separate Python and +JavaScript verifiers returned the same canonical report: + +```text +VERIFY PASS +cross_language_parity=PASS +files=30 +payload_root=dbd142384a4ff56dfb39eab01aadd5164a57c7499926f54670193f080cda3d23 +manifest_sha256=5430ce3b8746fefaa068ae3120407d744a7078e5ee13d07866e61e919a9c977e +status=PASS +``` + +The final manifest is regenerated after this receipt is present. The committed +`release-manifest.json` and Git commit are the final public byte anchors; rerun +`tools/verify.ps1` to verify that final state. + +## Included output identities + +| Output | Bytes | SHA-256 | +|---|---:|---| +| `paper/From-Model-Output-to-Accepted-State-Owner-Review.pdf` | 956800 | `019e372263176cb693e00a2be548c5f0dfb04c5027cb78b1f107070fc2e1afc4` | +| `paper/From-Model-Output-to-Accepted-State-Owner-Review-LinkedIn.md` | 105236 | `60104382023a10e4d25bb3ad80e1a729ea29efca39afe12f4e7c0a1c430a1450` | + +## Interpretation ceiling + +A passing release check proves only that the checked files match the committed +manifest and declared packet structure. It does not prove the manuscript's claims, +the truth of its sources, reviewer identity, independent replication, novelty, +external-world outcomes, authority, safety, or fitness for use. The packet remains +an owner-review draft. diff --git a/research/from-model-output-to-accepted-state/evidence/RELEASE-BUILD-RECEIPT-000003.md b/research/from-model-output-to-accepted-state/evidence/RELEASE-BUILD-RECEIPT-000003.md new file mode 100644 index 0000000..c83aa52 --- /dev/null +++ b/research/from-model-output-to-accepted-state/evidence/RELEASE-BUILD-RECEIPT-000003.md @@ -0,0 +1,143 @@ +# Release build receipt 000003 + +Status: `OWNER_REVIEW / PREPARED_NOT_MERGED`
+Recorded: `2026-08-15T14:56:12-04:00`
+Release: `from-model-output-to-accepted-state-0.1.0-owner-review.3`
+Previous receipt SHA-256: `4f43366e22beeae29ce4d48d80f910ad5f93b30045b6df738412caa94dacadb5` + +## Scope + +This append-only receipt covers four bounded evidence and editorial repairs, +regeneration of distinctly named v3 paper outputs, a minimized public disposition +of two private follow-up cold reads, and final visual, technical, privacy, and +release-packet checks. It does not authorize merge, release tagging, DOI +registration, deployment, journal acceptance, or a change from owner-review draft +status. + +The private cold reads, attachment locators, model transcript data, credentials, +caches, owner-only mappings, and unrelated repository files remain outside the +public packet. + +## Source baseline + +- Repository: `JakeTOpenSource/Resilience-Ledger` +- Base branch: `origin/main` +- Base commit: `5f9cc145763bc51b183e93b4f7059b25aa6ee2ca` +- Prior branch commit: `d1f4966b3e74b8ee316d3acd73dc2ee5e57b0d5e` +- Working branch: `agent/publish-accepted-state-owner-review` + +## Adopted corrections + +1. The abstract now separates the observed unsupported-claim counts from the + manuscript's auditability contribution and makes no causal accuracy claim. +2. The 34 runner-reported numbered holds are identified as a diagnostic inventory, + not a coverage measure or a count of everything checked. +3. The exploratory structured-arm comparisons report Fisher values of `1.000` + for P1 versus P2, `0.579` for P1 versus P3, and `0.428` for P2 versus P3. + Overlapping Wilson intervals, clustering, shared prompts, and missing raw runs + prevent arm ranking, equivalence, or confirmatory inference. +4. The exact standalone `QueryQuotient.lean` source and its append-only compile + receipt are included. The module remains outside the package-root import and is + not presented as an upstream Mathlib contribution or novel factorization theory. + +The public editorial disposition identifies the two follow-up sources only by +bounded IDs, byte counts, and SHA-256 digests. It publishes no raw review prose or +private locator. The reviewer attribution remains owner-attested and not +runtime-authenticated. + +## Lean evidence repair + +The pinned standalone compile of `ZeroState/QueryQuotient.lean` exited `0` with no +standard output or error output. The exact source and receipt included here are: + +| Artifact | Bytes | SHA-256 | +|---|---:|---| +| `evidence/lean-query-quotient/QueryQuotient.lean` | 3791 | `cfbb166202ade30abc0c79287ff8c1acf216e91a863121ade923218caede9896` | +| `evidence/lean-query-quotient/BUILD-RECEIPT-000005.md` | 4233 | `8cdb9da9a9ddaba90c63390f1e94d11e18ca32f7d2a95b46b6ce3e1a27de79b2` | + +Receipt 000005 chains from the prior Mathlib packet receipt and records the pinned +Lean, Lake, Mathlib, source, command, result, assumption scan, and root-import +boundary. Historical receipts were not rewritten. + +## Paper build and validation + +The owner-workspace builder regenerated all five SVG figures, HTML, PDF, and +LinkedIn companion from the revised manuscript sources. The paper-specific +validator returned: + +```text +PASS source: 6 files +PASS PDF: 35 pages, 19 bookmarks, 28 links +PASS tagged figures: 10 with alternate text +PASS page words: min=63 max=539 +``` + +All 35 pages were rendered and inspected individually. No clipping, overflow, +overlap, broken glyph, table collision, missing caption, cutoff, or missing page +number was found. Dense artifact-index pages remained readable. Page 35 is +intentionally sparse because it closes the paginated index. + +## PDF and LinkedIn document boundary + +The PDF contains 35 uniform Letter pages with 612 by 792 point page boxes and zero +rotation. It is unencrypted and contains no AcroForm, optional-content layer, +embedded file, JavaScript action, or open action. It contains 28 URI annotations, +all using HTTPS; 19 bookmarks; selectable text on every page; a marked structure +tree; alternate text on all ten figure tags; and embedded font subsets. +Chrome emitted two tagged Figure nodes for each of the five visible figures, so +each description appears twice in the structure tree. The descriptions are present, +but no full screen-reader or PDF/UA certification is claimed. + +The retained file remains well below LinkedIn's published document-upload limits +recorded in receipt 000002. This is a file-internal compatibility check, not a +LinkedIn ingestion test or a promise about future platform behavior. LinkedIn does +not replace an uploaded document in place, so the distinct v3 filename prevents +the prior owner-review artifact from being mistaken for the revised bytes. + +## Privacy and publication-boundary check + +The PDF extracted text, metadata, LinkedIn companion, manuscript source, evidence, +documentation, and release inventory were checked for absolute Windows and Unix +user paths, Codex attachment or clipboard locators, workspace-only `work/...` +locators, local network addresses, email addresses, credentials, private keys, +replacement characters, NUL bytes, raw prompt responses, and raw editorial-review +prose. No prohibited item was found. Public artifact-index rows use packet locators +or bounded retained-source IDs rather than workstation paths. + +The release inventory contains no cache directory, compiled Python cache, temporary +render, hidden payload, or unbound regular file. `.gitattributes` is an intentional +release-control file, not a hidden data payload. + +## Pre-binding release check + +Before this receipt was added, the deterministic manifest writer and separate +Python and JavaScript verifiers returned the same canonical report: + +```text +VERIFY PASS +cross_language_parity=PASS +files=33 +payload_root=4ae37202891f970f0f75637d05098d679fcbc22809e3fd4ccff90e0d84cfb499 +manifest_sha256=e9b36b4d00872911159142a015a40753230d2b15120a366da23ffc1e4e5ed07e +status=PASS +``` + +The final manifest is regenerated after this receipt is present. The committed +`release-manifest.json` and Git commit are the final public byte anchors; rerun +`tools/verify.ps1` to verify that final state. + +## Included output identities + +| Output | Bytes | SHA-256 | +|---|---:|---| +| `paper/From-Model-Output-to-Accepted-State-Owner-Review-v3.pdf` | 958383 | `26e7f35e5e4fb125ba4339d0179cccf662d5d0fcbf09d8e27693b3b74fb0767c` | +| `paper/From-Model-Output-to-Accepted-State-Owner-Review-v3-LinkedIn.md` | 106036 | `7b42b837fe2bf3d7cc4c1a2f4e956ca8f44c7e8d6c35f04a5bba783a8606dbc2` | + +## Interpretation ceiling + +A passing release check establishes only byte consistency with the declared +manifest and the bounded structure checked by its verifiers. It does not prove the +manuscript's claims, source truth, reviewer or model identity, independent +replication, novelty, external outcomes, authority, safety, legal compliance, or +fitness for use. The packet remains an owner-review draft until the owner makes a +separate publication decision. diff --git a/research/from-model-output-to-accepted-state/evidence/RELEASE-BUILD-RECEIPT-000004.md b/research/from-model-output-to-accepted-state/evidence/RELEASE-BUILD-RECEIPT-000004.md new file mode 100644 index 0000000..8d29895 --- /dev/null +++ b/research/from-model-output-to-accepted-state/evidence/RELEASE-BUILD-RECEIPT-000004.md @@ -0,0 +1,138 @@ +# Release build receipt 000004 + +Status: `OWNER_REVIEW / PRIVATE_V4_READY_FOR_OWNER_REVIEW / PREPARED_NOT_MERGED`
+Recorded: `2026-08-15T16:10:20-04:00`
+Release: `from-model-output-to-accepted-state-0.1.0-owner-review.4`
+Previous receipt SHA-256: `a38b50371df75f62348f3cadebd37c766af3ba869a7cd4ae9682cf2d29e951fc` + +## Scope + +This append-only receipt covers the private v4 owner-review build, its exact paper +outputs, the normalized frozen-oracle terminology, the explicit Lean evidence +boundary, a clean-clone runbook and packet-local line-ending rule, a marker-blind +claim register with separate author key, and a packet-level changelog. Historical +receipts and their outputs were not rewritten. + +This receipt does not authorize merge, release tagging, DOI registration, +deployment, journal acceptance, or a claim that an external reviewer reproduced the +work. The v4 files remained local and unpushed when this receipt was recorded. + +## Source baseline + +- Repository: `JakeTOpenSource/Resilience-Ledger` +- Branch: `agent/publish-accepted-state-owner-review` +- Prior public branch commit: `817e4265563c124dedb6675b7c44d0082c3d8085` +- Prior release receipt: `evidence/RELEASE-BUILD-RECEIPT-000003.md`, 6,977 bytes +- Prior release receipt SHA-256: + `a38b50371df75f62348f3cadebd37c766af3ba869a7cd4ae9682cf2d29e951fc` + +## Adopted corrections + +1. BP-001 is named the **frozen-oracle packet**. The legacy + `evidence/blind-prompt/` path remains only for receipt continuity. The term does + not imply blinded assignment, blinded assessment, independent systems, or + runtime model attestation. +2. The paper states the exact public boundary for `QueryQuotient.lean`: standalone + source plus compile receipt, not imported by the package root, with the earlier + local package chain and clean-room environment reconstruction still open. +3. `REPRODUCE.md` gives an offline clean-checkout procedure for Windows, macOS, and + Linux. Packet-local `* -text` protects a re-homed packet from line-ending + conversion. A recorded Windows test covers the prior v3 commit; it is not + misreported as a clean-clone replay of these uncommitted v4 bytes. +4. `claims.json` contains 61 substantive marked units and a neutral four-marker + policy without the author's marker or marker-derived ceiling. The separate + `author-markers.json` records 22 TESTED, 5 OBSERVED, 20 PROPOSED, and 14 OPEN + assignments. The external-review template ships empty. Explicit claim-to-source + mappings replace keyword inference; unavailable sources remain named as + unavailable. +5. `CHANGELOG.md` records the owner-review revision lineage. Earlier receipts remain + append-only. The current release surface contains only the distinctly named v4 + PDF and LinkedIn companion; earlier rendered outputs remain recoverable from Git + history and their receipts. + +## Claim-register identities + +| Artifact | Bytes | SHA-256 | +|---|---:|---| +| `claims.json` | 76776 | `cd0a79c07a8b41f80a7a9abe6adca7931b8ee318ff9aed0cc42af7ea249a13e9` | +| `author-markers.json` | 25193 | `d403a57ed62569efeb2ccdef61642717623506170272533f9323548eeb8fd867` | +| `reviewer-markers.template.json` | 10328 | `0a2d012439c722a3c628c6045920f1fc51ae189696b30a1bf577ee72a9d007c4` | +| `REPRODUCE.md` | 3408 | `dde7934c3a54cc2b1b1156314dbbcd22d1855cd448f0478bfa770678a8cbffcf` | +| `CHANGELOG.md` | 2014 | `27002ddfb2c569c2ec37253c91f44805e111551cf3090172ba7a8aaa5c5d6d2d` | +| `.gitattributes` | 239 | `7ccb36d6cee337107bbdd2ac846114861d66e81b803cfead82bbb8e639598a54` | +| `evidence/reproduction/WINDOWS-CLEAN-CLONE-V3.md` | 3453 | `7f5476957fad26c621a730dba01a441a17262bf6a6b3d89a3c3f1168f9c6f7c2` | + +The generator and both release verifiers enforce the register shape, the separation +of author and reviewer assignments, registered source resolution, packet-file byte +identity, and the rule that TESTED or OBSERVED cannot rely only on paper context. +The generator was rerun and then passed its byte-exact `--check` mode with 61 +claims. + +## Paper build and visual validation + +The owner-workspace builder regenerated all five SVG figures, HTML, PDF, and the +LinkedIn companion from the v4 manuscript source. The paper-specific validator +returned: + +```text +PASS source: 6 files +PASS PDF: 36 pages, 20 bookmarks, 28 links +PASS tagged figures: 10 with alternate text +PASS page words: min=158 max=543 +``` + +All 36 pages were rendered at 2.75x or 3x and inspected individually in two +independent page ranges. No clipping, overlap, broken glyph, unreadable text, lost +table row, orphan heading, footer collision, or missing page number was found. +Repeated table headers, long hashes, the Appendix B callout spanning pages 33 and +34, and the Appendix C table spanning pages 34 and 35 remained intact and readable. +Page 36 is intentionally sparse. + +## Privacy and release boundary + +The manuscript, PDF text layer, packet text, Lean source, JSON files, Markdown, +receipts, and verifier sources were checked for absolute user-machine paths, Codex +attachment or clipboard locators, temporary-directory locators, local network +addresses, account credentials, private-key material, replacement characters, NUL +bytes, and raw private editorial-review prose. The public packet contains generic +privacy-pattern definitions and a generic Python fallback expression, but no +resolved owner path or private attachment locator. No compiled Python cache or +temporary render is included. + +Intentional public disclosures remain bounded in the manuscript: named research +assistance, owner-attested editorial assistance, Macdonald's permissioned parallel +related-work review, and the pre-software LinkedIn lineage. None is presented as +authorship, independent replication, or evidence for the paper's results. + +## Pre-binding release check + +Before this receipt was added, the manifest writer and separate Python and +JavaScript verifiers returned the same canonical report: + +```text +VERIFY PASS +cross_language_parity=PASS +files=41 +payload_root=6690ad38958ad25e3f124c36f690aae7119772606fcbf3051107b858c59f1a4d +manifest_sha256=13bb12b3abfa20b9f962c717b7bc53a233fcd4c91cbaf7657fbdf444db123465 +status=PASS +``` + +The final manifest is regenerated after this receipt is present. The committed +`release-manifest.json` and eventual Git commit are the public byte anchors; until +then, the files remain a private owner-review candidate. + +## Included output identities + +| Output | Bytes | SHA-256 | +|---|---:|---| +| `paper/From-Model-Output-to-Accepted-State-Owner-Review-v4.pdf` | 978519 | `483c4f320d58213e2d3a3a03b728f21443c695909f61e0681543a20f7f040705` | +| `paper/From-Model-Output-to-Accepted-State-Owner-Review-v4-LinkedIn.md` | 109261 | `1749996fb8e1d27a159bc820d5d2317210dd1dbd04c880df37f8f00eaa36230b` | + +## Interpretation ceiling + +A passing packet check establishes byte consistency with the declared manifest and +the bounded structures checked by its verifiers. It does not prove manuscript +claims, source truth, reviewer or model identity, independent replication, +originality, external outcomes, authority, safety, legal compliance, or fitness for +use. Owner review of the attached v4 PDF remains required before publication. diff --git a/research/from-model-output-to-accepted-state/evidence/blind-prompt/PROMPT.md b/research/from-model-output-to-accepted-state/evidence/blind-prompt/PROMPT.md new file mode 100644 index 0000000..2bacc34 --- /dev/null +++ b/research/from-model-output-to-accepted-state/evidence/blind-prompt/PROMPT.md @@ -0,0 +1,39 @@ +# Blind Prompt BP-001 + +Use only the facts below. Do not browse, inspect other files, or assume a named +research framework. Return one JSON object matching the supplied schema. Do +not use Markdown. + +A decision system has: + +- a deterministic gate `g` in `PASS`, `HOLD`, or `FAIL`; +- a binary future event `Y` with true rate `q = 1/2`; +- an issued forecast `p` selected from `0, 1/4, 1/2, 3/4, 1`; +- binary Brier loss `E[(p - Y)^2]`; +- a second, coupled objective `F(p) = E[(p - Y)^2] + (1/2)p`; +- a later observation that may still be pending; +- two histories, `[]` and `[ACCEPT(0)]`, both projected to current value `0`; +- the query `everAccepted`, which is false for the first history and true for + the second; +- three candidate actions with risk vectors to minimize: + `A = (safety 0.1, heat 0.8)`, + `B = (safety 0.3, heat 0.4)`, and + `C = (safety 0.6, heat 0.2)`; +- no authorized weights or priority ordering between safety and heat. + +Rules: + +1. Execution is permitted only when the deterministic gate is `PASS`. +2. A pending observation is not zero, false, success, or failure. +3. Pareto dominance means no worse in every risk component and strictly better + in at least one. +4. A forecast must be fixed before its outcome is observed if it is to be + scored as a forecast. +5. Different encodings that preserve exactly the same declared behavior may be + treated as one behavioral class. + +Answer the finite questions exactly, then explain the smallest auditable +architecture you would use. The explanation must distinguish issued output, +realized outcome, deterministic gate state, forecast scoring, and calibration. +It must also state one limitation. + diff --git a/research/from-model-output-to-accepted-state/evidence/blind-prompt/PUBLIC-SUMMARY.md b/research/from-model-output-to-accepted-state/evidence/blind-prompt/PUBLIC-SUMMARY.md new file mode 100644 index 0000000..20667d1 --- /dev/null +++ b/research/from-model-output-to-accepted-state/evidence/blind-prompt/PUBLIC-SUMMARY.md @@ -0,0 +1,41 @@ +# Blind-prompt aggregate summary + +Status: `OWNER_REVIEW / PUBLIC_AGGREGATE_ONLY`
+Study: `BP-001`
+Recorded privately: 2026-08-15 + +This file exposes only the aggregate result used in the manuscript. It contains no raw response, response excerpt, quote-bearing semantic report, per-response digest, or owner-private mapping. + +## Frozen inputs + +- Prompt: [`PROMPT.md`](PROMPT.md) +- Prompt bytes: `1662` +- Prompt SHA-256: `6b0628ef41bdf3b8d871238aa39ac44af43576887d5e0b1ed44ad8e7cdeccaf1` +- Requested configurations: `3` +- Requested model labels: `2` +- Runtime model identity attested: `no` +- Private packet manifest SHA-256: `5e19b18e5185412bcda687db4cbac49c64faa7882233aba32968dd684c1133e6` +- Private canonical report bytes: `20945` +- Private canonical report SHA-256: `de2c28735762a153602fc6e4bb777520c2aa3c687837e3f64b6277c459d67fe9` + +The private hashes bind retained owner evidence. They do not disclose it or establish trusted time, runtime model identity, independence, or truth. + +## Exact finite-output result + +- Oracle groups per response: `9` +- Comparisons: `27/27` +- Exact answer-vector parity: `PASS` +- Invalid response shapes rejected: `2/2` +- Invalid semantic quote links rejected: `2/2` + +This is output recovery from one frozen prompt. It is not an outcome study, calibration study, independent replication, or proof that the semantic explanations are correct. + +## Semantic owner-review result + +- Unambiguous unanimous functions: `F01, F02, F03, F05, F06, F08` +- `F04`: the owner-review mapping marked the function present in all three responses, but direct mention of the declared scoring rule occurred in `2/3`; strict quote-level unanimity remains unresolved. +- Recurrent in `2/3`: `F07, F09` +- Absent in `0/3`: `F10, F11, F12` +- Semantic disposition: `DRAFT_OWNER_REVIEW` + +No response prose is published here. The paper reports the same bounded aggregates and explains the functions and claim ceilings. diff --git a/research/from-model-output-to-accepted-state/evidence/device-activation/BUILD-RECEIPT-000001.md b/research/from-model-output-to-accepted-state/evidence/device-activation/BUILD-RECEIPT-000001.md new file mode 100644 index 0000000..f463f51 --- /dev/null +++ b/research/from-model-output-to-accepted-state/evidence/device-activation/BUILD-RECEIPT-000001.md @@ -0,0 +1,83 @@ +# Build Receipt 000001 + +Status: `LOCAL_OWNER_REVIEW` + +Sequence: 1 + +Previous receipt: `NONE` + +Timestamp metadata: `2026-08-15T07:16:22-04:00` + +Actor: OpenAI Codex under owner-directed local construction authority. + +Action: Defined, generated, replayed, and analyzed the Generic Device Activation Fixture v1. + +## Boundary + +- Synthetic local benchmark only. +- Owner acceptance and release authority remain with Jake Tiller. +- No publication, deployment, external ingestion, or product claim occurred. +- Query values are model outputs. They do not establish external outcomes. + +## Verification command + +```powershell +powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\verify.ps1 +``` + +## Exact result + +```text +VERIFY PASS +generator_parity=2/2 +records=151 +maximum_trace_length=10 +query_fields=7 +candidate_fields=10 +candidate_subsets_tested=1023 +minimum_field_count=5 +minimum_sets=1 +named_projection_results=FAIL,FAIL,PASS,PASS +dataset_sha256=a2dece0b00e9659e3f50df307bd41dedc722a1c5b93b16153f616d1f2b58a179 +config_sha256=7d6545f4d5cfa603b33f94ef42f747e4bf5e98631edfef30896cb5d24fb31c4d +analysis_sha256=7c550d125d383f7238ff936c7d05a3815ceb35132326253b973562fbca4b0a80 +privacy_scan=PASS +utf8_scan=PASS +cache_scan=PASS +``` + +## Bound artifacts + +| Path | Bytes | SHA-256 | +|---|---:|---| +| `.gitignore` | 25 | `6f3708a3b4b1a96332d5a85a6d0ce16a6cb62276d1365e36debc883cb4a83355` | +| `CLAIMS.md` | 2259 | `0ab8856f0f12691e039e3bdfbf019b98a525f0fed098664e488c1978f2d3cd84` | +| `config/candidate-manifest.json` | 907 | `50ba617789082531783f5bc0552de49f4a1969d4687520665a37a616230cc7e6` | +| `config/checker-v2.config.json` | 540 | `7d6545f4d5cfa603b33f94ef42f747e4bf5e98631edfef30896cb5d24fb31c4d` | +| `CONTRIBUTIONS.md` | 795 | `76c757b8c8381f6821d56d01dd5cdafb75549a9484dab3cb7c6c08049b44a17a` | +| `dataset/device-activation-v1.json` | 98769 | `a2dece0b00e9659e3f50df307bd41dedc722a1c5b93b16153f616d1f2b58a179` | +| `README.md` | 2391 | `a7358f5ba3253cf9f8c907220cdeeb9c6151825ba44a3933bdcd3720a49deb99` | +| `results/expected-analysis.json` | 2737 | `7c550d125d383f7238ff936c7d05a3815ceb35132326253b973562fbca4b0a80` | +| `SOURCES.md` | 860 | `daf91d8c75c86f68cf216739c68e57827e6fcd35fdcadeb56b13b17eac026709` | +| `SPEC.md` | 5104 | `b64d3ca52ab2750a57486018cf73483f6df31c137970e6ebae5632b2e1e990d0` | +| `src/analyze.py` | 6011 | `ec70d94c4c000e4e36c6f992b18a2c283b9c2b807d86363091a147f401c80721` | +| `src/generate.js` | 7155 | `53b71dd04782e9ae4c80465536b2303b7de7a1d7e5e054552a8527f416ea5757` | +| `src/generate.py` | 8204 | `1f217bf7565135c590264dbe7eb9076c8960887263523130268d5a55c0399477` | +| `verify.ps1` | 6822 | `d407586cdb875c2cafcdc277d4040d46de68ad584fc6dba584771b07db3f8486` | + +The receipt does not bind itself. Later corrections must append a new receipt rather than modify this record. + +## Result interpretation + +The supplied ten-candidate search has one five-field minimum for the joint seven-query signature: + +```text +backup_access_granted +history_summary +payment_credential_enrolled +phase +unlock_enrolled +``` + +The result is exact only for the 151 traces, seven queries, ten candidate fields, equality rules, and v1 transition semantics recorded here. + diff --git a/research/from-model-output-to-accepted-state/evidence/device-activation/expected-analysis.json b/research/from-model-output-to-accepted-state/evidence/device-activation/expected-analysis.json new file mode 100644 index 0000000..fc0ce1b --- /dev/null +++ b/research/from-model-output-to-accepted-state/evidence/device-activation/expected-analysis.json @@ -0,0 +1 @@ +{"allQueries":{"minimumFieldCount":5,"minimumSets":[["backup_access_granted","history_summary","payment_credential_enrolled","phase","unlock_enrolled"]],"sufficientSubsetCount":32,"testedSubsetCount":1023},"candidateFieldCount":10,"format":"DEVICE_ACTIVATION_EXPECTED_ANALYSIS_V1","individualQueries":{"consentRecorded":{"minimumFieldCount":1,"minimumSets":[["history_summary"],["phase"]],"sufficientSubsetCount":768,"testedSubsetCount":1023},"mayActivate":{"minimumFieldCount":2,"minimumSets":[["phase","unlock_enrolled"]],"sufficientSubsetCount":352,"testedSubsetCount":1023},"mayAuthorizePayment":{"minimumFieldCount":2,"minimumSets":[["active","payment_credential_enrolled"],["payment_credential_enrolled","phase"]],"sufficientSubsetCount":384,"testedSubsetCount":1023},"mayDecryptPrivateData":{"minimumFieldCount":1,"minimumSets":[["active"],["phase"]],"sufficientSubsetCount":768,"testedSubsetCount":1023},"mayRestoreBackup":{"minimumFieldCount":2,"minimumSets":[["backup_access_granted","current_consent"],["backup_access_granted","history_summary"],["backup_access_granted","phase"]],"sufficientSubsetCount":448,"testedSubsetCount":1023},"nextPermittedActions":{"minimumFieldCount":5,"minimumSets":[["backup_access_granted","history_summary","payment_credential_enrolled","phase","unlock_enrolled"]],"sufficientSubsetCount":32,"testedSubsetCount":1023},"refusalSeen":{"minimumFieldCount":1,"minimumSets":[["history_summary"]],"sufficientSubsetCount":512,"testedSubsetCount":1023}},"maximumTraceLength":10,"namedProjections":{"current_operational_summary":{"canonicalCollision":{"differingQueries":["refusalSeen"],"leftId":"trace-000025","representation":[false,false,"ACTIVE",true],"rightId":"trace-000100"},"fields":["backup_access_granted","payment_credential_enrolled","phase","unlock_enrolled"],"mixedRepresentationCount":23,"representationCount":24,"status":"FAIL"},"factory_baseline":{"canonicalCollision":{"differingQueries":["nextPermittedActions","refusalSeen"],"leftId":"trace-000076","representation":["GENERIC_DEVICE_V1"],"rightId":"trace-000001"},"fields":["baseline_profile"],"mixedRepresentationCount":1,"representationCount":1,"status":"FAIL"},"full_candidate":{"canonicalCollision":null,"fields":["active","backup_access_granted","baseline_profile","current_consent","device_verified","history_summary","owner_bound","payment_credential_enrolled","phase","unlock_enrolled"],"mixedRepresentationCount":0,"representationCount":51,"status":"PASS"},"predicted_minimal":{"canonicalCollision":null,"fields":["backup_access_granted","history_summary","payment_credential_enrolled","phase","unlock_enrolled"],"mixedRepresentationCount":0,"representationCount":47,"status":"PASS"}},"queryFieldCount":7,"recordCount":151} diff --git a/research/from-model-output-to-accepted-state/evidence/editorial-review/PUBLIC-DISPOSITION.md b/research/from-model-output-to-accepted-state/evidence/editorial-review/PUBLIC-DISPOSITION.md new file mode 100644 index 0000000..42f518b --- /dev/null +++ b/research/from-model-output-to-accepted-state/evidence/editorial-review/PUBLIC-DISPOSITION.md @@ -0,0 +1,85 @@ +# Public Disposition of Private Editorial Review + +Status: `OWNER-DISPOSITION / PUBLIC-MINIMIZED`
+Recorded: `2026-08-15`
+Source ID: `SRC-EDITORIAL-REVIEW-OPUS5-2026-08-15` + +## Source identity and access boundary + +| Field | Value | +|---|---| +| Source bytes | `19061` | +| Source SHA-256 | `1d56f0017a29e4a059276440943334cd3b6c09aea6f5bf57c1e7ed2d6ebb8d1e` | +| Source date | `2026-08-15` | +| Reviewer attribution | `OWNER-ATTESTED: Claude (Opus 5)` | +| Attribution verification | `NOT-RUNTIME-AUTHENTICATED` | +| Raw source access | `PRIVATE_RAW` | +| This record | `PUBLIC_MINIMIZED` | + +The owner supplied the private source and attested the reviewer attribution. +The byte count and SHA-256 above identify the supplied bytes. They do not +authenticate a model, runtime, account, sampling process, or author identity. +The raw review and its private locator are not included in this packet. + +This record publishes owner dispositions, not the review text. The review is +editorial assistance. It is not evidence, authorship, peer review, source +truth, or independent validation. Acceptance below authorizes an editorial +work item only; it does not promote the review or its source assertions into +paper evidence. + +## Disposition vocabulary + +- `ACCEPTED`: retain the bounded editorial correction in the work list. +- `PARTIALLY_ACCEPTED`: retain only the stated narrow correction. +- `REJECTED_NO_ACTION`: do not change the paper for the stated finding. + +## Accepted findings + +| ID | Disposition | Minimized owner decision | +|---|---|---| +| `ED-01` | `ACCEPTED` | Qualify the abstract's diagnostic count. Describe it as numbered holds across named suites and retain the section 9.1 warning that it is not a complete coverage count. | +| `ED-02` | `ACCEPTED` | State that the exploratory data do not support a ranking among P1, P2, and P3. Do not interpret their ordering as monotone benefit from added structure. | +| `ED-03` | `ACCEPTED` | Use `oracle-hidden` naming for the response exercise. Do not imply blinded assignment, a blinded assessor, runtime identity attestation, or independent systems. | +| `ED-04` | `ACCEPTED` | Give the single-operator threat an explicit limitation: one operator selected fixtures, authored checks and claims, and applied the claim markers. | +| `ED-05` | `ACCEPTED` | Remove the unlocated term inventory from the LinkedIn-oriented text. Retain only lineage statements a reader can locate and check. | +| `ED-06` | `ACCEPTED` | Write `R = 1 - S / N_app` alongside its expanded form, and clarify that it is only the complement of the stale-label fraction. Rename or otherwise disambiguate `pi` so it cannot be confused with pinned policy notation. | + +## Partially accepted finding + +| ID | Disposition | Minimized owner decision | +|---|---|---| +| `ED-07` | `PARTIALLY_ACCEPTED` | Foreground auditability as a bounded design aim and state the associated nonclaim more clearly. Do not add causal language claiming that model capability dominates scaffolding, or that changing a model caused a better result. The recorded experiment does not identify that causal comparison. | + +## Rejected or no-action findings + +| ID | Disposition | Minimized owner decision | +|---|---|---| +| `ED-08` | `REJECTED_NO_ACTION` | No Table 8 or Table 12 layout change. Visual inspection of the rendered PDF found aligned values, locators, and digests. The reported offset was a text-extraction reading-order artifact. | +| `ED-09` | `REJECTED_NO_ACTION` | No correction for current Lean receipt drift. The cited QueryQuotient byte, digest, and root-import statements were accurate, and the local append-only receipt chain identifies later root states. A historical receipt is not a claim about current path bytes. | +| `ED-10` | `REJECTED_NO_ACTION` | Do not relabel the response exercise as a determinism check. Frozen output agreement does not establish deterministic generation, runtime model identity, seed identity, sampling identity, or response independence. | + +No omitted private review text is incorporated by reference. A finding not +listed here is not accepted merely because it appeared in the private source. + +## Follow-up cold-read disposition + +Two later owner-supplied follow-up notes were reviewed under the same boundary. +The owner attributed them to Claude; that attribution is not runtime-authenticated. +The raw notes and their locators remain private. + +| Source ID | Bytes | SHA-256 | +|---|---:|---| +| `SRC-EDITORIAL-FOLLOWUP-2026-08-15-A` | `5289` | `3318b8fde20f95d751748b7fbd4f82a5edf5f735fa5d39c1253e6d14959b323e` | +| `SRC-EDITORIAL-FOLLOWUP-2026-08-15-B` | `5389` | `4f49a39f4b6ebcfad43f0fe081d954a80fe37907c15d4b178d85fc09579c1e7e` | + +Adopted follow-up corrections separate unsupported-claim counts from the +auditability contribution, report the three exploratory structured-arm Fisher +comparisons with their clustering ceiling, and describe 34 numbered holds as a +diagnostic inventory rather than coverage. A separate evidence audit also found +that the standalone `QueryQuotient.lean` compile needed its own append-only +receipt; receipt 000005 now binds that source and compile result. + +No action was taken on suggestions to rewrite a historical receipt, relabel the +output-recovery packet as a determinism test, or add a clarification already +present in the manuscript. The follow-up remains editorial assistance rather +than evidence, authorship, peer review, or independent validation. diff --git a/research/from-model-output-to-accepted-state/evidence/lean-query-quotient/BUILD-RECEIPT-000005.md b/research/from-model-output-to-accepted-state/evidence/lean-query-quotient/BUILD-RECEIPT-000005.md new file mode 100644 index 0000000..29765c0 --- /dev/null +++ b/research/from-model-output-to-accepted-state/evidence/lean-query-quotient/BUILD-RECEIPT-000005.md @@ -0,0 +1,95 @@ +# Local Build Receipt 000005 + +Observed: `2026-08-15T14:08:28-04:00` + +Status: `PASS_LOCAL_PINNED_STANDALONE_COMPILE` + +Previous receipt: `evidence/BUILD-RECEIPT-000004.md`, SHA-256 +`4c60d5cfc14126165576a3e3948cd2ee9ac9d526a80d8570fad37e83916fbd7c` + +## Change under test + +- compiled `ZeroState/QueryQuotient.lean` directly against the pinned package + environment; +- recorded the module's query-signature, componentwise-sufficiency, + separation, and kernel-exactness scope; and +- registered the standalone result without adding the module to the imports in + `ZeroState.lean` or rewriting any historical receipt. + +## Environment + +- Lean: `4.32.1`, commit `f054605aea4b840552cca2e725580bffd1e1b704` +- Lake: `5.0.0-src+f054605` +- Mathlib repository revision: `520045ab14e26149ee970e2e617ca04b09bde5d6` +- Mathlib remote: `https://github.com/leanprover-community/mathlib4.git` +- Platform: `x86_64-w64-windows-gnu` + +## Command and result + +The command ran from the package root. The Git values were process-local and +allowed Lake to inspect the pinned dependency under the sandbox's different +filesystem owner. No global Git configuration changed. + +```powershell +$env:GIT_CONFIG_COUNT = '1' +$env:GIT_CONFIG_KEY_0 = 'safe.directory' +$env:GIT_CONFIG_VALUE_0 = '*' +$env:ELAN_HOME = (Resolve-Path '.\.tooling\elan').Path +& '.\.tooling\elan\bin\lake.exe' env lean 'ZeroState/QueryQuotient.lean' +``` + +Result: exit code `0`; the command emitted no standard output or error text. + +This direct invocation asks the pinned Lean executable to accept the named +source file in the package environment. It is not a package-root build, a test +count, a theorem count, a lint receipt, or independent reproduction. + +## Bound packet bytes + +| Path | Bytes | SHA-256 | +|---|---:|---| +| `lean-toolchain` | 25 | `8e3538e0ab5f81a3ee04927d8838c8c674e0e112838b4b3ce87ec218143276af` | +| `lakefile.lean` | 190 | `bfebf4360c894cc2640f3928378744c7d6e287ba79155bcc3525647800606e6e` | +| `lake-manifest.json` | 3132 | `8635dea4df534bd04ce49790099b044f4dd9f75127a601eeb609713bd15a4f5c` | +| `ZeroState.lean` | 157 | `185fbf707d9311058d492f9fb53911e5816b32cffeb23b02cfec00f27a5b24e0` | +| `ZeroState/QueryQuotient.lean` | 3791 | `cfbb166202ade30abc0c79287ff8c1acf216e91a863121ade923218caede9896` | +| `README.md` | 13231 | `1118018a94337451a181b4c7b77c994c958ba4fc0a7b75bfc90eedc9c107b6e0` | +| `evidence/CLAIMS.md` | 9243 | `72f64a8887a162c8191faaf577d3c1c8ba922b7aa951308f5d3ba2704db92b66` | +| `evidence/SOURCES.md` | 8220 | `21c4784814437c2cea0aed4b0b6c489768cd78aa016ba50863b8badcc27f1bf8` | +| `evidence/BUILD-RECEIPT-000004.md` | 9345 | `4c60d5cfc14126165576a3e3948cd2ee9ac9d526a80d8570fad37e83916fbd7c` | + +## Bound supporting source + +| Path | Bytes | SHA-256 | +|---|---:|---| +| `.lake/packages/mathlib/Mathlib/Logic/Function/Basic.lean` | 54224 | `c70040d5d18050223271ceae210f4d57b59863dcc192c85d6432c7294b0ea4d1` | + +The supporting source contains the existing `Function.FactorsThrough` +definition used by the standalone module. Its identity does not establish that +the local packaging results are novel. + +## Root-import and assumption checks + +At the bound bytes, `ZeroState.lean` imports `Basic`, `Replay`, +`ProjectionSufficiency`, `FinitePermitMachine`, and `ReflectedBacklog`. It does +not import `QueryQuotient`. This receipt records a standalone compile and does +not alter the package-root state bound by receipt 000004. + +The standalone source contains no use of `sorry`, `admit`, a custom `axiom`, +`unsafe`, or `native_decide`. + +## Limits + +The compiled results package a query family as a function-valued signature and +characterize sufficiency and mutual factorization through equality of induced +kernel partitions. They use Mathlib's existing factorization vocabulary. They +do not select a unique encoding, establish a storage or runtime minimum, prove +novelty, validate an external-world model, or constitute upstream Mathlib +review or acceptance. + +The source and this receipt were developed with AI assistance. Human +understanding, maintainership, exact upstream source search, and Mathlib +maintainer discussion remain required before any contribution proposal. + +No publication, push, pull request, challenge submission, or upstream Mathlib +submission was performed. diff --git a/research/from-model-output-to-accepted-state/evidence/lean-query-quotient/QueryQuotient.lean b/research/from-model-output-to-accepted-state/evidence/lean-query-quotient/QueryQuotient.lean new file mode 100644 index 0000000..0d5b15c --- /dev/null +++ b/research/from-model-output-to-accepted-state/evidence/lean-query-quotient/QueryQuotient.lean @@ -0,0 +1,105 @@ +module + +public import Mathlib.Logic.Function.Basic + +/-! +# Query-relative canonical signatures + +This file packages a family of queries as one signature. A representation is +sufficient for that family when the signature factors through the +representation in the sense of `Function.FactorsThrough`. + +Exactness below means equality of the partitions induced by a signature and a +representation. It does not assert a unique encoding or data structure. +-/ + +namespace ZeroState + +/-- The answers to every declared query at one input. -/ +def querySignature {T I Q : Type*} (query : I → T → Q) : T → I → Q := + fun input index => query index input + +/-- A representation is sufficient when it preserves the complete signature. -/ +def SignatureSufficient {T I Q A : Type*} + (query : I → T → Q) (representation : T → A) : Prop := + (querySignature query).FactorsThrough representation + +/-- Every component query factors through the complete query signature. -/ +theorem component_factorsThrough_querySignature + {T I Q : Type*} (query : I → T → Q) (index : I) : + (query index).FactorsThrough (querySignature query) := by + intro x y hsignature + exact congrFun hsignature index + +/-- Signature equality is exactly pointwise equality of all query answers. -/ +theorem querySignature_eq_iff + {T I Q : Type*} (query : I → T → Q) (x y : T) : + querySignature query x = querySignature query y ↔ + ∀ index, query index x = query index y := by + constructor + · intro hsignature index + exact congrFun hsignature index + · intro hcomponents + funext index + exact hcomponents index + +/-- +Preserving a complete signature is equivalent to preserving each component +query separately. +-/ +theorem signatureSufficient_iff_components + {T I Q A : Type*} (query : I → T → Q) + (representation : T → A) : + SignatureSufficient query representation ↔ + ∀ index, (query index).FactorsThrough representation := by + constructor + · intro hsufficient index x y hrepresentation + exact congrFun (hsufficient hrepresentation) index + · intro hcomponents x y hrepresentation + funext index + exact hcomponents index hrepresentation + +/-- +A sufficient representation must distinguish inputs whose realized query +signatures differ. +-/ +theorem representation_ne_of_signature_ne + {T I Q A : Type*} {query : I → T → Q} + {representation : T → A} (hsufficient : SignatureSufficient query representation) + {x y : T} (hsignature : querySignature query x ≠ querySignature query y) : + representation x ≠ representation y := by + intro hrepresentation + exact hsignature (hsufficient hrepresentation) + +/-- +A representation is exact for the declared signature when each factors through +the other. This states equality of the induced kernel partitions without +choosing labels for their classes. +-/ +def SignatureExact {T I Q A : Type*} + (query : I → T → Q) (representation : T → A) : Prop := + SignatureSufficient query representation ∧ + representation.FactorsThrough (querySignature query) + +/-- Exactness is equality of the representation and signature kernels. -/ +theorem signatureExact_iff_kernel_eq + {T I Q A : Type*} (query : I → T → Q) + (representation : T → A) : + SignatureExact query representation ↔ + ∀ x y, + representation x = representation y ↔ + querySignature query x = querySignature query y := by + constructor + · rintro ⟨hsufficient, hreverse⟩ x y + exact ⟨ + fun hrepresentation => hsufficient hrepresentation, + fun hsignature => hreverse hsignature + ⟩ + · intro hkernel + constructor + · intro x y hrepresentation + exact (hkernel x y).mp hrepresentation + · intro x y hsignature + exact (hkernel x y).mpr hsignature + +end ZeroState diff --git a/research/from-model-output-to-accepted-state/evidence/reproduction/WINDOWS-CLEAN-CLONE-V3.md b/research/from-model-output-to-accepted-state/evidence/reproduction/WINDOWS-CLEAN-CLONE-V3.md new file mode 100644 index 0000000..a0447eb --- /dev/null +++ b/research/from-model-output-to-accepted-state/evidence/reproduction/WINDOWS-CLEAN-CLONE-V3.md @@ -0,0 +1,98 @@ +# Windows clean-clone raw-byte verification + +Status: `PASS` +Scope: full-repository checkout with Windows `core.autocrlf=true` +Network: none; the clone used local Git transport with `--no-local` +Source mutation: none +Audited commit: `817e4265563c124dedb6675b7c44d0082c3d8085` +Branch requested: `agent/publish-accepted-state-owner-review` + +## Environment + +- Windows NT build family: `26100` +- Windows PowerShell: `5.1.26100.9168` +- Git: `2.54.0.windows.1` +- Python: `3.14.6` +- Node.js: `24.18.0` +- Effective system Git setting: `core.autocrlf=true` +- Repository-root `.gitattributes`: `* -text` + +The resolved user-profile Python path, source-repository path, and generated +temporary-clone path are intentionally omitted. None was used as evidence. + +## Procedure + +The executed procedure is reproduced below with machine paths replaced by bounded +placeholders. + +```powershell +$auditSourcePath = "" +$auditClonePath = Join-Path ` + ([System.IO.Path]::GetTempPath()) ` + ("accepted-state-clean-clone-" + [guid]::NewGuid().ToString("N")) + +git -c core.autocrlf=true clone ` + --no-local ` + --branch agent/publish-accepted-state-owner-review ` + --single-branch ` + $auditSourcePath ` + $auditClonePath + +git -C $auditClonePath rev-parse HEAD +git -C $auditClonePath config --show-origin --get core.autocrlf +git -C $auditClonePath check-attr text -- ` + research/from-model-output-to-accepted-state/README.md ` + research/from-model-output-to-accepted-state/tools/verify_release.py + +$auditStatus = git -C $auditClonePath status --porcelain +if ($auditStatus) { throw "clean clone became dirty" } + +powershell -NoProfile -ExecutionPolicy Bypass ` + -File (Join-Path $auditClonePath ` + "research\from-model-output-to-accepted-state\tools\verify.ps1") +``` + +The verifier used temporary GUID-named JSON files outside the checkout and removed +them in its `finally` block. + +## Checkout observations + +```text +817e4265563c124dedb6675b7c44d0082c3d8085 +core.autocrlf=true +research/from-model-output-to-accepted-state/README.md: text: unset +research/from-model-output-to-accepted-state/tools/verify_release.py: text: unset +clone_status_clean +``` + +`text: unset` is the expected effect of the repository-root `* -text` rule. It +prevented checkout-time CRLF rewriting despite `core.autocrlf=true`. + +## Complete verifier output + +```text +VERIFY PASS +cross_language_parity=PASS +files=34 +payload_root=c87abd3580fcaa899eec65302d8e7d1ea5de17e0ce6730c38d5f03c8c547791c +manifest_sha256=fbb878a3dc3aa6af61e69c7e49c3836ceda80589d147e54ab410861a1ede9cc9 +status=PASS +``` + +Both implementations emitted this exact canonical report: + +```json +{"fileCount":34,"manifestSha256":"fbb878a3dc3aa6af61e69c7e49c3836ceda80589d147e54ab410861a1ede9cc9","payloadRoot":"c87abd3580fcaa899eec65302d8e7d1ea5de17e0ce6730c38d5f03c8c547791c","status":"PASS"} +``` + +`fileCount=34` excludes the self-referential manifest. The packet contained 35 +tracked regular files including that manifest. + +## Interpretation ceiling + +This test establishes that a full Windows checkout of the named v3 commit preserved +the packet's committed raw bytes under `core.autocrlf=true`, matched the committed +allowlist, byte lengths, SHA-256 values, and payload root, and produced identical +Python and JavaScript reports. It does not test the uncommitted v4 bytes, rebuild the +paper, reproduce excluded inputs, validate manuscript claims, or establish +independent replication. diff --git a/research/from-model-output-to-accepted-state/evidence/transition-stable-quotient/BUILD-RECEIPT-000001.md b/research/from-model-output-to-accepted-state/evidence/transition-stable-quotient/BUILD-RECEIPT-000001.md new file mode 100644 index 0000000..04bad7c --- /dev/null +++ b/research/from-model-output-to-accepted-state/evidence/transition-stable-quotient/BUILD-RECEIPT-000001.md @@ -0,0 +1,95 @@ +# Build Receipt 000001 + +## Identity + +- Packet: `transition-stable-quotient` +- Receipt status: `OWNER_REVIEW` +- Recorded at UTC: `2026-08-15T12:15:47Z` +- Receipt policy: append-only +- Release authority: not granted +- Publication status: not published + +This receipt binds the shareable packet files listed below. It excludes itself to avoid a self-referential digest. It does not authorize publication, execution against a real device, or generalization beyond the frozen finite model. + +## Source boundary + +The executable experiment reads one source outside this packet: + +| Source | Bytes | SHA-256 | Role | +| --- | ---: | --- | --- | +| `../device-activation-fixture/dataset/device-activation-v1.json` | 98,769 | `a2dece0b00e9659e3f50df307bd41dedc722a1c5b93b16153f616d1f2b58a179` | Frozen synthetic trace-prefix dataset | + +The packet cites Moore and Hopcroft as established prior work in `SOURCES.md`. This receipt does not attest to downloaded copies of those publications. It attests only to the local bytes listed here and to the verifier result below. + +## Runtime identity + +| Runtime | Version | +| --- | --- | +| Windows PowerShell | `5.1.26100.9168` | +| Python | `3.14.6` | +| Node.js | `v24.18.0` | + +## Verification command + +Direct script invocation was blocked by the host Windows PowerShell execution policy before the verifier ran. The packet was then executed with a process-scoped policy bypass: + +```powershell +powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\work\transition-stable-quotient\verify.ps1 +``` + +Exit code: `0` + +Exact standard output: + +```text +VERIFY PASS +python_javascript_canonical_parity=PASS +frozen_report_match=PASS +records=151 +events=10 +full_classes=33_to_33 +reduced_classes=18_to_33 +stable_partition_equal=PASS +invalid_input_fail_closed=PASS +synthetic_two_round_refinement=PASS +report_sha256=1b0e78adcac732561a0263ef2704d53b397597c502f81e88a0999a37232df183 +``` + +Standard error was empty. + +## Bound file manifest + +The canonical manifest is ordered by the UTF-8 byte sequence of the slash-normalized relative path. Each line is: + +```text +relative-pathbyte-countsha256 +``` + +| Relative path | Bytes | SHA-256 | +| --- | ---: | --- | +| `CLAIMS.md` | 1,201 | `73c8317e76397e78f85b34f04c406cd917101819596aa82e76d8731e4d483834` | +| `CONTRIBUTIONS.md` | 644 | `309f61f100d263743c4e5a6f3b0dcc62ef4dfd48d662dbfcef7df87d18fdd49d` | +| `README.md` | 1,360 | `5b3747d7aa42afbf24078a30e64023c4c11c668aca53561cb6616e8b53b890c2` | +| `RESULTS.md` | 1,912 | `317e831756ac587d40f63444ee75b5d6ac7b3e78eccd474329a55a4c854f7704` | +| `results/expected-report.json` | 2,627 | `1b0e78adcac732561a0263ef2704d53b397597c502f81e88a0999a37232df183` | +| `SOURCES.md` | 968 | `51aef6af90b28432553b935163d3798759dea1c127247f0b64b36108269ba628` | +| `SPEC.md` | 2,384 | `2af1ff0ebb801229da8956a90d6ee38fc11a8ca2fe80fb5c8838676d557c3897` | +| `src/analyze.js` | 10,174 | `f1dddef27258568e0d401f8be2bdb68b0b74df1bd04bc5cba7f99234fef91273` | +| `src/analyze.py` | 10,777 | `535b8eaa0cea669bb0e6ef6eb13adcd61b0ad23b41bdf39d7e4dc983eb5b7602` | +| `verify.ps1` | 8,548 | `b781799ee714159f661717d86e772708f7831ea1bb4c607286175c1b0765a7bd` | + +Canonical packet manifest SHA-256: + +```text +ae54e6bbba4cd6c3f1eedee8cd1f97c7cc9fc97e54f2dfab53c666331d71e513 +``` + +## Accepted interpretation + +The verifier establishes local replay of the frozen finite experiment. It establishes Python and JavaScript canonical parity, equality with the frozen report, declared class counts, stable-partition equality, fail-closed invalid input, and a two-round synthetic refinement case. + +The receipt does not establish a new automata theorem, real-device behavior, legal authority, operational safety, global representation minimality, open-system completeness, or external replication. + +## Owner review gate + +The packet is technically verified and remains in `OWNER_REVIEW`. Owner acceptance, public-release approval, and any downstream claim promotion must be recorded separately. Absence of a failed check is not publication authority. diff --git a/research/from-model-output-to-accepted-state/evidence/transition-stable-quotient/expected-report.json b/research/from-model-output-to-accepted-state/evidence/transition-stable-quotient/expected-report.json new file mode 100644 index 0000000..eaf487d --- /dev/null +++ b/research/from-model-output-to-accepted-state/evidence/transition-stable-quotient/expected-report.json @@ -0,0 +1 @@ +{"comparison":{"fullStableClassCount":33,"reducedStableClassCount":33,"sameStablePartition":true,"stableClassCountDelta":0},"dataset":{"eventCount":10,"eventLabels":["ACCEPT_CONSENT","ACTIVATE","BIND_OWNER","BOOT","ENROLL_PAYMENT_CREDENTIAL","ENROLL_UNLOCK","GRANT_BACKUP_ACCESS","REFUSE_CONSENT","REVOKE_CONSENT","VERIFY_DEVICE"],"recordCount":151,"sha256":"a2dece0b00e9659e3f50df307bd41dedc722a1c5b93b16153f616d1f2b58a179"},"experiments":[{"firstInstabilityWitness":null,"fixedPointStable":true,"initialClassCount":33,"initialPartitionStable":true,"name":"FULL_7_QUERY_SIGNATURE","queryFields":["consentRecorded","mayActivate","mayAuthorizePayment","mayDecryptPrivateData","mayRestoreBackup","nextPermittedActions","refusalSeen"],"refinementRounds":0,"rounds":[],"stableClassCount":33,"stableClassSizes":[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,3,3,3,3,6,6,12,12,37,37],"stablePartitionSha256":"2f129b2ac6c060d253831dbded1810cfd64b030fa6b8a0514d6e048fc7086187"},{"firstInstabilityWitness":{"classBeforeSplit":0,"event":"ACCEPT_CONSENT","left":{"caseId":"trace-000001","eventStatus":"ENABLED","successorCaseId":"trace-000002","successorClass":2,"trace":"BOOT"},"right":{"caseId":"trace-000000","eventStatus":"REFUSED","successorCaseId":"trace-000000","successorClass":0,"trace":"EMPTY"}},"fixedPointStable":true,"initialClassCount":18,"initialPartitionStable":false,"name":"REDUCED_WITHOUT_NEXT_PERMITTED_ACTIONS","queryFields":["consentRecorded","mayActivate","mayAuthorizePayment","mayDecryptPrivateData","mayRestoreBackup","refusalSeen"],"refinementRounds":1,"rounds":[{"classCountAfter":33,"classCountBefore":18,"witness":{"classBeforeSplit":0,"event":"ACCEPT_CONSENT","left":{"caseId":"trace-000001","eventStatus":"ENABLED","successorCaseId":"trace-000002","successorClass":2,"trace":"BOOT"},"right":{"caseId":"trace-000000","eventStatus":"REFUSED","successorCaseId":"trace-000000","successorClass":0,"trace":"EMPTY"}}}],"stableClassCount":33,"stableClassSizes":[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,3,3,3,3,6,6,12,12,37,37],"stablePartitionSha256":"2f129b2ac6c060d253831dbded1810cfd64b030fa6b8a0514d6e048fc7086187"}],"format":"TRANSITION_STABLE_QUOTIENT_REPORT_V1","scope":{"claim":"finite application of established deterministic partition refinement","domain":"complete trace-prefix graph declared by generic device activation v1","notClaimed":"new automata theorem, real-device validation, or global encoding minimality"},"semantics":{"enabled":"advance to the child trace","refused":"emit REFUSED and remain at the current trace"},"transitionStatusCounts":{"enabled":150,"refused":1360,"total":1510}} diff --git a/research/from-model-output-to-accepted-state/figures.py b/research/from-model-output-to-accepted-state/figures.py new file mode 100644 index 0000000..6d9744c --- /dev/null +++ b/research/from-model-output-to-accepted-state/figures.py @@ -0,0 +1,551 @@ +"""Vector figures for the paper. + +Every figure is emitted as standalone SVG so the PDF renders them as vectors +rather than resampled bitmaps. Colors are chosen to survive grayscale printing: +every color-coded element also carries a text label or a distinct stroke style. +""" + +from __future__ import annotations + +from html import escape +from pathlib import Path + +OUT = Path(__file__).resolve().parent / "figures" +OUT.mkdir(parents=True, exist_ok=True) + +INK = "#101828" +MUTED = "#5A6474" +RULE = "#C9D0DA" +SURFACE = "#F4F6F9" +ACCENT = "#1D4E89" +ACCENT_SOFT = "#E3ECF6" +PASS = "#2C6E49" +PASS_SOFT = "#E1EFE7" +HOLD = "#9A5B0B" +HOLD_SOFT = "#F7EBD7" +STOP = "#A32E22" +STOP_SOFT = "#F7E2DF" +PAPER = "#FFFFFF" + +SERIF = "Constantia, Cambria, Georgia, serif" +SANS = "'Segoe UI', 'Helvetica Neue', Arial, sans-serif" +MONO = "Consolas, 'Cascadia Mono', monospace" + + +def head( + w: int, + h: int, + figure_id: str, + accessible_title: str, + accessible_description: str, +) -> str: + return ( + f'' + f'{escape(accessible_title)}' + f'{escape(accessible_description)}' + '' + f'' + f'' + f'' + f'' + '' + ) + + +def title(t: str, sub: str, w: int) -> str: + return ( + f'{t}' + f'{sub}' + f'' + ) + + +def box(x, y, w, h, label, sub="", fill=ACCENT_SOFT, stroke=ACCENT, tc=INK, fs=15.5): + out = ( + f'' + ) + cy = y + h / 2 + (0 if not sub else -5) + out += ( + f'{label}' + ) + if sub: + out += ( + f'{sub}' + ) + return out + + +# -------------------------------------------------------------------------- +# Figure 1. Where the proposer sits +# -------------------------------------------------------------------------- +def figure1() -> str: + W, H = 1180, 470 + s = head( + W, + H, + "fig1", + "The boundary around a probabilistic proposer", + "A proposer supplies a candidate to a deterministic gate. The gate records " + "stage receipts, replays an accepted projection, acts on the external world " + "only through an authorized effect, and observes that world through a " + "declared instrument.", + ) + s += '' + s += title( + "The boundary around a probabilistic proposer", + "The proposer suggests. A separate path decides, acts, observes, and accepts.", + 1140, + ) + s += '' + + # world band + s += ( + f'' + ) + s += ( + f'' + 'External world' + ) + s += ( + f'' + 'Partly hidden. Changing. Never read directly, only through a declared ' + 'instrument that has its own limits.' + ) + + # effect arrow: up into the world, on the left + s += ( + f'' + ) + s += ( + f'' + 'authorized effect' + ) + + # observation arrow: down out of the world, on the right + s += ( + f'' + ) + s += ( + f'' + 'qualified observation' + ) + + # protocol boundary + s += ( + f'' + ) + s += ( + f'PROTOCOL BOUNDARY' + ) + + # the deterministic span, tinted so the caption can point at it + s += ( + f'' + ) + s += ( + f'the tinted span is the whole of the determinism claim' + ) + + s += box(44, 256, 200, 80, "Proposer", "model, person, or program", + fill=SURFACE, stroke=MUTED) + s += ( + f'' + ) + s += ( + f'' + 'candidate' + ) + + s += box(328, 256, 192, 80, "Deterministic gate", "pinned policy and schemas") + s += ( + f'' + ) + + s += box(586, 256, 204, 80, "Append-only receipts", "one record per stage") + s += ( + f'' + ) + s += ( + f'' + 'replay' + ) + + s += box(856, 256, 248, 80, "Accepted projection", "a governance state", + fill=PASS_SOFT, stroke=PASS) + + s += ( + f'' + 'Pinned bytes in, projection out. The proposer that produced the candidate ' + 'and the world the effect lands in both sit outside it.' + ) + + s += '' + return s + + +# -------------------------------------------------------------------------- +# Figure 2. Lifecycle +# -------------------------------------------------------------------------- +def figure2() -> str: + W, H = 1180, 420 + stages = [ + "PROPOSE", "NORMALIZE", "CHECK", "AUTHORIZE", "PREPARE", + "EXECUTE", "OBSERVE", "ACCEPT", "OUTCOME", "CORRECT", + ] + s = head( + W, + H, + "fig2", + "The proposed ten-stage lifecycle", + "Ten conceptual stages run from proposal through correction. Refusal and " + "unresolved are recorded exits at every stage. Acceptance is the only " + "state-update gate. A correction starts a new governed transition and can " + "change state only after a new acceptance record.", + ) + s += '' + s += title( + "The proposed ten-stage lifecycle", + "Conceptual profile. ACCEPT changes state; CORRECT begins a new transition and cannot bypass acceptance.", + 1140, + ) + s += '' + + s += ( + f'' + f'PROPOSED' + ) + + x0, gap, bw, bh, y = 24, 115.6, 104, 60, 120 + for i, name in enumerate(stages): + x = x0 + i * gap + is_accept = name == "ACCEPT" + is_correct = name == "CORRECT" + s += box( + x, y, bw, bh, name, f"stage {i + 1}", + fill=PASS_SOFT if is_accept else HOLD_SOFT if is_correct else ACCENT_SOFT, + stroke=PASS if is_accept else HOLD if is_correct else ACCENT, + fs=13.5, + ) + if i < len(stages) - 1: + s += ( + f'' + ) + # drop lines to the exit rail + s += ( + f'' + ) + + # accept emphasis + s += ( + f'' + 'state-update gate' + ) + + rail = y + bh + 34 + s += ( + f'' + ) + + # exits + s += box(150, rail + 30, 300, 62, "REFUSE", + "a required check is decisively false", + fill=STOP_SOFT, stroke=STOP, fs=15) + s += box(560, rail + 30, 300, 62, "UNRESOLVED", + "required evidence is unknown, stale, or errored", + fill=HOLD_SOFT, stroke=HOLD, fs=15) + + s += ( + f'' + ) + s += ( + f'' + ) + + s += ( + f'' + 'Both exits are recorded and kept. Neither advances the accepted projection.' + ) + s += ( + f'' + 'CORRECT appends a requested supersession and starts a new governed transition.' + ) + s += ( + f'' + 'It changes state only after a new ACCEPT record; it never edits the prior record.' + ) + + s += '' + return s + + +# -------------------------------------------------------------------------- +# Figure 3. Three stores +# -------------------------------------------------------------------------- +def figure3() -> str: + W, H = 1180, 450 + s = head( + W, + H, + "fig3", + "Three stores with three retention rules", + "The minimized event history follows an additions-only protocol rule. " + "Detecting rewrites requires an authenticated current tip. Restricted raw " + "evidence and the redacted public projection follow separate retention rules.", + ) + s += '' + s += title( + "Three stores, three retention rules", + "The event protocol permits additions only; rewrite detection requires an authenticated current tip.", + 1140, + ) + s += '' + + cols = [ + ("Event history", "minimized", ACCENT, ACCENT_SOFT, [ + "Typed status and commitments.", + "Protocol rule: additions only.", + "Rewrite detection requires an", + "authenticated current tip.", + ]), + ("Evidence store", "restricted", HOLD, HOLD_SOFT, [ + "The material a check actually read.", + "Access controlled. Retention bounded.", + "Deletable, and deletion is recorded.", + ]), + ("Public projection", "redacted", PASS, PASS_SOFT, [ + "Only what an owner released.", + "Rebuilt, not edited, on change.", + "Allowlisted bytes with digests.", + ]), + ] + x = 24 + for name, tag, stroke, fill, lines in cols: + s += ( + f'' + ) + s += ( + f'' + f'{name}' + ) + s += ( + f'{tag.upper()}' + ) + for j, ln in enumerate(lines): + s += ( + f'' + f'{ln}' + ) + x += 384 + + s += ( + f'' + 'An erasure record can remain in the event history after the restricted object ' + 'is destroyed. Hashing a personal record does not anonymize it,' + ) + s += ( + f'' + 'and a deletion receipt does not by itself establish legal compliance.' + ) + s += '' + return s + + +# -------------------------------------------------------------------------- +# Figure 4. Six signals +# -------------------------------------------------------------------------- +def figure4() -> str: + W, H = 1180, 430 + s = head( + W, + H, + "fig4", + "Six evidence conditions reported separately", + "Protocol calibration, consequence, evidence, integrity, privacy, and " + "activity each retain a typed status. No combined score is used.", + ) + s += '' + s += title( + "Six conditions reported separately, rather than averaged into one score", + "A single score would let a strong dimension conceal the one that mattered.", + 1140, + ) + s += '' + + items = [ + ("Protocol calibration", ("Did every required check pass,", "with nothing unresolved?")), + ("Consequence", ("Is a named consequence active", "under the pinned policy?")), + ("Evidence", ("How much required evidence", "came back decisive?")), + ("Integrity", ("Do the recorded bytes still hash", "to their commitments?")), + ("Privacy", ("Did anything cross the declared", "disclosure boundary?")), + ("Activity", ("What has moved recently,", "and what has gone quiet?")), + ] + for i, (name, q_lines) in enumerate(items): + cx = 24 + (i % 3) * 384 + cy = 98 + (i // 3) * 126 + s += ( + f'' + ) + s += ( + f'' + ) + s += ( + f'{name}' + ) + for j, q in enumerate(q_lines): + s += ( + f'{q}' + ) + s += ( + f'PASS / FAIL / UNKNOWN / STALE / ERROR / N-A' + ) + + s += ( + f'' + 'Every color is paired with a text label and a reason code, so the display ' + 'survives grayscale printing and color vision deficiency.' + ) + s += ( + f'' + 'The display is a projection of the record. The record remains canonical.' + ) + s += '' + return s + + +# -------------------------------------------------------------------------- +# Figure 5. Repair loop +# -------------------------------------------------------------------------- +def figure5() -> str: + W, H = 1180, 380 + s = head( + W, + H, + "fig5", + "The seven-step repair pattern used in the case study", + "The case-study repairs freeze bytes, state the claim, construct a minimal " + "false pass, add a rejecting contract, pin a regression test, preserve the " + "correction, and state the remaining limit.", + ) + s += '' + s += title( + "The repair pattern, which ends in a stated limit rather than a clean bill", + "Every correction in the case study followed these seven steps in this order.", + 1140, + ) + s += '' + + steps = [ + ("1", "Freeze", "pin the exact bytes under review"), + ("2", "State", "write the claim being tested"), + ("3", "Break", "build the smallest false pass"), + ("4", "Type", "add a contract that rejects it"), + ("5", "Pin", "add a regression or mutation test"), + ("6", "Keep", "record the correction, delete nothing"), + ("7", "Bound", "state what remains outside the check"), + ] + x0, gap, bw = 24, 163.5, 148 + for i, (n, name, sub) in enumerate(steps): + x = x0 + i * gap + last = i == len(steps) - 1 + s += ( + f'' + ) + s += ( + f'' + ) + s += ( + f'{n}' + ) + s += ( + f'{name}' + ) + words = sub.split() + lines, cur = [], "" + for w in words: + if len(cur) + len(w) + 1 > 17: + lines.append(cur) + cur = w + else: + cur = f"{cur} {w}".strip() + lines.append(cur) + for j, ln in enumerate(lines[:3]): + s += ( + f'{ln}' + ) + if not last: + s += ( + f'' + ) + + s += ( + f'' + ) + s += ( + f'the stated limit becomes the next claim to test' + ) + s += ( + f'' + 'In these case-study corrections, the omitted step was the minimal false-pass test. ' + 'A check that was never attacked has only been asserted.' + ) + s += '' + return s + + +FIGURES = { + "fig1-boundary.svg": figure1, + "fig2-lifecycle.svg": figure2, + "fig3-stores.svg": figure3, + "fig4-signals.svg": figure4, + "fig5-repair.svg": figure5, +} + + +def main() -> None: + for name, fn in FIGURES.items(): + (OUT / name).write_text(fn(), encoding="utf-8") + print(f"wrote {name}") + + +if __name__ == "__main__": + main() diff --git a/research/from-model-output-to-accepted-state/figures/fig1-boundary.svg b/research/from-model-output-to-accepted-state/figures/fig1-boundary.svg new file mode 100644 index 0000000..d90b727 --- /dev/null +++ b/research/from-model-output-to-accepted-state/figures/fig1-boundary.svg @@ -0,0 +1 @@ +The boundary around a probabilistic proposerA proposer supplies a candidate to a deterministic gate. The gate records stage receipts, replays an accepted projection, acts on the external world only through an authorized effect, and observes that world through a declared instrument.The boundary around a probabilistic proposerThe proposer suggests. A separate path decides, acts, observes, and accepts.External worldPartly hidden. Changing. Never read directly, only through a declared instrument that has its own limits.authorized effectqualified observationPROTOCOL BOUNDARYthe tinted span is the whole of the determinism claimProposermodel, person, or programcandidateDeterministic gatepinned policy and schemasAppend-only receiptsone record per stagereplayAccepted projectiona governance statePinned bytes in, projection out. The proposer that produced the candidate and the world the effect lands in both sit outside it. \ No newline at end of file diff --git a/research/from-model-output-to-accepted-state/figures/fig2-lifecycle.svg b/research/from-model-output-to-accepted-state/figures/fig2-lifecycle.svg new file mode 100644 index 0000000..1e71e40 --- /dev/null +++ b/research/from-model-output-to-accepted-state/figures/fig2-lifecycle.svg @@ -0,0 +1 @@ +The proposed ten-stage lifecycleTen conceptual stages run from proposal through correction. Refusal and unresolved are recorded exits at every stage. Acceptance is the only state-update gate. A correction starts a new governed transition and can change state only after a new acceptance record.The proposed ten-stage lifecycleConceptual profile. ACCEPT changes state; CORRECT begins a new transition and cannot bypass acceptance.PROPOSEDPROPOSEstage 1NORMALIZEstage 2CHECKstage 3AUTHORIZEstage 4PREPAREstage 5EXECUTEstage 6OBSERVEstage 7ACCEPTstage 8OUTCOMEstage 9CORRECTstage 10state-update gateREFUSEa required check is decisively falseUNRESOLVEDrequired evidence is unknown, stale, or erroredBoth exits are recorded and kept. Neither advances the accepted projection.CORRECT appends a requested supersession and starts a new governed transition.It changes state only after a new ACCEPT record; it never edits the prior record. \ No newline at end of file diff --git a/research/from-model-output-to-accepted-state/figures/fig3-stores.svg b/research/from-model-output-to-accepted-state/figures/fig3-stores.svg new file mode 100644 index 0000000..e276c43 --- /dev/null +++ b/research/from-model-output-to-accepted-state/figures/fig3-stores.svg @@ -0,0 +1 @@ +Three stores with three retention rulesThe minimized event history follows an additions-only protocol rule. Detecting rewrites requires an authenticated current tip. Restricted raw evidence and the redacted public projection follow separate retention rules.Three stores, three retention rulesThe event protocol permits additions only; rewrite detection requires an authenticated current tip.Event historyMINIMIZEDTyped status and commitments.Protocol rule: additions only.Rewrite detection requires anauthenticated current tip.Evidence storeRESTRICTEDThe material a check actually read.Access controlled. Retention bounded.Deletable, and deletion is recorded.Public projectionREDACTEDOnly what an owner released.Rebuilt, not edited, on change.Allowlisted bytes with digests.An erasure record can remain in the event history after the restricted object is destroyed. Hashing a personal record does not anonymize it,and a deletion receipt does not by itself establish legal compliance. \ No newline at end of file diff --git a/research/from-model-output-to-accepted-state/figures/fig4-signals.svg b/research/from-model-output-to-accepted-state/figures/fig4-signals.svg new file mode 100644 index 0000000..0f2bad7 --- /dev/null +++ b/research/from-model-output-to-accepted-state/figures/fig4-signals.svg @@ -0,0 +1 @@ +Six evidence conditions reported separatelyProtocol calibration, consequence, evidence, integrity, privacy, and activity each retain a typed status. No combined score is used.Six conditions reported separately, rather than averaged into one scoreA single score would let a strong dimension conceal the one that mattered.Protocol calibrationDid every required check pass,with nothing unresolved?PASS / FAIL / UNKNOWN / STALE / ERROR / N-AConsequenceIs a named consequence activeunder the pinned policy?PASS / FAIL / UNKNOWN / STALE / ERROR / N-AEvidenceHow much required evidencecame back decisive?PASS / FAIL / UNKNOWN / STALE / ERROR / N-AIntegrityDo the recorded bytes still hashto their commitments?PASS / FAIL / UNKNOWN / STALE / ERROR / N-APrivacyDid anything cross the declareddisclosure boundary?PASS / FAIL / UNKNOWN / STALE / ERROR / N-AActivityWhat has moved recently,and what has gone quiet?PASS / FAIL / UNKNOWN / STALE / ERROR / N-AEvery color is paired with a text label and a reason code, so the display survives grayscale printing and color vision deficiency.The display is a projection of the record. The record remains canonical. \ No newline at end of file diff --git a/research/from-model-output-to-accepted-state/figures/fig5-repair.svg b/research/from-model-output-to-accepted-state/figures/fig5-repair.svg new file mode 100644 index 0000000..10c73f1 --- /dev/null +++ b/research/from-model-output-to-accepted-state/figures/fig5-repair.svg @@ -0,0 +1 @@ +The seven-step repair pattern used in the case studyThe case-study repairs freeze bytes, state the claim, construct a minimal false pass, add a rejecting contract, pin a regression test, preserve the correction, and state the remaining limit.The repair pattern, which ends in a stated limit rather than a clean billEvery correction in the case study followed these seven steps in this order.1Freezepin the exactbytes underreview2Statewrite the claimbeing tested3Breakbuild thesmallest falsepass4Typeadd a contractthat rejects it5Pinadd a regressionor mutation test6Keeprecord thecorrection,delete nothing7Boundstate whatremains outsidethe checkthe stated limit becomes the next claim to testIn these case-study corrections, the omitted step was the minimal false-pass test. A check that was never attacked has only been asserted. \ No newline at end of file diff --git a/research/from-model-output-to-accepted-state/paper/From-Model-Output-to-Accepted-State-Owner-Review-v4-LinkedIn.md b/research/from-model-output-to-accepted-state/paper/From-Model-Output-to-Accepted-State-Owner-Review-v4-LinkedIn.md new file mode 100644 index 0000000..1491870 --- /dev/null +++ b/research/from-model-output-to-accepted-state/paper/From-Model-Output-to-Accepted-State-Owner-Review-v4-LinkedIn.md @@ -0,0 +1,830 @@ +Working paper · owner-review draft +# From Model Output to Accepted State +A typed state boundary for AI-assisted operations + + **Jake Tiller** · independent operator and researcher + 15 August 2026 · public case-study evidence pinned to commit + `275d0b3e7474` · local owner-review packets receipted separately + · CC BY 4.0 + +**Abstract** + +A language model produces plausible proposals. A proposal is not an authorization, a completed action, an observation, or an accepted record of state. I built a reference implementation, contracts, reducers, and test harnesses that keep those records separate within the evaluated boundary. I used them on a public software project and found real defects, including defects in the system itself. + +This paper proposes the State Transition Protocol as a typed boundary around a probabilistic proposer. A conceptual ten-stage lifecycle separates proposal from authority, execution, observation, acceptance, and correction. The broader observation algebra and six-condition reporting surface are also design proposals. PROPOSED + +The public packet implements a narrower seven-event instrument profile over synthetic fixtures; it is not a complete implementation of that lifecycle. Within the tested slice, deterministic reducers rebuild a finite projection from pinned inputs. TESTED + +Three additional local packets test a finite query representation, transition-stable refinement, and recovery of frozen answer fields from one compact prompt. That prompt declared separate gate, forecast, and pending-resolution fields; all three responses recovered the frozen finite outputs. No real forecast was issued or resolved. These local results extend the analysis but are not part of the pinned public commit. TESTED + +The evidence is finite and I state its limits precisely. Separate JavaScript and Python ports derived from the same specification and fixture corpus produce the same projection root over the pinned inputs, and did so on runtime versions two releases apart from the pinned continuous-integration environment. This is cross-language replay parity, not independent reproduction. Thirty-four runner-reported numbered holds across twelve suites are a diagnostic inventory, not a coverage measure. A data contract found that six public views of one 439-term source had drifted apart, and that 258 shared terms disagreed on review status. A production observation found 100 of 102 paths matching and left two unresolved rather than rounding them off. TESTED + +The most useful results are the ones that went against me. In a refusal experiment, an unstructured larger-model control recorded zero unsupported claims, matching the excluded P4 arm and below the rates in the eligible P1-P3 structured arms. That comparison concerns unsupported-claim counts; it does not establish that either structure or model choice causally improved accuracy. The auditability contribution lies in making the artifacts, assumptions, and limits behind the comparison inspectable. An experiment described by its repository as preregistered denied its own doctrine on a single counterexample. One deployment receipt in this repository contradicts itself across two fields, and the schema gate passes it. Those are reported here at full strength. + +## 1. The problem, in plain terms + +An AI system can report that something happened when several different things may be true. It may have suggested an action. A tool may have accepted the request. The action may have started and not finished. A sensor may have returned an unclear reading. A person may have looked at the record without accepting it. The world may have moved again before anyone asked. + +I hit this while building Delta Atlas, a public set of tools for finding gaps and unstated assumptions in AI plans. The project grew into static pages, JSON data, harnesses, and hosted releases. The same confusion kept appearing at every level. A model answered confidently from a stale copy of the glossary. A test passed while checking only the records that happened to be loaded. A merge completed without showing that the host served the merged bytes. A deployment succeeded without showing that every route had converged. A green panel reported on synthetic evidence. + +None of that needed a new theory of attention. It needed a boundary. A transformer maps context to candidate continuations. Once a candidate can call a tool, move money, change infrastructure, or become the memory the next session reads, the surrounding system has to answer questions the architecture never addresses. + +> Can a system use a stochastic model as a proposer while rebuilding its governed state through explicit, typed, replayable transitions, without mistaking a deterministic procedure for truth? + +The supported answer is narrow and useful. A reference implementation can force explicit promotion steps and produce identical accepted-state projections from pinned policy, pinned event bytes, and a pinned reducer version. It can hold unresolved evidence open instead of rounding it to pass. It can keep counterexamples and corrections in the record. It cannot show that a source was honest, that an authority was lawful, that an observation was complete, or that the chosen policy was wise. + +The public evidence is narrower than the conceptual protocol. It establishes finite behavior for an instrumented seven-event profile and related harnesses. It does not establish end-to-end conformance with the proposed ten-stage lifecycle. TESTED + +### Six terms used throughout +An **output** is anything a component emits before validation or acceptance. An **outcome** is a later qualified record of consequence. A **receipt** is a typed record of one check, action, observation, decision, or correction. A **reducer** is a deterministic function that rebuilds accepted state from policy and event history. A **projection** is that rebuilt view, not the world. An **instrument** is whatever acts on or observes a system, with its own limits. An unaccepted output remains in candidate or receipt space. It is not silently promoted to governed state or relabeled as an outcome. + +## 2. How to read the claims + +Confidence in prose is not evidence. Result-bearing empirical and implementation claims use one of four markers at paragraph, table-row, or block level. Unmarked prose explains terminology, motivation, or limits and should not be read as an additional empirical result. The marker sets what you are entitled to conclude. + +**Table 1. Claim markers. A marker states the strongest reading the evidence supports, not the author's confidence.** + +- **TESTED** - What it means Exact behavior over a named finite corpus, reproducible by a stated command.; What it never means That the behavior generalizes past that corpus. +- **OBSERVED** - What it means A bounded inspection of a named surface at a recorded time.; What it never means That the surface still looks that way, or that other surfaces match. +- **PROPOSED** - What it means Specified or reasoned beyond the tested artifact boundary. It may have a + partial fixture, but the marked claim itself is not established.; What it never means Implemented behavior. Do not cite it as a result. +- **OPEN** - What it means I do not know, and I say where the evidence stops.; What it never means That the question is unimportant. + +Implemented, tested, merged, deployed, observed, and accepted are six verbs, not one. A result can hold several at once. None of them implies the next. Section 11 states the full claim boundary once, so the rest of the paper does not repeat it paragraph by paragraph. + +### Digests and locators +Every result-bearing project artifact referenced here is pinned by SHA-256 over its exact bytes. Digests appear in text as the first twelve hexadecimal characters, which is enough to identify a file and short enough to read. Appendix C lists full values, exact locators, and the applicable verification boundary. Public case-study claims are bound to commit `275d0b3e7474` of the `Resilience-Ledger` repository. + +**Artifact identity is part of the result** + +The Calibration Ledger document I hold does not match the Ledger digest printed in State Transition Protocol v1.1, and I could not retrieve the bytes that digest was computed over. I do not know whether the document is a later revision, a sibling artifact, or an unrelated export. I have not treated the two as equivalent anywhere in this paper. OPEN + +That mismatch is evidence, not clutter. An identity check stopped a convenient substitution that prose alone would have waved through. + +## 3. The boundary + +Write `W(k)` for an external world state that is partly hidden, `O` for the qualified observations recorded so far, and `A(k)` for the accepted projection. A model generates a candidate change stochastically. The probability it assigns gives the candidate no standing. + + delta(k) ~ pi( A(k), O(≤k), H(k) ) candidate generation + A(k) = R( P(g), L(≤k) ) accepted projection + +_pi the candidate-generating distribution, not an authorization policy · P(g) pinned policy bytes at generation g · L(≤k) the valid event prefix through sequence k · R a pinned reducer version · H(k) whatever context the model had, which the protocol does not model_ + +The determinism claim is narrower than the word usually suggests. It starts at identified input bytes and a policy generation, and it ends at a projected record. It does not cover the model that produced the candidate. It does not cover undisclosed external state, physical effects, the people involved, the network in between, or anything that happens afterward. + +### Two lanes, one acceptance boundary +In plain terms, the deterministic lane decides whether the current record permits an action. A parallel forecast lane may record uncertainty about a later event. The two records can inform one another, but neither can silently become the other. A high forecast probability cannot promote an unresolved gate to pass. + + g_t = G( P(g), L(≤t) ) in PASS | UNRESOLVED | FAIL + execute_t = 1 only if g_t = PASS + + f_t = ( forecast_id, claim, event, p, I_t, horizon, resolution_rule, + scoring_rule_id, model_id, policy_id, scenario_id, digest ) + a_s = ( action_id, forecast_id, policy_id, selected_at ) + r_u = ( resolution_id, forecast_id, event, action_id_or_none, outcome, + resolution_time, witness, qualification, digest ) + s_v = ( score_id, forecast_id, resolution_id, scoring_rule_id, + score, computed_at, digest ) + c_w = ( calibration_id, cohort_rule_id, eligible_score_ids, + statistic, computed_at, digest ) + +_g_t is the exact gate result at time t · f_t is a registered forecast frozen before the event resolves · a_s binds any selected action to the frozen forecast and policy · r_u is the later qualified resolution, where u is not earlier than t · s_v records the score computed from the frozen forecast and linked resolution · c_w records a declared cohort statistic over identified eligible scores · I_t identifies the information available when the forecast was issued · p is a declared probability, not execution authority. The internal belief of a person or model is not directly observable. The auditable object is the registered forecast and its later resolution._ + +The proposed record order is `FREEZE_FORECAST` → `CHOOSE_ACTION` → `APPEND_RESOLUTION` → `SCORE_FORECAST` → `UPDATE_CALIBRATION`. Before a qualified resolution is appended, the forecast remains pending. Pending is not zero, false, success, or failure. A reducer for these proposed records can verify the order, identities, score, and replay without claiming that the forecast was true when issued or that the selected action was wise. PROPOSED + +BP-001 used `HOLD` as a frozen gate value and asked for its execution output, `BLOCK`. This paper maps an `UNRESOLVED` condition to `HOLD` as a post-test vocabulary crosswalk. BP-001 established `HOLD` to `BLOCK` only; it did not test the crosswalk. PROPOSED + +> Figure 1. The proposer sits inside a wider boundary. Only the tinted span is deterministic. The world is reached through a declared instrument and is never read directly. + +### Planes that cannot promote themselves + +**Table 2. Seven planes. Each answers a different question, and none of them establishes the next one on its own.** + +- **External world** - Question it answers What is actually the case?; What it cannot settle alone It may be hidden, and it moves. +- **Observation** - Question it answers What did a declared instrument report?; What it cannot settle alone Whether the report was complete or correct. +- **Proposal** - Question it answers What change was suggested?; What it cannot settle alone Anything. A suggestion carries no authority. +- **Authority** - Question it answers Who permitted which bounded next step?; What it cannot settle alone Whether the step ran, or whether it was wise. +- **Execution** - Question it answers What was attempted, committed, or compensated?; What it cannot settle alone Final world state. An acknowledgement is not an effect. +- **Accepted state** - Question it answers What does the named process now recognize?; What it cannot settle alone That governed state matches the world. +- **Derived memory** - Question it answers What summary is available later?; What it cannot settle alone Evidence. Surviving a restart proves storage, not truth. + +Caches, telemetry, routing models, and interface state are further planes and stay derivative. A fresh telemetry value grants no authority. A cached summary does not become a source by persisting. A predictive model does not become an observation because its average accuracy was good. + +### What the threat model covers +Mistaken, stochastic, and adversarial proposals. Stale, missing, conflicting, and correlated evidence. Scope growth. Partial and duplicate effects. Schema change. Evaluator failure. Replay of an old authorization. Confidential material reaching a public record. Permanent unknowns that starve availability. + +It also covers ordinary operator error, which is the failure I hit most. A system can be secure against an outsider and still fail because a person picked the wrong scope, accepted a misleading threshold, read an acknowledgement as a resolution, or trusted two witnesses that shared one source. + +The trusted computing base is not one object. It is the policy, the schemas, the reducers, the canonicalization rules, the authority registry, the keys, the clocks, the instrument contracts, the evidence stores, and the release process. This implementation does not provide an independently operated root of trust for all of them. OPEN + +## 4. A proposed ten-stage lifecycle + +The candidate lifecycle runs `PROPOSE`, `NORMALIZE`, `CHECK`, `AUTHORIZE`, `PREPARE`, `EXECUTE`, `OBSERVE`, `ACCEPT`, `OUTCOME`, `CORRECT`. It is not a pipeline that succeeds. Every stage can refuse, return unknown, and stop. A failed attempt stays in the history without moving accepted state. This is the conceptual protocol, not the event vocabulary of the current executable packet. PROPOSED + +**The executable slice is narrower** + +The pinned public packet is a proposed Instrumented Transition and Survivability Profile tested over synthetic fixtures. Its event vocabulary is `PLAN` → `AUTHORIZE?` → `INVOKE` → `COMMIT` → `SENSING_EFFECT?` → `OBSERVE` → `SETTLE`. A question mark means the phase is optional only when the pinned instrument profile permits omission. These seven event types exercise a bounded instrument profile. They do not implement the complete ten-stage lifecycle, and `SETTLE` is not silently renamed `ACCEPT`. TESTED + +> Figure 2. Proposed lifecycle. Only a valid acceptance record advances governed state. Refusal and unresolved are recorded at whichever stage produced them, and both are kept. A correction must pass through a new governed transition and cannot bypass acceptance. + +**Propose.** A person, model, or program describes a candidate change, naming +its subject, scope, requested operation, policy generation, and consequence class. +**Normalize.** The candidate becomes one supported schema, and the record keeps +whatever was rejected or lost. Normalization cannot invent a mapping between two vocabularies that merely look alike. **Check.** Required predicates evaluate structure, invariants, evidence, concurrency, budget, and consequence, each returning a typed result and a stable reason. + +**Authorize.** An authority receipt binds an actor to an exact subject, +operation, scope, policy, time window, and replay namespace. A full pass returns permission to prepare and nothing further. **Prepare.** The system builds a bounded effect request. This is the last point where an unsafe action can be stopped without needing to compensate. **Execute.** A tool attempts the effect, and the record separates submission, acknowledgement, partial execution, commit, failure, timeout, and unknown effect. + +**Observe.** A declared witness measures a postcondition, recording procedure, +result type, operating conditions, freshness, and known uncertainty. **Accept.** A named authority advances the projection only when the required predicates and receipts satisfy policy. Acceptance is never inferred from a tool's success code. +**Outcome.** A later observation records consequence, which can arrive long after +acceptance. **Correct.** A correction opens a new governed transition that names the prior record and states the proposed replacement and reason. It never edits the record it corrects. The replacement changes accepted state only after a new acceptance record satisfies the current policy. `CORRECT` cannot bypass `ACCEPT`. PROPOSED + +### How required checks aggregate + + FAIL if any required predicate is decisively false + UNRESOLVED else if any required predicate is UNKNOWN, STALE, or ERROR + PASS only when every required predicate passes + +_The transition gate maps condition FAIL to REFUSE, carries UNRESOLVED through unchanged, and otherwise returns PASS. An empty required set returns UNRESOLVED with reason INVALID_POLICY, never a vacuous pass. Policy may be stricter. Policy may not map an unresolved required predicate to pass. PROPOSED_ + +The public instrument and concurrency reducers test narrower, reason-specific `PASS`, `FAIL`, and `UNKNOWN` outputs, including local `NOT_REQUIRED` obligation positions. They do not expose this general set aggregator, a mixed false-plus-unknown precedence fixture, or the empty-set `INVALID_POLICY` rule. The general normalization above is therefore a design target, not a reported test result. TESTED + +The rule says nothing about completeness. A system can pass every declared check while omitting the one that mattered. That is a limit of the predicate set, not of the aggregation, and no aggregation rule can repair it. + +### A short trace +A configuration change is proposed. The schema check passes. The current dependency version cannot be observed, so the compatibility check returns unknown. A valid authority receipt permits preparation only. The tool accepts the request, and the postcondition instrument returns a real domain null while settlement stays unresolved. + +The projection does not advance. The history keeps the proposal, the check results, the preparation authority, the acknowledgement, the domain null, and the unresolved settlement. Later a qualified observation identifies the version and confirms the postcondition, and a new acceptance record advances the projection. The earlier unknown stays in the history. It is not overwritten, because it was true when it was recorded. + +## 5. Measurement before acceptance + +A consequential system has to separate what happened from what was recorded about what happened. A tool can return success while producing an unexpected effect. A sensor can return a valid null. A result can be missing because nothing was sampled, because it fell below a detection limit, or because a stated rule censored it. Those support different decisions. Storing each as an empty field destroys the information the next check needs. + +An observation is therefore a tagged record, never a bare value. + + DOMAIN_VALUE(value, unit_or_schema, uncertainty) + DOMAIN_NULL(reason) + BELOW_LIMIT(limit, procedure) + NO_CHANGE(quantity, delta_hat, u_delta, epsilon, rule, interval, procedure, conditions) + ABSENT(reason) + CENSORED(rule, bound) + INTERCURRENT(event, strategy) + +_DOMAIN_NULL is a meaningful null the domain supplies, not a missing field. BELOW_LIMIT records that a procedure could not quantify below a stated limit, and does not assert zero. NO_CHANGE is a positive measurement claim and is never inferred from an empty event stream. It records an observed change estimate, an uncertainty statement, a tolerance, and a pinned decision rule. ABSENT records that the required observation was not obtained._ + +For a scalar quantity, one conservative decision rule could require `|delta_hat| + k u_delta ≤ epsilon`, with `k`, the meaning of `u_delta`, the interval, and the procedure fixed before evaluation. That rule is an example, not a universal definition. If the required uncertainty or operating conditions are missing, the evaluator returns `UNKNOWN` rather than `NO_CHANGE`. The full tuple above is a design proposal. PROPOSED + +The public instrument profile tests the narrower label `NO_CHANGE_DETECTED` bound to a declared resolution and observation window; it does not implement the full uncertainty-aware tuple. TESTED + +Condition evaluation is a separate type, and keeping both is the point. + + PASS | FAIL | UNKNOWN | STALE | ERROR | NOT_APPLICABLE + +_Applicability is settled first. NOT_APPLICABLE leaves the required set and every metric denominator. An absent record maps to UNKNOWN, a known expired record to STALE, and an evaluator crash to ERROR. An evaluator failure is not an observation of the world and cannot become one._ + +Clinical trial guidance keeps a related discipline. ICH E9(R1) ties each objective to a defined estimand and separates intercurrent events from missing data [12]. A participant's death can make a later value nonexistent rather than missing. Administrative censoring limits follow-up. A sample may never have been collected. I borrowed the record-keeping discipline. The protocol supplies no estimand, no imputation rule, and no sensitivity analysis, and adopting the vocabulary does not import the statistics. + +An observation feeding a consequential predicate should identify its subject, the quantity evaluated, the instrument and version, the procedure, the time or interval, the operating conditions, the result type, the uncertainty, the freshness rule, and the source artifact. Where sensing changes the subject, the sensing action gets its own effect record. Reading a database consumes capacity. A medical test may require an invasive sample. A probe alters a cache. Observation and sensing effect answer different questions and are recorded separately. + +### Forecasts are records about later events +A forecast is evaluated only after its declared event has a qualified resolution. For a binary event with outcome `y` and forecast `p`, the Brier score is a proper scoring rule [39, 40]. If the forecaster's information implies a true conditional event probability `q`, its expected value separates into a reducible error term and irreducible event variance. + + BS(p, y) = (p - y)^2 + E_q[BS(p,Y)] = (p - q)^2 + q(1 - q) + + F_mu(p) = E_q[BS(p,Y)] + mu p + arg min F_mu = clip( q - mu/2, 0, 1 ) + +_The last two lines are a diagnostic counterexample, not a recommended objective. With q = 1/2 and mu = 1/2, the uncoupled Brier objective selects p = 1/2, while the coupled objective selects p = 1/4. Rewarding the same optimizer for a lower reported risk changes the report rather than the event probability._ + +The architectural consequence is to estimate, freeze, and later score the forecast as one lane, then select an action under a separately declared policy. If the action can change the event distribution, the record must identify that action and either forecast `Pr(Y | I_t, action)` or preserve a clearly labeled pre-action scenario. Otherwise the intervention can be mistaken for forecast error. This is related to the feedback problem studied as performative prediction [42]. PROPOSED + +### Three meanings of calibration that must remain separate +Forecast calibration is a property of a cohort of comparable, frozen forecasts: among cases issued near probability `r`, the observed event frequency should approach `r` under the declared grouping and resolution rules [40, 41]. One resolved forecast has a score. It cannot establish calibration. Model agreement is recurrence, not calibration, and an unresolved forecast is not part of a resolved calibration denominator. + +Metrology defines metrological traceability as a property of a measurement result that relates it to a reference through a documented unbroken calibration chain, with every link contributing uncertainty [8]. The same source warns that traceability does not show the uncertainty is fit for a purpose and does not prove the absence of mistakes. + +A green indicator is not that. A high pass fraction is not that. Two programs agreeing is not that. Conformity assessment adds a second distinction: a measurement result is not an accept-or-reject decision, and the gap between them is governed by stated requirements, uncertainty, acceptance limits, and the tolerated risk of accepting a nonconforming item [9]. + +So this paper uses **protocol-calibrated predicate** for the project's strict software condition. It is computable from declared inputs. It implies no SI traceability, no calibration hierarchy, and no probability that a system is healthy. The bridge to metrology is procedural. The protocol can carry measurement identity, uncertainty, conditions, and decision rules without collapsing them. It does not compute an uncertainty budget, qualify a laboratory, or establish forecast calibration. PROPOSED + +## 6. Cross-language replay parity + +The National Academies separates computational reproducibility, replication, and generalization [10]. Reproducibility asks whether the same data, code, and conditions give consistent results. Replication uses newly obtained data. The reducer evidence here is reproducibility, and only that. + + C( R_js(P, L) ) = C( R_py(P, L) ) + + both roots = 22852b5a3025d4ed7ee1d26cc4efcd51ae2e3e02ba2a20332c2a09827d6462ca + +_C serializes nulls, booleans, finite numbers, and strings, preserves array order, sorts object keys recursively, and emits no insignificant whitespace. This is not RFC 8785 canonicalization and makes no claim about Unicode keys outside the pinned corpus, whose keys are ASCII. TESTED_ + +The JavaScript and Python reducers are ports derived from the same specification and fixture corpus. Their agreement can catch language-specific, transcription, and runtime defects. It is not clean-room independence and it is weaker than replication, because both ports can share a specification error, the same fixtures, and the same assumptions. It says nothing about whether a recorded event was true. + +One result strengthens it slightly. Continuous integration pins Node 22.17.1 and Python 3.12.10. I reran both reducers on Node 24.18.0 and Python 3.14.6, two release lines later, and got the identical projection root with all checks holding. That is evidence the parity is not an artifact of one pinned runtime. TESTED + +**Table 3. The validation ladder. Current artifacts reach level three for selected finite cases. Levels four through six are open.** + +- **1** - Level Records satisfy a declared structural schema; Status here TESTED +- **2** - Level One implementation repeats its own result; Status here TESTED +- **3** - Level Cross-language ports agree on pinned inputs; Status here TESTED +- **4** - Level Another team reproduces from a minimized packet; Status here OPEN +- **5** - Level A new study obtains fresh evidence for the question; Status here OPEN +- **6** - Level The result stays informative in another system; Status here OPEN + +### Ordering is not causation +Sequence numbers, previous digests, and parent references show that named bytes were linked and that one computation consumed another record. Lamport's happened-before relation supports partial order without treating wall-clock time as a complete order [2]. That supports replay, conflict detection, and audit. + +It does not establish a causal effect. If a change ships and the error rate later falls, the history shows the deployment preceded the measurement. The fall could be a traffic shift, a cache change, a provider action, a changed measurement procedure, or something else entirely. The same trace fits several causes. Causal inference starts from a defined effect and the conditions under which it is identified [13], and a trustworthy event history supplies none of them. + +### The integrity ladder +Six claims usually get compressed into the single word verified. They are separate, and no lower step establishes a higher one. + +- A hash link can expose a byte change relative to a trusted commitment that covers the linked event. +- A signature shows a key signed declared bytes. +- An authority policy decides whether that key and scope are acceptable. +- A measurement profile decides whether an observation fits the predicate. +- An acceptance record advances governed state. +- A later outcome record describes consequence. + +A privileged custodian can replace an entire unanchored history and recompute every hash. A chain therefore supports consistency checks against a trusted anchor; it does not make storage immutable or prove that additions were the only changes. Resisting replacement needs external checkpoints, signatures, access control, or independent witnesses. The repository's additions-only check states this ceiling in its output rather than implying otherwise: it reports that Git branch protection and an external witness are required to resist history replacement. TESTED + +### The chain construction +A portable chain profile needs an unambiguous encoding and a domain separator, so that a digest computed for one purpose is not accepted in another domain. The construction below is proposed. The public instrument packet instead uses a fixture-scoped digest chain and does not implement this full portable profile. + + b(k) = Canon( event(k) without event_hash ) + h(k) = H( D || len(b(k)) || b(k) || h(k-1) ) + + D = "STP_EVENTCHAIN_SHA256_V1.2_JAKETOPENSOURCE_DELTAATLAS_2026" + +_D is this protocol's domain separation tag. Its value is arbitrary by construction, in the sense that any distinct constant separates domains equally well, and it is fixed here so that two implementations agree. The profile must also pin the length encoding, duplicate-key handling, number and Unicode rendering, media type, schema version, and the initial value h(-1). The current implementation uses local canonicalizers and does not claim RFC 8785 conformance. PROPOSED_ + +### Claim-relative evidence surfaces, and the surface this work has not tested + +Every automated check reported in section 9 is software checking software. That bounds what those checks can establish. Independence is not a global property of a tool or a count of verifiers. It is relative to a claim and a candidate failure mode. A shared parser weakens separation for parser failures; a shared specification weakens separation for specification failures; a shared operator weakens separation for provenance and execution failures. Those dependencies do not make every observation equivalent for every question. They identify the failure modes that can corrupt the observations together. + +**Table 4. Claim-relative evidence surfaces. Shared dependencies reduce separation for the named failure modes; no row is a universal rank.** + +- **Artifact-internal structure** - Claim it can test One artifact satisfies its declared shape and consistency rules; Shared dependency that limits it A coherent false record or a faulty rule can pass; Status here TESTED +- **Cross-implementation replay** - Claim it can test Separate implementations produce the same projection from the same bytes; Shared dependency that limits it A shared specification, fixture, or source record can be wrong in common; Status here TESTED +- **Physical observation** - Claim it can test A declared physical quantity covaries with a declared execution condition; Shared dependency that limits it Instrument, driver, clock, host, custody, calibration, and inference model; Status here OPEN + +The cross-language replay result supports agreement between two execution paths and can expose language-specific, transcription, or runtime defects. It cannot detect a specification or fixture error reproduced by both paths. Adding another port changes the evidence only if it removes a dependency relevant to the failure mode under examination. + +Power draw, timing, and electromagnetic emission are established side channels, studied since differential power analysis [36]. A monitor on a machine's power rail can add separation for some claims about physical execution because it does not depend on the same process-table report. It does not thereby establish that the software result was correct, authorized, or caused by the reported operation. + +I built a bounded loop between an agent harness and an Nvidia GPU that sampled power draw during agent runs. **No result from it is part of this paper's evidence.** Several readings shared a sensor, driver, clock, host, and operator. For failure modes at or upstream of that measurement chain, they are repeated observations with common dependencies, not independent confirmation. They may still describe variation across runs, but that is a different claim. + +A physical trace is not unforgeable, and the countermeasure literature on masking, hiding, and noise injection exists precisely because traces can be shaped. A sensor reading is not self-authenticating, since custody, calibration, and the path from probe to record are attackable. A correlation between load and an assertion about behavior is not a mechanism. Supporting a narrow physical predicate would require a declared measurand, calibration reference, operating limits, uncertainty budget, known sensing footprint, and a pre-registered discrimination task with false-accept and false-reject rates. Those conditions have not been met here. OPEN + +### Additions-only is a protocol rule, not a storage guarantee +The rule governs how accepted protocol events are handled: a correction adds a new record and does not edit the record it corrects. A hash chain can expose divergence from an anchored prefix, but it cannot prevent a privileged rewrite of an unanchored history. The rule also does not authorize indefinite retention of raw evidence or personal data. Data minimization, storage limitation, correction, and erasure all conflict with a naive permanent log [14]. Three stores keep those obligations separable. + +> Figure 3. An erasure record can persist in the event history after the restricted object is destroyed. Hashing a personal record does not anonymize it, and a deletion receipt does not establish legal compliance. + +## 7. Evidence state, reported as a vector + +For one subject, one policy generation, and one evaluation cut, let `J` be the finite nonempty set of required applicable checks. Every check maps exactly once into pass, fail, unknown, stale, or evaluator error. Not-applicable checks are excluded from `J` and from every denominator. + + N_app = P + F + U + S + E applicable + N_dec = P + F decisive + + C = N_dec / N_app decisive evidence coverage + Q = P / N_dec decisive conformance + R = 1 - (S / N_app) non-stale-label fraction + +_A zero denominator returns UNDEFINED, never zero. Policy must map raw observations such as ABSENT and CENSORED into the condition partition before C and Q are computed._ + +Pass and fail contribute equally to **C**. One failed check out of one applicable check gives `C = 1` and `Q = 0`, which is complete decisive coverage of a failed result. If that check is policy-blocking, the interface shows red. The coverage arithmetic alone does not, and should not. + +**R** is the non-stale-label fraction: the share of applicable conditions not +labeled stale. An unknown condition counts as non-stale while staying non-decisive, so **R** is not a measure of fresh evidence about the world. A stronger receipt-coverage measure would need deterministic receipt selection bound to subject, check, generation, and evaluation cut, with ties on sequence returning a typed conflict rather than a choice. The current schema does not carry those bindings, so I make no fixture claim for it. PROPOSED + +**C** is deterministic and verdict-symmetric. **Q** is deliberately +verdict-sensitive. The system as a whole is not policy-neutral, because policy chooses the applicable checks, the thresholds, the freshness windows, and the evidence requirements. For that reason **C** is never called a probability of truth, correctness, or safety. + +### Probability does not select policy +The gate, forecast, and action policy answer different questions. The gate asks whether an action is admissible. The forecast describes uncertainty over declared events. The policy decides how to compare safety, heat, latency, opportunity, and other consequence dimensions. Those dimensions remain a vector unless an authorized policy supplies a scalarization or another selection rule. + + J_j(a | x, B_(x,a)) = sup sum q(e) L_j(a, e; x) + q in B_(x,a) e in E_x + + a dominates b iff J_j(a) ≤ J_j(b) for every j, + and J_j(a) An infinite representation space does not imply infinitely many behavioral +answers. Many encodings can implement the same policy or forecast function. A unique optimizer may also exist on an infinite domain. Where several admissible actions remain incomparable and no authorized preference rule exists, the honest output is the frontier and an unresolved selection, not a hidden default. PROPOSED + +### A proposed drift vector +The following design records drift as eight components whose units remain separate. No committed reducer computes the complete vector, so the table is a specification target rather than a reported implementation result. PROPOSED + +**Table 5. Proposed drift components. Missing evidence is not zero drift.** + +- **D_sem** - Definition unresolved or contested required semantics, over required semantics; Range 0 to 1 +- **D_replay** - Definition count of distinct valid reducer projections, minus one; Range integer ≥ 0 +- **D_sched** - Definition distinct projection and effect-trace classes over permitted schedules, minus one; Range integer ≥ 0 +- **D_inv** - Definition accepted prefixes that violate an invariant; Range count +- **D_effect** - Definition unknown effects, duplicate risks, unresolved observation conflicts; Range count +- **D_capacity** - Definition per-lane overflow, retaining each lane's unit; Range vector +- **D_fresh** - Definition required stale receipts, over required applicable receipts; Range 0 to 1 +- **D_policy** - Definition unknown or mismatched policy-generation bindings; Range count + +D_replay and D_sched are defined only after completeness checks. A missing or invalid required output makes the component UNDEFINED and the aggregate UNKNOWN. Invalid outputs are never discarded to reach a cleaner number. Capacity is never summed across incompatible units, because observation, settlement, and recovery lanes measure different things. + +`DRIFT_DETECTED` requires a decisive component that the pinned policy marks blocking. `DRIFT_NOT_DETECTED` means no declared test detected drift. It does not mean drift is absent, and the two readings are not interchangeable. PROPOSED + +### Six signals +> Figure 4. Proposed six-condition surface. The conditions stay separate so that a strong dimension cannot conceal a failing one. Every color carries a text label and a reason code. + +The order is normative, not cosmetic. Conditions are reported as protocol calibration, consequence, evidence, integrity, privacy, activity, and a conforming surface renders them in that sequence so that two deployments can be read against each other without remapping. Any total order would serve equally well. This one is fixed so that the choice is not left to each renderer. PROPOSED + +The display labels are shorthand for directional policy predicates. A conforming record names the predicate so that `PASS` always has a stable meaning: + +- `PROTOCOL_CHECKS_SATISFIED`: all required applicable checks pass and +none is unresolved; an empty required set is `UNKNOWN / INVALID_POLICY`. +- `NO_BLOCKING_CONSEQUENCE`: complete required consequence checks find +no active blocking consequence; an active one is `FAIL`, and incomplete checks are `UNKNOWN`. +- `EVIDENCE_SUFFICIENT`: a pinned policy maps coverage, conformance, and +receipt requirements to a condition result. A high value of **C** does not pass this predicate by itself. +- `REQUIRED_COMMITMENTS_MATCH`: every required named artifact matches +its trusted commitment; a missing commitment is `UNKNOWN`, not `PASS`. +- `DISCLOSURE_BOUNDARY_HELD`: every required observed disclosure path +stays within the declared boundary; an unobserved required path remains `UNKNOWN`. +- `ACTIVITY_EXPECTATION_MET`: activity falls within the policy's stated +window and expectation. More activity is not inherently better. + +Each predicate returns `PASS`, `FAIL`, `UNKNOWN`, `STALE`, `ERROR`, or `NOT_APPLICABLE` under a pinned policy. The public case study renders partial lamps, but it does not implement this general six-predicate decision contract. PROPOSED + +On the consequence signal, red means `NO_BLOCKING_CONSEQUENCE = FAIL`: a named blocking consequence is active under the pinned policy. It can request acknowledgement before another scoped action begins. Acknowledgement does not make the condition safe, and some red conditions are non-waivable and require refusal. The public educational interface does not claim to control a host chat or an external tool. Without a durable, enforceable gate the indicator is informational, and I say so rather than implying enforcement. + +The record separates `NOTIFIED`, `PRESENTED`, `ACKNOWLEDGED`, `AUTHORIZED`, `OVERRIDDEN`, `INTERVENED`, and `RESOLVED`. Understanding is never inferred from a click. Intervention does not prove an adverse effect was prevented. Resolution requires its own observation. + +## 8. Methods and artifact scope + +### 8.1 Evidence units and pinned sources + +This paper is a bounded artifact audit and a single-project case study. The primary implementation evidence is pinned to commit `275d0b3e7474ef58456c82a042163567cd12122f` of the public Resilience Ledger repository. I reran its public gate on Node 24.18.0 and Python 3.14.6. Continuous integration declares Node 22.17.1 and Python 3.12.10. The same recorded projection root was produced by separate JavaScript and Python implementations derived from one specification and fixture corpus. This is cross-language replay parity, not clean-room or external replication. + +The protocol suites use finite event files, policies, fixtures, and rejection mutations as their units. Their results are exact only for those bytes and that code. Deployment observations use paths or routes sampled at named times. Interface checks establish source or rendering structure and make no claim about reader comprehension. These evidence families are reported separately because their denominators are not interchangeable. + +The Typed Refusal reanalysis uses a hand-decomposed claim as its unit. Its archive reports twelve frozen questions and three runs per P0 through P4 arm, plus a separate larger-model control, but publishes only pooled arm totals. The exact model version, generating prompts, answers, run-level data, question-level data, corpus bytes, and preregistration record are absent. Wilson intervals and Fisher exact tests were recomputed from `data/arms.json` by `data/stats.py`; they are exploratory claim-level summaries under a working independence assumption. The claims are clustered within questions and runs, so those intervals and p values do not establish arm-level precision or significance. + +The 2026-07-17 replication declares 36 sessions, of which 30 were scored after six final-block sessions were truncated. Its registration record and decision logs are public at commit `77408db59cad3f968ac9ba5a0c0c6689a90e80d4` of `JakeTOpenSource/the-stable`, and its recorded cells were replayed offline. The inspected public history does not independently establish that the registration file predates data collection, so I treat it as a committed registration record rather than verified prospective registration. The Typed Refusal aggregates are pinned separately at commit `721a824c9f735d3972d720b41685469a1020fa91` of `JakeTOpenSource/typed-refusal-harness`. No external evaluator selected, ran, or scored these experiments, and no qualified instrument or live consequential adapter was evaluated. + +### 8.2 Finite activation, quotient, and frozen-oracle packets + +Three local owner-review packets test the newer mathematical layer. The Generic Device Activation Fixture enumerates 151 synthetic trace prefixes of length at most ten. It evaluates seven declared queries against ten candidate representation fields, exhaustively checks all 1,023 nonempty candidate subsets, and retains a collision witness whenever a representation merges records whose query answers differ. Separate Python and JavaScript generators produce the same frozen dataset; the exhaustive subset analysis is then performed in Python. The result is exact only for those traces, queries, fields, and transition rules. + +The transition-stable quotient packet uses the same 151 records and ten declared events. Each state-event pair is either enabled, advancing to its child trace, or refused, remaining at the current trace. This gives 1,510 finite transitions. A partition begins from a declared query signature and repeatedly splits any class whose members differ in event status or successor class. Separate Python and JavaScript analyzers produce byte-identical canonical reports. This is a finite application of established sequential-machine refinement [43-45], not a new minimization theorem. + +The frozen-oracle packet fixed one prompt, one response schema, a nine-group oracle, and a twelve-function semantic rubric before three responses were requested. The responses were requested under `gpt-5.6-sol/high`, `gpt-5.6-sol/low`, and `gpt-5.6-terra/high` configurations. Those labels are request metadata because the retained responses contain no runtime model attestation, model-build digest, seed, or sampling parameters. Responders saw the prompt and schema, not the oracle or rubric. The name means only that the oracle and rubric were fixed before collection and withheld from responders; no blinded assignment or blinded assessment occurred. Exact fields were compared with the oracle. Semantic recurrence was mapped separately and required a verbatim quote from the corresponding response. That map remains `DRAFT_OWNER_REVIEW`. + +The packets share a recorded operator, orchestration platform, prompt, and response schema. Their requested model labels are metadata; common model ancestry is plausible but not established. Agreement is therefore bounded prompt-oracle agreement, not independent validation. The expected activation analysis, quotient report, and BP-001 evaluator report are pinned locally by digests `7c550d125d38`, `1b0e78adcac7`, and `de2c28735762`. Appendix C gives the full values and either public packet locators or retained source IDs. TESTED + +### 8.3 Related work boundary + +The design joins established lines of work rather than treating their components as new. Causal ordering and state-machine replication [2, 6], event sourcing and transaction or compensation boundaries [3-5], runtime assurance [7], metrology and conformity assessment [8, 9, 11], and reproducibility, estimands, and causal inference [10, 12, 13] provide the main technical background. Canonicalization, transparent logs, provenance, and software supply-chain records inform the evidence identity boundary [15-20]. Accessibility, assurance-case, status-condition, and interchange specifications inform the reporting surface [18, 27, 31-34]. + +Proper scoring and empirical forecast calibration supply the probabilistic lane [39-41]. Performative prediction supplies the warning that a decision can change the distribution it is later scored against [42]. Sequential-machine equivalence and partition refinement supply the finite transition-stable construction [43-45]. Convex and vector optimization supply the distinction between a Pareto frontier and a policy-selected point [46]. Robust convex optimization supplies the worst-case-over-a-declared-uncertainty-set pattern [48]. Mathlib's pinned `Function.FactorsThrough` definition supplies the formal vocabulary for query-relative sufficiency [47]. These are established sources used to express the proposal; none validates the case study. + +Two systems published in 2026 share this design's spine and are named directly. ESAA has agents emit structured intentions that a deterministic orchestrator validates and persists to an append-only log, separating agent cognition from state mutation through constrained outputs and replay-based verification [49]. AgentBound evaluates each proposed action using three independent authorities and emits cryptographically verifiable governance receipts binding an action to the exact delegation and policy artifacts that governed it, supporting independent replay [50]. Append-only event history, deterministic replay, receipt-bound policy identity, and refusing to let a model mutate state directly are established work, not contributed here. + +The Leiden Declaration states the corresponding obligation from the research side [51]. Published in June 2026 and endorsed by the International Mathematical Union, it requires transparent disclosure of automated tools in a stated section of a paper, and it holds that the responsibility for correctness, for the adequacy of the arguments, and for the completeness and accuracy of citations remains exclusively with the human authors. Credit and responsibility belong to people rather than to automated systems. The declaration states values and principles rather than formats, and it specifies no artifact for discharging those duties beyond a disclosure section and existing peer review. No conformance with the declaration is claimed here, and the declaration does not endorse this work. + +Two narrower separations remain. First, UNRESOLVED is a condition about evidence, not a verdict about an action. AgentBound composes three authorities into the lattice Deny < Review < Permit, where Review is a deferred authorization carrying a dischargeable obligation, and satisfying human approval converts it to execution [50]. ESAA is binary, emitting `output.rejected` on contract violation [49]. Neither carries a state for a required check that is missing, stale, or errored. This design does. UNRESOLVED records that the evidence was not obtained, it is not discharged by an approver, and the aggregation rule in section 4 forbids any policy from mapping it to a pass. An empty required set returns UNRESOLVED with reason `INVALID_POLICY` rather than a vacuous pass. Second, observation and acknowledgement are separate planes from acceptance. Both cited systems gate before execution and treat the applied effect as the record. This design records submission, acknowledgement, partial execution, commit, failure, timeout, and unknown effect as distinct outcomes, and requires a declared instrument's qualified observation before a named authority may advance accepted state. A tool's success code is not an observation, and an observation is not an acceptance. The record types proposed in sections 4 and 7 are one candidate discharge mechanism for the disclosure and correctness duties named by the Leiden Declaration [51]. These comparisons rest on the arXiv HTML renders of both papers, not on their PDFs or any implementation, and no systematic review was completed. This paragraph positions the work and makes no priority claim. OPEN + +Privacy, security, financial, medical-device, and AI-governance sources are used as domain constraints or comparison points [14, 21-26, 28-30]. They do not establish compliance. The transformer, biological-mechanics, and side-channel sources supply limited architecture or measurement context [1, 35, 36], not validation of this protocol. + +Hamilton-Zero makes one scientific boundary concrete. Its architecture analytically preserves a variational upper bound, while the authors warn that a finite-sample Monte Carlo estimate can appear below the true ground-state energy because of estimator noise or mixing bias [38]. A guarantee on the represented state therefore does not automatically attach to the sampled estimate or the published comparison. This is a domain example, not validation of this protocol. + +With his permission, Jake Macdonald's OpenGoldenRatio (OGR) v0.1 is cited as parallel related work [37]. After reviewing this draft, Macdonald helped sharpen the comparison: STP follows governed transformation from candidate output toward accepted state, while OGR centers containment and governed relations among actors or agents. His contribution here was review and clarification of that comparison. He did not contribute code, data, experiments, or authorship, and OGR is not evidence that STP works. + +## 9. Results + +Five result families are kept apart because their denominators and their meaning differ. Protocol conformance yields exact finite outputs. Agent behavior yields bounded empirical observations. Interface work yields structural conformance and no comprehension claim. Live operations yield bounded observations at named times. Finite mathematical packets yield exact local results over declared traces, query sets, candidate fields, transition semantics, and prompt-oracle comparisons. + +### 9.1 The gate + +One command runs the public suite. It executes sixteen scripts and prints thirty-four numbered holds across twelve named suites, with every denominator equal to its numerator. + +**Table 6. Public gate composition at commit 275d0b3e7474, from node governance/harnesses/run-all.js.** + +- **Ledger falsification** - Holds 10; What the strongest hold in it establishes Ten mutations of the event history are rejected +- **Governance chain** - Holds 5; What the strongest hold in it establishes 16 event files, 6 stream chains, 12 checkpoints bind +- **Authority falsification** - Holds 4; What the strongest hold in it establishes Four forged authority paths are rejected +- **Cross-language replay parity** - Holds 3; What the strongest hold in it establishes JavaScript and Python implementations derived from one specification and fixture corpus produce the same root +- **Append-only history** - Holds 2; What the strongest hold in it establishes Git comparison permits additions only +- **Privacy boundary** - Holds 2; What the strongest hold in it establishes 85 records scanned, 3 synthetic leak canaries caught +- **Atlas data sync** - Holds 2; What the strongest hold in it establishes Six projections match baseline, 4 mutations rejected +- **Six-signal public surface** - Holds 2; What the strongest hold in it establishes Six conditions render with non-color cues +- **Schema contract** - Holds 1; What the strongest hold in it establishes Schemas, validators, and envelopes agree +- **Atlas data materialization** - Holds 1; What the strongest hold in it establishes Three profiles replay, three malformed inputs rejected +- **Atlas foundational repair** - Holds 1; What the strongest hold in it establishes The repaired foundation still holds +- **Authority** - Holds 1; What the strongest hold in it establishes The authority profile evaluates its seven conditions +- **Twelve suites** - Holds 34; What the strongest hold in it establishes All holding at this commit + +Four of the sixteen scripts print a named pass with no numbered hold: the replay driver, the runtime check, the home surface check, and the public explanation check. Their results are therefore omitted from the total of 34. That total is a runner-reported diagnostic inventory, not a coverage measure or a count of everything checked. TESTED + +### 9.2 One source, six incompatible views + +The candidate source holds 439 terms and labels every one of them reviewed. Six public projections were measured against it. The count drift was the least of it. + +**Table 7. Projection drift against the 439-term candidate source. Identical counts shared records matching on every field. Status differs counts shared records whose review status disagrees.** + +- **ask-inline-data** - Terms 435; Shared 435; Identical 0; Absent 4; Extra 0; Status differs 258 +- **ground-truth-inline-data** - Terms 435; Shared 435; Identical 0; Absent 4; Extra 0; Status differs 258 +- **explore-inline-data** - Terms 435; Shared 435; Identical 125; Absent 4; Extra 0; Status differs 258 +- **gap-check-inline-data** - Terms 433; Shared 433; Identical 0; Absent 6; Extra 0; Status differs 256 +- **canon-json-projection** - Terms 214; Shared 204; Identical 0; Absent 235; Extra 10; Status differs 26 +- **canon-markdown** - Terms text document: pins a canonical text digest only, with no per-term comparison + +Three findings matter more than the counts. First, the source calls all 439 terms reviewed while three projections report 258 candidate and 177 reviewed, so the authoritative label was contradicted by every consumer. Second, in four of the five comparable projections not one shared record matched on every field. Third, the canon projection contains ten identifiers with no counterpart in the source at all, which is divergent provenance rather than staleness. + +The repair did not declare one file true. It registered a candidate source, measured every projection against it, stored the mismatch sets by digest, and added mutation tests. Historical regeneration stayed impossible for some consumers because their selection rules were never recorded. The 439-term source remains a candidate inventory, and no check here validates a single definition. TESTED + +### 9.3 Source, deployment, and live bytes + +The project once shipped by manual upload, which left the relation between repository and production unclear. The first recorded reconciliation compared every deployable path. + +**Table 8. Production observation 34bde4ec2eb4, recorded 2026-08-11.** + +- **Deployable paths checked** - Value 102; Reading the declared set +- **Returned HTTP 200** - Value 102; Reading all reachable +- **Missing** - Value 0 +- **Semantic matches** - Value 100 +- **Semantic mismatches** - Value 2; Reading index.html and sw.js +- **Line-ending-only differences** - Value 1; Reading CITATION.cff + +The two mismatches were left unresolved rather than rounded away. Production served a homepage without the deferral script the repository carried, and a service worker naming cache `aaig-v84` where the repository named `aaig-v85`. The receipt also records that the reported source commit was an empty string, and that the deployment completed roughly ten minutes before the then-current main commit existed, so that commit could not have been its source. The event decision was `DEFER`. OBSERVED + +A later Git-connected deployment linked provider record to merged source with an exact commit relationship, and sampled two live routes. Both returned 200. Both differed from committed bytes by exactly one declared 214-byte analytics insertion with zero source bytes removed, which is why raw byte identity is recorded as mismatched and the transform relationship as matched. Both routes recorded no content security policy header. That receipt explicitly declines to establish global edge convergence, installed cache state, accessibility, privacy, security, semantic truth, durability, or any future state. OBSERVED + +The service-worker drift from the first receipt stayed open for two cache generations. A third receipt now closes it: production served bytes identical to the committed file, with both naming cache `aaig-v87`. Closing it required publishing a checkpoint, and the projection root was unchanged at `22852b5a3025`, because an observation with no effect must not advance accepted state. OBSERVED + +The closure is bounded and the receipt says so. It records that the `aaig-v85` and `aaig-v86` generations were never observed in production and cannot be reconstructed, that one edge was sampled, and that installed client caches were not inspected. The process failure is the part worth keeping: an unresolved finding aged out of view for two versions because nothing scheduled its re-observation. The protocol recorded the gap faithfully and did not close it for me. OPEN + +### 9.4 Finite representations and frozen-oracle results + +**Table 9. One layer in plain language, formal language, finite result, and claim ceiling. Every result is local to the retained owner-review packet.** + +- **A forecast is not permission.** - Formal object execute = 1 only if g = PASS, for every +p.; Finite result All three BP-001 responses returned BLOCK when the gate was held.; Claim ceiling Exact prompt-oracle agreement, not operational enforcement. +- **In the frozen objective, coupling the report to its reward moves the optimum.** - Formal object argmin E[(p-Y)^2] = 1/2; adding (1/2)p gives +p* = 1/4.; Finite result All three responses recovered both frozen values.; Claim ceiling A synthetic algebraic counterexample, not real-world calibration. +- **Current state is sufficient only for named questions.** - Formal object r(x)=r(y) implies sigma_Q(x)=sigma_Q(y).; Finite result Across 151 traces and seven queries, all 1,023 nonempty subsets of ten fields +were checked. One five-field set was sufficient. It realized 47 tuples for 33 query classes.; Claim ceiling Set-minimal within ten supplied fields, not globally minimal. The 47 tuples overrefine the exact 33-class query quotient. +- **A useful summary must also survive permitted next steps.** - Formal object x equiv_Q y only when every permitted continuation preserves equal +query answers.; Finite result The full seven-query partition stayed 33 to 33. Removing nextPermittedActions began at 18 classes and refined to the same 33-class partition in one round.; Claim ceiling Exact for one finite graph, ten events, and declared refusal semantics. +- **Several actions can remain equally admissible without being equal.** - Formal object Keep every nondominated risk vector until policy supplies a preference rule.; Finite result All three responses retained A, B, C as Pareto-minimal and refused +to invent a unique action.; Claim ceiling Agreement on the frozen example, not a universal risk policy. + +The BP-001 evaluator made 27 exact comparisons: nine frozen result groups across three requested configurations. All 27 matched the oracle, all three response shapes passed, and the exact answer vectors matched pairwise. The exact layer includes the gate, the two forecast optima, historical insufficiency, the Pareto set, absence of a unique action, the unresolved pending state, the encoding distinction, and the five-step record order. TESTED + +The semantic layer is deliberately weaker. Its quote links pass deterministic existence checks, but the function-to-quote judgment remains `DRAFT_OWNER_REVIEW`. Six functions have unambiguous unanimous quote support: gate and forecast separation, freezing before resolution, append-only resolution, cohort calibration, typed unresolved state, and preservation of a Pareto frontier without hidden scalarization. The owner-review map also marks forecast scoring, F04, present in all three responses. One mapped quote says to score the frozen forecast after resolution without naming a declared scoring rule, so strict F04 unanimity remains unresolved and is not promoted to the six-function count. F04 still has direct scoring-rule support in two responses. Query-relative projection and behavioral quotienting also recurred in two of three responses, so functions F01 through F09 each have quote support in at least two. Deterministic replay audit, explicit separation of belief scoring from action optimization, and the general claim ceiling, F10 through F12, were absent from all three. Agreement is therefore signal about recoverable output structure, not evidence that the responses supplied the complete architecture. OPEN + +The model labels are retained exactly as requested but not promoted to runtime identity. The runs share material common causes, including the prompt, schema, orchestration platform, and possible training or system dependencies. No result in this subsection is described as independent replication, human understanding, truth, novelty, safety, or forecast calibration. + +## 10. The results that went against me + +These are the most informative findings in the project. Each one narrowed a claim I had already made. + +### 10.1 A receipt that contradicts itself + +The first deployment receipt reports its status twice. The envelope records `evidence: VERIFIED` and `authority: UNVERIFIED`. The payload record inside the same file reports `evidence: PASS` and `authority: PASS_WITH_LIMITS`. Five other axes agree. Two do not, and they disagree about whether authority was established. + +The schema contract gate passes this file. It validates each object against its own schema and never cross-checks the two. So a receipt can be internally inconsistent on the question of whether anything was authorized, and a green gate will not notice. This is exactly the projection drift the design warns about, occurring inside a single artifact of the system that names it. TESTED + +A second instance sits beside it. The two deployment receipts use different status vocabularies. The first is schema 1.0.0 with no declared vocabulary and pass-and-fail values. The second is schema 2.0.0 declaring `stp-v1.1-status-axes` with values such as `SUPPORTED`, `APPLIED`, and `MATCHED`. No mapping between them exists in the repository, so the two production observations in one stream cannot be compared axis by axis. OPEN + +### 10.2 A larger-model control recorded fewer unsupported claims than every eligible structured arm + +The Typed Refusal archive reports unsupported-claim aggregates across five arms of increasing structure, against a corpus of United States Code Title 29 identified by digest `188ab1c50a46`. A sixth arm, an off-model control, was a larger model given the corpus and no structure at all. The corpus bytes and original runs are not in the public archive. + +**Table 10. Typed Refusal Harness. Rates are unsupported claims per 100 hand-decomposed claims. Wilson intervals and two-tailed Fisher exact tests against P0 are exploratory claim-level summaries under a working independence assumption; question and run clustering could not be modeled from the published aggregate.** + +- **P0** - Structure added corpus only, no index, no tool; Unsupported 20; Claims 90; Rate 22.2; 95% CI 14.9-31.8; Exploratory p vs P0 baseline +- **P1** - Structure added hash-verified snapshot, single-unit pull; Unsupported 5; Claims 87; Rate 5.7; 95% CI 2.5-12.8; Exploratory p vs P0 0.0021 +- **P2** - Structure added typed rejections as final answers; Unsupported 6; Claims 105; Rate 5.7; 95% CI 2.6-11.9; Exploratory p vs P0 0.0012 +- **P3** - Structure added byte receipt required per quotation; Unsupported 9; Claims 100; Rate 9.0; 95% CI 4.8-16.2; Exploratory p vs P0 0.0148 +- **P4** - Structure added frozen answers with inline receipts; Unsupported 0; Claims 99; Rate 0.0; 95% CI 0.0-3.7; Exploratory p vs P0 excluded +- **Control** - Structure added larger model, corpus only, no structure; Unsupported 0; Claims 151; Rate 0.0; 95% CI 0.0-2.5; Exploratory p vs P0 not tested + +The eligible structured-arm ordering is non-monotone: P1 and P2 each recorded 5.7 unsupported claims per 100, while P3 recorded 9.0. Pairwise two-tailed Fisher exact tests on the published claim-level aggregates give p = 1.000 for P1 versus P2, p = 0.579 for P1 versus P3, and p = 0.428 for P2 versus P3. The three Wilson intervals overlap. Under the same working-independence assumption, these exploratory summaries do not support ranking P1, P2, and P3 and do not establish equivalence among them. + +At the claim level, the archived aggregates yield p = 0.0021 for P1, p = 0.0012 for P2, and p = 0.0148 for P3 against P0. No decision threshold was registered, and the independence assumption is not supported by the clustered design, so these values are not treated as confirmatory or as arm-level significance tests. P4's zero count is descriptive only. Its answers were supplied by construction, and one of its three runs ignored the cards, so the arm is excluded from accuracy claims. + +The larger-model control recorded zero unsupported claims out of 151, matching the excluded P4 count and recording fewer than each eligible structured arm, P1 through P3. Exploratory claim-level Fisher comparisons yield p = 0.0061 against P1, p = 0.0044 against P2, and p = 0.0002 against P3. Because model identity and scaffolding changed together, these comparisons do not identify a causal effect. Within the published aggregate, replacing the model coincided with a lower unsupported-claim count than any eligible scaffold around the weaker model, while P1 through P3 each remained below that weaker model's P0 baseline. OBSERVED + +**What this experiment does not support** + +The generating prompts, the per-run answers, the corpus file, and the preregistration artifact are all absent from the repository. The repository states that six predictions were registered before any arm ran and that three were falsified, and exactly one of the six is quoted anywhere, partially. I could recompute the published aggregate from `arms.json` and `stats.py`. I could not reproduce a single original run. No significance criterion was preregistered, so every p value here is post-hoc. The archive also does not publish the question-level or run-level counts needed for a cluster-preserving permutation, bootstrap, or multilevel analysis. The retained evidence bears on auditability and claim discipline by making those limits visible. It does not establish that structure or model choice causally improved accuracy. OPEN + +### 10.3 A committed registration record and a replication that denied its own doctrine + +A separate experiment is described by its repository as preregistered. The pinned repository contains a registration file naming three criteria and decision logs for a test of the claim that live per-probe feedback eliminates the premature nulls that committed plans produce. The design was two rounds by three models by three replicates by two arms, for 36 sessions. The inspected public history does not independently prove that the registration file predates those sessions. + +**Table 11. Replication of 2026-07-17. Verdict: doctrine denied. Token counts are block totals of output tokens over six sessions per cell group.** + +- **claude-opus-4-8** - One-shot 5,567; Iterative 35,152; Ratio 6.3×; Scored result 6/6 clean one-shot; 1 premature null iterative +- **claude-sonnet-5** - One-shot 15,673; Iterative 48,800; Ratio 3.1×; Scored result 12/12 scored as calibrated under the experiment rubric +- **claude-haiku-4-5** - One-shot 38,809; Iterative 41,399; Ratio 1.1×; Scored result 3 clean, 3 premature one-shot; iterative arm lost + +Recorded criterion (a) was satisfied, though not by the model that motivated the doctrine. Recorded criterion (b) failed, and that failure denied the doctrine: one opus iterative session produced a genuine premature null, skipping the domain floor extreme after seven matching probes sat in front of it. The recorded bar was zero counterexamples, and one is enough. + +Recorded criterion (c) could not be evaluated at all. All six haiku iterative sessions were truncated mid-play by a session limit, so 30 of 36 sessions were scored. The repository record acknowledges the confound rather than hiding it: models ran in sequential blocks with haiku last, so budget exhaustion clusters on the final block. That is missing data with a known mechanism, recorded as missing. OBSERVED + +Two things survived. Sonnet was scored as calibrated under that experiment's rubric in 12 of 12 sessions across both arms, which the document itself downgrades to a rubric-specific signal rather than a capability benchmark. That label is not empirical forecast calibration as defined in section 5 and is not a protocol-calibrated predicate. And all four valid premature nulls fell on the same round, with zero on the other across its 15 valid sessions, which points to a shared failure pattern across models that per-probe feedback did not close. + +The replay of all 36 recorded cells runs offline through the published harness, asserts twelve checks, and is wired into the repository gate. It reproduces the denied verdict from the recorded artifacts; it does not reproduce the original model sessions or constitute independent validation. TESTED + +### 10.4 Smaller corrections + +- Absolute privacy language on the public site exceeded what the tests covered. +The page said nothing leaves while the host loaded analytics. The claim was split into local input analysis and aggregate page telemetry. +- The offline cache list omitted JavaScript that cached tools required, so a fresh +offline profile could hold a page without the code to run it. The list was closed over its dependencies and installation became fail-closed. +- A data-only overlay still carried HTML through the parser into a rendering sink. +Escaping plus a full parser-to-sink test closed the demonstrated path. +- The privacy scanner reports 85 records. The tree holds 87 files of the scanned +types, and the harness hard-codes two self-exemptions. The number is correct and the exemptions are worth stating. +- The home surface check confirms the string `160 recorded cross-domain +primitives` appears in the page. The data file does contain 160 entries, but the check is a string match, not a cross-count, and would pass if both drifted together. + +> Figure 5. The repair pattern used in the corrections reported above. In these cases, the missing step was a regression gate. + +## 11. What this does not establish + +Stated once, in full, so that no section has to hedge itself. + +Nothing here establishes that a recorded event was true. A false sensor produces a well-formed receipt. A valid credential holder makes a bad decision. Two programs agree because they share one mistake. Comparison against a previously trusted digest reveals a byte difference without showing the earlier bytes described reality. + +Nothing here establishes causation, lawful authority, regulatory compliance, statistical reliability, general safety, or independent validation. The reducers share a specification and may share its errors. Most fixtures are synthetic. Most witnesses are not organizationally independent. There is no live authority service with independently managed keys, trusted time, revocation, and atomic single-use consumption. There is no durable non-equivocating log for a threat model that includes full history replacement. There is no general proof of liveness, fairness, concurrency safety, or survivability. There is no preregistered human study, and no external replication of the architecture. + +The case study is one project's repair history, produced by one person, largely in one computing environment, on data and interfaces that changed while the work proceeded. It may not transfer. + +The single-operator design is a separate validity threat. I selected and classified source artifacts, chose fixtures and checks, wrote the manuscript claims, and applied the claim markers to my own work. Those controls make the decisions inspectable, but they do not make them independent: the same judgment can preserve one error across evidence selection, fixture design, testing, prose, and marker assignment. + +The activation and quotient results are exhaustive only inside a synthetic finite model. Their minima depend on the supplied candidate fields and declared queries. Their stable partition depends on the 151 trace prefixes, ten events, enabled-or-refused transition rule, and finite continuation graph. They establish no fact about an iPhone, another device, an open environment, an unmodeled event, or a richer query. A five-field sufficient representation is not the unique data structure for the behavior, and its 47 realized tuples are not the exact 33-class behavioral quotient. + +The frozen-oracle packet is a three-response check, not a model benchmark. Requested model labels are unattested metadata. The runs share the prompt, schema, platform, operator, and possible training or system dependencies. Twenty-seven exact oracle matches do not establish semantic understanding. The semantic map is an owner-review judgment over quote-linked text, and its three universal absences are part of the result. No real event resolved, so the packet contains neither a forecast outcome nor evidence of forecast calibration. + +The local Lean source states query-signature sufficiency and kernel exactness using Mathlib's pinned `Function.FactorsThrough` vocabulary [47]. The module compiled directly in the local pinned environment, but it is not imported by the package root and no upstream Mathlib review occurred. It is a local formalization aid, not an accepted library contribution or external proof review. + +One risk deserves naming on its own. Strict preservation of unknowns can make a system unusable. If unresolved evidence blocks every action, availability and safety trade against each other, and the protocol offers no principled exchange rate between them. OPEN + +### Six tests that would demote these claims + +- **Clean-room replay.** Give an external team the minimized public packet and +nothing else. Disagreement demotes the replay claim or exposes a hidden dependency. +- **Formal non-promotion check.** Model the lifecycle and either prove or refute +that proposal, acknowledgement, and unresolved evidence cannot advance accepted state. +- **Qualified instrument pilot.** Use one real instrument with a metrology +review, operating limits, uncertainty, and a known sensing footprint. Failure narrows the observation contract. +- **False-assurance study.** Pre-register a comparison between one composite +status and the six-signal view, measuring correct intervention, missed danger, false reassurance, and response time. No benefit leaves Six Signals an accessibility design and not a comprehension improvement. +- **Narrow live adapter.** Implement one bounded consequential tool end to end. +Any unrecorded or duplicated effect falsifies the finality boundary. +- **External marker re-assignment.** Give an external reviewer the pinned +evidence and marker rules, but not the author's assigned markers. Material disagreement demotes the affected claim or exposes an underspecified marker rule. + +## 12. Adapting this + +The names here do not matter. The separation does. Nine steps, in order, and the first one is the one people skip. + +- **Pick one consequential transition.** Not an ontology. One action whose wrong +execution or false acceptance would actually hurt. +- **List what you currently collapse.** Write the exact phrases your system +treats as success: request accepted, job started, HTTP 200, database commit, sensor value, human review, deployment succeeded, customer outcome. Decide which are genuinely different states. +- **Type absence.** Define what a real zero means in your domain, then define +no-change, missing measurement, censoring, staleness, and evaluator failure separately. Never let an empty field pick between them. +- **Bind authority to an operation.** Not to a role, and not to a tool. Separate +risks a user may accept from constraints that must refuse. Record expiry, revocation, and replay behavior. +- **Build the smallest reducer.** Rebuild accepted state from the event prefix +using assigned sequence and causal references. Keep presentation and telemetry derivative. Write a second implementation if the state is load-bearing. +- **Attack it.** Change a subject identifier. Duplicate an event. Remove a +blocking check. Replace a source digest. Reorder events. Force an evaluator error. Return an acknowledgement with no effect. Keep every successful attack as a regression test. +- **Report a vector.** Show consequence, evidence, integrity, privacy, activity, +and the local complete condition separately, with reason codes and source links. Never color alone. +- **Release less than you collected.** Allowlist a public derivative. Keep +sensitive evidence in a restricted store with retention rules. Record what the public verifier can and cannot recreate. +- **Invite a clean-room challenge.** The useful first external test either +matches your bounded result or finds your instructions underspecified. Both results are worth more than another internal pass. + +## 13. What I do not know + +I do not know whether this combination is novel in an academic sense. Section 8.3 names two systems published in 2026 that share the spine of this design, which narrows what could be novel to the two separations stated there. I have not completed the systematic literature review needed to assess even those two, so I make no priority claim. I do not know whether six signals are understood better than one status, because I have run no user study. I do not know whether strict preservation of unknowns is affordable in a high-volume system. I do not know how any of this behaves under network partition, adversarial witnesses, or fast schema churn. I do not know whether the missing Ledger bytes would resolve the terminology conflict in section 2 or deepen it. + +Those are part of the result. The clearest implementation finding in this work is narrow: specific false-pass paths became explicit tests, and unresolved conditions stayed visible instead of being rounded to green. The next tests are external reproduction, one real qualified instrument, and one bounded live adapter. + +## 14. Lineage, credits, and AI-assistance disclosure + +### Where this came from + +The ideas in this paper did not start here, and they did not start with me alone. The early conceptual work was done in April and May 2026 in extended dialogue with language models, principally Claude and Gemini. I set the problems, argued with the answers, and kept what survived. What the models contributed was real and I am not going to describe it as tooling. + +I published early versions of these ideas publicly on LinkedIn in May and June 2026, before the software described here existed. Those mutable posts provide lineage context but are not evidence for this paper. The bounded contribution here is the checkable implementation: what happened when I built it, tested it, tried to break it, and recorded the places it failed. + +I make no originality claim over the component ideas. Causal ordering, event sourcing, compensating transactions, safety and liveness, measurement uncertainty, conformity assessment, and provenance modeling are all established fields, cited in section 15, and none of them are mine. The synthesis is what I did, and section 13 states what is left of it once the neighbours named in section 8.3 are accounted for. + +### Credits and disclosure + +I supplied and classified the source artifacts, set the operating, acceptance, and privacy constraints, chose which claims to make public, and am responsible for the manuscript and every release decision. + +Generative AI systems were used as research, coding, testing, and editing tools. Recorded uses include brainstorming, terminology extraction, source discovery, repository inspection, code drafting, test generation, adversarial review, and manuscript editing. Their outputs were treated as candidate material, never as evidence, authority, authorship, or independent validation. Checks run by agents that share models, prompts, tools, or specifications are not described anywhere in this paper as independent replication. The synthesis and the prose benefited materially from that assistance, and I reviewed the final text. + +Owner-attested AI editorial-review disclosure: Claude (Opus 5) provided editorial review on 15 August 2026. I independently checked each adopted suggestion against the source artifacts and retained evidence. This review is editorial assistance, not evidence, authorship, or independent validation. A minimized disposition note is included at `evidence/editorial-review/PUBLIC-DISPOSITION.md` in the release packet. + +## 15. References + +- A. Vaswani et al. Attention Is All You Need. NeurIPS, 2017. papers.nips.cc/paper/7181 +- L. Lamport. Time, Clocks, and the Ordering of Events in a Distributed System. CACM 21(7), 1978. doi:10.1145/359545.359563 +- M. Fowler. Event Sourcing. 2005. martinfowler.com/eaaDev/EventSourcing.html +- J. Gray. The Transaction Concept: Virtues and Limitations. VLDB, 1981. +- H. Garcia-Molina and K. Salem. Sagas. SIGMOD, 1987. doi:10.1145/38713.38742 +- F. B. Schneider. Implementing Fault-Tolerant Services Using the State Machine Approach. ACM Computing Surveys 22(4), 1990. doi:10.1145/98163.98167 +- D. Seto et al. The Simplex Architecture for Safe On-Line Control System Upgrades. ACC, 1998. doi:10.1109/ACC.1998.703255 +- JCGM 200:2012. International Vocabulary of Metrology, 3rd ed. doi:10.59161/jcgm200-2012 +- JCGM 106:2012. The Role of Measurement Uncertainty in Conformity Assessment. doi:10.59161/jcgm106-2012 +- National Academies. Reproducibility and Replicability in Science. 2019. doi:10.17226/25303 +- JCGM 100:2008. Guide to the Expression of Uncertainty in Measurement. +- ICH E9(R1). Estimands and Sensitivity Analysis in Clinical Trials. Final addendum. +- M. A. Hernán and J. M. Robins. Causal Inference: What If. 2020. miguelhernan.org/whatifbook +- EU General Data Protection Regulation, Articles 5 and 17. Regulation 2016/679. +- A. Rundgren, B. Jordan, S. Erdtman. JSON Canonicalization Scheme. RFC 8785, 2020. +- B. Laurie et al. Certificate Transparency Version 2.0. RFC 9162, 2021. +- W3C. PROV-DM: The PROV Data Model. Recommendation, 2013. +- W3C. Web Content Accessibility Guidelines 2.2. Recommendation, 2024. +- S. Torres-Arias et al. in-toto: Providing Farm-to-Table Guarantees for Bits and Bytes. USENIX Security, 2019. +- SLSA. Supply-chain Levels for Software Artifacts, v1.2. slsa.dev/spec/v1.2 +- NIST SP 800-207. Zero Trust Architecture. 2020. +- NIST SP 800-82 Rev. 3. Guide to Operational Technology Security. 2023. +- NIST AI 100-1. Artificial Intelligence Risk Management Framework 1.0. 2023. +- CPMI-IOSCO. Principles for Financial Market Infrastructures. 2012. +- U.S. SEC. Risk Management Controls for Brokers or Dealers With Market Access. Rule 15c3-5. +- BCBS 239. Principles for Effective Risk Data Aggregation and Risk Reporting. 2013. +- OMG. Structured Assurance Case Metamodel, v2.3. 2023. +- U.S. FDA. Predetermined Change Control Plan for AI-Enabled Device Software Functions. 2025. +- U.S. FDA. Applying Human Factors and Usability Engineering to Medical Devices. 2016. +- EU Artificial Intelligence Act, Regulation 2024/1689, Articles 12, 14, 19. +- Kubernetes. KEP-1623, Standardize Conditions. kubernetes.dev/resources/keps/1623 +- CNCF. CloudEvents Specification 1.0.2. 2022. +- JSON Schema. Core and Validation, Draft 2020-12. +- Model Context Protocol. Specification revision 2026-07-28. +- L. Marom, S. Tibbits, G. Zardini, M. J. Buehler. A Category-Theoretic Framework from Biological Mechanics to Engineered Stimulus-Response Systems. arXiv:2604.26367, 2026. +- P. Kocher, J. Jaffe, B. Jun. Differential Power Analysis. CRYPTO, 1999. doi:10.1007/3-540-48405-1_25 +- J. Macdonald. OpenGoldenRatio (OGR) v0.1: Containment-First Multi-Agent Governance Protocol. Zenodo, 2026. doi:10.5281/zenodo.18969396. Executable demonstration at commit `58450185582f4ecf1410b33f77e22d8d4b0441a2`. +- T. Heightman, E. Orlova, P. Mantrov, and A. Ustimenko. Hamilton-Zero: A Neural Tensor-Network Foundation Model for Ground States of Arbitrary Quadratic Qubit Hamiltonians. arXiv:2608.11911v2 [quant-ph], 2026. doi:10.48550/arXiv.2608.11911. +- G. W. Brier. Verification of Forecasts Expressed in Terms of Probability. Monthly Weather Review 78(1), 1950. doi:10.1175/1520-0493(1950)078<0001:VOFEIT>2.0.CO;2. +- T. Gneiting and A. E. Raftery. Strictly Proper Scoring Rules, Prediction, and Estimation. Journal of the American Statistical Association 102(477), 2007. doi:10.1198/016214506000001437. +- A. P. Dawid. Calibration-Based Empirical Probability. Annals of Statistics 13(4), 1985. doi:10.1214/aos/1176349736. +- J. C. Perdomo, T. Zrnic, C. Mendler-Dünner, and M. Hardt. Performative Prediction. Proceedings of Machine Learning Research 119, 2020. proceedings.mlr.press/v119/perdomo20a.html. +- E. F. Moore. Gedanken-experiments on Sequential Machines. In Automata Studies, 1956. doi:10.1515/9781400882618-006. +- A. Nerode. Linear Automaton Transformations. Proceedings of the American Mathematical Society 9(4), 1958. doi:10.1090/S0002-9939-1958-0135681-9. +- J. E. Hopcroft. An n log n Algorithm for Minimizing States in a Finite Automaton. Stanford CS-TR-71-190, 1971. i.stanford.edu/TR/CS-TR-71-190.html. +- S. Boyd and L. Vandenberghe. Convex Optimization. Cambridge University Press, 2004. web.stanford.edu/~boyd/cvxbook. +- Leanprover-community. Mathlib `Function.FactorsThrough`, pinned at commit `520045ab14e26149ee970e2e617ca04b09bde5d6`. Mathlib/Logic/Function/Basic.lean, lines 832-885. +- A. Ben-Tal and A. Nemirovski. Robust Convex Optimization. Mathematics of Operations Research 23(4), 1998. doi:10.1287/moor.23.4.769. +- ESAA: Event Sourcing for Autonomous Agents in LLM-Based Software Engineering. arXiv:2602.23193, 2026. arxiv.org/abs/2602.23193. +- AgentBound: Verifiable Behavioral Governance for Autonomous AI Agents. arXiv:2606.30970, 2026. arxiv.org/abs/2606.30970. +- Leiden Declaration on Artificial Intelligence and Mathematics. Working group convened by J. Portegies, Eindhoven University of Technology. June 2026, endorsed by the International Mathematical Union. leidendeclaration.ai. + +## A. Properties, assumptions, and limits + +**A.1 Proposal non-promotion** + +Let `L(k)` be a valid event prefix and `A(k) = R(P, L(k))`. Let `U(P)` be the nonempty set of policy-authorized projection-update events, containing only qualified `ACCEPT` records that close a governed transition. A `CORRECT` record begins a new governed transition and may propose a superseding state, but it cannot update `A(k)` without a later qualified `ACCEPT`. Appending only records whose types lie outside `U(P)`, including proposal, preparation, tool acknowledgement, and an unaccepted correction, cannot change `A(k)`. + +By induction over the appended sequence. The base projection is unchanged, and each step records history without invoking the update function. The result depends on complete reference validation and on there being no second update path. A reducer defect or an incomplete policy invalidates the assumption, and section 10.1 shows a related assumption failing in practice. + +**A.2 Unknown preservation** + +For the proposed normalized aggregate over a finite nonempty required set, the result is `PASS` only when every condition passes, `FAIL` if any fails, and `UNRESOLVED` if none fails and any is unknown, stale, or errored. An empty set returns `UNRESOLVED` with reason `INVALID_POLICY`. No unresolved required predicate produces a pass. The rule says nothing about predicates omitted from the set. This general precedence rule has not been exercised by a mixed false-plus-unknown public fixture. PROPOSED + +**A.3 Deterministic replay** + +With fixed policy bytes, event bytes, schema versions, canonicalization, reducer code, and deterministic dependencies, repeated evaluation returns the same projection. This is a property of the computational boundary. It does not establish that the events are true, complete, or authorized. + +**A.4 Hash-link mutation detection** + +Assuming second-preimage resistance, an unambiguous canonical encoding, and a trusted externally anchored tip that transitively commits the event, modifying that event changes the committed tip except with negligible probability. A checkpoint protects only the prefix it commits. An anchor before a modified event does not prevent changing a later event and rehashing the suffix, so detecting suffix replacement requires an authenticated current tip. + +**A.5 Illustrative effect-trace counterexample** + +Consider two declared effects, `alpha` and `beta`. Schedule `(alpha, beta)` emits the ordered trace `[dispatch-alpha, dispatch-beta]`, while schedule `(beta, alpha)` emits `[dispatch-beta, dispatch-alpha]`. If both schedules reduce to the same accepted projection, equal projections still do not entail equal ordered effect traces. This is a counterexample by construction at the specification level. No public fixture in the pinned repository implements it, so it is not a tested result. PROPOSED + +**A.6 Bounded lane balance** + +Capacity is tracked per lane, and the three lanes do not share a unit. Observation, settlement, and recovery each measure something different, so their backlogs are held as a vector and never summed. For a declared lane `x`, a finite trace is evaluated by the deterministic recurrence: + + B_x[k+1] = max( 0, B_x[k] + A_x[k] - S_x[k] ) + + M_x(H) = max { B_x[k] : 0 For declared arrays, initial backlog, horizon, and capacity, these equations +answer one bounded question: whether the computed backlog exceeds capacity anywhere in that finite trace. They do not establish stationarity, asymptotic stability, recurrence class, a queue-length distribution, or a future arrival or service rate. No stochastic queueing theorem is claimed or tested here. + +The autonomy rule in section 3 treats observation, settlement, and recovery capacity as separate constraints. Applying it to a live lane would require declared measurement procedures and a justified rule for projecting beyond the observed window. This project supplies neither. A finite-capacity pass is therefore a local trace result, not evidence that a live lane will keep pace. OPEN + +Where a bounded check is wanted before an estimator exists, the survivability harness substitutes finite reachable-state traversal at a declared horizon. The profile fixes `H = 7` rounds and a no-change tolerance of `epsilon = 0.02` in the lane's declared unit. Both are conventions. A longer horizon evaluates a different, generally more expensive bounded question, and neither value is derived from anything. Under an exact-`H` recovery condition, one horizon is not uniformly stronger or weaker than another without additional monotonicity and absorbing-target assumptions. Every disturbed and controlled state must stay legal, preserve the named invariant, and retain the required essential function, and every state in the frontier at round `H` must be in the recovery target set. Merely reaching the target before `H` is insufficient unless the required `H`-frontier condition also holds. An invalid model, an undefined controller, or an exceeded bound returns `UNKNOWN` rather than a pass. PROPOSED + +**A.7 Brier loss and the coupled-objective shift** + +Let `Y` be binary with `Pr(Y=1)=q`. For a forecast `p`, direct expansion gives: + + E[(p-Y)^2] + = q(p-1)^2 + (1-q)p^2 + = p^2 - 2pq + q + = (p-q)^2 + q(1-q) + +_The final term is constant in p, so the unique minimum on the unit interval is p = q. This is the binary Brier result [39, 40]._ + +If the same objective adds `mu p`, its derivative is `2(p-q)+mu`. Strict convexity gives the constrained minimizer `clip(q-mu/2, 0, 1)`. At `q=1/2` and `mu=1/2`, the optimum moves from `1/2` to `1/4`. The lower report is not a better estimate of `q`. It is the optimum of a different objective. The counterexample proves that an incentive attached directly to the report can distort the report; it does not prove that every coupled system does so. + +**A.8 Query factorization and exact kernels** + +For a finite family of queries, let `sigma_Q(x)` be the vector of all declared answers at state `x`, and let `r(x)` be a proposed representation. The representation is sufficient exactly when equal represented values never hide unequal query signatures: + + r(x) = r(y) implies sigma_Q(x) = sigma_Q(y) + + equivalently, sigma_Q = d after r on the image of r + +_This is sigma_Q.FactorsThrough r in Mathlib's pinned vocabulary [47]. The decoder d need only be defined on represented values that occur._ + +Exactness requires the reverse factorization as well. Then `r(x)=r(y)` if and only if `sigma_Q(x)=sigma_Q(y)`, so the two functions induce the same kernel partition. Their class labels and data structures may still differ. The local `QueryQuotient.lean` module proves component factorization, the sufficiency equivalence, separation of unequal signatures, and this kernel characterization. It compiled directly against the pinned Mathlib environment; the exact source and standalone compile receipt are included in the owner-review packet. This is not an upstream-reviewed contribution. + +The included source and receipt are the complete public evidence boundary for this result. The receipt points to an earlier local package receipt and binds additional package files that this minimized packet does not include, so a public reader cannot replay the complete local receipt chain from these bytes alone. The local package working directory was not itself a Git repository when the compile was recorded; the public release commit anchors the released copies, not their full pre-release history. Other modules imported by `ZeroState.lean` are outside A.8 and do not support the quotient claim. Clean-room reconstruction of the pinned package environment remains open. OPEN + +In the finite activation packet, the unique five-field candidate minimum is sufficient for all seven queries over 151 traces. It realizes 47 representation values, while the full query signature realizes 33 classes. It therefore preserves the answers but does not implement the exact quotient. The result is relative to the supplied ten fields and exhaustive 1,023-subset search. + +**A.9 Future-stable refinement** + +Static query equality is the initial relation `x equiv_0 y` when `sigma_Q(x)=sigma_Q(y)`. Define the next relation by retaining a pair only when it was previously equivalent and every declared event has the same enabled-or-refused status and leads to states equivalent under the previous relation. Each round can split classes and never merge them. On a finite state set the descending sequence must stabilize. + +At the fixed point, equivalent states have the same query answers after every permitted finite continuation. Conversely, any transition-stable equivalence lying inside the initial query kernel survives every refinement round by induction, so it lies inside the fixed point. The limit is therefore the largest transition-stable equivalence contained in the declared query kernel, or the coarsest stable refinement of its partition. This is established sequential-machine refinement, not a new theorem [43-45]. + +The frozen packet's full seven-query partition began with 33 classes and was already stable. Omitting `nextPermittedActions` began with 18 classes and refined to 33 in one round. Both reached the same partition digest `2f129b2ac6c0`. The witness is concrete: after `BOOT`, `ACCEPT_CONSENT` is enabled and advances; from the empty trace it is refused and remains in place. This proves the distinction only in the pinned finite graph. + +**A.10 Pareto existence and policy selection** + +Let a finite nonempty action set carry a finite risk vector. Say action `a` dominates `b` when every component of `a` is no worse and at least one is strictly better. A Pareto-minimal action must exist. Start from any action. If it is dominated, move to a dominator. Strict dominance cannot cycle, and a finite set cannot support an infinite descent, so the process ends at a nondominated action. + +If every scalarization weight is positive, a minimizer of the weighted sum is Pareto-minimal: a dominator would make at least one positively weighted component smaller and none larger, contradicting minimality [46]. The converse does not give one authorized weight vector, and neither existence result gives uniqueness. In the BP-001 fixture, all three actions are nondominated. Returning the frontier and an unresolved selection is therefore the complete result until policy supplies a preference rule. + +## B. Provenance, reuse, and attribution + +The intended public release will use CC BY 4.0. Adaptation will be welcome, including commercial adaptation, with attribution to the author and identification of what was modified. I cite my own sources throughout and expect the same in return, which is the whole of what I am asking. + +For publication, the exact release bytes will be hashed with SHA-256, recorded in the public event history described in section 6, sealed by a checkpoint, and checked again in continuous integration. Until that workflow runs against the final release, this owner-review draft has no completed publication commitment. Once complete, the record can support artifact identity and chronology for the committed bytes. It does not by itself prove authorship, originality, independent creation, or legal priority. + +**Interoperability fixtures in this specification** + +Several values here are arbitrary by construction, meaning any distinct value would serve the same technical purpose. They are fixed so that implementations can exchange and replay the same records. They are technical fixtures, not watermarks or evidence of origin: + +- the domain separation tag `D` in section 6; +- the condition vocabulary `PASS | FAIL | UNKNOWN | STALE | ERROR | +NOT_APPLICABLE`, and the reason code `INVALID_POLICY` returned for an empty required set; +- the coined terms **protocol-calibrated predicate**, **decisive evidence +coverage**, **decisive conformance**, and **non-stale-label fraction**, each defined at first use; +- the term **frozen-oracle packet** for BP-001: the prompt-response evaluation +whose oracle and semantic rubric were fixed before collection and withheld from responders; the term does not imply blinded assignment or blinded assessment; +- the three-lane capacity vector of A.6, naming observation, settlement, and +recovery as separately metered lanes that are never summed. + +An implementation that adopts this protocol may reproduce these values under the license. Attribution and identification of modifications are license obligations, separate from any technical identity check. + +## C. Artifact index +Full SHA-256 values for every digest abbreviated in the text. The table separates public file bytes, derived outputs, and declared digests because they have different verification ceilings. + +Verification note: `REPRODUCE.md` gives the clean-clone procedure for this release packet. Its offline Python and JavaScript verifiers cover the included allowlisted bytes. For external repository rows, check out the named commit and hash the exact file bytes with a local SHA-256 tool. Rows identified only by retained source ID are not public inputs; their digests bind the bytes inspected locally without exposing a workstation path. The projection-root row is reproduced by the named verifier, not by hashing that script. The refusal corpus row cannot be recomputed from the public repository because the source bytes are absent. No single command can reproduce public, retained, and derived rows with different access boundaries. + +**Table 12. Public locators, retained source IDs, and expected digests. Repository abbreviations are RL for Resilience-Ledger, TS for the-stable, and TR for typed-refusal-harness.** + +- **Atlas data-sync contract** - Exact locator and status public blob: RL@275d0b3e7474governance/contracts/atlas-data-sync.contract.v2.json; Expected SHA-256 or root 7366c7042ec2e40a501fe091f9367eb5e8e8449763b69afadf29762864d58263 +- **Atlas runtime contract** - Exact locator and status public blob: RL@275d0b3e7474governance/contracts/atlas-runtime-contract.v1.json; Expected SHA-256 or root 7cd8c2a89f6df20995789f066643240a4cbcbc3ca67d2dc1cc4c71129b22ffd5 +- **Production observation 000001** - Exact locator and status public blob: RL@275d0b3e7474governance/ledger/events/deployment/000001-wp0-production-observation.json; Expected SHA-256 or root 34bde4ec2eb4d1bfb70b8d44df6439cb295bd1dc1293df0ae47490193ad3fa97 +- **Production observation 000002** - Exact locator and status public blob: RL@275d0b3e7474governance/ledger/events/deployment/000002-public-explanation-production-observed.json; Expected SHA-256 or root 4917a927727e3b0cc03cd057100a698ccc18e51751f69dd33f5bed14344fa24f +- **STP v1.2 release manifest** - Exact locator and status public blob: RL@275d0b3e7474research/stp-v1.2/release-manifest.json; Expected SHA-256 or root 2f95ed233a20060d1cbca3fae555410732242b26d9fb08afe482bc3390077704 +- **Cross-language projection root** - Exact locator and status derived output: RL@275d0b3e7474node governance/harnesses/verify-replayers.js; Expected SHA-256 or root 22852b5a3025d4ed7ee1d26cc4efcd51ae2e3e02ba2a20332c2a09827d6462ca +- **Refusal corpus, US Code Title 29** - Exact locator and status declared only: TR@721a824c9f73data/arms.json#corpus.sha256; source bytes absent; Expected SHA-256 or root 188ab1c50a46f0dd2ff32aaa5f65c759a07710e052d297644b1a8f6b58ff413d +- **Replication registration record** - Exact locator and status public blob: TS@77408db59cadexperiments/replication-2026-07-17/PREREGISTRATION.md; Expected SHA-256 or root eff780cff6a4522370af2f00d01a7dc121ab143677f805cbdc865620dad7820b +- **Replication decision logs** - Exact locator and status public blob: TS@77408db59cadexperiments/replication-2026-07-17/decision-logs.json; Expected SHA-256 or root 9fb48b2c0a837f91581c5faf5a043126348b6f86e64bf2383182f65978ffdca6 +- **Generic activation dataset** - Exact locator and status retained source DA-DATASET-001, 98,769 bytes; synthetic input not included in this minimized packet; Expected SHA-256 or root a2dece0b00e9659e3f50df307bd41dedc722a1c5b93b16153f616d1f2b58a179 +- **Generic activation checker config** - Exact locator and status retained source DA-CONFIG-001, 540 bytes; configuration not included in this minimized packet; Expected SHA-256 or root 7d6545f4d5cfa603b33f94ef42f747e4bf5e98631edfef30896cb5d24fb31c4d +- **Generic activation analysis** - Exact locator and status owner-review packet, 2,737 bytesevidence/device-activation/expected-analysis.json; Expected SHA-256 or root 7c550d125d383f7238ff936c7d05a3815ceb35132326253b973562fbca4b0a80 +- **Generic activation receipt** - Exact locator and status owner-review packet, 3,158 bytesevidence/device-activation/BUILD-RECEIPT-000001.md; Expected SHA-256 or root ee60b9aa4baa0286fb5899255380d6bf9772ca9240354bddc3b1a75fce1b9ab6 +- **Transition-stable quotient report** - Exact locator and status owner-review packet, 2,627 bytesevidence/transition-stable-quotient/expected-report.json; Expected SHA-256 or root 1b0e78adcac732561a0263ef2704d53b397597c502f81e88a0999a37232df183 +- **Transition-stable partition over frozen case IDs** - Exact locator and status derived output: stablePartitionSha256 in the transition-stable quotient report; Expected SHA-256 or root 2f129b2ac6c060d253831dbded1810cfd64b030fa6b8a0514d6e048fc7086187 +- **Transition-stable quotient receipt** - Exact locator and status owner-review packet, 4,016 bytesevidence/transition-stable-quotient/BUILD-RECEIPT-000001.md; Expected SHA-256 or root 4d0b0f50c361c51734db51a786fdc40b85de591e077d295677dbd40d63967514 +- **BP-001 prompt** - Exact locator and status owner-review packet, 1,662 bytesevidence/blind-prompt/PROMPT.md; legacy locator retained for receipt continuity; Expected SHA-256 or root 6b0628ef41bdf3b8d871238aa39ac44af43576887d5e0b1ed44ad8e7cdeccaf1 +- **BP-001 response schema** - Exact locator and status retained source BP-SCHEMA-001, 1,808 bytes; not included in this minimized packet; Expected SHA-256 or root 3656a398b63255eefc2121327da65884cca365a965f5601d6eab18e33aa0a505 +- **BP-001 run manifest** - Exact locator and status retained source BP-RUN-MANIFEST-001, 2,175 bytes; not included in this minimized packet; Expected SHA-256 or root 5e104bff1ccd4cffc684667f84783a06414cfb7177da1b43717f0c90145e2f63 +- **BP-001 evaluator report** - Exact locator and status retained source BP-EVALUATOR-001, 20,945 bytes; quote-bearing report not included; Expected SHA-256 or root de2c28735762a153602fc6e4bb777520c2aa3c687837e3f64b6277c459d67fe9 +- **BP-001 packet receipt** - Exact locator and status retained source BP-RECEIPT-001, 4,488 bytes; private packet receipt not included; Expected SHA-256 or root 537e8cc13e8425e53304dd22637df6d186efa4df0be0f910a747b5f78632c815 +- **Lean query quotient source** - Exact locator and status owner-review packet, standalone module, 3,791 bytesevidence/lean-query-quotient/QueryQuotient.lean; Expected SHA-256 or root cfbb166202ade30abc0c79287ff8c1acf216e91a863121ade923218caede9896 +- **Lean query quotient compile receipt** - Exact locator and status owner-review packet, 4,233 bytesevidence/lean-query-quotient/BUILD-RECEIPT-000005.md; Expected SHA-256 or root 8cdb9da9a9ddaba90c63390f1e94d11e18ca32f7d2a95b46b6ce3e1a27de79b2 + +## D. Reproduction and revision lineage + +Clean-clone packet verification is documented in `REPRODUCE.md`. From a full Git checkout at the release commit or tag, the offline Python and JavaScript verifiers must independently return the same canonical report over the declared file allowlist, raw byte lengths, SHA-256 digests, and payload root. The repository-root and packet-local `.gitattributes` rules disable line-ending conversion so a normal Windows checkout does not create a false byte mismatch. A clean-clone test with `core.autocrlf=true` passed before this revision was prepared. This verifies packet identity only; it does not rebuild the PDF, recover excluded inputs, independently replicate an experiment, or establish claim truth, originality, authority, safety, or fitness. TESTED + +Demotion test 6 now has a machine-readable review surface. The release contains a marker-blind `claims.json`, a separate `author-markers.json`, and `reviewer-markers.template.json`. The register excludes the four Table 1 legend examples and assigns a release-scoped ID to every substantive marked unit. A reviewer receives the claims, their embedded neutral marker policy, and registered accessible sources before seeing the author key. Matching markers agree; a mismatch becomes `CONTESTED/HOLD`; a missing assignment is `INCOMPLETE`. No comparison can auto-promote a claim. Because the marked manuscript is public, the separation is a procedural blind, not cryptographic secrecy. + +`CHANGELOG.md` retains the fuller packet history. In summary: owner-review.1 created the minimized public packet; owner-review.2 dispositioned private editorial feedback and tightened claim ceilings; owner-review.3 added the standalone Lean source and receipt plus the statistical corrections; and owner-review.4 standardizes BP-001 terminology, states the Lean chronology boundary, adds clean-clone instructions and packet-local line-ending protection, and makes the external marker-reassignment test executable. Each release receipt is append-only and names its predecessor. A revision identifier describes artifact lineage, not scientific priority or acceptance. + +Jake Tiller · From Model Output to Accepted State · owner-review draft v4, 15 August 2026 · intended for release under CC BY 4.0. This draft is not a certification, a deployment authorization, or a claim of independent validation. diff --git a/research/from-model-output-to-accepted-state/paper/From-Model-Output-to-Accepted-State-Owner-Review-v4.pdf b/research/from-model-output-to-accepted-state/paper/From-Model-Output-to-Accepted-State-Owner-Review-v4.pdf new file mode 100644 index 0000000..edaeb67 Binary files /dev/null and b/research/from-model-output-to-accepted-state/paper/From-Model-Output-to-Accepted-State-Owner-Review-v4.pdf differ diff --git a/research/from-model-output-to-accepted-state/release-manifest.json b/research/from-model-output-to-accepted-state/release-manifest.json new file mode 100644 index 0000000..89351db --- /dev/null +++ b/research/from-model-output-to-accepted-state/release-manifest.json @@ -0,0 +1,309 @@ +{ + "schema": "accepted-state-owner-review-release.v1", + "release_id": "from-model-output-to-accepted-state-0.1.0-owner-review.4", + "status": "OWNER_REVIEW", + "recorded_date": "2026-08-15", + "hash_basis": "SHA-256 of raw file bytes", + "excludes": [ + "release-manifest.json self-reference", + ".tmp", + "__pycache__" + ], + "payload_root": "c9989cee521959afba896ee1cc15f6e40cbe883f29a779b02f9720b3d71935cf", + "files": { + ".gitattributes": { + "bytes": 239, + "media_type": "application/octet-stream", + "role": "release-documentation", + "sha256": "7ccb36d6cee337107bbdd2ac846114861d66e81b803cfead82bbb8e639598a54", + "status": "OWNER_REVIEW" + }, + "BOUNDARIES.md": { + "bytes": 3446, + "media_type": "text/markdown", + "role": "release-documentation", + "sha256": "7c424c8572c2a2569e87c642723c026aa47b378bfc1b47f67673a0ce04d5eb67", + "status": "OWNER_REVIEW" + }, + "CHANGELOG.md": { + "bytes": 2014, + "media_type": "text/markdown", + "role": "release-documentation", + "sha256": "27002ddfb2c569c2ec37253c91f44805e111551cf3090172ba7a8aaa5c5d6d2d", + "status": "OWNER_REVIEW" + }, + "CITATION.cff": { + "bytes": 1107, + "media_type": "application/yaml", + "role": "release-documentation", + "sha256": "2fc22ff66c18df0178c6e9e28519035e928cf28e7902a981da50222f9c21157a", + "status": "OWNER_REVIEW" + }, + "LICENSE.txt": { + "bytes": 1037, + "media_type": "text/plain", + "role": "release-documentation", + "sha256": "c86594fff80816a5443d6b26149d7a6b791338c490ca822a201deea0dab52b6f", + "status": "OWNER_REVIEW" + }, + "README.md": { + "bytes": 5869, + "media_type": "text/markdown", + "role": "release-documentation", + "sha256": "6b15e94f87b3d399ea12028077ed65291db575e40d648b359e97aca9b0f95a6f", + "status": "OWNER_REVIEW" + }, + "RELATED-WORK.md": { + "bytes": 1360, + "media_type": "text/markdown", + "role": "release-documentation", + "sha256": "f2d56a7337ab424eee0f914bffe23a4ae5a4d1f82a62049a74510c226779043a", + "status": "OWNER_REVIEW" + }, + "REPRODUCE.md": { + "bytes": 3408, + "media_type": "text/markdown", + "role": "release-documentation", + "sha256": "dde7934c3a54cc2b1b1156314dbbcd22d1855cd448f0478bfa770678a8cbffcf", + "status": "OWNER_REVIEW" + }, + "author-markers.json": { + "bytes": 25533, + "media_type": "application/json", + "role": "release-documentation", + "sha256": "6d4670d9841c70df6e32c9ff78eb381461430be437a19f0b6c5f66402237494c", + "status": "OWNER_REVIEW" + }, + "claims.json": { + "bytes": 78962, + "media_type": "application/json", + "role": "release-documentation", + "sha256": "48e1d732cb8fd59ff54f47b996a2bc48ff25b62b386ba411e364f49e4b03817f", + "status": "OWNER_REVIEW" + }, + "content_a.py": { + "bytes": 22978, + "media_type": "text/x-python", + "role": "paper-source", + "sha256": "02dafb2397764c730f8d8f007de502984e86615151ec82b9d4fbeff4eabff317", + "status": "OWNER_REVIEW" + }, + "content_b.py": { + "bytes": 27564, + "media_type": "text/x-python", + "role": "paper-source", + "sha256": "7802aa784bfdfedf33a72034b70f79a995a39c9e98ee8a502e37a9596ee098d0", + "status": "OWNER_REVIEW" + }, + "content_c.py": { + "bytes": 79303, + "media_type": "text/x-python", + "role": "paper-source", + "sha256": "80bab59a91296a91e98a271b036835c5018e2f9125f8b3474ce947f2a34ee059", + "status": "OWNER_REVIEW" + }, + "evidence/RELEASE-BUILD-RECEIPT-000001.md": { + "bytes": 2708, + "media_type": "text/markdown", + "role": "bounded-evidence", + "sha256": "0e0a1c8ef73bfdd6797bb1dcdb4168264d2e9f5bd3193a1cb7ca3c0f9b175aa3", + "status": "OWNER_REVIEW" + }, + "evidence/RELEASE-BUILD-RECEIPT-000002.md": { + "bytes": 6536, + "media_type": "text/markdown", + "role": "bounded-evidence", + "sha256": "4f43366e22beeae29ce4d48d80f910ad5f93b30045b6df738412caa94dacadb5", + "status": "OWNER_REVIEW" + }, + "evidence/RELEASE-BUILD-RECEIPT-000003.md": { + "bytes": 6977, + "media_type": "text/markdown", + "role": "bounded-evidence", + "sha256": "a38b50371df75f62348f3cadebd37c766af3ba869a7cd4ae9682cf2d29e951fc", + "status": "OWNER_REVIEW" + }, + "evidence/RELEASE-BUILD-RECEIPT-000004.md": { + "bytes": 7151, + "media_type": "text/markdown", + "role": "bounded-evidence", + "sha256": "a56132ab18f41c714a5e09476fbd368794fb7176e191e9132b29f715c3a81c0d", + "status": "OWNER_REVIEW" + }, + "evidence/blind-prompt/PROMPT.md": { + "bytes": 1662, + "media_type": "text/markdown", + "role": "bounded-evidence", + "sha256": "6b0628ef41bdf3b8d871238aa39ac44af43576887d5e0b1ed44ad8e7cdeccaf1", + "status": "OWNER_REVIEW" + }, + "evidence/blind-prompt/PUBLIC-SUMMARY.md": { + "bytes": 1925, + "media_type": "text/markdown", + "role": "bounded-evidence", + "sha256": "b04998e04354f0027a42aa2f082b4d934bd50a76aa387e22d73705bde5fe95c4", + "status": "OWNER_REVIEW" + }, + "evidence/device-activation/BUILD-RECEIPT-000001.md": { + "bytes": 3158, + "media_type": "text/markdown", + "role": "bounded-evidence", + "sha256": "ee60b9aa4baa0286fb5899255380d6bf9772ca9240354bddc3b1a75fce1b9ab6", + "status": "OWNER_REVIEW" + }, + "evidence/device-activation/expected-analysis.json": { + "bytes": 2737, + "media_type": "application/json", + "role": "bounded-evidence", + "sha256": "7c550d125d383f7238ff936c7d05a3815ceb35132326253b973562fbca4b0a80", + "status": "OWNER_REVIEW" + }, + "evidence/editorial-review/PUBLIC-DISPOSITION.md": { + "bytes": 5413, + "media_type": "text/markdown", + "role": "bounded-evidence", + "sha256": "3bdf8723fa8d6d3d696a363316e627a392f86204c08129640b42c94edb056223", + "status": "OWNER_REVIEW" + }, + "evidence/lean-query-quotient/BUILD-RECEIPT-000005.md": { + "bytes": 4233, + "media_type": "text/markdown", + "role": "bounded-evidence", + "sha256": "8cdb9da9a9ddaba90c63390f1e94d11e18ca32f7d2a95b46b6ce3e1a27de79b2", + "status": "OWNER_REVIEW" + }, + "evidence/lean-query-quotient/QueryQuotient.lean": { + "bytes": 3791, + "media_type": "application/octet-stream", + "role": "bounded-evidence", + "sha256": "cfbb166202ade30abc0c79287ff8c1acf216e91a863121ade923218caede9896", + "status": "OWNER_REVIEW" + }, + "evidence/reproduction/WINDOWS-CLEAN-CLONE-V3.md": { + "bytes": 3453, + "media_type": "text/markdown", + "role": "bounded-evidence", + "sha256": "7f5476957fad26c621a730dba01a441a17262bf6a6b3d89a3c3f1168f9c6f7c2", + "status": "OWNER_REVIEW" + }, + "evidence/transition-stable-quotient/BUILD-RECEIPT-000001.md": { + "bytes": 4016, + "media_type": "text/markdown", + "role": "bounded-evidence", + "sha256": "4d0b0f50c361c51734db51a786fdc40b85de591e077d295677dbd40d63967514", + "status": "OWNER_REVIEW" + }, + "evidence/transition-stable-quotient/expected-report.json": { + "bytes": 2627, + "media_type": "application/json", + "role": "bounded-evidence", + "sha256": "1b0e78adcac732561a0263ef2704d53b397597c502f81e88a0999a37232df183", + "status": "OWNER_REVIEW" + }, + "figures.py": { + "bytes": 20056, + "media_type": "text/x-python", + "role": "paper-source", + "sha256": "00ddc57b44452616d4f1478f661bdc47beed9acf01fd3989f94e8751070ea239", + "status": "OWNER_REVIEW" + }, + "figures/fig1-boundary.svg": { + "bytes": 4567, + "media_type": "image/svg+xml", + "role": "paper-source", + "sha256": "5f03bcee42dfeae18b761227cf8bd0ee11daf72cc837c99d53ef64c7d046f629", + "status": "OWNER_REVIEW" + }, + "figures/fig2-lifecycle.svg": { + "bytes": 8496, + "media_type": "image/svg+xml", + "role": "paper-source", + "sha256": "0f8f739831c86259d8cca47493436cb729b5b6714a718d764eaba84753249e89", + "status": "OWNER_REVIEW" + }, + "figures/fig3-stores.svg": { + "bytes": 3390, + "media_type": "image/svg+xml", + "role": "paper-source", + "sha256": "e2d39da854399b24e695dcd90a38ca12903709c586c9a8bbd253fa270b720e00", + "status": "OWNER_REVIEW" + }, + "figures/fig4-signals.svg": { + "bytes": 4999, + "media_type": "image/svg+xml", + "role": "paper-source", + "sha256": "2d7c3e427c64835d8419375aff44bab7cffe3d17660eb46a268c311d3b69ee49", + "status": "OWNER_REVIEW" + }, + "figures/fig5-repair.svg": { + "bytes": 6147, + "media_type": "image/svg+xml", + "role": "paper-source", + "sha256": "19d03dd2a9c4ee55229a7ef61b94c2e8119f28f805a72b55514d07ef02a1d0d3", + "status": "OWNER_REVIEW" + }, + "paper/From-Model-Output-to-Accepted-State-Owner-Review-v4-LinkedIn.md": { + "bytes": 112945, + "media_type": "text/markdown", + "role": "paper-output", + "sha256": "7da62740394ffe5e2200355daf836bb76e9a5171677c25fcec839d398ac39916", + "status": "OWNER_REVIEW" + }, + "paper/From-Model-Output-to-Accepted-State-Owner-Review-v4.pdf": { + "bytes": 996152, + "media_type": "application/pdf", + "role": "paper-output", + "sha256": "1af2d25e29670862bac09e185c9bb811a0b043c4a9e27b68917568ea93e63bf8", + "status": "OWNER_REVIEW" + }, + "reviewer-markers.template.json": { + "bytes": 10493, + "media_type": "application/json", + "role": "release-documentation", + "sha256": "0891b5eb03271cc9591dd70dca9cb4f14fbb2fa4346d0ead2154b523cf37087b", + "status": "OWNER_REVIEW" + }, + "style.py": { + "bytes": 7972, + "media_type": "text/x-python", + "role": "paper-source", + "sha256": "2465ab980b097a11bad0d7b343b64fe3aa46c809292577e14bef555dfd5e1bba", + "status": "OWNER_REVIEW" + }, + "tools/update_claim_register.py": { + "bytes": 25787, + "media_type": "text/x-python", + "role": "verification-tool", + "sha256": "c1b0a95a1c986860832e049e8a4b6b3e67127244d29957307678efa1ce25a271", + "status": "OWNER_REVIEW" + }, + "tools/update_manifest.py": { + "bytes": 3130, + "media_type": "text/x-python", + "role": "verification-tool", + "sha256": "2afbe95dbac3c6005de120030d25c0208ec6b54d87c6a53d79601f2d4481cc74", + "status": "OWNER_REVIEW" + }, + "tools/verify-release.mjs": { + "bytes": 13651, + "media_type": "text/javascript", + "role": "verification-tool", + "sha256": "0381bc73a9beb2cf63e075975f06dec0678f6720c452b218a83f450de33a1c47", + "status": "OWNER_REVIEW" + }, + "tools/verify.ps1": { + "bytes": 2288, + "media_type": "text/plain", + "role": "verification-tool", + "sha256": "76ef747623d5bc4de171a48fab8cf8b0a5d0b5c91f11e5996eb2442371afc974", + "status": "OWNER_REVIEW" + }, + "tools/verify_release.py": { + "bytes": 14729, + "media_type": "text/x-python", + "role": "verification-tool", + "sha256": "f58769ca2873e6912503fb8fd41438d7b66078bce4865cd06aaa44803285b1b9", + "status": "OWNER_REVIEW" + } + } +} diff --git a/research/from-model-output-to-accepted-state/reviewer-markers.template.json b/research/from-model-output-to-accepted-state/reviewer-markers.template.json new file mode 100644 index 0000000..31c391b --- /dev/null +++ b/research/from-model-output-to-accepted-state/reviewer-markers.template.json @@ -0,0 +1,442 @@ +{ + "schema_version": "fmota-marker-assignments.v1", + "claim_register_sha256": "48e1d732cb8fd59ff54f47b996a2bc48ff25b62b386ba411e364f49e4b03817f", + "assignment_role": "EXTERNAL_REVIEW", + "assignment_set_id": "replace-with-reviewer-id", + "assignments": [ + { + "claim_id": "FMOTA-V4-CLM-001", + "marker": null, + "rationale": "", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-002", + "marker": null, + "rationale": "", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-003", + "marker": null, + "rationale": "", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-004", + "marker": null, + "rationale": "", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-005", + "marker": null, + "rationale": "", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-006", + "marker": null, + "rationale": "", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-007", + "marker": null, + "rationale": "", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-008", + "marker": null, + "rationale": "", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-009", + "marker": null, + "rationale": "", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-010", + "marker": null, + "rationale": "", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-011", + "marker": null, + "rationale": "", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-012", + "marker": null, + "rationale": "", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-013", + "marker": null, + "rationale": "", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-014", + "marker": null, + "rationale": "", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-015", + "marker": null, + "rationale": "", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-016", + "marker": null, + "rationale": "", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-017", + "marker": null, + "rationale": "", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-018", + "marker": null, + "rationale": "", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-019", + "marker": null, + "rationale": "", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-020", + "marker": null, + "rationale": "", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-021", + "marker": null, + "rationale": "", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-022", + "marker": null, + "rationale": "", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-023", + "marker": null, + "rationale": "", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-024", + "marker": null, + "rationale": "", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-025", + "marker": null, + "rationale": "", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-026", + "marker": null, + "rationale": "", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-027", + "marker": null, + "rationale": "", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-028", + "marker": null, + "rationale": "", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-029", + "marker": null, + "rationale": "", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-030", + "marker": null, + "rationale": "", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-031", + "marker": null, + "rationale": "", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-032", + "marker": null, + "rationale": "", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-033", + "marker": null, + "rationale": "", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-034", + "marker": null, + "rationale": "", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-035", + "marker": null, + "rationale": "", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-036", + "marker": null, + "rationale": "", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-037", + "marker": null, + "rationale": "", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-038", + "marker": null, + "rationale": "", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-039", + "marker": null, + "rationale": "", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-062", + "marker": null, + "rationale": "", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-040", + "marker": null, + "rationale": "", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-041", + "marker": null, + "rationale": "", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-042", + "marker": null, + "rationale": "", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-043", + "marker": null, + "rationale": "", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-044", + "marker": null, + "rationale": "", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-045", + "marker": null, + "rationale": "", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-046", + "marker": null, + "rationale": "", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-047", + "marker": null, + "rationale": "", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-048", + "marker": null, + "rationale": "", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-049", + "marker": null, + "rationale": "", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-050", + "marker": null, + "rationale": "", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-051", + "marker": null, + "rationale": "", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-052", + "marker": null, + "rationale": "", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-053", + "marker": null, + "rationale": "", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-054", + "marker": null, + "rationale": "", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-055", + "marker": null, + "rationale": "", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-056", + "marker": null, + "rationale": "", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-057", + "marker": null, + "rationale": "", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-058", + "marker": null, + "rationale": "", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-059", + "marker": null, + "rationale": "", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-060", + "marker": null, + "rationale": "", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + }, + { + "claim_id": "FMOTA-V4-CLM-061", + "marker": null, + "rationale": "", + "relied_on_source_ids": [], + "unavailable_source_ids": [] + } + ] +} diff --git a/research/from-model-output-to-accepted-state/style.py b/research/from-model-output-to-accepted-state/style.py new file mode 100644 index 0000000..5a4631f --- /dev/null +++ b/research/from-model-output-to-accepted-state/style.py @@ -0,0 +1,321 @@ +"""Print stylesheet for the paper. + +Targets Chrome's print engine. Letter, single column, generous measure. +Every status color is paired with a text label so the page survives grayscale. +""" + +CSS = r""" +@page { + size: Letter; + margin: 19mm 20mm 20mm 20mm; + @bottom-center { content: counter(page); } +} +@page :first { margin-top: 24mm; } + +:root { + --ink: #101828; + --body: #1C2534; + --muted: #5A6474; + --faint: #8A93A1; + --rule: #D5DAE2; + --hair: #E7EAEF; + --surface: #F5F7FA; + --accent: #1D4E89; + --accent-soft: #E8F0F8; + --pass: #2C6E49; + --hold: #9A5B0B; + --stop: #A32E22; + --serif: Constantia, Cambria, Georgia, "Times New Roman", serif; + --sans: "Segoe UI", "Helvetica Neue", Arial, sans-serif; + --mono: Consolas, "Cascadia Mono", "Courier New", monospace; +} + +* { box-sizing: border-box; } + +body { + font-family: var(--serif); + font-size: 10.4pt; + line-height: 1.52; + color: var(--body); + margin: 0; + hyphens: auto; + -webkit-hyphens: auto; + text-rendering: optimizeLegibility; + widows: 3; + orphans: 3; +} + +p { margin: 0 0 8.5pt; text-align: justify; } +p.lead { text-align: left; } + +/* ---------------------------------------------------------------- title */ +.title-block { margin-bottom: 16pt; } +.eyebrow { + font-family: var(--sans); + font-size: 7.6pt; + letter-spacing: 1.5pt; + text-transform: uppercase; + color: var(--accent); + font-weight: 600; + margin-bottom: 9pt; +} +h1.title { + font-family: var(--serif); + font-size: 25pt; + line-height: 1.14; + font-weight: 700; + color: var(--ink); + margin: 0 0 5pt; + letter-spacing: -0.3pt; +} +.subtitle { + font-size: 13pt; + color: var(--muted); + font-style: italic; + margin: 0 0 14pt; +} +.byline { + font-family: var(--sans); + font-size: 9pt; + color: var(--body); + border-top: 1.4pt solid var(--ink); + border-bottom: 0.5pt solid var(--rule); + padding: 7pt 0; + margin-bottom: 14pt; +} +.byline strong { color: var(--ink); } +.byline .meta { color: var(--faint); } + +/* ------------------------------------------------------------- headings */ +h2 { + font-family: var(--sans); + font-size: 13pt; + font-weight: 600; + color: var(--ink); + margin: 20pt 0 7pt; + padding-bottom: 3.5pt; + border-bottom: 0.8pt solid var(--rule); + break-after: avoid; + letter-spacing: -0.15pt; +} +h2 .num { + color: var(--accent); + font-variant-numeric: tabular-nums; + margin-right: 7pt; + font-weight: 700; +} +h3 { + font-family: var(--sans); + font-size: 10.4pt; + font-weight: 600; + color: var(--ink); + margin: 13pt 0 5pt; + break-after: avoid; +} +h4 { + font-family: var(--sans); + font-size: 9.4pt; + font-weight: 600; + color: var(--accent); + margin: 11pt 0 4pt; + break-after: avoid; + letter-spacing: 0.2pt; +} + +/* -------------------------------------------------------------- abstract */ +.abstract { + background: var(--surface); + border-left: 2.5pt solid var(--accent); + padding: 11pt 14pt 4pt; + margin: 0 0 13pt; + font-size: 9.8pt; +} +.abstract h4 { margin-top: 0; } + +/* ---------------------------------------------------------------- chips */ +.chip { + display: inline-block; + font-family: var(--sans); + font-size: 6.9pt; + font-weight: 700; + letter-spacing: 0.8pt; + padding: 1.3pt 4.5pt; + border-radius: 2.5pt; + vertical-align: 1.5pt; + white-space: nowrap; + border: 0.6pt solid; +} +.chip-tested { color: #1F5137; background: #E4F0E9; border-color: #9EC4AF; } +.chip-observed { color: #1B4771; background: #E4EEF8; border-color: #A3BEDB; } +.chip-proposed { color: #7A4708; background: #F8EEDC; border-color: #D9BC8A; } +.chip-open { color: #7E251B; background: #F8E6E3; border-color: #DDAAA3; } + +/* --------------------------------------------------------------- tables */ +table { + width: 100%; + border-collapse: collapse; + font-family: var(--sans); + font-size: 8.6pt; + margin: 9pt 0 5pt; + break-inside: auto; + page-break-inside: auto; +} +caption { + caption-side: top; + text-align: left; + font-family: var(--sans); + font-size: 8.6pt; + color: var(--muted); + padding-bottom: 4pt; + line-height: 1.4; + break-inside: avoid; + page-break-inside: avoid; + break-after: avoid; +} +caption b { color: var(--ink); font-weight: 600; } +th { + text-align: left; + font-weight: 600; + color: var(--ink); + border-bottom: 1pt solid var(--ink); + padding: 4pt 6pt 3.5pt; + vertical-align: bottom; +} +td { + padding: 3.6pt 6pt; + border-bottom: 0.5pt solid var(--hair); + vertical-align: top; + color: var(--body); +} +tbody tr:last-child td { border-bottom: 0.8pt solid var(--rule); } +thead { display: table-header-group; } +tfoot { display: table-footer-group; } +tr { break-inside: avoid; page-break-inside: avoid; } +td.num, th.num { text-align: right; font-variant-numeric: tabular-nums; } +td.mono { + font-family: var(--mono); + font-size: 7.9pt; + overflow-wrap: anywhere; + word-break: break-all; +} +tr.total td { font-weight: 700; color: var(--ink); border-top: 0.8pt solid var(--rule); } +.artifact-index { font-size: 7.9pt; line-height: 1.3; } +.artifact-index td { padding-top: 2.2pt; padding-bottom: 2.2pt; } +.artifact-index td.mono { font-size: 7.3pt; } +.tnote { + font-family: var(--sans); + font-size: 8.1pt; + color: var(--muted); + margin: 2pt 0 10pt; + line-height: 1.45; +} + +/* ------------------------------------------------------------- formulas */ +.formula { + border-left: 2pt solid var(--accent); + background: #FBFCFD; + padding: 8pt 12pt; + margin: 9pt 0; + break-inside: avoid; +} +.formula .eq { + font-family: var(--mono); + font-size: 9.2pt; + color: var(--ink); + line-height: 1.62; + white-space: pre-wrap; +} +.formula .where { + font-family: var(--sans); + font-size: 8pt; + color: var(--muted); + margin-top: 5pt; + line-height: 1.48; +} +.formula .where b { color: var(--ink); font-weight: 600; } + +/* --------------------------------------------------------------- blocks */ +.callout { + border: 0.8pt solid var(--rule); + border-top: 2pt solid var(--accent); + background: #FCFDFE; + padding: 9pt 13pt 3pt; + margin: 11pt 0; + break-inside: avoid; +} +.callout h4 { margin-top: 0; } +.callout.split { break-inside: auto; } +.callout.warn { border-top-color: var(--hold); } +.callout.warn h4 { color: var(--hold); } +.callout.stop { border-top-color: var(--stop); } +.callout.stop h4 { color: var(--stop); } + +blockquote { + margin: 9pt 0; + padding: 0 0 0 12pt; + border-left: 2pt solid var(--rule); + color: var(--muted); + font-style: italic; +} +blockquote p { text-align: left; } + +ul, ol { margin: 0 0 8.5pt; padding-left: 15pt; } +li { margin-bottom: 3.5pt; } +li::marker { color: var(--accent); } + +code { + font-family: var(--mono); + font-size: 8.6pt; + color: var(--ink); + background: var(--surface); + padding: 0.5pt 2.5pt; + border-radius: 2pt; +} +.digest { font-family: var(--mono); font-size: 8pt; color: var(--accent); } +a { + color: var(--accent); + text-decoration: underline; + text-decoration-thickness: 0.5pt; + text-underline-offset: 1.2pt; + overflow-wrap: anywhere; +} +a:visited { color: var(--accent); } + +/* -------------------------------------------------------------- figures */ +figure { margin: 12pt 0; break-inside: avoid; } +figure img { width: 100%; height: auto; display: block; } +figure svg { + width: 100%; + height: auto; + display: block; + margin-left: 0; +} +figcaption { + font-family: var(--sans); + font-size: 8pt; + color: var(--muted); + margin-top: 5pt; + line-height: 1.45; +} +figcaption b { color: var(--ink); font-weight: 600; } + +/* ----------------------------------------------------------- references */ +.refs { font-size: 8.7pt; line-height: 1.46; } +.refs ol { padding-left: 17pt; } +.refs li { margin-bottom: 3.6pt; break-inside: avoid; } +.refs .src { color: var(--faint); font-family: var(--mono); font-size: 8pt; } + +.footer-note { + font-family: var(--sans); + font-size: 7.8pt; + color: var(--faint); + border-top: 0.5pt solid var(--rule); + padding-top: 6pt; + margin-top: 16pt; +} + +.break { break-before: page; } +#methods { break-before: auto; } +.avoid { break-inside: avoid; } +h2, h3, h4 { page-break-after: avoid; } +""" diff --git a/research/from-model-output-to-accepted-state/tools/update_claim_register.py b/research/from-model-output-to-accepted-state/tools/update_claim_register.py new file mode 100644 index 0000000..9eb5770 --- /dev/null +++ b/research/from-model-output-to-accepted-state/tools/update_claim_register.py @@ -0,0 +1,610 @@ +"""Generate the marker-blind claim register and separate assignment files. + +The manuscript source is authoritative. Four marker examples in Table 1 define the +contract and are excluded; every other marker becomes one claim record. The reviewer +input contains claim text and registered review sources, but not the author's marker. +""" + +from __future__ import annotations + +import hashlib +import html +import importlib +import json +import re +import sys +from dataclasses import dataclass, field +from html.parser import HTMLParser +from pathlib import Path +from typing import Iterable + + +ROOT = Path(__file__).resolve().parents[1] +sys.path.insert(0, str(ROOT)) + +A = importlib.import_module("content_a") +B = importlib.import_module("content_b") +C = importlib.import_module("content_c") + +FRAGMENTS = [ + ("content_a.py", "FRONT", A.FRONT), + ("content_a.py", "SUMMARY", A.SUMMARY), + ("content_a.py", "CLAIMS", A.CLAIMS), + ("content_a.py", "BOUNDARY", A.BOUNDARY), + ("content_a.py", "LIFECYCLE", A.LIFECYCLE), + ("content_b.py", "OBSERVATION", B.OBSERVATION), + ("content_b.py", "REPLAY", B.REPLAY), + ("content_b.py", "EVIDENCE", B.EVIDENCE), + ("content_c.py", "RESULTS", C.RESULTS), + ("content_c.py", "NEGATIVE", C.NEGATIVE), + ("content_c.py", "BOUNDARY_SECTION", C.BOUNDARY_SECTION), + ("content_c.py", "GUIDE", C.GUIDE), + ("content_c.py", "BACK", C.BACK), +] + +MARKERS = {"TESTED", "OBSERVED", "PROPOSED", "OPEN"} +SCHEMA = "fmota-claim-register.v1" +ASSIGNMENT_SCHEMA = "fmota-marker-assignments.v1" + + +def digest_bytes(data: bytes) -> str: + return hashlib.sha256(data).hexdigest() + + +def file_record(path: str, source_id: str, *, status: str = "VERIFIED_BYTES") -> dict: + data = (ROOT / path).read_bytes() + return { + "source_id": source_id, + "kind": "packet_file", + "path": path, + "expected_bytes": len(data), + "expected_sha256": digest_bytes(data), + "access": "PUBLIC_PACKET", + "verification_status": status, + } + + +def public_blob( + source_id: str, + repository: str, + commit: str, + path: str, + expected_bytes: int, + expected_sha256: str, +) -> dict: + return { + "source_id": source_id, + "kind": "public_git_blob", + "repository": repository, + "commit": commit, + "path": path, + "expected_bytes": expected_bytes, + "expected_sha256": expected_sha256, + "access": "PUBLIC_EXTERNAL", + "verification_status": "VERIFIED_BYTES", + } + + +@dataclass +class Node: + tag: str + attrs: dict[str, str] + parent: "Node | None" = None + children: list["Node | str"] = field(default_factory=list) + + +class TreeParser(HTMLParser): + def __init__(self) -> None: + super().__init__(convert_charrefs=True) + self.root = Node("root", {}) + self.stack = [self.root] + + def handle_starttag(self, tag: str, attrs: list[tuple[str, str | None]]) -> None: + node = Node(tag, {k: v or "" for k, v in attrs}, self.stack[-1]) + self.stack[-1].children.append(node) + self.stack.append(node) + + def handle_startendtag(self, tag: str, attrs: list[tuple[str, str | None]]) -> None: + node = Node(tag, {k: v or "" for k, v in attrs}, self.stack[-1]) + self.stack[-1].children.append(node) + + def handle_endtag(self, tag: str) -> None: + for index in range(len(self.stack) - 1, 0, -1): + if self.stack[index].tag == tag: + del self.stack[index:] + return + + def handle_data(self, data: str) -> None: + self.stack[-1].children.append(data) + + +def node_text(node: Node | str, *, omit_markers: bool = False) -> str: + if isinstance(node, str): + return node + classes = set(node.attrs.get("class", "").split()) + if omit_markers and node.tag == "span" and "chip" in classes: + return "" + return "".join(node_text(child, omit_markers=omit_markers) for child in node.children) + + +def normalized(text: str) -> str: + return " ".join(html.unescape(text).split()) + + +def walk(node: Node) -> Iterable[Node]: + yield node + for child in node.children: + if isinstance(child, Node): + yield from walk(child) + + +def ancestor(node: Node, tag: str) -> Node | None: + current = node.parent + while current is not None: + if current.tag == tag: + return current + current = current.parent + return None + + +def claim_unit(marker_node: Node) -> tuple[str, Node]: + row = ancestor(marker_node, "tr") + if row is not None: + return "table_row", row + paragraph = ancestor(marker_node, "p") + if paragraph is not None: + return "paragraph", paragraph + current = marker_node.parent + while current is not None: + if current.tag in {"div", "li", "blockquote"}: + return "block", current + current = current.parent + raise ValueError("claim marker has no supported parent unit") + + +def is_table_one_example(marker_node: Node) -> bool: + table = ancestor(marker_node, "table") + if table is None: + return False + captions = [n for n in walk(table) if n.tag == "caption"] + return any(normalized(node_text(n)).startswith("Table 1.") for n in captions) + + +CEILINGS = { + "TESTED": "Exact only within the registered artifact, fixture, command, or derivation; no external validity unless separately stated.", + "OBSERVED": "Observed in the named run or artifact only; no causal or general claim.", + "PROPOSED": "Design, definition, or protocol proposal only; not implementation or outcome evidence.", + "OPEN": "Unresolved; it cannot support acceptance, equivalence, or a positive operational claim.", +} + + +EXPLICIT_CLAIM_SOURCES: dict[int, list[str]] = { + 1: ["EV-PAPER-CONTEXT"], + 2: ["EV-PUBLIC-STP-COMMIT"], + 3: ["EV-DEVICE-ANALYSIS", "EV-DEVICE-RECEIPT", "EV-TRANSITION-REPORT", "EV-TRANSITION-RECEIPT", "EV-BP-PROMPT", "EV-BP-SUMMARY", "EV-BP-EVALUATOR", "EV-BP-RECEIPT", "EV-PUBLIC-STP-COMMIT"], + 4: ["EV-RL-LEDGER-LIB", "EV-RL-REPLAY-PY", "EV-RL-VERIFY-REPLAYERS", "EV-RL-GATE", "EV-RL-ATLAS-DATA-CONTRACT", "EV-RL-ATLAS-RUNTIME-CONTRACT", "EV-RL-OBSERVATION-000001"], + 5: ["EV-PUBLIC-STP-COMMIT"], + 6: ["EV-PAPER-CONTEXT"], + 7: ["EV-PAPER-CONTEXT"], + 8: ["EV-BP-PROMPT", "EV-BP-SUMMARY", "EV-PAPER-CONTEXT"], + 9: ["EV-RL-TREE-275D", "EV-PAPER-CONTEXT"], + 10: ["EV-PAPER-CONTEXT"], + 11: ["EV-PUBLIC-STP-COMMIT"], + 12: ["EV-PAPER-CONTEXT"], + 13: ["EV-PAPER-CONTEXT"], + 14: ["EV-PUBLIC-STP-COMMIT", "EV-PAPER-CONTEXT"], + 15: ["EV-PAPER-CONTEXT"], + 16: ["EV-PUBLIC-STP-COMMIT"], + 17: ["EV-PAPER-CONTEXT"], + 18: ["EV-PAPER-CONTEXT"], + 19: ["EV-RL-LEDGER-LIB", "EV-RL-REPLAY-PY", "EV-RL-VERIFY-REPLAYERS"], + 20: ["EV-RL-LEDGER-LIB", "EV-RL-REPLAY-PY", "EV-RL-VERIFY-REPLAYERS", "EV-RL-CI-GATES"], + 21: ["EV-PUBLIC-STP-COMMIT"], + 22: ["EV-PUBLIC-STP-COMMIT"], + 23: ["EV-RL-LEDGER-LIB", "EV-RL-REPLAY-PY", "EV-RL-VERIFY-REPLAYERS"], + 24: ["EV-PAPER-CONTEXT"], + 25: ["EV-PAPER-CONTEXT"], + 26: ["EV-PAPER-CONTEXT"], + 27: ["EV-RL-GATE"], + 28: ["EV-RL-LEDGER-LIB", "EV-RL-REPLAY-PY", "EV-RL-VERIFY-REPLAYERS", "EV-PAPER-CONTEXT"], + 29: ["EV-PUBLIC-STP-COMMIT"], + 30: ["EV-RL-LEDGER-LIB", "EV-RL-REPLAY-PY", "EV-RL-VERIFY-REPLAYERS"], + 31: ["EV-PAPER-CONTEXT"], + 32: ["EV-PAPER-CONTEXT"], + 33: ["EV-PAPER-CONTEXT"], + 34: ["EV-PAPER-CONTEXT"], + 35: ["EV-PAPER-CONTEXT"], + 36: ["EV-PAPER-CONTEXT"], + 37: ["EV-PAPER-CONTEXT"], + 38: ["EV-RL-GATE", "EV-PAPER-CONTEXT"], + 39: ["EV-DEVICE-ANALYSIS", "EV-DEVICE-RECEIPT", "EV-TRANSITION-REPORT", "EV-TRANSITION-RECEIPT", "EV-BP-PROMPT", "EV-BP-SUMMARY", "EV-BP-EVALUATOR", "EV-BP-RECEIPT", "EV-PAPER-CONTEXT"], + 40: ["EV-RL-GATE"], + 41: ["EV-RL-ATLAS-DATA-CONTRACT", "EV-RL-ATLAS-RUNTIME-CONTRACT", "EV-RL-GATE"], + 42: ["EV-RL-OBSERVATION-000001"], + 43: ["EV-RL-OBSERVATION-000002"], + 44: ["EV-RL-OBSERVATION-000003", "EV-RL-CHECKPOINT-000013"], + 45: ["EV-RL-OBSERVATION-000003", "EV-RL-CHECKPOINT-000013"], + 46: ["EV-BP-PROMPT", "EV-BP-SUMMARY", "EV-BP-EVALUATOR", "EV-BP-RECEIPT"], + 47: ["EV-BP-PROMPT", "EV-BP-SUMMARY", "EV-BP-EVALUATOR", "EV-BP-RECEIPT"], + 48: ["EV-RL-OBSERVATION-000001", "EV-RL-GATE"], + 49: ["EV-RL-OBSERVATION-000001", "EV-RL-OBSERVATION-000002", "EV-RL-TREE-275D"], + 50: ["EV-TYPED-REFUSAL-ARMS", "EV-TYPED-REFUSAL-STATS"], + 51: ["EV-TYPED-REFUSAL-ARMS", "EV-TYPED-REFUSAL-STATS", "EV-TYPED-REFUSAL-TREE", "EV-TYPED-REFUSAL-CORPUS"], + 52: ["EV-STABLE-PREREGISTRATION", "EV-STABLE-DECISION-LOGS", "EV-STABLE-CELLS"], + 53: ["EV-STABLE-REPLAY", "EV-STABLE-CELLS", "EV-STABLE-GATE"], + 54: ["EV-PAPER-CONTEXT"], + 55: ["EV-PUBLIC-STP-COMMIT", "EV-PAPER-CONTEXT"], + 56: ["EV-PUBLIC-STP-COMMIT", "EV-PAPER-CONTEXT"], + 57: ["EV-PAPER-CONTEXT"], + 58: ["EV-PAPER-CONTEXT"], + 59: ["EV-PUBLIC-STP-COMMIT", "EV-PAPER-CONTEXT"], + 60: ["EV-LEAN-QUERY-SOURCE", "EV-LEAN-QUERY-RECEIPT"], + 61: ["EV-WINDOWS-CLEAN-CLONE-V3", "EV-REPRODUCE-RUNBOOK", "EV-PACKET-EOL-RULE"], + 62: ["EV-PAPER-CONTEXT"], +} + + +def explicit_source_ids(claim_number: int) -> list[str]: + try: + return list(EXPLICIT_CLAIM_SOURCES[claim_number]) + except KeyError as error: + raise SystemExit(f"missing explicit source map for claim {claim_number:03d}") from error + + +def source_registry() -> list[dict]: + return [ + public_blob( + "EV-PUBLIC-STP-COMMIT", "JakeTOpenSource/Resilience-Ledger", + "275d0b3e7474ef58456c82a042163567cd12122f", + "research/stp-v1.2/release-manifest.json", 3613, + "2f95ed233a20060d1cbca3fae555410732242b26d9fb08afe482bc3390077704", + ), + { + "source_id": "EV-RL-TREE-275D", + "kind": "public_git_tree", + "repository": "JakeTOpenSource/Resilience-Ledger", + "commit": "275d0b3e7474ef58456c82a042163567cd12122f", + "tree": "ed1342684125e9165f27fdc6d9702b102665b324", + "access": "PUBLIC_EXTERNAL", + "verification_status": "VERIFIED_BYTES", + }, + public_blob( + "EV-RL-GATE", "JakeTOpenSource/Resilience-Ledger", + "275d0b3e7474ef58456c82a042163567cd12122f", + "governance/harnesses/run-all.js", 925, + "2725275449ea6bd25d460e328885dcf11685af2854582fef2db8aa61f6f33a96", + ), + public_blob( + "EV-RL-LEDGER-LIB", "JakeTOpenSource/Resilience-Ledger", + "275d0b3e7474ef58456c82a042163567cd12122f", + "governance/ledger/lib.js", 18577, + "8e824d144f5416fc969ab49f13639325c4a5cfc32970a006e3732181b9c68ac8", + ), + public_blob( + "EV-RL-REPLAY-PY", "JakeTOpenSource/Resilience-Ledger", + "275d0b3e7474ef58456c82a042163567cd12122f", + "governance/harnesses/replay.py", 7946, + "db6fdd073034e0c2173af0d65dca6c3db3e73cd4841f25bbc3fbb91aee069279", + ), + public_blob( + "EV-RL-VERIFY-REPLAYERS", "JakeTOpenSource/Resilience-Ledger", + "275d0b3e7474ef58456c82a042163567cd12122f", + "governance/harnesses/verify-replayers.js", 1854, + "7e63495fe344b007b221061c73c8b70dbf536e924db1ce9da9a7d14426da6b49", + ), + public_blob( + "EV-RL-CI-GATES", "JakeTOpenSource/Resilience-Ledger", + "275d0b3e7474ef58456c82a042163567cd12122f", + ".github/workflows/gates.yml", 2914, + "066c58b7841bb0363ed28bb9196f568a0de82f663b891cb8ae6ce6d22d579723", + ), + public_blob( + "EV-RL-ATLAS-DATA-CONTRACT", "JakeTOpenSource/Resilience-Ledger", + "275d0b3e7474ef58456c82a042163567cd12122f", + "governance/contracts/atlas-data-sync.contract.v2.json", 10165, + "7366c7042ec2e40a501fe091f9367eb5e8e8449763b69afadf29762864d58263", + ), + public_blob( + "EV-RL-ATLAS-RUNTIME-CONTRACT", "JakeTOpenSource/Resilience-Ledger", + "275d0b3e7474ef58456c82a042163567cd12122f", + "governance/contracts/atlas-runtime-contract.v1.json", 2558, + "7cd8c2a89f6df20995789f066643240a4cbcbc3ca67d2dc1cc4c71129b22ffd5", + ), + public_blob( + "EV-RL-OBSERVATION-000001", "JakeTOpenSource/Resilience-Ledger", + "275d0b3e7474ef58456c82a042163567cd12122f", + "governance/ledger/events/deployment/000001-wp0-production-observation.json", 6252, + "34bde4ec2eb4d1bfb70b8d44df6439cb295bd1dc1293df0ae47490193ad3fa97", + ), + public_blob( + "EV-RL-OBSERVATION-000002", "JakeTOpenSource/Resilience-Ledger", + "275d0b3e7474ef58456c82a042163567cd12122f", + "governance/ledger/events/deployment/000002-public-explanation-production-observed.json", 10952, + "4917a927727e3b0cc03cd057100a698ccc18e51751f69dd33f5bed14344fa24f", + ), + public_blob( + "EV-RL-OBSERVATION-000003", "JakeTOpenSource/Resilience-Ledger", + "5f9cc145763bc51b183e93b4f7059b25aa6ee2ca", + "governance/ledger/events/deployment/000003-service-worker-drift-closed.json", 4782, + "f03960cb1927a2c89fa5b9e98bd9cdf0cdd977c6b45fe19937346264251158e4", + ), + public_blob( + "EV-RL-CHECKPOINT-000013", "JakeTOpenSource/Resilience-Ledger", + "5f9cc145763bc51b183e93b4f7059b25aa6ee2ca", + "governance/ledger/checkpoints/checkpoint-000013.json", 4922, + "17a2bf4ee223dcbd55bdf22dd66aebac95c6c3273d958fb0a15f4608917fcbb2", + ), + file_record("evidence/device-activation/expected-analysis.json", "EV-DEVICE-ANALYSIS"), + file_record("evidence/device-activation/BUILD-RECEIPT-000001.md", "EV-DEVICE-RECEIPT"), + file_record("evidence/transition-stable-quotient/expected-report.json", "EV-TRANSITION-REPORT"), + file_record("evidence/transition-stable-quotient/BUILD-RECEIPT-000001.md", "EV-TRANSITION-RECEIPT"), + file_record("evidence/blind-prompt/PROMPT.md", "EV-BP-PROMPT"), + file_record("evidence/blind-prompt/PUBLIC-SUMMARY.md", "EV-BP-SUMMARY"), + { + "source_id": "EV-BP-EVALUATOR", + "kind": "retained_digest", + "retained_source_id": "BP-EVALUATOR-001", + "expected_bytes": 20945, + "expected_sha256": "de2c28735762a153602fc6e4bb777520c2aa3c687837e3f64b6277c459d67fe9", + "access": "RETAINED_RESTRICTED", + "verification_status": "DECLARED_ONLY", + }, + { + "source_id": "EV-BP-RECEIPT", + "kind": "retained_digest", + "retained_source_id": "BP-RECEIPT-001", + "expected_bytes": 4488, + "expected_sha256": "537e8cc13e8425e53304dd22637df6d186efa4df0be0f910a747b5f78632c815", + "access": "RETAINED_RESTRICTED", + "verification_status": "DECLARED_ONLY", + }, + file_record("evidence/lean-query-quotient/QueryQuotient.lean", "EV-LEAN-QUERY-SOURCE"), + file_record("evidence/lean-query-quotient/BUILD-RECEIPT-000005.md", "EV-LEAN-QUERY-RECEIPT"), + public_blob( + "EV-TYPED-REFUSAL-ARMS", "JakeTOpenSource/typed-refusal-harness", + "721a824c9f735d3972d720b41685469a1020fa91", "data/arms.json", 4937, + "504ca00f4286f25ee80ebe4cc9aacb2a05326b66c45602e40113117bbb40389b", + ), + public_blob( + "EV-TYPED-REFUSAL-STATS", "JakeTOpenSource/typed-refusal-harness", + "721a824c9f735d3972d720b41685469a1020fa91", "data/stats.py", 5364, + "8ecd41b40b7b75eaaa93ee0caa017e764182a3e0aee0a6f1beda7aa86277c802", + ), + { + "source_id": "EV-TYPED-REFUSAL-TREE", + "kind": "public_git_tree", + "repository": "JakeTOpenSource/typed-refusal-harness", + "commit": "721a824c9f735d3972d720b41685469a1020fa91", + "tree": "ae82fa57c0b34bb2166424128d2537822e53bc26", + "access": "PUBLIC_EXTERNAL", + "verification_status": "VERIFIED_BYTES", + }, + { + "source_id": "EV-TYPED-REFUSAL-CORPUS", + "kind": "retained_digest", + "retained_source_id": "TR-CORPUS-TITLE-29", + "expected_bytes": 11666245, + "expected_sha256": "188ab1c50a46f0dd2ff32aaa5f65c759a07710e052d297644b1a8f6b58ff413d", + "access": "RETAINED_RESTRICTED", + "verification_status": "UNAVAILABLE", + }, + public_blob( + "EV-STABLE-PREREGISTRATION", "JakeTOpenSource/the-stable", + "77408db59cad3f968ac9ba5a0c0c6689a90e80d4", + "experiments/replication-2026-07-17/PREREGISTRATION.md", 7602, + "eff780cff6a4522370af2f00d01a7dc121ab143677f805cbdc865620dad7820b", + ), + public_blob( + "EV-STABLE-DECISION-LOGS", "JakeTOpenSource/the-stable", + "77408db59cad3f968ac9ba5a0c0c6689a90e80d4", + "experiments/replication-2026-07-17/decision-logs.json", 144527, + "9fb48b2c0a837f91581c5faf5a043126348b6f86e64bf2383182f65978ffdca6", + ), + public_blob( + "EV-STABLE-REPLAY", "JakeTOpenSource/the-stable", + "77408db59cad3f968ac9ba5a0c0c6689a90e80d4", + "bridge/replay-replication.js", 5373, + "2fd2afa0b90395194b3165e19c580c4af626dfae7f54cb44193b1c326d25ebb0", + ), + public_blob( + "EV-STABLE-CELLS", "JakeTOpenSource/the-stable", + "77408db59cad3f968ac9ba5a0c0c6689a90e80d4", + "bridge/replication-cells.json", 8097, + "326b544a425daf07fe38790d58ee1dfdba825536bec84e7f81a3c46b187e2939", + ), + public_blob( + "EV-STABLE-GATE", "JakeTOpenSource/the-stable", + "77408db59cad3f968ac9ba5a0c0c6689a90e80d4", "stable-gate.js", 15250, + "7ab31a6cd8daa969a61230cb545db30c27b8cf80820150b07bc7328c5e16a9a2", + ), + file_record( + "evidence/reproduction/WINDOWS-CLEAN-CLONE-V3.md", + "EV-WINDOWS-CLEAN-CLONE-V3", + ), + file_record("REPRODUCE.md", "EV-REPRODUCE-RUNBOOK"), + file_record(".gitattributes", "EV-PACKET-EOL-RULE"), + { + "source_id": "EV-PAPER-CONTEXT", + "kind": "paper_context", + "access": "PUBLIC_PACKET", + "verification_status": "NOT_EVIDENCE", + }, + ] + + +def generate() -> tuple[dict, dict, dict]: + source_hashes = { + name: digest_bytes((ROOT / name).read_bytes()) + for name in ("content_a.py", "content_b.py", "content_c.py") + } + claims: list[dict] = [] + author: list[dict] = [] + sources = source_registry() + source_by_id = {source["source_id"]: source for source in sources} + section = "Front matter" + + for source_path, fragment_name, markup in FRAGMENTS: + parser = TreeParser() + parser.feed(markup) + for node in walk(parser.root): + if node.tag in {"h1", "h2", "h3", "h4"}: + heading = normalized(node_text(node)) + if heading: + section = heading + if node.tag != "span" or "chip" not in node.attrs.get("class", "").split(): + continue + marker = normalized(node_text(node)) + if marker not in MARKERS: + continue + if is_table_one_example(node): + continue + scope, unit = claim_unit(node) + text = normalized(node_text(unit, omit_markers=True)) + anchor = node.attrs.get("data-claim") + if not anchor: + raise SystemExit( + f"claim marker without data-claim anchor in {fragment_name}: {marker}" + ) + claim_id = f"FMOTA-V4-CLM-{anchor}" + if any(existing["claim_id"] == claim_id for existing in claims): + raise SystemExit(f"duplicate data-claim anchor {anchor}") + review_source_ids = explicit_source_ids(int(anchor)) + unknown_sources = [source_id for source_id in review_source_ids if source_id not in source_by_id] + if unknown_sources: + raise SystemExit(f"unregistered explicit sources for {claim_id}: {unknown_sources}") + relied_on_source_ids = [ + source_id for source_id in review_source_ids + if source_by_id[source_id]["verification_status"] != "NOT_EVIDENCE" + ] + unavailable_source_ids = [ + source_id for source_id in relied_on_source_ids + if source_by_id[source_id]["verification_status"] in {"DECLARED_ONLY", "UNAVAILABLE"} + ] + claims.append( + { + "claim_id": claim_id, + "section": section, + "scope": scope, + "fragment": fragment_name, + "claim_text": text, + "claim_text_sha256": digest_bytes(text.encode("utf-8")), + "review_source_ids": review_source_ids, + "review_questions": [ + "Which one Table 1 marker is supported by the registered and available material?", + "What is the strongest reading the registered material actually supports?", + ], + } + ) + author.append( + { + "claim_id": claim_id, + "marker": marker, + "ceiling": CEILINGS[marker], + "rationale": "See the marked manuscript unit and its registered review sources.", + "relied_on_source_ids": relied_on_source_ids, + "unavailable_source_ids": unavailable_source_ids, + } + ) + + if len(claims) != 62: + raise SystemExit(f"expected 62 substantive claims, found {len(claims)}") + + register = { + "schema_version": SCHEMA, + "status": "OWNER_REVIEW", + "paper_output_path": "paper/From-Model-Output-to-Accepted-State-Owner-Review-v4.pdf", + "paper_source_sha256": source_hashes, + "marker_policy": { + "source_path": "content_a.py", + "source_sha256": source_hashes["content_a.py"], + "section": "2 / Table 1", + "definitions": { + "TESTED": { + "meaning": "Exact behavior over a named finite corpus, reproducible by a stated command.", + "never_means": "That the behavior generalizes past that corpus.", + }, + "OBSERVED": { + "meaning": "A bounded inspection of a named surface at a recorded time.", + "never_means": "That the surface still looks that way, or that other surfaces match.", + }, + "PROPOSED": { + "meaning": "Specified or reasoned beyond the tested artifact boundary. It may have a partial fixture, but the marked claim itself is not established.", + "never_means": "Implemented behavior. Do not cite it as a result.", + }, + "OPEN": { + "meaning": "I do not know, and I say where the evidence stops.", + "never_means": "That the question is unimportant.", + }, + }, + }, + "blinding_protocol": ( + "Give claims.json, registered accessible sources, and " + "reviewer-markers.template.json to the reviewer before exposing the " + "marked manuscript or author-markers.json. This is procedural blinding, " + "not cryptographic secrecy after publication." + ), + "comparison_rule": ( + "Compare by claim_id only. Equal markers agree. Any mismatch is " + "MATERIAL_DISAGREEMENT and places the claim in CONTESTED/HOLD until " + "owner adjudication; missing assignments are INCOMPLETE. Never auto-promote." + ), + "sources": sources, + "claims": claims, + } + register_bytes = (json.dumps(register, ensure_ascii=True, indent=2) + "\n").encode("utf-8") + register_sha = digest_bytes(register_bytes) + author_key = { + "schema_version": ASSIGNMENT_SCHEMA, + "claim_register_sha256": register_sha, + "assignment_role": "AUTHOR_KEY", + "assignment_set_id": "author-v4", + "assignments": author, + } + reviewer = { + "schema_version": ASSIGNMENT_SCHEMA, + "claim_register_sha256": register_sha, + "assignment_role": "EXTERNAL_REVIEW", + "assignment_set_id": "replace-with-reviewer-id", + "assignments": [ + { + "claim_id": claim["claim_id"], + "marker": None, + "rationale": "", + "relied_on_source_ids": [], + "unavailable_source_ids": [], + } + for claim in claims + ], + } + return register, author_key, reviewer + + +def encoded(value: dict) -> bytes: + return (json.dumps(value, ensure_ascii=True, indent=2) + "\n").encode("utf-8") + + +def main() -> None: + check_only = "--check" in sys.argv[1:] + register, author_key, reviewer = generate() + outputs = { + "claims.json": register, + "author-markers.json": author_key, + "reviewer-markers.template.json": reviewer, + } + mismatches: list[str] = [] + for name, value in outputs.items(): + path = ROOT / name + data = encoded(value) + if check_only: + if not path.exists() or path.read_bytes() != data: + mismatches.append(name) + else: + path.write_bytes(data) + if mismatches: + raise SystemExit("claim-register mismatch: " + ", ".join(mismatches)) + mode = "CHECK" if check_only else "WRITE" + print(f"CLAIM REGISTER {mode} PASS claims=61") + + +if __name__ == "__main__": + main() diff --git a/research/from-model-output-to-accepted-state/tools/update_manifest.py b/research/from-model-output-to-accepted-state/tools/update_manifest.py new file mode 100644 index 0000000..75ea1c3 --- /dev/null +++ b/research/from-model-output-to-accepted-state/tools/update_manifest.py @@ -0,0 +1,100 @@ +"""Write the deterministic raw-byte release manifest. + +The manifest excludes itself to avoid self-reference. Every other regular file +under the release root is included, including receipts and verifier source. +""" + +from __future__ import annotations + +import hashlib +import json +import mimetypes +from pathlib import Path + + +ROOT = Path(__file__).resolve().parent.parent +MANIFEST = ROOT / "release-manifest.json" + + +def sha256(data: bytes) -> str: + return hashlib.sha256(data).hexdigest() + + +def role(path: str) -> str: + if path.startswith("paper/"): + return "paper-output" + if path.startswith("evidence/"): + return "bounded-evidence" + if path.startswith("tools/"): + return "verification-tool" + if path.startswith("figures/") or path in { + "content_a.py", "content_b.py", "content_c.py", "figures.py", "style.py" + }: + return "paper-source" + return "release-documentation" + + +def media_type(path: Path) -> str: + overrides = { + ".md": "text/markdown", + ".py": "text/x-python", + ".mjs": "text/javascript", + ".ps1": "text/plain", + ".cff": "application/yaml", + ".svg": "image/svg+xml", + } + return overrides.get(path.suffix.lower()) or mimetypes.guess_type(path.name)[0] or "application/octet-stream" + + +def main() -> None: + caches = [ + path.relative_to(ROOT).as_posix() + for path in ROOT.rglob("*") + if path.is_file() and ("__pycache__" in path.parts or path.suffix.lower() in {".pyc", ".pyo"}) + ] + if caches: + raise SystemExit(f"compiled Python cache present: {sorted(caches)!r}") + entries: dict[str, dict[str, object]] = {} + candidates = { + path.relative_to(ROOT).as_posix(): path + for path in ROOT.rglob("*") + if path.is_file() + and path != MANIFEST + and ".tmp" not in path.parts + and "__pycache__" not in path.parts + } + for relative in sorted(candidates): + path = candidates[relative] + data = path.read_bytes() + entries[relative] = { + "bytes": len(data), + "media_type": media_type(path), + "role": role(relative), + "sha256": sha256(data), + "status": "OWNER_REVIEW", + } + + root_material = "".join( + f"{path}\0{record['sha256']}\0{record['bytes']}\n" + for path, record in entries.items() + ).encode("utf-8") + manifest = { + "schema": "accepted-state-owner-review-release.v1", + "release_id": "from-model-output-to-accepted-state-0.1.0-owner-review.4", + "status": "OWNER_REVIEW", + "recorded_date": "2026-08-15", + "hash_basis": "SHA-256 of raw file bytes", + "excludes": ["release-manifest.json self-reference", ".tmp", "__pycache__"], + "payload_root": sha256(root_material), + "files": entries, + } + MANIFEST.write_text( + json.dumps(manifest, ensure_ascii=False, indent=2, sort_keys=False) + "\n", + encoding="utf-8", + newline="\n", + ) + print(f"manifest files={len(entries)} payload_root={manifest['payload_root']}") + + +if __name__ == "__main__": + main() diff --git a/research/from-model-output-to-accepted-state/tools/verify-release.mjs b/research/from-model-output-to-accepted-state/tools/verify-release.mjs new file mode 100644 index 0000000..e9588f4 --- /dev/null +++ b/research/from-model-output-to-accepted-state/tools/verify-release.mjs @@ -0,0 +1,238 @@ +import { createHash } from "node:crypto"; +import { readFileSync, readdirSync, statSync } from "node:fs"; +import { dirname, extname, join, relative, resolve, sep } from "node:path"; +import { fileURLToPath } from "node:url"; + +const root = resolve(dirname(fileURLToPath(import.meta.url)), ".."); +const manifestPath = join(root, "release-manifest.json"); +const textSuffixes = new Set([".cff", ".html", ".json", ".lean", ".md", ".mjs", ".ps1", ".py", ".svg", ".txt"]); +const privatePatterns = [ + ["absolute Windows user path", /[A-Za-z]:[\\/](?:Users|Documents|Downloads|AppData)[\\/]/i], + ["absolute Unix user path", /\/(?:Users|home)\/[^/\s]+\//i], + ["Codex private locator", /(?:\.codex[\\/]|codex-remote-attachments|codex-clipboard-)/i], + ["workspace-only locator", /(?:work\/|work\/(?:device-activation|transition-stable|probabilistic-audit|mathlib-zero-state))/i], + ["local network locator", /(?:localhost|127\.0\.0\.1)/i], + ["email address", /\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}\b/i], + ["private key material", /-----BEGIN [A-Z ]*PRIVATE KEY-----/i], +]; + +function fail(message) { + throw new Error(`VERIFY FAIL: ${message}`); +} + +function sha256(data) { + return createHash("sha256").update(data).digest("hex"); +} + +function portable(path) { + return path.split(sep).join("/"); +} + +function files(directory) { + const output = []; + for (const entry of readdirSync(directory, { withFileTypes: true }).sort((a, b) => a.name < b.name ? -1 : a.name > b.name ? 1 : 0)) { + if (entry.name === ".tmp" || entry.name === "__pycache__") continue; + const absolute = join(directory, entry.name); + if (entry.isDirectory()) output.push(...files(absolute)); + else if (entry.isFile() && absolute !== manifestPath) output.push(portable(relative(root, absolute))); + } + return output.sort(); +} + +function rejectCompiledPythonCaches(directory) { + const found = []; + for (const entry of readdirSync(directory, { withFileTypes: true })) { + const absolute = join(directory, entry.name); + if (entry.isDirectory()) { + if (entry.name === "__pycache__") { + for (const child of readdirSync(absolute)) found.push(portable(relative(root, join(absolute, child)))); + } else if (entry.name !== ".tmp") rejectCompiledPythonCaches(absolute); + } else if (entry.isFile() && [".pyc", ".pyo"].includes(extname(entry.name).toLowerCase())) { + found.push(portable(relative(root, absolute))); + } + } + if (found.length) fail(`compiled Python cache present: ${JSON.stringify(found.sort())}`); +} + +function verifyClaimRegister(manifest) { + let register, author, reviewer; + try { + register = JSON.parse(readFileSync(join(root, "claims.json"), "utf8")); + author = JSON.parse(readFileSync(join(root, "author-markers.json"), "utf8")); + reviewer = JSON.parse(readFileSync(join(root, "reviewer-markers.template.json"), "utf8")); + } catch (error) { + fail(`claim register unreadable: ${error.message}`); + } + if (register.schema_version !== "fmota-claim-register.v1") fail("unknown claim-register schema"); + if (register.status !== "OWNER_REVIEW") fail("claim-register status mismatch"); + const expectedOutput = "paper/From-Model-Output-to-Accepted-State-Owner-Review-v4.pdf"; + if (register.paper_output_path !== expectedOutput) fail("claim-register paper output mismatch"); + if (!manifest.files?.[expectedOutput] || manifest.files[expectedOutput].role !== "paper-output") { + fail("claim-register paper output is not manifest-bound"); + } + for (const sourceName of ["content_a.py", "content_b.py", "content_c.py"]) { + if (register.paper_source_sha256?.[sourceName] !== sha256(readFileSync(join(root, sourceName)))) { + fail(`claim-register paper source mismatch: ${sourceName}`); + } + } + const markerNames = ["OBSERVED", "OPEN", "PROPOSED", "TESTED"]; + const expectedPolicy = { + TESTED: { + meaning: "Exact behavior over a named finite corpus, reproducible by a stated command.", + never_means: "That the behavior generalizes past that corpus.", + }, + OBSERVED: { + meaning: "A bounded inspection of a named surface at a recorded time.", + never_means: "That the surface still looks that way, or that other surfaces match.", + }, + PROPOSED: { + meaning: "Specified or reasoned beyond the tested artifact boundary. It may have a partial fixture, but the marked claim itself is not established.", + never_means: "Implemented behavior. Do not cite it as a result.", + }, + OPEN: { + meaning: "I do not know, and I say where the evidence stops.", + never_means: "That the question is unimportant.", + }, + }; + if (JSON.stringify(register.marker_policy?.definitions) !== JSON.stringify(expectedPolicy)) { + fail("claim-register marker policy mismatch"); + } + if (!Array.isArray(register.sources) || !Array.isArray(register.claims) || register.claims.length !== 62) { + fail("claim-register collection mismatch"); + } + const sourceIds = register.sources.map(source => source?.source_id); + if (sourceIds.some(id => typeof id !== "string") || new Set(sourceIds).size !== sourceIds.length) { + fail("claim-register source IDs are not unique"); + } + const sourceById = new Map(register.sources.map(source => [source.source_id, source])); + for (const [sourceId, source] of sourceById) { + if (source.kind === "packet_file") { + if (typeof source.path !== "string" || !source.path || source.path.split(/[\\/]/).includes("..") || /^[A-Za-z]:[\\/]|^\//.test(source.path)) { + fail(`unsafe packet source path: ${sourceId}`); + } + const sourcePath = join(root, source.path); + if (!manifest.files?.[source.path]) fail(`unbound packet source: ${sourceId}`); + const data = readFileSync(sourcePath); + if (source.expected_bytes !== data.length || source.expected_sha256 !== sha256(data)) fail(`packet source identity mismatch: ${sourceId}`); + } else if (source.kind === "public_git_blob") { + if (!/^[0-9a-f]{40}$/.test(source.commit || "")) fail(`invalid public commit: ${sourceId}`); + if (typeof source.path !== "string" || !source.path) fail(`missing public path: ${sourceId}`); + if (!Number.isInteger(source.expected_bytes) || source.expected_bytes <= 0) fail(`invalid public byte count: ${sourceId}`); + if (!/^[0-9a-f]{64}$/.test(source.expected_sha256 || "")) fail(`invalid public digest: ${sourceId}`); + } else if (source.kind === "public_git_tree") { + if (!/^[0-9a-f]{40}$/.test(source.commit || "") || !/^[0-9a-f]{40}$/.test(source.tree || "")) fail(`invalid public tree identity: ${sourceId}`); + } else if (source.kind === "retained_digest") { + if (!Number.isInteger(source.expected_bytes) || source.expected_bytes <= 0) fail(`invalid retained byte count: ${sourceId}`); + if (!/^[0-9a-f]{64}$/.test(source.expected_sha256 || "")) fail(`invalid retained digest: ${sourceId}`); + } else if (source.kind === "paper_context") { + if (source.verification_status !== "NOT_EVIDENCE") fail("paper context was promoted to evidence"); + } else { + fail(`unknown claim source kind: ${sourceId}`); + } + } + const expectedIds = register.claims.map(claim => (claim && typeof claim === "object") ? claim.claim_id : undefined); + if (!expectedIds.every(id => typeof id === "string" && /^FMOTA-V4-CLM-\d{3}$/.test(id))) fail("malformed claim ID"); + if (new Set(expectedIds).size !== expectedIds.length) fail("duplicate claim IDs"); + const claimIds = []; + for (const claim of register.claims) { + if (!claim || typeof claim !== "object" || typeof claim.claim_id !== "string" || typeof claim.claim_text !== "string") { + fail("claim record identity missing"); + } + const expectedClaimFields = ["claim_id", "claim_text", "claim_text_sha256", "fragment", "review_questions", "review_source_ids", "scope", "section"]; + if (JSON.stringify(Object.keys(claim).sort()) !== JSON.stringify(expectedClaimFields)) fail(`claim field mismatch: ${claim.claim_id}`); + if (claim.claim_text_sha256 !== sha256(Buffer.from(claim.claim_text, "utf8"))) { + fail(`claim text digest mismatch: ${claim.claim_id}`); + } + if (!Array.isArray(claim.review_source_ids) || claim.review_source_ids.length === 0 || new Set(claim.review_source_ids).size !== claim.review_source_ids.length || claim.review_source_ids.some(id => !sourceIds.includes(id))) { + fail(`unregistered review source: ${claim.claim_id}`); + } + claimIds.push(claim.claim_id); + } + if (JSON.stringify(claimIds) !== JSON.stringify(expectedIds)) fail("claim IDs are incomplete or out of order"); + + const registerSha = sha256(readFileSync(join(root, "claims.json"))); + for (const [assignmentSet, role] of [[author, "AUTHOR_KEY"], [reviewer, "EXTERNAL_REVIEW"]]) { + if (assignmentSet.schema_version !== "fmota-marker-assignments.v1") fail(`unknown marker-assignment schema: ${role}`); + if (assignmentSet.assignment_role !== role) fail(`marker-assignment role mismatch: ${role}`); + if (assignmentSet.claim_register_sha256 !== registerSha) fail(`marker-assignment register digest mismatch: ${role}`); + if (!Array.isArray(assignmentSet.assignments) || JSON.stringify(assignmentSet.assignments.map(item => item?.claim_id)) !== JSON.stringify(expectedIds)) { + fail(`marker assignments are incomplete or out of order: ${role}`); + } + for (const item of assignmentSet.assignments) { + if (role === "AUTHOR_KEY") { + const expectedFields = ["ceiling", "claim_id", "marker", "rationale", "relied_on_source_ids", "unavailable_source_ids"]; + if (JSON.stringify(Object.keys(item).sort()) !== JSON.stringify(expectedFields)) fail(`author assignment field mismatch: ${item.claim_id}`); + if (!markerNames.includes(item.marker) || typeof item.ceiling !== "string" || item.ceiling.length === 0) fail(`invalid author assignment: ${item.claim_id}`); + const claim = register.claims[expectedIds.indexOf(item.claim_id)]; + if (!Array.isArray(item.relied_on_source_ids) || !Array.isArray(item.unavailable_source_ids)) fail(`invalid author evidence arrays: ${item.claim_id}`); + if (item.relied_on_source_ids.some(id => !claim.review_source_ids.includes(id))) fail(`author relied on unregistered claim source: ${item.claim_id}`); + if (item.unavailable_source_ids.some(id => !item.relied_on_source_ids.includes(id))) fail(`author unavailable source is not relied on: ${item.claim_id}`); + if (["TESTED", "OBSERVED"].includes(item.marker) && !item.relied_on_source_ids.some(id => sourceById.get(id)?.verification_status !== "NOT_EVIDENCE")) { + fail(`result claim lacks evidence: ${item.claim_id}`); + } + } else { + const expectedFields = ["claim_id", "marker", "rationale", "relied_on_source_ids", "unavailable_source_ids"]; + if (JSON.stringify(Object.keys(item).sort()) !== JSON.stringify(expectedFields)) fail(`reviewer assignment field mismatch: ${item.claim_id}`); + if (item.marker !== null || item.rationale !== "" || JSON.stringify(item.relied_on_source_ids) !== "[]" || JSON.stringify(item.unavailable_source_ids) !== "[]") { + fail(`reviewer template is not blank: ${item.claim_id}`); + } + } + } + } +} + +const manifestBytes = readFileSync(manifestPath); +let manifest; +try { + manifest = JSON.parse(manifestBytes.toString("utf8")); +} catch (error) { + fail(`manifest unreadable: ${error.message}`); +} +if (manifest.schema !== "accepted-state-owner-review-release.v1") fail("unknown manifest schema"); +if (manifest.hash_basis !== "SHA-256 of raw file bytes") fail("unknown hash basis"); + +rejectCompiledPythonCaches(root); +const actual = files(root); +const expected = Object.keys(manifest.files || {}).sort(); +if (JSON.stringify(actual) !== JSON.stringify(expected)) fail(`allowlist mismatch actual=${JSON.stringify(actual)} expected=${JSON.stringify(expected)}`); + +const rootParts = []; +for (const path of actual) { + const data = readFileSync(join(root, path)); + const record = manifest.files[path]; + const fileDigest = sha256(data); + if (record.bytes !== data.length || record.sha256 !== fileDigest) fail(`byte identity mismatch: ${path}`); + if (record.status !== "OWNER_REVIEW") fail(`unexpected file status: ${path}`); + if (typeof record.role !== "string" || record.role.length === 0) fail(`missing role: ${path}`); + rootParts.push(`${path}\0${fileDigest}\0${data.length}\n`); + + const suffix = extname(path).toLowerCase(); + if (textSuffixes.has(suffix) || path.endsWith("/LICENSE") || ["requirements.txt", ".gitattributes", ".gitignore"].includes(path)) { + const text = new TextDecoder("utf-8", { fatal: true }).decode(data); + if (text.includes("\uFFFD") || text.includes("\0")) fail(`invalid text scalar in ${path}`); + if (path !== "tools/verify_release.py" && path !== "tools/verify-release.mjs") { + for (const [label, pattern] of privatePatterns) { + if (pattern.test(text)) fail(`${label} in ${path}`); + } + } + if (/(?:gh[opsu]_|github_pat_)[A-Za-z0-9_]{20,}/.test(text)) fail(`credential-like token in ${path}`); + if (suffix === ".json") { + try { JSON.parse(text); } catch (error) { fail(`invalid JSON in ${path}: ${error.message}`); } + } + } else if (suffix === ".pdf" && !data.subarray(0, 5).equals(Buffer.from("%PDF-"))) { + fail(`invalid PDF signature: ${path}`); + } +} + +const payloadRoot = sha256(Buffer.from(rootParts.join(""), "utf8")); +if (payloadRoot !== manifest.payload_root) fail("payload root mismatch"); + +verifyClaimRegister(manifest); + +const report = { + fileCount: actual.length, + manifestSha256: sha256(manifestBytes), + payloadRoot, + status: "PASS", +}; +process.stdout.write(`${JSON.stringify(report)}\n`); diff --git a/research/from-model-output-to-accepted-state/tools/verify.ps1 b/research/from-model-output-to-accepted-state/tools/verify.ps1 new file mode 100644 index 0000000..02e3f6b --- /dev/null +++ b/research/from-model-output-to-accepted-state/tools/verify.ps1 @@ -0,0 +1,50 @@ +param( + [string]$PythonExe = "", + [string]$NodeExe = "" +) + +$ErrorActionPreference = "Stop" +$root = Split-Path -Parent $PSScriptRoot + +if (-not $PythonExe) { + $pythonCommand = Get-Command python -ErrorAction SilentlyContinue + if ($pythonCommand) { $PythonExe = $pythonCommand.Source } + else { + $fallback = Join-Path $env:LOCALAPPDATA "Python\bin\python.exe" + if (Test-Path -LiteralPath $fallback) { $PythonExe = $fallback } + } +} +if (-not $NodeExe) { + $nodeCommand = Get-Command node -ErrorAction SilentlyContinue + if ($nodeCommand) { $NodeExe = $nodeCommand.Source } +} +if (-not $PythonExe -or -not (Test-Path -LiteralPath $PythonExe)) { throw "Python 3 executable not found" } +if (-not $NodeExe -or -not (Test-Path -LiteralPath $NodeExe)) { throw "Node.js executable not found" } + +& $PythonExe "-B" (Join-Path $PSScriptRoot "update_claim_register.py") "--check" | Out-Null +if ($LASTEXITCODE -ne 0) { throw "Claim-register regeneration check failed" } + +$left = Join-Path ([System.IO.Path]::GetTempPath()) ("accepted-state-python-" + [guid]::NewGuid().ToString("N") + ".json") +$right = Join-Path ([System.IO.Path]::GetTempPath()) ("accepted-state-node-" + [guid]::NewGuid().ToString("N") + ".json") +try { + & $PythonExe (Join-Path $PSScriptRoot "verify_release.py") | Set-Content -LiteralPath $left -Encoding UTF8 + if ($LASTEXITCODE -ne 0) { throw "Python release verifier failed" } + & $NodeExe (Join-Path $PSScriptRoot "verify-release.mjs") | Set-Content -LiteralPath $right -Encoding UTF8 + if ($LASTEXITCODE -ne 0) { throw "JavaScript release verifier failed" } + + $leftText = (Get-Content -LiteralPath $left -Raw).Trim() + $rightText = (Get-Content -LiteralPath $right -Raw).Trim() + if ($leftText -cne $rightText) { + throw "Cross-language canonical report mismatch`npython=$leftText`nnode=$rightText" + } + $report = $leftText | ConvertFrom-Json + Write-Output "VERIFY PASS" + Write-Output "cross_language_parity=PASS" + Write-Output "files=$($report.fileCount)" + Write-Output "payload_root=$($report.payloadRoot)" + Write-Output "manifest_sha256=$($report.manifestSha256)" + Write-Output "status=$($report.status)" +} +finally { + Remove-Item -LiteralPath $left,$right -Force -ErrorAction SilentlyContinue +} diff --git a/research/from-model-output-to-accepted-state/tools/verify_release.py b/research/from-model-output-to-accepted-state/tools/verify_release.py new file mode 100644 index 0000000..5b10afc --- /dev/null +++ b/research/from-model-output-to-accepted-state/tools/verify_release.py @@ -0,0 +1,288 @@ +"""Verify the owner-review release from raw bytes, without network access.""" + +from __future__ import annotations + +import ast +import hashlib +import json +import re +import sys +from pathlib import Path + + +ROOT = Path(__file__).resolve().parent.parent +MANIFEST = ROOT / "release-manifest.json" +TEXT_SUFFIXES = {".cff", ".html", ".json", ".lean", ".md", ".mjs", ".ps1", ".py", ".svg", ".txt"} +PRIVATE_PATTERNS = { + "absolute Windows user path": r"[A-Za-z]:[\\/](?:Users|Documents|Downloads|AppData)[\\/]", + "absolute Unix user path": r"/(?:Users|home)/[^/\s]+/", + "Codex private locator": r"(?:\.codex[\\/]|codex-remote-attachments|codex-clipboard-)", + "workspace-only locator": r"(?:work/|work/(?:device-activation|transition-stable|probabilistic-audit|mathlib-zero-state))", + "local network locator": r"(?:localhost|127\.0\.0\.1)", + "email address": r"\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}\b", + "private key material": r"-----BEGIN [A-Z ]*PRIVATE KEY-----", +} + + +def fail(message: str) -> None: + raise SystemExit(f"VERIFY FAIL: {message}") + + +def digest(data: bytes) -> str: + return hashlib.sha256(data).hexdigest() + + +def actual_files() -> list[str]: + caches = [ + path.relative_to(ROOT).as_posix() + for path in ROOT.rglob("*") + if path.is_file() and ("__pycache__" in path.parts or path.suffix.lower() in {".pyc", ".pyo"}) + ] + if caches: + fail(f"compiled Python cache present: {sorted(caches)!r}") + return sorted( + path.relative_to(ROOT).as_posix() + for path in ROOT.rglob("*") + if path.is_file() + and path != MANIFEST + and ".tmp" not in path.parts + and "__pycache__" not in path.parts + ) + + +def verify_claim_register(manifest: dict) -> None: + claims_path = ROOT / "claims.json" + author_path = ROOT / "author-markers.json" + reviewer_path = ROOT / "reviewer-markers.template.json" + try: + register = json.loads(claims_path.read_text(encoding="utf-8")) + author = json.loads(author_path.read_text(encoding="utf-8")) + reviewer = json.loads(reviewer_path.read_text(encoding="utf-8")) + except Exception as error: + fail(f"claim register unreadable: {error}") + + if register.get("schema_version") != "fmota-claim-register.v1": + fail("unknown claim-register schema") + if register.get("status") != "OWNER_REVIEW": + fail("claim-register status mismatch") + expected_output = "paper/From-Model-Output-to-Accepted-State-Owner-Review-v4.pdf" + if register.get("paper_output_path") != expected_output: + fail("claim-register paper output mismatch") + output_record = manifest.get("files", {}).get(expected_output) + if not isinstance(output_record, dict) or output_record.get("role") != "paper-output": + fail("claim-register paper output is not manifest-bound") + source_hashes = register.get("paper_source_sha256") + if not isinstance(source_hashes, dict): + fail("claim-register paper source map missing") + for source_name in ("content_a.py", "content_b.py", "content_c.py"): + if source_hashes.get(source_name) != digest((ROOT / source_name).read_bytes()): + fail(f"claim-register paper source mismatch: {source_name}") + + marker_names = {"TESTED", "OBSERVED", "PROPOSED", "OPEN"} + expected_policy = { + "TESTED": { + "meaning": "Exact behavior over a named finite corpus, reproducible by a stated command.", + "never_means": "That the behavior generalizes past that corpus.", + }, + "OBSERVED": { + "meaning": "A bounded inspection of a named surface at a recorded time.", + "never_means": "That the surface still looks that way, or that other surfaces match.", + }, + "PROPOSED": { + "meaning": "Specified or reasoned beyond the tested artifact boundary. It may have a partial fixture, but the marked claim itself is not established.", + "never_means": "Implemented behavior. Do not cite it as a result.", + }, + "OPEN": { + "meaning": "I do not know, and I say where the evidence stops.", + "never_means": "That the question is unimportant.", + }, + } + if register.get("marker_policy", {}).get("definitions") != expected_policy: + fail("claim-register marker policy mismatch") + + sources = register.get("sources") + claims = register.get("claims") + if not isinstance(sources, list) or not isinstance(claims, list) or len(claims) != 62: + fail("claim-register collection mismatch") + source_ids = [source.get("source_id") for source in sources if isinstance(source, dict)] + if len(source_ids) != len(set(source_ids)) or None in source_ids: + fail("claim-register source IDs are not unique") + source_by_id = {source["source_id"]: source for source in sources} + for source_id, source in source_by_id.items(): + kind = source.get("kind") + status = source.get("verification_status") + if kind == "packet_file": + relative = source.get("path") + if not isinstance(relative, str) or not relative or ".." in Path(relative).parts or Path(relative).is_absolute(): + fail(f"unsafe packet source path: {source_id}") + source_path = ROOT / relative + if relative not in manifest.get("files", {}) or not source_path.is_file(): + fail(f"unbound packet source: {source_id}") + data = source_path.read_bytes() + if source.get("expected_bytes") != len(data) or source.get("expected_sha256") != digest(data): + fail(f"packet source identity mismatch: {source_id}") + elif kind == "public_git_blob": + if not re.fullmatch(r"[0-9a-f]{40}", str(source.get("commit", ""))): + fail(f"invalid public commit: {source_id}") + if not isinstance(source.get("path"), str) or not source["path"]: + fail(f"missing public path: {source_id}") + if not isinstance(source.get("expected_bytes"), int) or source["expected_bytes"] <= 0: + fail(f"invalid public byte count: {source_id}") + if not re.fullmatch(r"[0-9a-f]{64}", str(source.get("expected_sha256", ""))): + fail(f"invalid public digest: {source_id}") + elif kind == "public_git_tree": + if not re.fullmatch(r"[0-9a-f]{40}", str(source.get("commit", ""))) or not re.fullmatch(r"[0-9a-f]{40}", str(source.get("tree", ""))): + fail(f"invalid public tree identity: {source_id}") + elif kind == "retained_digest": + if not isinstance(source.get("expected_bytes"), int) or source["expected_bytes"] <= 0: + fail(f"invalid retained byte count: {source_id}") + if not re.fullmatch(r"[0-9a-f]{64}", str(source.get("expected_sha256", ""))): + fail(f"invalid retained digest: {source_id}") + elif kind == "paper_context": + if status != "NOT_EVIDENCE": + fail("paper context was promoted to evidence") + else: + fail(f"unknown claim source kind: {source_id}") + + expected_ids = [claim.get("claim_id") if isinstance(claim, dict) else None for claim in claims] + if any(not isinstance(cid, str) or not re.fullmatch(r"FMOTA-V4-CLM-\d{3}", cid) for cid in expected_ids): + fail("malformed claim ID") + if len(set(expected_ids)) != len(expected_ids): + fail("duplicate claim IDs") + claim_ids: list[str] = [] + for claim in claims: + if not isinstance(claim, dict): + fail("claim record is not an object") + claim_id = claim.get("claim_id") + claim_text = claim.get("claim_text") + expected_claim_fields = { + "claim_id", "section", "scope", "fragment", "claim_text", + "claim_text_sha256", "review_source_ids", "review_questions", + } + if set(claim) != expected_claim_fields: + fail(f"claim field mismatch: {claim_id}") + if not isinstance(claim_id, str) or not isinstance(claim_text, str): + fail("claim record identity missing") + if "marker" in claim or "ceiling" in claim: + fail(f"author-marker leakage in marker-blind record: {claim_id}") + if claim.get("claim_text_sha256") != digest(claim_text.encode("utf-8")): + fail(f"claim text digest mismatch: {claim_id}") + review_ids = claim.get("review_source_ids") + if not isinstance(review_ids, list) or not review_ids or len(review_ids) != len(set(review_ids)) or any(item not in source_ids for item in review_ids): + fail(f"unregistered review source: {claim_id}") + claim_ids.append(claim_id) + if claim_ids != expected_ids: + fail("claim IDs are incomplete or out of order") + + register_sha = digest(claims_path.read_bytes()) + for assignment_set, role in ((author, "AUTHOR_KEY"), (reviewer, "EXTERNAL_REVIEW")): + if assignment_set.get("schema_version") != "fmota-marker-assignments.v1": + fail(f"unknown marker-assignment schema: {role}") + if assignment_set.get("assignment_role") != role: + fail(f"marker-assignment role mismatch: {role}") + if assignment_set.get("claim_register_sha256") != register_sha: + fail(f"marker-assignment register digest mismatch: {role}") + assignments = assignment_set.get("assignments") + if not isinstance(assignments, list) or [item.get("claim_id") for item in assignments] != expected_ids: + fail(f"marker assignments are incomplete or out of order: {role}") + for item in assignments: + if role == "AUTHOR_KEY": + if set(item) != {"claim_id", "marker", "ceiling", "rationale", "relied_on_source_ids", "unavailable_source_ids"}: + fail(f"author assignment field mismatch: {item.get('claim_id')}") + if item.get("marker") not in marker_names or not isinstance(item.get("ceiling"), str) or not item["ceiling"]: + fail(f"invalid author assignment: {item.get('claim_id')}") + claim = claims[expected_ids.index(item["claim_id"])] + relied = item.get("relied_on_source_ids") + unavailable = item.get("unavailable_source_ids") + if not isinstance(relied, list) or not isinstance(unavailable, list): + fail(f"invalid author evidence arrays: {item.get('claim_id')}") + if any(source_id not in claim["review_source_ids"] for source_id in relied): + fail(f"author relied on unregistered claim source: {item.get('claim_id')}") + if any(source_id not in relied for source_id in unavailable): + fail(f"author unavailable source is not relied on: {item.get('claim_id')}") + if item["marker"] in {"TESTED", "OBSERVED"} and not any( + source_by_id[source_id]["verification_status"] != "NOT_EVIDENCE" + for source_id in relied + ): + fail(f"result claim lacks evidence: {item.get('claim_id')}") + else: + if set(item) != {"claim_id", "marker", "rationale", "relied_on_source_ids", "unavailable_source_ids"}: + fail(f"reviewer assignment field mismatch: {item.get('claim_id')}") + if item.get("marker") is not None or item.get("rationale") != "" or item.get("relied_on_source_ids") != [] or item.get("unavailable_source_ids") != []: + fail(f"reviewer template is not blank: {item.get('claim_id')}") + + +def main() -> None: + try: + manifest_bytes = MANIFEST.read_bytes() + manifest = json.loads(manifest_bytes.decode("utf-8")) + except Exception as error: + fail(f"manifest unreadable: {error}") + + if manifest.get("schema") != "accepted-state-owner-review-release.v1": + fail("unknown manifest schema") + if manifest.get("hash_basis") != "SHA-256 of raw file bytes": + fail("unknown hash basis") + + expected = sorted(manifest.get("files", {}).keys()) + actual = actual_files() + if actual != expected: + fail(f"allowlist mismatch actual={actual!r} expected={expected!r}") + + root_material = bytearray() + for relative in actual: + path = ROOT / relative + data = path.read_bytes() + record = manifest["files"][relative] + file_digest = digest(data) + if record.get("bytes") != len(data) or record.get("sha256") != file_digest: + fail(f"byte identity mismatch: {relative}") + if record.get("status") != "OWNER_REVIEW": + fail(f"unexpected file status: {relative}") + if not isinstance(record.get("role"), str) or not record["role"]: + fail(f"missing role: {relative}") + root_material.extend(f"{relative}\0{file_digest}\0{len(data)}\n".encode("utf-8")) + + if path.suffix.lower() in TEXT_SUFFIXES or path.name in {"LICENSE", "requirements.txt", ".gitattributes", ".gitignore"}: + try: + text = data.decode("utf-8") + except UnicodeDecodeError as error: + fail(f"invalid UTF-8 in {relative}: {error}") + if "\ufffd" in text or "\x00" in text: + fail(f"invalid text scalar in {relative}") + if relative not in {"tools/verify_release.py", "tools/verify-release.mjs"}: + for label, pattern in PRIVATE_PATTERNS.items(): + if re.search(pattern, text, flags=re.I): + fail(f"{label} in {relative}") + if re.search(r"(?:gh[opsu]_|github_pat_)[A-Za-z0-9_]{20,}", text): + fail(f"credential-like token in {relative}") + if path.suffix.lower() == ".json": + try: + json.loads(text) + except Exception as error: + fail(f"invalid JSON in {relative}: {error}") + if path.suffix.lower() == ".py": + try: + ast.parse(text, filename=relative) + except SyntaxError as error: + fail(f"invalid Python in {relative}: {error}") + elif path.suffix.lower() == ".pdf" and not data.startswith(b"%PDF-"): + fail(f"invalid PDF signature: {relative}") + + payload_root = digest(bytes(root_material)) + if payload_root != manifest.get("payload_root"): + fail("payload root mismatch") + + verify_claim_register(manifest) + + report = { + "fileCount": len(actual), + "manifestSha256": digest(manifest_bytes), + "payloadRoot": payload_root, + "status": "PASS", + } + sys.stdout.write(json.dumps(report, ensure_ascii=False, separators=(",", ":"), sort_keys=True) + "\n") + + +if __name__ == "__main__": + main()