Repository navigation
REQ-VISUALIZATION-008: settlement guide conflates transfer conservation with later physical source/sink flows #447
Description
Activity
- addedpriority:highImportant and time-sensitive; schedule ahead of normal workImportant and time-sensitive; schedule ahead of normal worktype:bugVerified behavior differs from the intended contractVerified behavior differs from the intended contractarea:visualizationThe docs/ run viewerThe docs/ run viewerstatus:readySpecified and unblocked; safe for an agent to claimSpecified and unblocked; safe for an agent to claim
on Sep 11, 2026 - added a commit that references this issue
on Sep 15, 2026 - added a commit that references this issue
on Sep 15, 2026 - added a commit that references this issue
on Sep 15, 2026 - added a commit that references this issue
on Sep 15, 2026 ROLE: AUTHOR (unattended run, 2026-09-15).
Claim. Taking this Issue as this run's single bounded unit of work.
Selection path (AUTHOR_RUNBOOK section 2). Items 1–2 are empty —
gh pr list --state openreturns no open pull requests. Item 3 is empty — no Issue carriesstatus:blocked. At item 4 three Issues arepriority:high+status:readyand not labelledpolicy: #482, #447, #269.docs/spec/mirror/EXECUTION_ORDER.mdline 14 names M3 as the earliest milestone whose dependencies are satisfied and states thatREQ-VISUALIZATION-007/008may proceed while market-correctness repairs continue; #447 is the oldest of the three and is bounded documentation work that can be fully completed in one unit. #269 (REQ-VISUALIZATION-006) is a full Pages experience with ten acceptance criteria, and #482 is ascripts/control-plane repair whose stated verification requires pushing an unrelated commit tomaster, which an AUTHOR run may never do.Intended scope. Documentation-only repair of
docs/reference/market-settlement-and-taxes.md, exactly as Scope lists it: separate transaction-level transfer conservation from whole-tick stock reconciliation, stop claiming aggregate goods quantity is conserved across a whole tick, and remove wording that can imply production or consumption create or destroy transaction money. Existing M3 settlement/tax examples, inventory-endpoint text, telemetry explanation and atomicity text are preserved. Plus the one ledger row forREQ-VISUALIZATION-008indocs/spec/implementation_status.csvand its regenerated table, inside the same pull request.Branch.
claude/issue-447-settlement-conservationKnown constraint, declared up front. The Verification section asks for comparison against
START_HERE,MASTER_IMPLEMENTATION_INDEXsection 6 and the production contract. Reading those three is a recursive read of the specification mirror, whichAGENTS.mdand AUTHOR_RUNBOOK section 4 forbid: this run may read the registry, the changelog, and the single document named by the requirement'sFILE/ANCHORcolumns. I will therefore readdocs/spec/mirror/06 - Handoff/11 — REPOSITORY_MIGRATION_AND_MILESTONE_GATES.mdonly, and take the canonical stock/flow rules from this Issue's own Evidence section, which states them explicitly. That is an assumption I will record in the pull request rather than silently resolve.No other blocker known at claim time.
- addedstatus:in-progressClaimed work with an active branch or pull requestClaimed work with an active branch or pull requestand removedstatus:readySpecified and unblocked; safe for an agent to claimSpecified and unblocked; safe for an agent to claim
on Sep 15, 2026 - addedstatus:needs-reviewImplementation complete, awaiting acceptanceImplementation complete, awaiting acceptanceand removedstatus:in-progressClaimed work with an active branch or pull requestClaimed work with an active branch or pull request
on Sep 15, 2026 ROLE: AUTHOR — handoff.
Pull request. #489. Branch.
claude/issue-447-settlement-conservation. Tested revision.efde005a09884e84af4a0a4b74f4d91ffe2ef815— the branch tip; every check below was re-measured on this exact revision after the ledger commit landed, so none of the evidence is stale.What changed. Three paths, all documentation:
docs/reference/market-settlement-and-taxes.md,docs/spec/implementation_status.csv,docs/spec/IMPLEMENTATION_STATUS.md(regenerated, not hand-edited). The reconciliation section now separates transaction-level transfer conservation from whole-tick stock accounting; production, household consumption, spoilage and physical loss appear only as typed physical sources and sinks; money creation and destruction is confined to authorized monetary and genesis operations. The settlement and tax examples, the inventory-endpoint rule, the atomicity text and the whole telemetry section are byte-identical tomaster.Checks — every one
passed, measured onefde005.npm run typecheckclean;npm test612/612 across 41 files;npm run buildsucceeded;implementation_status.py --checkclean (29 ledger rows over 49 registry rows);pytest scripts/tests503 passed with 239 subtests;status_lint.py --self 489agrees;dotnet restoreanddotnet build --configuration Releasesucceeded with 0 warnings and 0 errors;dotnet test --configuration Release45/45, soREQ-MIGRATION-003is maintained.policy_guard.pyandscope_guard.pywere also run locally againstorigin/masterand both pass.Decision recorded. The ledger row for
REQ-VISUALIZATION-008moves fromPARTIALtoIMPLEMENTED. PR #486 left the row open specifically pending this repair and asked for every registryACCEPTANCEitem to be re-checked before promotion; that re-check is written into the evidence cell, which also names all four contributing pull requests (#382, #405, #486, #489).MERGE_COMMITis left empty forbackfill_merge_commits.py.not_run, stated as such rather than promoted. This Issue's Verification section asks for comparison againstSTART_HERE,MASTER_IMPLEMENTATION_INDEXsection 6 and the production contract. Reading those three is a recursive read of the mirror, whichAGENTS.mdand AUTHOR_RUNBOOK section 4 forbid, so it was not done. Both corrected claims are instead each confirmed by a source this run was permitted to read:validateZeroFlowReconciliationinsrc/simulation/ledger.tsreconciles recordedMONEY/GOODtransfer flows and exemptsPHYSICAL_LOSSas one-sided destruction (ledger.ts:183-185), and Gate M3 in the single registry-named mirror document requires goods and transaction money to reconcile "exactly after every settlement" rather than across a whole tick. The canonical money rules themselves are taken from this Issue's own Evidence section. The residual risk is recorded in the pull request body: a rule stated only in one of those three unread documents could still be missed for wording beyond the two named defects.No regression test was added, and the pull request says why rather than implying coverage: prose conformance has no test oracle that is not itself a new invented mechanism. The standing control is the one that worked twice — the defect became Issues #446 and #447.
What remains, none of it a gate on #489.
REQ-VISUALIZATION-007is stillPARTIALandREQ-VISUALIZATION-006has no ledger row, so M3 does not close here. #269 is now selectable: both of its declared dependencies,REQ-MARKET-005andREQ-ACCEPTANCE-004, readIMPLEMENTEDin the ledger — though #347 separately contests thatREQ-ACCEPTANCE-004evidence, which a run taking #269 should read first. This run opened no new Issue because it discovered no out-of-scope work.status:in-progressreplaced withstatus:needs-review. This AUTHOR run does not approve and does not merge; it ends here.- added a commit that references this issue
on Sep 15, 2026 ROLE: ACCEPTOR — closure record.
Accepted and merged. Pull request #489, head revision
efde005a09884e84af4a0a4b74f4d91ffe2ef815, squashed to838db1bc7ad4356c1603948678f302d2d2293d89onmaster. Branchclaude/issue-447-settlement-conservationdeleted. The full verdict, with the evidence for each gate, is the approving review on #489.Evidence observed at
efde005, not taken from the pull request body. Required checks green on the checks tab:mergeability,policy-guard,typescript,build-and-test,write-mergeability-status. Re-executed independently:npm run typecheckpassed;npm testpassed 612/612 across 41 files;npm run buildpassed;dotnet build --configuration Releasepassed with 0 warnings and 0 errors;dotnet test --configuration Releasepassed 45/45 with 0 skipped, soREQ-MIGRATION-003is maintained;python scripts/implementation_status.py --checkandpython scripts/status_lint.py --self 489both clean.An earlier
policy-guardfailure exists at this same SHA —scope-guardrefusing the placeholder pull request body before it was completed. The checks re-ran green on the unchanged revision. Noted so a later reader of this SHA's history does not have to re-derive it.Acceptance criteria 1–6: all met. The whole-tick goods-conservation claim is deleted; transfer conservation and whole-tick stock accounting are stated as separate guarantees; production and consumption are described only as physical processes that change goods stocks and not money totals; money creation and destruction is confined to authorized monetary and genesis operations; the settlement, tax, inventory-endpoint, telemetry and atomicity sections are byte-identical to
master; checks are green. The two corrected claims were checked againstsrc/simulation/ledger.ts, which exemptsPHYSICAL_LOSSfrom zero-sum validation as one-sided destruction — the code the old text misdescribed.REQ-VISUALIZATION-008is nowIMPLEMENTEDin the ledger, and I tested that promotion rather than accepting it. Each registryACCEPTANCEitem was re-checked against the merged text: both articles committed and linked fromREADME.md:36-37, both subject areas covered, economic state separated from telemetry, no alternate mechanic introduced, docs checks green. The one defect #486 recorded as holding this row open is repaired, and reading the whole article found no replacement for it. The row'sMERGE_COMMITis empty by convention and will be backfilled byscripts/backfill_merge_commits.py.This Issue is closed as completed by the merge, verified against pull request state
MERGED. Removingstatus:needs-review: a closed Issue carries no activestatus:*label.Not a gate on this Issue, recorded for the next run. M3 still cannot close:
REQ-VISUALIZATION-007remainsPARTIALandREQ-VISUALIZATION-006has no ledger row. #269 isstatus:readywith both declared dependencies nowIMPLEMENTED, while #347 separately contests theREQ-ACCEPTANCE-004evidence.- removedstatus:needs-reviewImplementation complete, awaiting acceptanceImplementation complete, awaiting acceptance
on Sep 15, 2026 - added a commit that references this issue
on Sep 15, 2026 - added a commit that references this issue
on Sep 15, 2026
Goal
Bring
docs/reference/market-settlement-and-taxes.mdinto conformance with the canonical stock/flow model without changing runtime behavior or economic mechanics.Evidence
The current public guide contains two linked statements that become false or materially misleading once later canonical milestones are considered:
After every tick, the system checks that goods and money are conservedand thenThe total quantity of each good across all actors is conserved.Canonical v1 does not require aggregate goods stock to remain constant across a tick. Production creates output from typed real inputs/resources/labor/capacity; household consumption, spoilage and physical losses are explicit sinks. What is conserved during an ordinary trade is the transfer itself: seller decrement equals buyer increment, while whole-tick reconciliation must account for every typed source/sink rather than force net-zero goods change.sources or sinks (production value creation, consumption value destruction, or monetary policy)will arrive. Read in that paragraph, this implies production/consumption are possible money sources/sinks. Canonically, production/consumption alter physical goods stocks; ordinary production/consumption must not create or destroy transaction money. Money creation/destruction is restricted to explicitly authorized monetary/genesis operations.Canonical handoff rules are explicit: ordinary transactions transfer money but do not create/destroy it; goods/capital/resources/population changes require typed sources/sinks; money creation/destruction exists only in authorized monetary/genesis operations. The production contract also states that cash is a budget constraint and cannot become output or capacity directly.
Scope
Documentation-only repair in
docs/reference/market-settlement-and-taxes.md:Non-goals
docs/spec/mirror/.Acceptance criteria
Verification
Compare the edited article against START_HERE global stock/flow rules, MASTER_IMPLEMENTATION_INDEX section 6, and the production contract's rule that output may increase only through real production inputs and cash cannot become output directly. This is public-text conformance work only.