Skip to content

Record skill-state transitions with safe descriptors and profile views - #793

Closed
seathatflowsinourveins wants to merge 6 commits into
mainfrom
codex/ns2604-skills-r2-recorder-20261006
Closed

seathatflowsinourveins wants to merge 6 commits into
mainfrom
codex/ns2604-skills-r2-recorder-20261006

Conversation

@seathatflowsinourveins

@seathatflowsinourveins seathatflowsinourveins commented Oct 6, 2026 •

Copy link
Copy Markdown
Collaborator

Scope

Record canonical skill changes without blocking a native session. This PR adds an inactive Tier A recorder with regular-file descriptor checks, journaled deduplication and separate native-profile views, so FIFO poisoning and profile switching cannot produce blocking opens or false removals from another view.

  • Base commit: 0d5e6506434fab598dee861c749a22e628beb75a
  • Lane: lane:foundation (exactly one label)
  • Owned paths: tools/adoption/skill_state_recorder.py, tests/test_skill_state_recorder.py, the passive recorder proposal, dated decision and compact source/correction receipts; evidence registry rebuilt through the official helper and kept last.
  • Draft until the command-center cross-family read. Hook registration, trust, host backfill and configuration apply remain separate command-center/user actions.

SOTA sources

Evidence-class table

Claim Evidence class Command / receipt
Safe descriptor rejection, pending-journal recovery, root isolation, shared aliases and metadata-status boundary local_integration 36 authored filesystem fixtures pass with no skips; evidence/artifacts/skills-tier-a-recorder-20261006/fifo-profile-correction.json retains both 36-test attempts
Original source and earlier alias controls local_integration Historical source-review/alias-correction receipts remain immutable and identify their original hashes
Native Astra/max source review returned no judgment native_execution_attempt One unchanged SDK 0.160.0 attempt submitted inference, hit its 600-second deadline at turn_run, returned exit 2 and reported cleanup closed; usage and backend identity stay unknown
Native event/configuration format and passive deployment proposal source_review Official sources above and the dated decision; no fresh hook-firing, effective permissions, model discovery or latency acceptance
Publication consistency local_integration Final python3 scripts/validate.py exit 0: 69 components, 10,343 hashed files, 4 profiles, 214 receipts

Local commands run

Logs use owned durable private fixtures and bytecode is disabled. The source runtime stayed unchanged during the locator fixture correction.

$ python3 -m unittest tests.test_skill_state_recorder -v
Attempt 5: exit 1; 36 tests, 1 failure, 0 errors/skips, 2.379 s.
The fixture expected the old home-relative locator; updated it to the documented scope-stable locator.
Attempt 6: exit 0; 36 tests, 0 failures/errors/skips, 2.496 s.

$ python3 scripts/validate.py
Exit 0; 69 components, 10343 hashed files, 4 profiles, 214 receipts.
Final validation log SHA-256: 2e8050b72c4a65a7f1ea64c3f336e34c27fd1b36a62e5011b08a58559749f17d.

The passing log digest is 728bf1f7882c23d6d50150e524ad10a76a61afa9ba03f77e59024f01f988ebfe; the failed log remains retained. Real FIFO subprocess controls cover ledger/state/staging/lock/instruction/error paths, malformed input, reader-present rejection and recovery. Custom profile and same-alias controls retain distinct source identities while deduplicating one physical transition stream.

The parent ran the unchanged examples/omniroute-codex-sdk/worker.py with --model cx/gpt-6-astra-max --effort max --sandbox read-only --approval-mode deny_all --timeout 600 --base-url http://127.0.0.1:21128/v1 and the frozen private prompt. Exit 2 retained deadline_exceeded, model_inference_submitted=true, no returned judgment and null usage. Result digest: 217f21913ef63c654bef77312714ee1069f2ac762a32d945db52aa6b798ef2b7. This failure provides no model approval; source/tests and the required command-center read remain the review gates.

Decision record

docs/decisions/2026-10-06-tier-a-skill-state-recorder.md records alternatives, native sources and overturn conditions. The passive configuration is documented in adoption/hooks/claude/skill-state-recorder-proposal.md.

Native CLAUDE_CONFIG_DIR/CODEX_HOME overrides select only explicitly trusted public metadata roots. Prior profile views remain retained; a profile switch is not an uninstall. Supporting-file fingerprints are stat-only, source/activation/usage can remain unknown, and the metadata-only subprocess is mocked in the focused suite. Trusted/cooperating directories are required; final-component no-follow is not an ancestor sandbox, regular I/O/fsync latency is unbounded, and power-loss durability is not promised.

Fresh native hook firing, user-controlled Codex trust, upstream install/remove observations, live S4 integration and representative p95 latency remain prerequisites to activation. The PR applies no host hook, trust or client configuration.

Host evidence

No evidence/hosts/ files or host platform-status changes are added. Host receipt review checklist is not applicable.

Checklist

  • Required publication validation and touched integration fixtures pass; no upstream native acceptance is inferred.
  • Registry rebuilt through official register_file from main and kept last.
  • New/changed GitHub Actions have full-SHA pins and scoped permissions (no workflows changed).
  • No secrets are printed, logged or committed; no new required secret is added.
  • No new paid hosting, subscription or billing surface is introduced.
  • Peer-owned untracked files and worktrees are preserved.
  • Command-center cross-family read completes before the draft leaves draft.

Sources: Claude official hooks-guide audit configuration example and hooks reference; openai/codex@a956835 hook schemas. Local integration fixtures only; host registration and trust remain pending.
Use scripts/host_receipts.py register_file from fixed ecfa112 registry. Add four owned hashes only; preserve all existing rows and other registry keys. Final validate.py passed.
Share the resolved-directory visited set across roots so alias creation or removal does not create duplicate supporting-file observations. Preserve prior checked receipts and add the actual 25-test correction result. Sources: Claude official hook audit guide; pinned Codex hook schemas at a956835d020762cb2b570053af06f643a11c0ecc.
Official register_file updates only the owned script/test hashes and adds the new correction receipt. Existing main registry rows and original receipt remain unchanged; final validate.py passed.
@seathatflowsinourveins seathatflowsinourveins added the lane:foundation Foundation lane: Claude/Codex setup, hosts, memory, RAG, research, workers label Oct 6, 2026
@seathatflowsinourveins

Copy link
Copy Markdown
Collaborator Author

Folded into #795 by the PR triage of 2026-10-07 (the command center's ruling, item review-ns2604-coop-20261007T023012Z, section 3). Closed with a record, not merged. The co-op verified the fold at #795's head f809570: 7/8 of this PR's files are byte-identical there, and the shared files (the skills manifest, the Codex template, the lifecycle recipe, the tests and the registry) are merged; the cross-family read of #795 at that head (cc-reads-20261005/pr795/GPT-VERDICT-f809570b2.md, fold-completeness table) found every omitted incoming line superseded correctly or its content retained, with the registry rebuilt and matching. #795's description names this fold and its overlap record is evidence/artifacts/skills-folds-20261007/overlaps.md (a dated correction of two of its descriptions is pending in #795). This branch codex/ns2604-skills-r2-recorder-20261006 stays on origin at 401d98b. Reopen trigger: none, because its content lives in #795.

@seathatflowsinourveins
seathatflowsinourveins deleted the codex/ns2604-skills-r2-recorder-20261006 branch October 8, 2026 17:05
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