commit - 12670a1d14b664c94b403255368880acf880ccf2
commit + bbc238db63c343eb395c9f65d934517481871a51
blob - dabe96d94618c20e13513fdd049b9ff53c41e48f
blob + 88453f0dacab0d7099d9e57b402be77ffc8a96e5
--- .scratch/codex-subscription-adapter/issues/01-implement-pure-c-codex-subscription-adapter.md
+++ .scratch/codex-subscription-adapter/issues/01-implement-pure-c-codex-subscription-adapter.md
green, but criteria 15 and 17 remain unchecked until the Owner explicitly runs
the non-root credentialed live gate. No real token was requested or used, so
the ticket is `needs-info` and intentionally has no Resolution.
+
+2026-07-18 integration proof: the combined OpenBSD tree at `12670a1` passes
+both clean normal and `FUGU_DEBUG=1 CHECK_JOBS=4` gates: 44 suites and 17,515
+checks with zero failures in each run. The focused Codex suite remains 2442/0;
+print/local-TLS is 143/0, deployment/package/linkage is 17/0, configuration is
+292/0, Agent boot is 24/0, Agent routing is 62/0, OpenAI is 4889/0, and Turn is
+424/0. The exact committed source passes isolated port `makesum`/`checksum`,
+fake installation, library-dependency checking, package creation, and an
+unchanged `update-plist`; `fugu-0.3.tgz` has SHA-256
+`a24638b1ebe49bd428f637a976282dce0df8a72ac596a81f8a50fb8ec59f6d3a`.
+
+The 43-line live-check help renders, but the non-root credentialed Codex gate
+was not run and no personal token or account id was requested. Criteria 15 and
+17 remain unchecked, `Status` remains `needs-info`, and no Resolution is added
+until the Owner supplies scrubbed live HTTP SSE, Tool-continuation, continuity,
+and secret-absence evidence.
blob - 568e37d1479bb1b02e51a50084b20e586fb54acf
blob + 699804fa427520781f329c0f6bf8295a1d146aca
--- .scratch/durable-tool-output/issues/01-retain-bounded-tool-output-artifacts.md
+++ .scratch/durable-tool-output/issues/01-retain-bounded-tool-output-artifacts.md
# Retain bounded Tool output as private Artifacts
Status: ready-for-agent
+Resolution: completed
Type: task
## What to build
## Acceptance criteria
-- [ ] An ADR-0001 amendment accepts the load-bearing `fugu-artifact` Role and
+- [x] An ADR-0001 amendment accepts the load-bearing `fugu-artifact` Role and
records why Coordinator path promises, project-local files, and a decorative
general storage service were rejected.
-- [ ] The Artifact Role, typed FD exchange, authority map, pledge/unveil,
+- [x] The Artifact Role, typed FD exchange, authority map, pledge/unveil,
linkage, descriptor validation, and subprocess non-inheritance match the
storage decision above; Journal ownership and every existing Tool/Subagent
unveil remain unchanged.
-- [ ] Storage uses 0700 Session directories and 0600 atomic files under
+- [x] Storage uses 0700 Session directories and 0600 atomic files under
`~/.fugu/artifacts/`; ids have the exact random format above and cannot
traverse, alias, or address another Session or Owner file.
-- [ ] Per-Artifact, per-Session, and global reservations enforce the exact
+- [x] Per-Artifact, per-Session, and global reservations enforce the exact
16 MiB / 128 MiB / 1 GiB limits across concurrent processes, with FIFO
eviction, active/pending protection, nonblocking deadlock-free lock ordering,
pre-Journal same-Session refusal, and conspicuous ENOSPC handling.
-- [ ] Foreground and background producers continue beyond the preview boundary
+- [x] Foreground and background producers continue beyond the preview boundary
but are killed only on crossing the Artifact cap or on storage failure; exact
cap plus EOF succeeds, both terminal states settle, and memory, pipe draining,
and event-loop work stay bounded.
-- [ ] Inline and abbreviated results use the exact 8 KiB structure,
+- [x] Inline and abbreviated results use the exact 8 KiB structure,
128 KiB encoded-head, and 120 KiB encoded-tail budgets, remain within the
256 KiB provider-visible ceiling after escaping, and carry generated
structured metadata exactly once.
-- [ ] Raw Artifact bytes exclude wrappers and remain exact for binary/NUL data;
+- [x] Raw Artifact bytes exclude wrappers and remain exact for binary/NUL data;
preview escaping and `output_read` text/base64 behavior cannot forge result
structure.
-- [ ] `output_read` implements the exact Session-bound byte-page and serialized
+- [x] `output_read` implements the exact Session-bound byte-page and serialized
result contract, distinguishes malformed, unknown, pending, expired, and
available ids, and never accepts or exposes a path.
-- [ ] Artifact prepare/finalize/sync and structured Journal records obey the
+- [x] Artifact prepare/finalize/sync and structured Journal records obey the
Turn transaction ordering above; cancellation, abandonment, failure, crash,
resume, `/clear`, and Compaction have the pinned lifetime behavior.
-- [ ] Background spooling rotates immutably at each poll, applies the per-job
+- [x] Background spooling rotates immutably at each poll, applies the per-job
and aggregate pump budgets, never drops or replays retained bytes, and cleans
unpolled invocation-local state.
-- [ ] The first slice is limited to Lead-local `shell`, `grep`, `find`, `ls`,
+- [x] The first slice is limited to Lead-local `shell`, `grep`, `find`, `ls`,
`shell_output`, and `output_read`; web, read, Skill, agent-report, and all
Subagent-internal output remain unchanged.
-- [ ] No runtime Owner/model/UI/JSON/NDJSON/Journal surface exposes a private
+- [x] No runtime Owner/model/UI/JSON/NDJSON/Journal surface exposes a private
path. Manuals may name only the managed root and warn that retained output
can contain secrets.
-- [ ] Normal, hardened, protocol, Journal, Turn-transaction, Tool, background,
+- [x] Normal, hardened, protocol, Journal, Turn-transaction, Tool, background,
sandbox/ktrace, concurrent-process, package, and release gates pass.
## Tests
premise are resolved above. A narrow Artifact Role preserves the existing
Coordinator and Tool filesystem boundaries while making quota, transaction,
resume, and binary paging behavior exact. The ticket is ready for an AFK agent.
+
+2026-07-18 implementation complete: merge `f4e7405` integrates the private
+Artifact Role, checked typed-FD data plane, exact serializer/page contracts,
+transactional Journal settlement, quota/locking/reconciliation, Lead-only
+Tool scope, and foreground/background lifecycle. Follow-up commits `79f05bf`,
+`1064bab`, `d5e57bf`, and `12670a1` close the final acceptance gaps: inline
+results now obey the 8/128/120 KiB encoded budgets; exact and one-byte-over
+printable, escaped, NUL, base64, and valid multibyte UTF-8 results prove
+earliest/latest selection and streamed equivalence; a losing real `fugu -r`
+leaves both Journal bytes and namespace unchanged and sends zero Provider
+requests; and deterministic ENOSPC reservation/write failures cancel the live
+executor process group without leaking pending, order, final, or Journal
+records.
+
+The final exact tree passes Artifact result 803/0, Artifact store 303/0,
+Artifact lock 9/0, Artifact page 23/0, Tool 291/0, Journal 402/0, Turn
+transaction 146/0, Turn mechanics 203/0, sandbox 56/0, Turn 424/0, deployment
+17/0, and both aggregate clean gates. Normal and
+`FUGU_DEBUG=1 CHECK_JOBS=4` each pass all 44 suites and 17,515 checks with zero
+failures. The exact committed source passes isolated OpenBSD port
+`makesum`/`checksum`, fake installation, library-dependency checking, package
+creation, and an unchanged `update-plist`; `fugu-0.3.tgz` has SHA-256
+`a24638b1ebe49bd428f637a976282dce0df8a72ac596a81f8a50fb8ec59f6d3a`.
+Credentialed, public-network, privileged-install, and clean-host deployment
+checks remain explicit release procedures; they are not substitutes for or
+blockers to this hermetic Artifact acceptance.
blob - d55e87bdd530bf21ed734b4f2c4f66529de16480
blob + 737789c6165db0ec95a65129cb2204bfb83070c0
--- .scratch/model-thinking-effort/issues/01-configurable-thinking-effort.md
+++ .scratch/model-thinking-effort/issues/01-configurable-thinking-effort.md
# Configurable model effort
-Status: ready-for-agent
+Status: needs-info
Type: task
## Problem
`high` is not optimized away.
- [x] No value is aliased, ranked, clamped, or mapped to another Provider's
spelling, and no adaptive-thinking or token-budget field is synthesized.
-- [ ] The Lead value reaches first Generations, Tool continuations, manual and
+- [x] The Lead value reaches first Generations, Tool continuations, manual and
automatic Compaction, one-shot overflow recovery, and Generations after
`/model`; resume adopts current configuration rather than Journal state.
-- [ ] Subagents inherit `effort` unless `subagent_effort` is explicit, retain
+- [x] Subagents inherit `effort` unless `subagent_effort` is explicit, retain
the effective value across every child Generation and Palette route, and
reject an out-of-range `agent_start` wire value.
-- [ ] An unsupported model/value response is visible as the existing bounded
+- [x] An unsupported model/value response is visible as the existing bounded
Provider error, with no omission, downgrade, changed-Effort retry, or
Provider fallback. Existing byte-identical pre-output transport retries
remain and carry the exact value on every attempt.
Claude run were deliberately not invoked from this worktree, so their four
behavioral/gate criteria remain unchecked and the ticket remains
`ready-for-agent` for integration proof.
+
+2026-07-18 integration proof: the combined OpenBSD tree at `12670a1` passes
+both clean normal and `FUGU_DEBUG=1 CHECK_JOBS=4` gates: 44 suites and 17,515
+checks with zero failures in each run. Focused coverage includes Anthropic
+4895/0, Claude Subscription 155/0, OpenAI 4889/0, configuration 292/0,
+Compaction 199/0, Agent 175/0, Agent boot 24/0, Agent configuration 62/0, and
+Turn 424/0. Those fixtures prove exact Lead propagation across first and Tool
+continuation Generations, manual/automatic/overflow Compaction, retry,
+`/model`, and current-policy resume; they also prove Subagent inheritance,
+override, Palette routing, repeated child Generations, malformed wire
+rejection, and conspicuous no-fallback Provider errors.
+
+The exact committed source also passes isolated OpenBSD port `makesum` and
+`checksum`, fake installation, library-dependency checking, package creation,
+and an unchanged `update-plist`. The resulting `fugu-0.3.tgz` SHA-256 is
+`a24638b1ebe49bd428f637a976282dce0df8a72ac596a81f8a50fb8ec59f6d3a`.
+The 43-line live-check help renders, but no ordinary-Owner Claude Subscription
+request with nondefault Effort was run and no credential was requested. The
+final composite criterion therefore remains unchecked; the ticket is
+`needs-info` and intentionally has no Resolution until scrubbed Owner-run
+evidence is recorded.