Repository navigation
Record skill-state transitions with safe descriptors and profile views - #793
seathatflowsinourveins wants to merge 6 commits into
Conversation
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.
|
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 |
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.
0d5e6506434fab598dee861c749a22e628beb75alane:foundation(exactly one label)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.SOTA sources
codex-rs/hooks/schema/generated/{post-tool-use,session-start}.command.{input,output}.schema.json.codex-rs/utils/home-dir/src/lib.rs:13-49,codex-rs/ext/skills/src/host_roots.rs:103-112andcodex-rs/core-plugins/src/store.rs:87-94bind native roots and plugin caches.src/installer.ts:128-131: public lock and canonical symlink forms remain source metadata rather than reconstructed acceptance.native-agent-stack@ecfa112764c664d35377dd66b8cfcb67e5a94d60:scripts/skills_status.pyanddocs/acceptance-evidence-policy.md; the S4 consumer adds the explicit metadata-only interface before activation.Evidence-class table
evidence/artifacts/skills-tier-a-recorder-20261006/fifo-profile-correction.jsonretains both 36-test attemptsturn_run, returned exit 2 and reported cleanup closed; usage and backend identity stay unknownpython3 scripts/validate.pyexit 0: 69 components, 10,343 hashed files, 4 profiles, 214 receiptsLocal commands run
Logs use owned durable private fixtures and bytecode is disabled. The source runtime stayed unchanged during the locator fixture correction.
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.pywith--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/v1and the frozen private prompt. Exit 2 retaineddeadline_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.mdrecords alternatives, native sources and overturn conditions. The passive configuration is documented inadoption/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
register_filefrom main and kept last.