Skip to content

foundation: report currency age and check model-route references - #1201

Open
seathatflowsinourveins wants to merge 6 commits into
mainfrom
codex/model-route-currency-consistency-20261016
Open

seathatflowsinourveins wants to merge 6 commits into
mainfrom
codex/model-route-currency-consistency-20261016

Conversation

@seathatflowsinourveins

@seathatflowsinourveins seathatflowsinourveins commented Oct 16, 2026 •

Copy link
Copy Markdown
Collaborator

Scope

The October 15 UTC rollover made nine landscape exceptions eight days old, causing publication failures from elapsed time. This supersedes the October 7 enforcement behavior: age-due model currency is reported with exit 0, remains visible in JSON output and the CI step summary, and persists in the daily models_past_window notice. Unreadable or structurally invalid inventories remain visible coverage gaps. Recoverable model findings from the same resolved checkout are carried forward, marked with their origin, alongside newly known due counts. Parser-depth failures also become coverage gaps. The 42-day/seven-day maintenance windows remain; malformed JSON, structural, date-format and source errors still fail publication validation.

Model-route candidates also gain explicit inventory references for the carried routes, the GPT-half manifest and C2's merged output. Missing or malformed joins fail consistency validation; an older or otherwise different selected model produces a nonblocking notice.

Adds held inventory rows for GPT-6 Luna, Haiku 5.5, Muse Wonder, Wonder Full and hosted Spark 1.3. The background-Haiku entry becomes a held Haiku 5.5 proposal for normal refresh; this PR applies no runtime setting.

  • Initial base: 5bab63233ef90260bec4a8ee0cec4f5e4431776c. Combined review round incorporates main at 30542e70560147c19049016d19aa3f264515c92f, including merged foundation: retain GPT-only initial model-routes sweep #1177; evidence registrations from both sides are retained.
  • Lane: lane:foundation.
  • Owned paths: model-route inventory/bindings, scripts/validate.py, scripts/currency_due.py, their tests, custody tests, the model-currency guide, dated decisions/evidence and registrations. The edited October 7 decision and two linked records now cite private records by name only.
  • Separate from foundation: retain GPT-only initial model-routes sweep #1177. This consistency PR precedes C2 publication.

SOTA sources

Primary sources read 2026-10-16. evidence/artifacts/model-route-currency-consistency-20261016/UPSTREAM-PINS-20261016.json indexes dated primary captures in four UPSTREAM-SRC-*.md files, separate from the findings in sources.json. The co-op also has the reproducible public base-validator source copy for independent review.

  • OpenAI API changelog, September 2026: gpt-6-luna release on 2026-09-22; current model page.
  • Anthropic October 7 release: claude-haiku-5-5; current model specification.
  • Meta Wonder and Full announcement, 2026-10-12, and current model/availability documentation: muse-wonder-1.0 and the subscription Full product. The exact muse-wonder-full-1.0 identifier is bound by the published native Muse 1.4.7 fence receipt; gateway availability remains unverified.
  • Meta Spark 1.3 announcement, 2026-09-02, and the current hosted Spark entry in the models page.
  • Existing validator and fixture harness at 5bab63233ef90260bec4a8ee0cec4f5e4431776c: scripts/validate.py, tests/test_model_currency.py, tests/test_validate.py. python/cpython v3.13.16 unittest supplies the installed test runner and assertions; no new package or script is introduced.
  • Existing scripts/host_receipts.py:547 at that base supplies normalize_repository() for equivalent GitHub component identities. The same base's pin_blob_digests() in tests/test_provenance_digest_custody.py is corrected to account for modified checkout paths during a pending merge; its public run pin remains unchanged.
  • OmniRoute v3.8.51 at c1e30b7676975feb298b49eff6ff58923c04b89e: Codex registry and Muse registry declare the four normalized routing prefixes. This citation establishes names, not availability.
  • GitHub Actions job summaries, read 2026-10-16: append Markdown to GITHUB_STEP_SUMMARY.
  • PEP 503, Normalized Names, read 2026-10-16: PyPI comparisons reuse scripts/starred_protected.py::package_name() at 94b4ba5515da5159c3b50d8b7edef40b7c4bbbc2. Exact retained proposal spelling remains the separate coverage key.
  • Policy supersession: the public October 7 enforcement and October 15 rollover decisions, plus the 2026-10-15 23:39 ET direction as recorded in direction-cc-20261015T1946Z-north-star-new-wsl-takeover.addendum-19.md, item 4, cited by name and paraphrased only. The new decision records the supersession and the old decision links forward to it.

Evidence-class table

Claim Evidence class Command / receipt
New model identities and release dates are sourced source_review sources.json; dated provider pages
The prior background-Haiku record names no measured retention reason source_review Base inventory successor-review record; dated decision
Missing inventory references and omitted C2 coverage fail local_integration Fail-first publication CLI tests in checks.json
Older selected models validate successfully with a notice local_integration Stale-generation CLI fixture
Age-due rows return exit 0 and remain visible in the existing step summary local_integration Fail-first CLI/summary test; malformed/date/source controls remain failing
Age findings persist; recoverable inventory findings carry forward while current known counts still write local_integration Fail-first collector CLI fixtures in checks.json
Canonical carried routes and the merged GPT manifest join the inventory local_integration Required validate.py publication check
Edited private citations carry names without hashes or abbreviated prefixes local_integration Two tests failed first with three assertions, then passed; field/count-only output
Native operation, entitlement, quality or deployment of the new held rows Not established No model, credential or Muse invocation

Local commands run

python3 -B -m unittest tests.test_currency_due -q
  Current cache-identity/parser-depth follow-up: 105 tests passed; four focused controls also passed.
  Detached user systemd units at CPUWeight=idle retained private stdout/stderr and explicit exit files.
  Earlier notice-budget follow-up: 153 tests passed; round 3: 261 affected tests and a 48-test model/guide rerun passed.
python3 scripts/validate.py
  exit 0: 71 components, 12,232 hashed files, four profiles, 240 receipts; 19 bindings and 29 observed routes. Two nonblocking notices cover the same rejected placeholder route in the carried and GPT-half inputs.
git diff --check
  exit 0

Fail-first results include the publication age failure, missing step-summary visibility, missing-row join, ignored GPT manifest, omitted C2 table/coverage, removal of the binding declaration and the background proposal. The age-window failure is explicitly superseded by reporting. Structural, date-format, source and malformed-JSON failures remain blocking; the maintenance windows remain 42 and seven days.

Decision record

2026-10-16-model-route-currency-consistency.md.

C2 emits route-currency.json beside its merged returns.json. Every route ID must resolve through the shared registry, its inline model_currency_id must agree, and its repository must match that registry entry's exact retained route identities and kind. A gateway proposal cannot borrow a model route ID to omit its package row. Component-only proposals may omit routes; they name a package_currency_id and match its canonical GitHub/PyPI identity. Their repository identities must cover the retained discovery proposals exactly, without duplicates. The dated decision includes the shape. The existing reviewed halves are consumed without rewriting their votes.

The withheld subscription route keeps its rejection and emits a nonblocking difference notice for its non-model placeholder. A reference to the Full inventory row establishes identity only. The Muse fence HOLD and approval requirements remain in force.

Combined review closure

The complete closure table is review-closure.md; independent approval is still the reviewers' gate.

Finding Result
GitHub normalization; component-only package joins; C2 registry bypass Fixed with fail-first fixtures.
Duplicate, malformed and layer-count test gaps Covered; six guard-removal controls demonstrate sensitivity. Existing correct guards are not claimed as baseline failures.
Prefix citations and superseded guide wording Corrected from pinned sources and covered by the guide regression.
Daily age feed and unreadable-inventory behavior Fixed with persisted CLI fixtures; normal refresh proposal step preserved.
October 7 privacy P1 Current decision and linked records use private names only; tests fail first and then pass. History is unchanged.
Provider-source P3 Dated primary excerpts and public pinned source copy supplied through the co-op.
Pending-merge custody helper failure Fixed with a fail-first synthetic regression; retained bytes still resolve to the same public run pin.
active_models: unknown Nonblocking Follow-up: catalog/interpreter/source checks pass, but the collector discarded the failure subtype. The host owner needs a sanitized category and duration; timeout remains unproven.

The timer prerequisite is met. No timer install or speculative timeout change is part of this round.

Round 3 is one normal commit on 94b4ba5515da5159c3b50d8b7edef40b7c4bbbc2, with no rebase. It folds the two local P2s, the CC micro items and GPT FULL2:

Round-3 finding Result
Gateway proposal relabelled as a model route; PyPI spelling mismatches Fixed with fail-first fixtures; route identities/kind are explicit and PEP 503 is reused.
Unknown inventory plus another nonzero count erased prior findings Fixed using the reproduced stale-receipt case; retained model findings and their origin persist beside new counts and the gap.
Session notice dropped gaps when counts existed Fixed with ordinary and truncation/pointer regressions.
Malformed/unknown package-row test gap Five existing-guard controls added; no baseline defect is claimed.
Older Haiku exception sentence; seven-count description Corrected to the held Haiku 5.5 proposal and eight counts.
Digest-cleanup claim was too broad Corrected only. Untouched handbook-projection.json and fill-checks.json retain historical residue under addendum-22. Those records were not edited.
Independent source copies missing from the review packet Co-op confirmed attachment of pr1201-public-upstream: 14 public capture/source/index files plus SHA256SUMS. Any file excluded by packet privacy checks remains a named unmirrored-source gap.
Active-model cause has no retained failure category F5-G-ACTIVE-MODEL-FAILURE-CATEGORY remains a bounded, nonblocking GAP; no host rerun or timeout attribution.

The subsequent small follow-up to MICRO-delta-1b62f8e7.md fixes the three-gap notice-budget regression. A fail-first unit case raised CheckError, and the CLI reproduced exit 2 without writing. Notices now try full gaps, compact named gaps and a gap count with the actual supplied commands/pointers. If no real command fits, only its inline display is omitted; the full command and coverage fields remain in the report. Notice length cannot block collection.

The same commit fixes unreadable prior history blocking current known counts, shows retained origins in text, and corrects the preservation wording. It adds seven binding-shape and seven PyPI mismatch negative cases for existing correct guards. Recoverable model findings still carry forward; unreadable history is explicitly unavailable, while current known counts persist. Incomplete runs with no known counts keep the previous file. One normal commit on 1b62f8e7d501846abb974622c89111f6f794ae9b, no rebase.

The final dependency-registration commit directly follows cc308901f327b04cdd47c356d0726b00c88f0f07, with no rebase. It adds scripts/starred_protected.py to the verdict gate's transitive TRUST_PATHS inventory and appends a native advisory observation under advisory-gate-deltas.md. GitTree/derive_ci_protected at the published source pin derives 354 entries, one more than the previous observation. The new item is conservative accounting for the imported module's path-shape helper; the normalizer itself remains a pure string operation. Earlier observations and their baseline bytes are unchanged.

Both existing enforced-inventory checks failed first on cc308901 and passed with the registrations. After commit 4107f379529411c87e4cd5568d4ee57139a582c3, all 127 owning push-gate tests passed, with no errors or skips, run serially through the stdlib unittest loader/TestResult under idle CPU scope. The held precommit run was 126/127 because its outer-history fixture cloned the old committed index; the committed append resolves that limitation. Required publication validation passed with 12,232 registered files. The new advisory delta records the native derivation and each classification.

The next small commit directly on 4107f379529411c87e4cd5568d4ee57139a582c3 closes two collector boundaries. Retained findings require the cached root to equal the current report's resolved checkout; foreign, missing and malformed cache identities cannot supply findings for another checkout. inventory_due catches RecursionError, following the existing read_record parser handling at that pin (scripts/currency_due.py:287). Two fixture checkouts sharing state and a 200,000-level JSON fixture failed first with three cache assertions and one recursion error. Both new cases and the existing retention controls pass, and all 105 currency tests pass. Raw logs and exit files are retained privately by name, without published digests. No rebase or runtime deployment is included.

Host evidence

Not applicable: no evidence/hosts/ or platform-status changes.

Checklist

  • No workflow or permission changes.
  • Existing publication/test commands reused; no new scripts or dependencies.
  • No credentials, private source digests or account fields retained.
  • No model calls, Muse execution, paid surface or runtime application.
  • Peer files preserved.
  • No changes to landscape verdicts, convergence waves or the saturation ledger.

@seathatflowsinourveins seathatflowsinourveins added the lane:foundation Foundation lane: Claude/Codex setup, hosts, memory, RAG, research, workers label Oct 16, 2026
seathatflowsinourveins added a commit that referenced this pull request Oct 17, 2026
…rance record

Fold for the Claude-family read of 46fd06a (CHANGES_REQUESTED) and the
CC's rulings posted on #1237 (issuecomment-6228929765), now cited in the
record as its locator for "CC ruling N".

1. Dependabot's 7-day cooldown (.github/dependabot.yml:40-43) is listed
   under Kept as our own named supply-chain control, longer than
   Dependabot's 3-day default (GitHub's options reference), untouched.
2. Dates stay as the first fold set them.
3. A newer release a daily run finds triggers its layer's targeted sweep
   at once; a FINAL layer still reopens only through that sweep
   (protocol :62-63, unchanged).
4. Enforcement 3: the CC's review fails a change that introduces,
   re-records, or touches and leaves stale a pin; a change that touches
   no pin is not held for it.
5. Release watches: waiting ends only for the selection in use;
   NautilusTrader 2.0.0rc5 moves to v2.0.0rc7 through the trading lane's
   screen and the foundation re-pin (Q-NT1); Lumibot stays a reviewed
   candidate; the alpaca-mcp-server trigger stays; cites :37-43.
6. New section "The existing age failure": the record endorses #1201,
   which turns the age failure into a notice; until it lands, the daily
   runs keep each landscape_check fresh.
7. P3s: model-currency.md ranges narrowed to :15 (first clause) and
   :119-120; "normal pace" and the inserted "only" dropped; the 2026-09-30
   line (:151-152) added; currency_due.py:116,119 cited; the 2026-10-15
   record's own account (:4,48-49) replaces "failed every pull request";
   the 2026-10-07 record quoted exactly (:56-57, :10); merge-options.adoc
   cited at :79-81 alone; the new WSL install claim replaced by the
   lifecycle install commands (:246-251).

The record's manifests/evidence.json entry is re-registered through
scripts/host_receipts.py register_file.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
seathatflowsinourveins added a commit that referenced this pull request Oct 17, 2026
Fold for the CC's 2026-10-17 ruling on the pending-age note in #1237:
the 2026-10-15 direction covers every date-compared failure inside the
required check.

The section "The existing age failure" becomes "The existing
date-compared failures" and names both known instances with their lines:

- the model-currency age failure (scripts/validate.py:73-75,246-248),
  which PR #1201 converts to a notice; until it lands, the daily runs
  keep each landscape_check fresh;
- validate_pending_age (scripts/validate.py:698-701,
  scripts/public_starred.py:139-155), which needs the same conversion in
  a follow-up PR owned by the public-starred maintainers; until that
  lands, the starred refresh keeps PENDING entries inside their window,
  each dispositioned within seven days of its first observation, since a
  refresh keeps the first observation (scripts/public_starred.py:142).

No code change. The record's manifests/evidence.json entry is
re-registered through scripts/host_receipts.py register_file.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
seathatflowsinourveins added a commit that referenced this pull request Oct 17, 2026
…e record

Fold 4 for the Claude-family delta read of bf2b476 (CHANGES_REQUESTED)
and the CC's comments on #1237.

- P2: ruling 8 in its own order. Each PENDING entry is dispositioned
  within seven days of its first observation; a refresh alone cannot keep
  it inside the window, because the refresh keeps each row's first
  observation (scripts/public_starred.py:142; also :254-259 and :319).
- P3: ruling 8 cited by its locator, issuecomment-6229313250, as
  "CC ruling 8".
- P3: the required validate check needs every shard 0..7
  (.github/workflows/validate.yml:26,454,476-480); "two are known" is
  scoped to scripts/validate.py and the modules it imports.
- P3: ruling 6 as corrected by issuecomment-6229421934: until #1201
  lands, each landscape_check is renewed by its lane's refresh, which the
  daily run prompts on day five (docs/model-currency.md:108-112).
- P3: the base line names its exception: the PR #1201 citations are at
  its head 459bf4f.

The record's manifests/evidence.json entry is re-registered through
scripts/host_receipts.py register_file. Not pushed: a read of bf2b476
is still running.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
seathatflowsinourveins added a commit that referenced this pull request Oct 17, 2026
…tories (#1237)

* docs(decisions): record zero tolerance for stale models, runtimes and repositories

Draft decision record for the CC's review, on the owner's direction of
2026-10-17 (paraphrased, not quoted). A stale verdict now starts
replacement work at once (the successor through the layer's screen, a
smoke test, a measured trial, the switch, then removal with the inverse
recorded) instead of ending at a proposal or a notice.

It supersedes the proposal-only reading of docs/model-currency.md, normal
review pace for a known successor, a same-publisher search as a pick's
landscape, release watches that wait, and release age as a reason to keep
an older pick. It keeps the 42-day/7-day rule in scripts/validate.py as is
and adds no CI gate.

The record is registered in manifests/evidence.json through
scripts/host_receipts.py register_file.

Co-Authored-By: Claude Opus 5.5 <[email protected]>

* docs(decisions): apply the CC's review rulings to the zero-tolerance record

Fold for the CC's 2026-10-17 rulings on #1237.

Cooldown scope narrowed: each upstream's own documented cooldown and
supply-chain gates stay (Dependabot's cooldown, a tool's minimum release
age such as mise's minimum_release_age, the lanes' security and integrity
gates). Inside such a window the pick is the newest release past it, and
a security fix that exists only in the newer release overrides it. The
record ends release age as a reason to keep an older pick beyond the
upstream's window, including an age buffer of our own such as the
2026-09-25 seven-day tool cooldown where it is longer.

Dates: each point is dated by the day the owner gave it (paraphrased):
the no-new-mechanical-gate point 2026-10-15, the no-stale-pick and
newer-release-fit points 2026-10-16, zero tolerance with immediate
replacement 2026-10-17.

The record's manifests/evidence.json entry is re-registered through
scripts/host_receipts.py register_file.

Co-Authored-By: Claude Opus 5.5 <[email protected]>

* docs(decisions): apply the CC's second-round rulings to the zero-tolerance record

Fold for the Claude-family read of 46fd06a (CHANGES_REQUESTED) and the
CC's rulings posted on #1237 (issuecomment-6228929765), now cited in the
record as its locator for "CC ruling N".

1. Dependabot's 7-day cooldown (.github/dependabot.yml:40-43) is listed
   under Kept as our own named supply-chain control, longer than
   Dependabot's 3-day default (GitHub's options reference), untouched.
2. Dates stay as the first fold set them.
3. A newer release a daily run finds triggers its layer's targeted sweep
   at once; a FINAL layer still reopens only through that sweep
   (protocol :62-63, unchanged).
4. Enforcement 3: the CC's review fails a change that introduces,
   re-records, or touches and leaves stale a pin; a change that touches
   no pin is not held for it.
5. Release watches: waiting ends only for the selection in use;
   NautilusTrader 2.0.0rc5 moves to v2.0.0rc7 through the trading lane's
   screen and the foundation re-pin (Q-NT1); Lumibot stays a reviewed
   candidate; the alpaca-mcp-server trigger stays; cites :37-43.
6. New section "The existing age failure": the record endorses #1201,
   which turns the age failure into a notice; until it lands, the daily
   runs keep each landscape_check fresh.
7. P3s: model-currency.md ranges narrowed to :15 (first clause) and
   :119-120; "normal pace" and the inserted "only" dropped; the 2026-09-30
   line (:151-152) added; currency_due.py:116,119 cited; the 2026-10-15
   record's own account (:4,48-49) replaces "failed every pull request";
   the 2026-10-07 record quoted exactly (:56-57, :10); merge-options.adoc
   cited at :79-81 alone; the new WSL install claim replaced by the
   lifecycle install commands (:246-251).

The record's manifests/evidence.json entry is re-registered through
scripts/host_receipts.py register_file.

Co-Authored-By: Claude Opus 5.5 <[email protected]>

* docs(decisions): name both date-compared failures in the required check

Fold for the CC's 2026-10-17 ruling on the pending-age note in #1237:
the 2026-10-15 direction covers every date-compared failure inside the
required check.

The section "The existing age failure" becomes "The existing
date-compared failures" and names both known instances with their lines:

- the model-currency age failure (scripts/validate.py:73-75,246-248),
  which PR #1201 converts to a notice; until it lands, the daily runs
  keep each landscape_check fresh;
- validate_pending_age (scripts/validate.py:698-701,
  scripts/public_starred.py:139-155), which needs the same conversion in
  a follow-up PR owned by the public-starred maintainers; until that
  lands, the starred refresh keeps PENDING entries inside their window,
  each dispositioned within seven days of its first observation, since a
  refresh keeps the first observation (scripts/public_starred.py:142).

No code change. The record's manifests/evidence.json entry is
re-registered through scripts/host_receipts.py register_file.

Co-Authored-By: Claude Opus 5.5 <[email protected]>

* docs(decisions): apply the delta read of bf2b476 to the zero-tolerance record

Fold 4 for the Claude-family delta read of bf2b476 (CHANGES_REQUESTED)
and the CC's comments on #1237.

- P2: ruling 8 in its own order. Each PENDING entry is dispositioned
  within seven days of its first observation; a refresh alone cannot keep
  it inside the window, because the refresh keeps each row's first
  observation (scripts/public_starred.py:142; also :254-259 and :319).
- P3: ruling 8 cited by its locator, issuecomment-6229313250, as
  "CC ruling 8".
- P3: the required validate check needs every shard 0..7
  (.github/workflows/validate.yml:26,454,476-480); "two are known" is
  scoped to scripts/validate.py and the modules it imports.
- P3: ruling 6 as corrected by issuecomment-6229421934: until #1201
  lands, each landscape_check is renewed by its lane's refresh, which the
  daily run prompts on day five (docs/model-currency.md:108-112).
- P3: the base line names its exception: the PR #1201 citations are at
  its head 459bf4f.

The record's manifests/evidence.json entry is re-registered through
scripts/host_receipts.py register_file. Not pushed: a read of bf2b476
is still running.

Co-Authored-By: Claude Opus 5.5 <[email protected]>

* docs(decisions): write every zero-tolerance locator so a reader resolves it

Fold 5 for the Claude-family delta read of the fold-4 head
(CHANGES_REQUESTED, one P3); Muse's read of that head passed with no
findings.

- P3: "which shard 0 runs" now cites .github/workflows/validate.yml:173-178
  in full; the bare :173-178 resolved to scripts/validate.py.
- The citation check now resolves each bare :N to the last path the text
  names before it, as a reader does, and requires every resolved range to
  be a checked entry and every checked entry to be reached. Its first run
  exposed 13 more locator tokens in six places, fixed here:
  - the 2026-10-15 record's :4,48-49 (now linked);
  - the 2026-10-13 record's three re-pin triggers (now linked);
  - the 2026-09-27 record's holds, :67-84 (now linked);
  - the protocol's :62-63 and :92-94 in Enforcement 4 (now linked);
  - the 2026-10-07 record's :56-57 in Alternatives (now linked);
  - five locators on short unit names, now written with their
    adoption/templates/systemd/ paths.

The record's manifests/evidence.json entry is re-registered through
scripts/host_receipts.py register_file.

Co-Authored-By: Claude Opus 5.5 <[email protected]>

---------

Co-authored-by: Claude Opus 5.5 <[email protected]>

This branch has not been deployed

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

Labels

lane:foundation Foundation lane: Claude/Codex setup, hosts, memory, RAG, research, workers

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant