Skip to content

Authorize the stored TypeSafe key for the trading lane's research and Jev harness - #985

Merged
seathatflowsinourveins merged 4 commits into
mainfrom
cc/typesafe-trading-authorization-20261010
Oct 11, 2026
Merged

seathatflowsinourveins merged 4 commits into
mainfrom
cc/typesafe-trading-authorization-20261010

Conversation

@seathatflowsinourveins

@seathatflowsinourveins seathatflowsinourveins commented Oct 10, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

  • Records the owner's 2026-10-10 decision (the CC's north-star plan, owner item 2; paraphrased): the trading lane's research work and Jev harness may use the stored typesafe key instead of a separate key. A model never places orders or sets numbers: that rule continues to bind through blueprints/us-equities/AGENTS.md:72-73, docs/paper-lane-policy.md:41 and the Jev rules A2/A3 (blueprints/native-skill-practice/README.md:148-151,165-175).
  • adoption/credential-inventory.json: the typesafe entry's note no longer says a trading-lane use needs its own key. It records the decision and that each use runs in its own process through the repository's credential runner, with no lane environment holding the key. The lane field keeps its single-string schema (scripts/credential_status.py:81).
  • docs/secret-storage.md: the typesafe row lists the trading lane's uses.
  • manifests/evidence.json: both files re-registered per the hot-file protocol (docs/lanes.md:94-112).

SOTA sources

Tests

  • python3 scripts/validate.py: rc 0 (11,421 files). python3 scripts/evidence_manifest.py --check: rc 0.
  • Every test module that reads the inventory or the secret-storage doc (canary_proof, codex_worker_lane, credential_boot_receipt, credential_run, credential_status, credential_tools, host_requests, new_wsl_definitive_defaults, secret_path_guard): 734 tests OK, 151 skipped.
  • c9155c3 (regression for the GPT P2 at 8e9e56c): tests.test_credential_status.CredentialStatusTests.test_typesafe_row_keeps_the_research_and_jev_grant_without_a_separate_key pins the TypeSafe row's research/Jev grant and its credential_run.py typesafe -- <command> runner, and refuses a separate-key sentence in the inventory notes or the docs row. With docs/secret-storage.md at 2a33680 it fails (rc 1, 'separately authorized' found); at the head it passes, and the module runs 49 tests OK. validate.py rc 0 (11,421 files); evidence_manifest.py --check rc 0.

🤖 Generated with Claude Code

… Jev harness

The owner decided on 2026-10-10 (north-star plan, owner item 2) that the trading
lane's research work and Jev harness may use the stored typesafe key instead of a
separate one. Each use still runs in its own process started through the
credential runner, and no lane environment holds the key. The inventory note and
the secret-storage row now record that; the lane field keeps its single-string
schema. Both files are re-registered in manifests/evidence.json per the hot-file
protocol.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
@seathatflowsinourveins seathatflowsinourveins added the lane:foundation Foundation lane: Claude/Codex setup, hosts, memory, RAG, research, workers label Oct 10, 2026
The GPT read of #985 found docs/secret-storage.md:20 still said a trading-lane use needs its own,
separately authorized key, contradicting this PR's inventory note and body. The sentence is
removed; the row keeps the narrow research and Jev-harness grant and the credential-runner
requirement. Also restores the missing list comma. Re-registered per the hot-file protocol.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
PR #985 corrected docs/secret-storage.md:20 so the typesafe row agrees with
adoption/credential-inventory.json (owner decision 2026-10-10: the trading
lane's research work and Jev harness may also use the stored key, each in its
own process started through credential_run.py). No test caught the stale
sentence "A trading-lane use needs its own, separately authorized key", and
the GPT range-diff read of 8e9e56c asked for a committed regression.

The new test in tests/test_credential_status.py,
test_typesafe_row_keeps_the_research_and_jev_grant_without_a_separate_key,
asserts that the inventory row keeps the runner loader and the grant, that
the one docs row keeps the runner command and the grant, and that neither
carries a separate-key requirement.

tests/test_credential_status.py is re-registered in manifests/evidence.json
with host_receipts.register_file (docs/lanes.md:107); only its sha256 and
bytes change. scripts/evidence_manifest.py only sorts and checks the order
of files[] and has no hash-update mode.

Verdict: ~/.cache/ns2604-gpt-reads/fix1b-pr985-8e9e56cdc/VERDICT.md
(sha256 b057e6eedb496ae228d1a54805e3814da690e77494b53c53c961092950fccc03).

Fail before, with docs/secret-storage.md checked out from 2a33680 and
restored afterwards (adoption/credential-inventory.json is identical at both):
  git checkout 2a33680 -- docs/secret-storage.md
  python3 -B -m unittest tests.test_credential_status.CredentialStatusTests.test_typesafe_row_keeps_the_research_and_jev_grant_without_a_separate_key
    rc 1, 1 test, failures=1: 'separately authorized' unexpectedly found
    (place='docs/secret-storage.md row')
  python3 -B -m unittest tests.test_credential_status
    rc 1, 49 tests, failures=1 (only this test)

Pass after, at this commit:
  the same single-test command: rc 0, 1 test
  python3 -B -m unittest tests.test_credential_status: rc 0, 49 tests (48 before)
  python3 scripts/validate.py: rc 0 (11421 hashed files)
  python3 scripts/evidence_manifest.py --check: rc 0

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
…heir approved text

The regression added for PR #985 (c9155c3) checked that the docs row and the
inventory entry name the research and Jev uses and the runner, and rejected the
fragments "separately authorized", "needs its own" and "separate key". The GPT
review of c9155c3 (CHANGES_REQUESTED, one P2 at
tests/test_credential_status.py:294, :295 and :299-301) measured three
contradictions of the owner's 2026-10-10 grant that all passed it, rc 0:
  - docs/secret-storage.md:20, the dated grant clause replaced by
    ", excluding the trading lane's research work and Jev harness"
  - "A trading-lane use requires its own independently authorized key."
    appended to the docs row
  - the same sentence appended to the inventory notes
    (adoption/credential-inventory.json:140)

test_typesafe_row_keeps_the_research_and_jev_grant_without_a_separate_key keeps
its name: it still says what it enforces. In both real files it now requires
the dated affirmative grant and the complete approved text after whitespace
normalisation (the docs row and the inventory notes), and loaders equal to
exactly the runner command. The phrase blacklist is gone. The same check runs
on planted contradictions that must fail it with the expected message: the
grant revoked, and each of two key-requirement sentences appended (the one
8e9e56c removed and the reworded one), in both places. A whitespace-only
reflow must still pass, and the docs row is found after whitespace
normalisation so a reformatted table does not hide it.

tests/test_credential_status.py is re-registered in manifests/evidence.json
with host_receipts.register_file (docs/lanes.md:107); only its sha256 and
bytes change.

Corrections audit (#151)
  Source: the GPT verdict for PR #985 at c9155c3, ~/.cache/ns2604-gpt-reads/
  fix2-pr985-c9155c3d8/VERDICT.md (sha256
  ccd7bffc9115c3770a481e2eef1b4b663f34ff2e6efe4257f0f7b7c60cb52ba6) with its
  REVIEW-EVIDENCE.md; the repo's own docs/secret-storage.md:20 and
  adoption/credential-inventory.json:140 at c9155c3. Mechanism, Python
  3.13.16 standard library as installed: unittest/case.py:1324-1338
  (assertRaisesRegex), :746-765 (_formatMessage appends the explicit message to
  the standard one after " : ", which the planted-case regexes rely on) and
  :537-566 (subTest).
  Fail before: the c9155c3 test returns rc 0 on each of the three
  contradictions above.
  Fail after: this test returns rc 1 on each (docs revocation: "docs/secret-
  storage.md row lost the dated grant"; the two appended sentences: "departs
  from the approved text"), and on the exact 2a33680 docs file (194,754
  bytes, sha256 028f69a6...), the dropped grant and runner in either file, and
  a revoked inventory grant. Each run is the single-test command with one real
  input file changed in an isolated archive copy of c9155c3.
  Pass after: the single-test command rc 0, 1 test; tests.test_credential_status
  rc 0, 49 tests; scripts/validate.py rc 0 (11421 hashed files);
  scripts/evidence_manifest.py --check rc 0. Whitespace-only changes to the
  docs row and the notes also pass, rc 0.
  Untested boundary: text outside the pinned docs row, notes and loaders, such
  as the inventory rotation field, is not bound (a sentence appended there
  still passes, rc 0).

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
@seathatflowsinourveins

Copy link
Copy Markdown
Collaborator Author

@codex review

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 11, 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-11T08:21:49.698508Z 670b22a Manual request
ℹ️ 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.

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. More of your lovely PRs please.

Reviewed commit: 670b22acc4

ℹ️ 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 merged commit 78566b3 into main Oct 11, 2026
33 checks passed
@seathatflowsinourveins
seathatflowsinourveins deleted the cc/typesafe-trading-authorization-20261010 branch October 11, 2026 13:35
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