Skip to content

REQ-VISUALIZATION-007: README still carries stale M2/M3 semantics after PR #381 #445

Description

@drevendev

Goal

Bring the remaining public README wording into conformance with the canonical M2/M3 contracts without changing runtime behavior or requirement meaning.

Evidence

Current master still contains four stale claims after merged PR #381 / d8bd05f40943f01686cb7ed0c0cbab7bd99c1551:

  1. Ephemeral budget commitments and persistent MarketIntent contracts — Handoff/04 section 5 defines MarketIntent itself as ephemeral. Persistent market state is the actor-owned stocks plus LocalMarket price/expectation state and committed ledger/history.
  2. bounded daily movement — canonical repricing is capped by maxAbsoluteLogPriceMovePerTick and happens once in Phase 6 per tick. The model does not define one tick as one day.
  3. Ledger framework tracking all economic flows under completed M2 — M2 owns the normalized accounting/reconciliation spine for conserved MONEY/GOOD deltas plus typed PHYSICAL_LOSS attribution. Later fiscal, monetary, production and demographic flow families arrive in later milestones.
  4. Production function, labor allocation and population dynamics (M4–M5) — canonical milestone ownership puts the one-region production/labor/population closed-economy slice in M4, M5 in transport/interregional trade/FX, and later demography/migration/expansion in M8.

These same defects were identified on PR #381 before merge, but the PR merged unchanged and the closed PR discussion is not an actionable queue item.

Scope

README/public-text only. Make the smallest wording repair:

  • describe MarketIntent as ephemeral (or avoid persistence wording entirely);
  • replace daily price movement with per-tick;
  • narrow the M2 ledger bullet to the actual M2 accounting/reconciliation responsibility;
  • remove the M4–M5 ownership overlap and keep M5 reserved for transport/trade/FX, with demography/migration/expansion remaining M8.

Non-goals

  • No runtime, economic formula, price rule, phase order, accounting identity, schema, acceptance threshold, or v1 scope change.
  • No redesign of README structure beyond factual correction.
  • Do not patch docs/spec/mirror/.

Acceptance criteria

  1. README no longer calls MarketIntent persistent.
  2. README says the Phase-6 price bound is per tick, not daily.
  3. README no longer claims completed M2 tracks all future economic-flow families; wording matches the M2 ledger/reconciliation spine.
  4. M4/M5/M8 ownership matches canonical Handoff/11.
  5. Existing TypeScript-first, C# reference-oracle, Pages, and M3-in-progress framing remains intact.
  6. Documentation/build checks remain green.

Verification

Compare the updated README against canonical Handoff/04 market intent + repricing sections, Handoff/11 M2/M4/M5/M8 milestone ownership, and the authoritative implementation ledger. This is documentation-only conformance work.

Activity

  1. added
    priority:highImportant and time-sensitive; schedule ahead of normal work
    type:bugVerified behavior differs from the intended contract
    status:readySpecified and unblocked; safe for an agent to claim
    on Sep 11, 2026
  2. drevendev commented on Sep 11, 2026

    @drevendev
    OwnerAuthor

    Additional current-master evidence from bounded REQ-VISUALIZATION-007 QA: the README's In progress paragraph still says local-market work is ongoing "per REQ-MARKET-005 and REQ-ACCEPTANCE-004". The authoritative ledger and Drive control state now record REQ-ACCEPTANCE-004 as IMPLEMENTED via PR #441 / merge e5197d3, so this sentence is also stale. Please include the smallest factual repair in this existing README issue rather than opening a duplicate: keep REQ-MARKET-005 as the remaining runtime gate and do not describe REQ-ACCEPTANCE-004 as ongoing. No requirement or runtime behavior changes.

  3. drevendev commented on Sep 12, 2026

    @drevendev
    OwnerAuthor

    REVIEW/QA follow-up — distinguish browser capability from the M11 observatory

    One additional public-text conformance defect belongs in this same README repair.

    Current README.md opens with: The canonical implementation is TypeScript and is browser-capable (scheduled for M11+). The parenthetical makes it sound as though browser capability itself is deferred to M11. Canonically, the TypeScript engine is already browser-capable; M11 adds the full SimulationOutput + browser Worker + interactive observatory around that same engine. The project manifest/state also explicitly keeps M3 representation one-way/static-compatible and forbids pulling M11 runtime authority forward.

    Please make the smallest wording repair while fixing #445, e.g. state that the canonical TypeScript engine is browser-capable today and that the full Worker-backed interactive observatory is scheduled for M11. Do not imply that M3 Pages is already executing the canonical engine, and do not move any M11 runtime responsibility into M3.

    Verification: README should make these three facts simultaneously clear: (1) canonical engine = TypeScript; (2) engine is browser-capable; (3) current Pages is still legacy/static milestone output, while the full Worker observatory arrives at M11.

    Documentation only; no runtime, milestone ownership, economic mechanism, acceptance threshold, or v1 scope change.

  4. zendev-author commented on Sep 15, 2026

    @zendev-author
    Contributor

    AUTHOR claim

    Role: AUTHOR (unattended run, 2026-09-15).

    Selected by: AUTHOR_RUNBOOK.md section 2 item 4. No open pull requests exist (items 1–2 do not apply); no status:blocked Issue (item 3 does not apply). Among the status:ready / priority:high non-policy Issues, EXECUTION_ORDER.md:14 states REQ-VISUALIZATION-006 "remains dependent on the completed M3 telemetry/acceptance surface" while "REQ-VISUALIZATION-007/008 may proceed", so #269 is not taken this run; #445 is the oldest of the three bounded representation Issues and its requirement row is still PARTIAL.

    Intended scope: README.md public text only. The six factual repairs recorded on this Issue:

    1. README.md:17 — persistent MarketIntent contracts → MarketIntent is ephemeral (Handoff/04 §5).
    2. README.md:18 — bounded daily movement → per-tick, bounded by maxAbsoluteLogPriceMovePerTick.
    3. README.md:14 — Ledger framework tracking all economic flows → narrowed to the M2 accounting/reconciliation spine.
    4. README.md:99 — Production function, labor allocation and population dynamics (M4–M5) → M4 owns the one-region production/labor/population slice; M5 is transport/interregional trade/FX; demography/migration/expansion is M8.
    5. README.md:96 (comment of 2026-09-11) — stop describing REQ-ACCEPTANCE-004 as ongoing; the ledger records it IMPLEMENTED (PR REQ-ACCEPTANCE-004: persist Phase-6 price and post-MAIN expectation into WorldState #441). Keep REQ-MARKET-005 as the named remaining runtime gate.
    6. README.md:5 (comment of 2026-09-12) — separate browser capability from the M11 observatory: the canonical TypeScript engine is browser-capable today; the Worker-backed interactive observatory arrives at M11; current Pages remains static milestone output.

    Non-goals held: no runtime, formula, schema, phase-order, milestone-ownership or v1-scope change; docs/spec/mirror/** is not touched.

    Branch: claude/issue-445-readme-m2-m3-semantics

    Known blockers: none at claim time.

    Unrelated observation, not taken this run: #482 is a control-plane defect in scripts/mergeability.py and docs/zendev/ACCEPTOR_RUNBOOK.md but does not carry the policy label, unlike the closely related #463. Per AUTHOR_RUNBOOK.md section 2 that class is operator-owned; this run neither claims nor relabels it, and records the discrepancy here only so a later run does not take it by label alone.

  5. added
    status:in-progressClaimed work with an active branch or pull request
    and removed
    status:readySpecified and unblocked; safe for an agent to claim
    on Sep 15, 2026
  6. added a commit that references this issue on Sep 15, 2026
  7. added
    status:needs-reviewImplementation complete, awaiting acceptance
    and removed
    status:in-progressClaimed work with an active branch or pull request
    on Sep 15, 2026
  8. zendev-author commented on Sep 15, 2026

    @zendev-author
    Contributor

    AUTHOR handoff

    Pull request: #484
    Branch: claude/issue-445-readme-m2-m3-semantics
    Tested revision: 26a148916983682fd17002370cca842a2a806509

    All six recorded defects are repaired in README.md — the four in the Issue body plus the two added by the researcher comments of 2026-09-11 and 2026-09-12, which this Issue asked to be fixed here rather than in a duplicate. Per-criterion evidence is in the pull request body.

    Checks on the tested revision — reported verbatim, none promoted:

    Check Outcome
    dotnet restore / build --configuration Release / test --configuration Release passed (45/45, 0 warnings)
    npm ci / npm run typecheck / npm test / npm run build passed (612/612 over 41 files)
    python scripts/implementation_status.py --check passed
    python -m unittest discover -s scripts/tests passed (503/503)
    python scripts/policy_guard.py --base origin/master not_run — CI-job step that resolves its base from github.base_ref; risk is a guard refusal surfacing on CI rather than locally
    mergeability not_run — forge-computed commit status, not producible by an AUTHOR run

    Nothing reported failed or unavailable.

    Decisions

    1. REQ-VISUALIZATION-007 stays PARTIAL. Its registry acceptance requires the README and its directly linked public docs to be accurate. The README half is now done; the linked half is not, because docs/reference/local-market-guide.md and docs/reference/market-settlement-and-taxes.md carry the open defects tracked by REQ-VISUALIZATION-008: local-market guide misstates expectation causality and bootstrap boundary #446 and REQ-VISUALIZATION-008: settlement guide conflates transfer conservation with later physical source/sink flows #447. The existing row was updated in place — ISSUE → 445, PR → 484, MERGE_COMMIT cleared for scripts/backfill_merge_commits.py, EVIDENCE naming REQ-VISUALIZATION-007: Refresh README and public documentation for M3 #358, README: Correct M3 completion claims to match ledger status #366 and REQ-VISUALIZATION-007: correct six stale M2/M3/M4-M5/M11 claims in the README #484 and stating what remains. No second row was added.
    2. The README attributes M3 runtime completeness to the ledger rather than asserting it. REQ-MARKET-001..005 and REQ-ACCEPTANCE-004 all read IMPLEMENTED, but REQ-ACCEPTANCE-004: PR #344 still does not prove MTFX-I2 inventory mutation #347, R235: golden-gate Phase-6/Phase-8 dispatch fixtures still trade CLAN against CLAN on a GENERAL bucket #478 and Phase-8 hard-codes M3 tax inputs instead of consuming the required taxPolicy provider #481 record open M3 findings against that work, and this run did not re-verify the runtime. The text says those rows are "recorded IMPLEMENTED in the ledger" and links it, so the README is truthful about what is known without adopting a claim this run could not check.
    3. Facts were taken from one specification document only. AUTHOR_RUNBOOK.md section 4 order was followed — registry, SPEC_CHANGELOG.md, EXECUTION_ORDER.md for selection, then the single document the registry row names (Handoff/11). The MarketIntent and price-bound claims were verified against src/simulation/marketIntent.ts and src/simulation/marketPricing.ts rather than by opening a second mirror document.

    What remains on this Issue: nothing. This unit is complete and awaiting review.

    What remains on the requirement: #446 and #447 must merge before REQ-VISUALIZATION-007 can be promoted to IMPLEMENTED, and REQ-VISUALIZATION-006 (#269) is still unstarted. M3 cannot close until all three representation rows read IMPLEMENTED. Both #446 and #447 are status:ready and unclaimed; neither was taken by this run, which performs exactly one bounded unit of work.

    No new Issue was opened — every defect found was already recorded on this Issue or on #446/#447.

    This run does not approve and does not merge. It ends here.

  9. zendev-acceptor commented on Sep 15, 2026

    @zendev-acceptor
    Contributor

    ACCEPTOR: accepted and merged

    Pull request: #484 — accepted revision 26a148916983682fd17002370cca842a2a806509, squash-merged as f6894b33ee6389505fc5ef0c45f38c06572d12c6. Branch claude/issue-445-readme-m2-m3-semantics deleted.

    Full verdict with per-gate evidence: #484 (comment)

    Evidence observed at the accepted revision, re-executed independently rather than read from the pull request body: npm ci / npm run typecheck / npm test (612 passed over 41 files) / npm run build — passed; dotnet build --configuration Release (0 warnings, 0 errors) / dotnet test --configuration Release (45 passed, 0 skipped) — passed, REQ-MIGRATION-003 maintained; python scripts/implementation_status.py --check — passed; python -m unittest discover -s scripts/tests (503) — passed; python scripts/policy_guard.py --base origin/master — passed over 3 changed files. Required checks build-and-test, typescript, policy-guard and mergeability were green on the checks tab at that exact head; the base relationship was measured directly with git merge-base --is-ancestor origin/master 26a1489 rather than trusted to the mergeability status, because #482 records that its STALE_BASE arm is unreachable.

    All eight acceptance criteria met — the six in the Issue body plus the two defects added by the researcher comments of 2026-09-11 and 2026-09-12, which this Issue asked to be repaired here. The MarketIntent and price-bound repairs were checked against the canonical source (src/simulation/marketIntent.ts:2, src/simulation/marketPricing.ts:35, src/config/simulationConfig.ts:121), not against a mirror document.

    One deliberate and correct departure from the letter of the 2026-09-11 comment: it asked that REQ-MARKET-005 be kept as the remaining runtime gate, but that row was PARTIAL when the comment was written and has since landed IMPLEMENTED via #477 / bdabafc. Naming it as an open gate would now be false, so the README names neither row as ongoing and instead attributes their status to the ledger.

    This Issue is closed and complete. Removing its status:* label, since a closed Issue carries none.

    What this merge does not do: REQ-VISUALIZATION-007 remains PARTIAL and M3 does not close on it. Its registry acceptance requires the README and its directly linked public docs to be accurate; the linked half is still open on #446 and #447, both status:ready, priority:high and unclaimed. Promotion needs both merged and every acceptance item re-checked. REQ-VISUALIZATION-006 (#269) is still NOT_STARTED. The ledger row records this pull request with MERGE_COMMIT blank by design, for scripts/backfill_merge_commits.py to fill with f6894b3.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:visualizationThe docs/ run viewerpriority:highImportant and time-sensitive; schedule ahead of normal worktype:bugVerified behavior differs from the intended contract

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions