Skip to content

Publish final runtime pins with lock-bound native acceptance - #873

Merged
seathatflowsinourveins merged 1 commit into
mainfrom
codex/ns2604-runtime-final-binding-20261008
Oct 8, 2026
Merged

seathatflowsinourveins merged 1 commit into
mainfrom
codex/ns2604-runtime-final-binding-20261008

Conversation

@seathatflowsinourveins

@seathatflowsinourveins seathatflowsinourveins commented Oct 8, 2026 •

Copy link
Copy Markdown
Collaborator

Scope

Two historical 24/24 runtime runs did not print their lock checksum in acceptance stdout. This change publishes the measured final f451/aa37 metadata, preserves those original runs as historical, and binds final-lock acceptance to one new native 24-case run whose own output prints f451 immediately before and after execution.

The future installer also uses uv0.12.17's default exact --locked --group dev sync. Approved older environments previously could retain removed DVC/dvc-data/diskcache packages under --inexact while receiving the final completion marker. The shared-vector hash and a matching-hash negative control now enforce the prospective exact contract. This read-only acceptance executes no migration or sync.

  • Lane: lane:trading; original source basea6f3ee76, initial landing base8c1428d2; corrected landing baseb4182ccc0a7bee6352274408e03545cb5949142d follows merged Row70 defectA.
  • Runtime source owners cleared bounded publication in acknowledgements47492/47495. CC172905Z authorized one final-lock acceptance after Move the new WSL SRT install path to sandbox-runtime 0.0.79 #876 ready and SUITE-GO; both occurred.
  • Catalog reconciliation goes to the G5 sole assembler. This PR changes no catalog file.
  • Landing path:5f. The custody hold lifts only on 873-LOCKS-RECONCILED and LANDING-READY at the same corrected head with the run receipt and both actual lock hashes, after exact-head checks/reviews/current-main conditions.

SOTA sources

  • astral-sh/uv0.12.17: supported default exact sync removes packages absent from the lock. Installed help confirms --inexact retains extras; pinned document SHA2565c6a534a81111800ff37455f8c547bbb67f304b9d0cb02543c7185266dbef218.
  • containers/bubblewrap0.9.0: retained native clear-environment/network isolation/read-only mount controls.
  • Unchanged retained later accept-trading-2604.sh, SHA256 4d7b784aa2b24ccfe05910fd652fb4d7ef99f0298b7200e3a864b7c186207ade:24 offline integration cases. It invokes existing Python directly and runs no uv lock/sync. The public prospective source is a separate28-case recipe.
  • Official PyPI versions: EdgarTools5.61.1, skfolio1.7.0, LightGBM4.7.0, pytest9.1.1.
  • Existing native dev synchronization receipt95cb1cae and independent current-input readbackda1985f3 retain their original provenance. Neither is relabeled as fresh acceptance.

Evidence-class table

Claim Evidence class Exact scope
Final source metadata matches measured runtime independent observation/local_integration Lock f451ef979cdb1ae3686a30df1c883c257402b32753478c1f9c686c057e9c3989; manifest aa370e42e29dc2419e586358254ff2e821df48a693aa9a3ee16b65d30036ee0b
New final-lock native acceptance native CLI/local_integration 17:48:39–17:49:09Z,24 unique PASS/0, actual same-stream before/after f451
Historical dev sync/dependency check imported native observation Unchanged95cb inexact operation and native-verification1128a569
Prospective exact source guards local_integration 13 source/argv cases; reintroduced --inexact fails despite refreshed hash
Both earlier24/24 runs retained history Receipt-reported1fb and writer-reported172; neither prints a lock in acceptance stdout
Legacy cleanup,28/dev acceptance, historical engineE2E unexecuted boundary No execution claim from the fresh24 offline scope

Fresh native acceptance and preserved history

The one fresh execution used the genuine WindowsWSL NativeStack2604/nonroot route under nice10/ionice, with the unchanged24-case script and existing interpreter. The receipt envelope printed script SHA and actual lock checksum immediately before and after. Both are f451ef979cdb1ae3686a30df1c883c257402b32753478c1f9c686c057e9c3989; rc0,24PASS, empty stderr. Raw stdout1361bytes/SHAe176e06192e9d027669f42b58b86b395c3df3dfe9dc02a4e439917d23b906313.

The original native receipt hash is 4a064e39026f205b8e2f273d396044b9145dbcb58a1510b8c9dbf45c56c5a2a5. Its public projection and actual independent assessment are bound by evidence/receipts/runtime-final-native-24-acceptance-20261008.json. The retained critic recomputed original hashes/cases and checked source controls; it ran no acceptance.

The dated reconciliation names the two older runs separately. Run1 is06:20:48–06:21:25Z with receipt-reported1fb; run2 is13:45:33.120–13:45:58.886Z with writer-reported172. A separate13:46:01.921–13:46:02.069Z native172 readback is an after-run observation. All original receipts/output bytes are unchanged. The additive correction resolves wording and missing association without retro-binding either run to finalf451.

Source validation and main-test declaration

The13 focused source cases, separate Bash syntax, offline lock consistency and registered validator pass. The actual independent fresh-run report and historical-source artifact retain exact provenance. Current-main merge/validation is completed in the corrective landing preparation.

For main's changed tests/test_trading_2604_lock.py, the declared failing set is exactly tests.test_trading_2604_lock.Trading2604SyncVectorTests.test_installer_and_ci_source_have_byte_identical_argv, whose historical expectation reads the retired exclude-newer cutoff. Every other main-version method must pass; the PR test is restored byte-identically after comparison.5f repeats its then-current landing condition.

Host evidence and inverse

The new operation is a read-only24-case acceptance; owned synthetic output/logs were emitted. No uv lock/sync, runtime metadata/venv write, provider/model/GPU/SEC/broker/paper request or N2 resume occurred. Passing these cases does not establish dev probes, exact legacy migration, historical engineE2E or strategy performance.

Reverting publication restores only owned source/evidence bindings. Before any later exact host migration, the serialized writer retains prior inventory/metadata; restoring a selected prior pair and matching supported sync reinstalls removed dependencies while preserving later owners. No migration or host inverse was exercised.

Checklist

  • One fresh final24 run, own before/after lock proof and actual retained independent assessment.
  • Both earlier runs and95cb observation preserved with honest scope.
  • Source exact-sync regression guard and published final metadata.
  • No protected rule/workflow/credential/client-config/paper/frozen-input/catalog edit.
  • Corrected current-main preparation tree9487cda4 matches the final rebased tree; native final validate0 at18:07:03Z (70components,10883files,4profiles,237receipts). Main-test comparison12/11PASS/exact declared cutoff error; PR test restored unchanged.
  • Corrected-head hosted/review gates and CC-required proof/readiness pair before5f lands.

@seathatflowsinourveins seathatflowsinourveins added the lane:trading Trading lane: sim, paper and live north star label Oct 8, 2026
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 8, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-08T16:16:11.665434Z cc3d746 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@socket-security

socket-security Bot commented Oct 8, 2026 •

Copy link
Copy Markdown

Dependency limit exceeded — report not shown.

This pull request scan exceeded the 10,000-dependency limit applied to this scan, so the results are incomplete and may be inaccurate. To avoid reporting false positives, Socket has not posted a report.

Upgrade your plan to raise the dependency limit and get complete reports, or view the partial scan in the dashboard.

Socket is always free for open source. If this is a non-commercial open source project, contact us to request a free Team account.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: cc3d7461c2

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@seathatflowsinourveins seathatflowsinourveins changed the title Bind the measured final research runtime metadata and dev sync vector Publish final runtime pins and reconcile legacy dependencies Oct 8, 2026
@seathatflowsinourveins
seathatflowsinourveins force-pushed the codex/ns2604-runtime-final-binding-20261008 branch from 318d966 to 63b2660 Compare October 8, 2026 16:51
@seathatflowsinourveins seathatflowsinourveins changed the title Publish final runtime pins and reconcile legacy dependencies Publish final runtime pins with lock-bound native acceptance Oct 8, 2026
@seathatflowsinourveins
seathatflowsinourveins force-pushed the codex/ns2604-runtime-final-binding-20261008 branch from 63b2660 to 7a3027f Compare October 8, 2026 18:07
@seathatflowsinourveins
seathatflowsinourveins merged commit a484989 into main Oct 8, 2026
35 of 36 checks passed
@seathatflowsinourveins
seathatflowsinourveins deleted the codex/ns2604-runtime-final-binding-20261008 branch October 8, 2026 18:19
seathatflowsinourveins added a commit that referenced this pull request Oct 20, 2026
…HSA-494j) (#1265)

* Pin aiohttp 3.14.4 in three available runtime locks

Regenerate the memory and example locks through uv and reproduce the OpenHands worker frozen export. Move yarl to 1.25.1 as required by aiohttp 3.14.4. Refresh inventory and evidence digest bindings.

The trading lock remains at aiohttp 3.14.3: its exact Python 3.12.3 interpreter is unavailable, and no new installation is authorized. This is a partial repair and re-pins no trading plan.

* Re-pin the trading-2604 runtime lock to aiohttp 3.14.4

GHSA-2g87-pp6c-29x5, GHSA-5wr8-gcqf-gqf3 and GHSA-494j-54xm-rwp3 affect
aiohttp <=3.14.3 and are fixed in 3.14.4. The trading-2604 lock was the last
scanned lock at 3.14.3.

Lock delta (aiohttp only):
- Relock: UV_PYTHON_DOWNLOADS=never uv lock --python <uv-managed CPython
  3.12.3> --upgrade-package aiohttp==3.14.4, uv 0.13.1.
- aiohttp 3.14.3 -> 3.14.4 (sdist and wheels, 18 -> 19 wheels; dependencies
  unchanged). yarl stays 1.25.1. 192 entries before and after; the other 191
  entries and the `revision = 5` header are byte-identical.
- Lock sha256 f451ef979cdb1ae3686a30df1c883c257402b32753478c1f9c686c057e9c3989
  -> a1413f202937aa05625bad34b35d4ad75c9ab637805c3747abc4fb8b0f85634a
  (308332 -> 308625 bytes). The manifest aa370e42 is unchanged.
- uv lock --check passes under uv 0.13.1 and under the installer's pinned
  uv 0.12.17 (`uv --no-config lock --check`, release archive verified against
  validate.yml's SHA256). A relock with uv 0.12.17 resolves the same packages
  but rewrites the header to `revision = 3`, so it was not used.

Bindings refreshed:
- install-trading-2604.sh: lock_hash -> a1413f20. Following #873 (a484989),
  the October 8 published pair f451/aa370e42 becomes one more recorded
  migration input and inverse record (published_lock_hash /
  published_project_hash, a sixth column of the existing-file check), never
  acceptance. Completion marker no-dvc-r4 and sync vector (8b8aa38e) are
  unchanged, as in #873.
- accept-trading-2604.sh:15 and adaptive-paper/scheduled_trial.sh:54 require
  a1413f20, so a runtime still at f451 is refused.
- tests/test_scheduled_trial.py scratch acceptance fixture lock_hash.
  tests/test_trading_2604_lock.py derives every hash from the bytes and pins
  none, so it is unchanged.
- runtime-2604/README.md: current-lock statements. The 24/24 native acceptance
  is bound to f451 and does not transfer; acceptance of a1413f20 is pending
  and runs under the North Star plan's C05.
- .github/osv-scanner-lockfiles.json trading entry sha256.
- adaptive-paper/source-hashes.json (scheduled_trial.sh, test_scheduled_trial.py).
- catalogs/landscape/final-stack.json, regenerated by
  scripts/final_stack.py --write (sources hash of the lock only).
- manifests/evidence.json entries of every changed file.

Retained f451 bytes: tests/test_receipt_sha256_key_custody requires every
receipt *_sha256 to hash a tracked file. The October 8 final-lock and 24/24
receipts bind f451, so its bytes are retained byte-identical (git show
30ab2e3) as evidence/artifacts/trading-2604-aiohttp-repin-20261020/
published-f451-trading-2604-runtime.lock, an excluded evidence fixture in the
osv inventory (not an install input; the active lock is scanned), following the
engine-baseline.lock exclusion precedent.

Records left unchanged (they record what was true then):
event-anchored-ranking/*, catalyst-provenance/README.md,
catalogs/convergence-practice/sources/starred-protected-20261011.json,
catalogs/convergence-practice/starred-convergence-20261010.json,
evidence/artifacts/runtime-final-lock-binding-20261008/*,
evidence/receipts/runtime-final-lock-binding-20261008.json,
evidence/receipts/runtime-final-native-24-acceptance-20261008.json,
catalogs/north-star/readiness.json (receipt values),
catalogs/us-equities/catalog-refresh-20261009.{json,md},
catalogs/us-equities/runtime-target.json#/final_native_acceptance.
Stale current claims left for the catalog assembler, as #873 routed catalog
reconciliation: runtime-target.json#/current_runtime and data-research.md:175.

Checks (python -B, scratch CPython 3.12.3 venv from .github/requirements-ci.txt
with --require-hashes):
- tests.test_trading_2604_lock tests.test_osv_lockfile_coverage
  tests.test_wsl_retrieval.RetiredRunnerTests: 78 tests, OK.
- 25 related modules (scheduled_trial, trading_2604_source_acceptance,
  runtime_directory_identity, install_claude_profile, final_stack,
  receipt_sha256_key_custody, frozen_evidence_reporting, adaptive_paper_*,
  lane_b_r3_*, local_pages_*, trading_gates_bindings and others reading the
  changed files): 814 tests: 727 pass, 86 skipped,
  1 failure. The failure,
  test_gitleaks_config...test_repository_pre_commit_refuses_old_fixture_commit...,
  fails identically at base 14df31f with no change applied (its scratch-repo
  pre-commit hook run reports no "leaks found" on this host); it touches none
  of the changed files.
- Scratch probe of the installer's locked-project block only (no uv, sync,
  Docker or host path): an existing f451 lock is admitted and replaced with
  a1413f20 (rc 0); an unknown lock is refused with exit 73.
- scripts/evidence_manifest.py --check, scripts/validate.py,
  scripts/final_stack.py --check: pass. git diff --check: clean.
- osv-scanner 2.6.0 (sha256 ca69b3d3 verified), ordinary group as
  security-scan.yml builds it: 60 inputs, No issues found, rc 0.

No install-trading-2604.sh, accept-trading-2604.sh or scheduled_trial.sh run;
no host state, broker or paper contact. LIVE remains NO-GO.

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

* Retain the pre-bump OpenHands example lock for its 2026-09-30 frozen record

Commit 1 moved examples/openhands-native-capabilities/requirements.lock to
aiohttp 3.14.4. The convergence record
evidence/artifacts/native-runtime-role-resolution-20260930/experiment.json
froze that lock's earlier bytes as frozen_inputs.sources[3] (sha256 16e1a44e...),
so hosted validate-shard-0 failed in `scripts/validate_convergence.py
--all-recorded` with "record.frozen_inputs.sources[3]: SHA-256 mismatch".

This follows ecea286 (#628), which kept the frozen inputs of the OmniRoute
records the same way. The lock's bytes at 30ab2e3 are retained, byte for byte,
as evidence/artifacts/aiohttp-3.14.4-relock-20261020/historical/examples/
openhands-native-capabilities/requirements.lock.source.txt. The record's single
reference now points there with its sha256 unchanged. The copy is listed as an
excluded evidence fixture in .github/osv-scanner-lockfiles.json, with its reason
and the record as evidence, like the f451 fixture in commit 2 (the repository's
pre-push registry test requires that listing). manifests/evidence.json refreshes
the record's and the inventory's entries and registers the retained copy. No
measurement, verdict or other field of the record changes.

Checks, run with python3 -B in a scratch CPython 3.12.3 venv built from
.github/requirements-ci.txt with --require-hashes:
- scripts/validate_convergence.py --all-recorded: 33 records, all valid;
- scripts/validate.py: passed (71 components, 12,328 hashed files, 243 receipts);
- scripts/evidence_manifest.py --check: passed (12,328 files);
- unittest of test_osv_lockfile_coverage (61 tests, OK after the listing),
  test_convergence_contract, test_evidence_manifest,
  test_osv_lockfile_coverage, test_receipt_sha256_key_custody,
  test_research_convergence_practice and test_sota_convergence: 271 tests, OK.

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

* Rename the retained example lock so dependency review does not read it as a manifest

At f662439 the required dependency-review check failed. GitHub's dependency
graph parsed the retained copy from commit 3, whose basename began with
"requirements" and ended in ".txt", as a pip manifest. It then reported its
aiohttp 3.14.3 as a newly added vulnerable dependency (GHSA-2g87-pp6c-29x5 and
GHSA-5wr8-gcqf-gqf3, high). The copy is an evidence fixture, not an install
input.

The copy is renamed to .../historical/examples/openhands-native-capabilities/
pinned-at-30ab2e3a.source.txt. Its bytes are unchanged (sha256 16e1a44e...). Like
ecea286's worker.py.lock.source.txt, the name matches no lockfile or manifest
pattern. The record's single reference moves with it.

Because the new name is not a lockfile candidate, tests.test_osv_lockfile_coverage
refuses an exclusion for it ("is excluded but is not a tracked lockfile"). The
exclusion commit 3 added is therefore removed, and .github/osv-scanner-lockfiles.json
is byte-identical to 3449e04 again. manifests/evidence.json unregisters the old
path, registers the new one, and refreshes the record's and the inventory's
entries. No dependency-review allowance or OSV ignore is added.

Checks on this head, run with python3 -B in a scratch CPython 3.12.3 venv built
from .github/requirements-ci.txt with --require-hashes:
- scripts/validate_convergence.py --all-recorded: 33 records, all valid;
- scripts/validate.py: passed (71 components, 12,328 hashed files, 243 receipts);
- scripts/evidence_manifest.py --check: passed;
- unittest of test_osv_lockfile_coverage, test_convergence_contract,
  test_evidence_manifest, test_receipt_sha256_key_custody,
  test_research_convergence_practice and test_sota_convergence: OK.

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

* Test the trading-2604 installer's admission of the published f451 lock

The native Codex review of a6cb6b8 (P2) and the GPT review's L2 asked for a committed regression
test of the migration input that commit 2 added to install-trading-2604.sh: an install still at
the October 8 published lock f451ef97 must be admitted and moved to the current lock, never
accepted as current. All 13 lock and vector tests passed with that admission removed.

tests/test_trading_2604_migration.py runs only the installer's hash definitions and its
step=locked-project admission and copy block, verbatim, against a temporary project (no uv, sync,
network or host-runtime command), and checks:
- the retained fixture is byte-for-byte the published lock the installer names;
- the published lock is admitted and replaced by the current lock;
- the current lock passes unchanged;
- an unknown lock is refused with exit 73 and left in place;
- with the published admission line removed (the reviewer's mutant), the published lock is refused.

It is a new module: tests/test_trading_2604_lock.py is hash-bound by the 2026-10-08 record
evidence/artifacts/runtime-final-lock-binding-20261008/legacy-migration-source-repair.json and stays
unchanged.

Checks: the new module, test_trading_2604_lock, test_scheduled_trial and test_osv_lockfile_coverage
pass; scripts/validate.py passes.

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

---------

Co-authored-by: seathatflowsinourveins <[email protected]>
Co-authored-by: Claude Opus 5.5 <[email protected]>
seathatflowsinourveins added a commit that referenced this pull request Oct 21, 2026
* Bump certifi to 2026.10.19 (GHSA-6q48-6c7w-9gw2)

GHSA-6q48-6c7w-9gw2 (published 2026-10-20 19:35Z): certifi >= 2019.03.09,
< 2026.10.19 bundles emSign ECC Root CA - G3, whose intermediates had
compromised keys. certifi 2026.10.19 drops that root and keeps the
unaffected emSign roots. #1262's required osv-scanner context fails on it
across every lock below.

Lock delta (certifi only, following #1265's method):
- certifi 2026.7.22 -> 2026.10.19 in every lock that pinned it: the
  adaptive-paper engine lock, the trading-2604 runtime uv.lock, the memory
  native-qualification uv.lock, the OpenHands worker lock and pins, the
  adoption SDK lock and constraints, portfolio-risk, catalyst-provenance,
  sim-crosscheck-hftbacktest, deepagents-omniroute,
  openhands-native-capabilities, mlx-smoke and the macOS e2e evidence lock.
- Hashes from PyPI's JSON for 2026.10.19, each file downloaded and checked:
  wheel 42d35340cc5b9ba78e818ddbff0c5b1c2b779de448a340fd1b989f5fa8670e1b,
  sdist 035c1e85572b141bf1c3a3eff0e33a8eb74917522f2559075ff8d2fea780a1ae.
  No other package line changes in any lock.
- adaptive-paper engine lock sha256
  645544edbd13e7ff2434d5459e981ec0a2506c944e30d47844b4f3c57f602db8 ->
  8e08849c3370b905b7993a75e2f356920d45cdba81d64709a71fa3ff6263cb2d.
- trading-2604 runtime lock a1413f20... -> 2df71327...; the published a1413f20
  becomes one more recorded migration input in install-trading-2604.sh, as
  #873 and #1265 did, never acceptance; accept-trading-2604.sh and
  adaptive-paper/scheduled_trial.sh require the new hash.

Bindings refreshed: .github/osv-scanner-lockfiles.json (per-lock sha256 and
the retained fixtures as excluded evidence), adaptive-paper/source-hashes.json
(scheduled_trial.sh, test_scheduled_trial.py), tests/test_scheduled_trial.py,
tests/test_trading_2604_migration.py, runtime-2604/README.md, the convergence
records' frozen inputs re-pointed to the retained copies,
catalogs/landscape/final-stack.json (sources hash of the trading-2604 lock
only), and manifests/evidence.json for every changed and added file.

Retained bytes: each pre-bump lock is kept byte-identical (git show
da55495) under evidence/artifacts/certifi-2026.10.19-repin-20261020/
historical/ as published-<hash>-<name>, an excluded evidence fixture in the
osv inventory (not an install input; the active lock is scanned), with
repin.json as the record.

Checks (python -B, scratch venv from .github/requirements-ci.txt with
--require-hashes):
- scripts/validate_convergence.py --all-recorded: 33 records, all valid;
- scripts/validate.py: passed;
- scripts/evidence_manifest.py --check: passed (12,342 files);
- scripts/final_stack.py --check: passed;
- unittest of test_trading_2604_lock, test_trading_2604_migration,
  test_scheduled_trial, test_osv_lockfile_coverage,
  test_receipt_sha256_key_custody, test_convergence_contract,
  test_evidence_manifest, test_research_convergence_practice and
  test_sota_convergence: 310 tests, OK;
- git diff --check: clean.
osv-scanner was not run locally (not installed); the required context runs it.

No install, accept or trial script was run; no host state, broker or paper
contact. LIVE remains NO-GO.

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

* Bind the SDK lock's certifi relock to its qualification (validate-shard-5)

The certifi bump changes adoption/sdk/requirements-linux-x86_64-py313.lock,
which tests/test_adoption_contract.py binds two ways: every non-SDK pin must
equal the supply-chain receipt's historical inventory (certifi 2026.7.22), and
the runtime-sdk-20261003 qualification receipt's lock_sha256 (3a17fa09) must
equal the current lock. Both failed at 1328f12, in
test_lock_matches_accepted_inventory_and_all_pins_have_hashes and
test_sdk_upgrade_keeps_independent_inventory_and_client_guards (validate-shard-5);
both pass at da55495. The ignore route does not apply: .github/osv-scanner.toml
allows an ignore only for unreachable code, and certifi's bundle is reachable
from any HTTPS client in this SDK environment.

The relock is recorded instead of silently re-baselined, in the shape of
IGNORE_ALLOWED_LOCKS in tests/test_osv_lockfile_coverage.py:
- SDK_SECURITY_RELOCKS names certifi 2026.7.22 -> 2026.10.19 and
  GHSA-6q48-6c7w-9gw2 (GHSA-6q48-6c7w-9gw2,
  first patched version 2026.10.19). The inventory guard applies exactly that
  move, and only from the inventory's own version.
- SDK_QUALIFIED_LOCK is the retained pre-bump lock (this PR's evidence
  fixture, byte-identical to da55495). When the receipt's lock_sha256 is not
  the current lock's, it must be that fixture's, and the current lock may
  differ from it only in the relocked blocks; the preamble and every other
  block must be byte-identical.
- The historical receipts stay unedited. A re-qualification of the SDK pair
  records the new lock and inventory and empties the table.

New regression test:
test_relocked_lock_differs_from_the_qualified_lock_only_in_recorded_relocks.
It keeps every version, changes one charset-normalizer hash in the current
lock and then in the qualified fixture, and requires the two new guards to
refuse each. The existing duckdb and openai-codex-cli-bin drift cases still
fail on their own guards. manifests/evidence.json carries the test file's new
hash.

Local, in a requirements-ci venv:
- tests.test_adoption_contract, test_osv_lockfile_coverage and
  test_evidence_manifest: 80 tests, OK;
- scripts/validate.py: rc 0; evidence_manifest --check: passed (12,342 files);
  final_stack --check: passed; git diff --check: clean.

validate_shards.py run --shard 5 --shards 8 at 1328f12 also failed locally in
test_adoption_launchd and test_codex_job_lane_hardening. Those failures come
from the checkout location: mise installs [email protected] there, and GitHub's
attestation API refused it with a 403 rate limit. In clean worktrees of
1328f12 and of da55495, the same three modules give the same result (1
pre-existing error, test_claude_usage_sampler). test_runtime_boot needs PyYAML,
which this venv lacks, on both commits.

No install, accept or trial script was run; no host state, broker or paper
contact. LIVE remains NO-GO.

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

* Bind the SDK relock to repin.json, reproduce the mlx lock, restore three modes

Both families' checks of 1328f12 (AMEND, agreed):

1. HIGH (Claude D1, GPT P2a): the adoption SDK lock contract.
   The contract now admits exactly the move evidence/artifacts/
   certifi-2026.10.19-repin-20261020/repin.json records for
   adoption/sdk/requirements-linux-x86_64-py313.lock:
   - certifi 2026.7.22 -> 2026.10.19, GHSA-6q48-6c7w-9gw2;
   - prior 3a17fa09... (the retained qualified lock, which the
     runtime-sdk-20261003 receipt names) -> current 9ee41e37....
   It also requires the record's "Prior native acceptance does not
   transfer". The dated receipts (the 09-19 supply-chain inventory and the
   10-03 SDK qualification) are unedited. The inventory guard and the
   client mutation guard both stay (the duckdb and openai-codex-cli-bin
   cases). The regression test
   test_relocked_lock_differs_from_the_qualified_lock_only_in_recorded_relocks
   now refuses four version-preserving mutations, each by its own guard:
   a lock hash, a qualified-fixture hash, the record's current sha256 and
   the record's no-transfer sentence.

2. GPT P2b: tools/mlx-smoke/requirements.lock.txt did not reproduce under
   hardware-profile-smoke.yml's --exclude-newer 2026-09-23T00:00:00Z.
   The step adds --exclude-newer-package certifi=2026-10-20T02:30:00Z. That
   is uv 0.12.17's own per-package override (crates/uv-cli/src/lib.rs:
   7158-7177, PACKAGE=DATE, flattened into pip compile through
   ResolverArgs:7486 and PipCompileArgs:1642, at tag 0.12.17). certifi
   2026.10.19's files reached PyPI at 2026-10-20T02:24:15Z and 02:24:16Z,
   and no later release exists. Every other pin keeps the original cutoff.
   Reproduced locally with the pinned uv 0.12.17 (x86_64 release archive,
   sha256 fa82fd8d..., equal to its published .sha256) and the step's exact
   arguments: diff -u against the committed lock is empty.

3. MEDIUM (Claude D2, GPT P3): mode 100755 restored on
   adaptive-paper/scheduled_trial.sh, runtime-2604/accept-trading-2604.sh
   and runtime-2604/install-trading-2604.sh, with no content change (blobs
   afe6305, ed1b600 and 412c571, unchanged).

manifests/evidence.json carries the new hashes of the test and the
workflow. No lock byte changes; the engine lock stays 8e08849c.

Local, in a requirements-ci venv:
- scripts/validate.py: rc 0;
- evidence_manifest --check: passed (12,342 files);
- final_stack --check: passed;
- validate_convergence --all-recorded: 33 records valid;
- test_adoption_contract, test_osv_lockfile_coverage, test_evidence_manifest,
  test_workflow_hardening, test_workflow_security_coverage,
  test_scheduled_trial and test_trading_2604_migration: 234 tests, OK
  (13 skipped);
- git diff --check: clean.
Shard 5 (validate_shards.py run --shard 5 --shards 8) at 710733d, in a
clean worktree: 2,304 tests, 0 failures. Its 2 errors are local only and
the same on da55495: test_claude_usage_sampler, and test_runtime_boot,
which needs PyYAML.

No install, accept or trial script was run; no host state, broker or paper
contact. LIVE remains NO-GO.

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

* Pin Pillow 13.0.0 on reviewed certifi 2026.10.19 head

Stack the five native Pillow relocks on #1266 accepted head eb898b5,
carrying its reviewed certifi pins unchanged. Only Pillow package entries
move. Preserve exactly the two reviewed trading certifi timestamp strings
under the wave builder decision; both pinned uv versions accept the lock
offline.

Reproduce the worker certifi export byte for byte before reapplying the
unchanged scratch-only Pillow override, rule-6 turn-back and F18 scope.
Retain each accepted intermediate input once; reuse #1266 reviewed history
and relocate only frozen receipt paths, never their digests or acceptance.
Refresh all live binders and add real predecessor-admission regression.

Checks: 901 tests, 873 pass and 28 optional skips; publication validation,
all 33 convergence records, evidence manifest, final-stack, trading gates,
shell syntax and whitespace pass. Local osv-scanner is unavailable; normal
exact-head hosted checks and both-family reviews remain required.

Sources and compatibility evidence: evidence/artifacts/
pillow-13-repin-20261020/RESEARCH.md and worker research.md, 2026-10-21.
No destination-host, image, grader, model, broker or paper acceptance.

---------

Co-authored-by: Claude Opus 5.5 <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

lane:trading Trading lane: sim, paper and live north star

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant