- **Panel-enrich advisory delivery pivoted to TEXT-CAPTURE + the source-read-only fence series — first full live panel run landed (2026-06-06T).** Four SYSTEM fixes, each its own path-limited commit, hardened the in-session Agent-tool panel loop and were proven by the first end-to-end live run (`eval-driven-development`, 3 rounds × 8 models, Opus-curated, applied + committed to `jacob-balslev/skills` as `87f4a7f` — 248→528 lines; anti-loss + mandatory-coverage clean; lint clean; `subject: ai-engineering` kept over the GPT-5.5/Gemini-Flash subject misreads). (1) **`b680f11`** — `isolated-checkout.js::buildSeatbeltProfile` gained an optional `readOnlyRoots` set (emitted `(allow file-read* …)` before the read-write roots so a nested run-dir RW root wins by SBPL last-match; absent ⇒ byte-identical to the prior all-RW profile). The advisory fence now makes the skill SOURCE (skill-graph repo + skills library) **read-only** — a write EPERMs, so an advisory model physically cannot mutate a canonical `SKILL.md`; only the audit run-dir trees are writable. (2) **`ecd7df6`** — advisory `reviseProposal` delivery converted from the relative-file-write (the entry below) to **stdout TEXT-CAPTURE**, mirroring the propose path: sandboxed advisory models research under the read-only fence and EMIT the revised `SKILL.md` as reply text, captured via `extractEnrichedDoc`/`looksLikeSkillDoc` and written by us; frontier claude/codex keep native write-mode. **This supersedes the relative-write delivery recorded immediately below.** Convergence stays hash-authoritative; a text-capture reviser re-emits non-byte-identical text each round, so the `maxRounds` budget is the designed terminator. (3) **`431a34f`** — the Seatbelt deny anchor also EPERMed an lstat of the workspace-root NODE, which the **Gemini CLI** does at startup (`isWorkspaceHomeDir`), aborting it before any work; the fence now allows `file-read-metadata` on the workspace-root *literal* (readdir + private read/write stay denied — no private sibling leaks). (4) **`7c6becf`** — the panel hardcoded `osFenceActive:false` for codex, so under the outer Seatbelt codex started its OWN nested `-s workspace-write` sandbox; macOS denies nesting `sandbox_apply`, so codex (GPT-5.5, a MANDATORY frontier) silently wrote nothing and lost its revisions. The panel now passes `advisoryOsFence.active` → codex drops its inner sandbox (`--dangerously-bypass-approvals-and-sandbox`, SKI-169 Fix B). Tests: `test-isolated-checkout.js` 11→16 (+5, incl. live asserts: source read-OK / source write-DENIED / nested run-dir write-ALLOWED / workspace-root lstat ALLOWED / readdir DENIED); `test-panel-enrich-live-deps.js` 7→9 (+2 text-capture revise). Live-verified each fix (DeepSeek propose, Gemini probe, codex write probe, GPT-5.5 re-revise). Docs reconciled: `SKILL_AUDIT_LOOP.md` + `AGENTS.md` delivery contract (two tiers) + § "Kernel-fence interactions". SYSTEM-only; the CONTENT skill change is in the `skills` repo, not here.
0 commit comments