Skip to content

Pull in v3.0.1 from daaf_dev - #19

Merged
brhkim merged 66 commits into
mainfrom
daaf_dev
Jul 29, 2026
Merged

Pull in v3.0.1 from daaf_dev#19
brhkim merged 66 commits into
mainfrom
daaf_dev

Conversation

@brhkim

@brhkim brhkim commented Jul 29, 2026

Copy link
Copy Markdown
Collaborator

Pull in v3.0.1 from daaf_dev

DAAF Container and others added 30 commits July 18, 2026 13:39
Auto-compact and verbose output are now auto-provisioned via .claude/settings.json; remove the "Configure Claude Code (required)" step from install.sh/.ps1 and reframe adjacent docs (07_faq_technical, 03_best_practices, 02_understanding_daaf) from manual instruction to "on by default." Also fixes a pre-existing broken anchor in 03_best_practices.md. User-doc link audit: 286 internal links checked, no other broken references.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…nner; graceful caller aborts

backup_daaf.{sh,ps1}: add a fatal branch when docker cp reports a nonzero exit
AND fewer files land than the volume scan counted (two corroborating signals =
truncated backup) -- name the partial folder, tell the user to delete it, exit 1
before the banner. Latch HAD_WARNINGS across the 4 non-fatal WARNING sites so
the completion banner reads "Backup completed WITH WARNINGS -- verify before
relying on it" instead of an unqualified "Backup complete!" (exit stays 0).
Claude-state copy stays WARNING-only.

update_daaf.{sh,ps1}, migrate_daaf.sh: make every backup caller fail gracefully
rather than abruptly (set -e) or silently. Capture the backup exit (set -e-safe
on .sh, LASTEXITCODE on .ps1, with a fail-closed pre-init in update_daaf.ps1)
and abort with a clear message; a declined optional backup still proceeds.

Tests: bats + Pester coverage for the fatal branch, both banner variants, and
the updater and migrate abort/continue gates (closing a pre-existing coverage
gap on the migrate_daaf.ps1 gate). Docs: quickstart backup promise revised.
Session records in research/2026-07-18_FrameworkDev_BackupShortCopyHardening/
(workspace is gitignored by design; retained in the working tree).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude <noreply@anthropic.com>
… container-leak defects

Verified and fixed five defects reported by a downstream port review
(sixth report — docs defaults ambiguity — refuted with evidence; cosmetic
DEFAULT: tags added anyway):

- backup_daaf.ps1: boolean-gate [int]::TryParse staging-status reads at
  both volumes (fail-closed on non-numeric docker wait output; TryParse
  writes 0 into the [ref] on parse failure, defeating the =1 default);
  [math]::Floor at all five division sites (drop banker's rounding —
  [long](350/100) = 4 vs bash's floor 3)
- backup_daaf.sh: reap the staging helper container on launch failure
  (main + Claude volume), preserving the captured CID instead of blanking
  it, matching the .ps1 twin's existing pattern
- restore_from_backup.sh: same launch-guard parity hardening for both
  docker create sites (insurance-level; .ps1 twin already reaps in finally)
- rebuild_daaf.ps1: save/restore BUILDX_BUILDER around the diagnostic
  build instead of destroying a user's own exported selection
  ($env:VAR = $null removes the variable)
- all 10 PowerShell settings loaders (4 reported + 6 discovered by
  repo-wide sweep): reject whitespace-padded keys, matching the bash
  loaders' column-0 case-glob (symmetric strictness; loader regions
  md5-identical across all copies)
- environment_settings_example.txt: tag SHIM_PORT / SHIM_BACKEND_BASE_URL
  example values as defaults

Tests: Pester + bats regressions pinning each fixed pattern, with
pre-fix/fixed discrimination proofs; twin-parity launch-failure reap
coverage; padded-key conformance pair on both platforms. All suites
green; convention lint 0 failures.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Add multimodal request translation, privacy-safe transport diagnostics, strict lifecycle readiness and atomic restart, complete package accounting, and restore Claude Code system-role compatibility.

Co-Authored-By: Claude <noreply@anthropic.com>
…tion

Compress implementation-spec detail that recent provider-shim commits imported into user-facing docs, while preserving all load-bearing facts (shim commands and the stop/start session-safety caution, context ceiling values 1050000/370000, image formats and dated probe evidence, ~52 package count, reproducibility verdicts, evidence-grading guidance). Setup steps and troubleshooting entries now lead with actions; "safe to skip" blocks are reframed as bold "Optional reading" leads; the duplicated threshold profile-membership table is dropped from 02_understanding_daaf.md; Quarto-viewing passages are trimmed to parity with their marimo equivalents; CONTRIBUTING release-gate invariants are restructured into a scannable checklist.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ll support, and Codex plugin guidance

Two user-guidance strands with supporting infrastructure:

File management (bind mounts): commented read-only bind-mount opt-in block in
docker-compose.yml (long syntax, /host_data target); install-guide section with
platform permission matrix (UID-1000 pass-through on Linux/WSL-fs, translated
ownership on macOS//mnt/c), write-enabled advanced path, and an explicit
reproducibility trade-off callout (copy inputs into project data/raw); FAQ
troubleshooting entry; CLAUDE.md provenance bullet (/host_data read-only,
outside backup/audit boundary); cross-links from best-practices and extending
guides; reproducibility-mode acknowledgment of externally-guaranteed inputs.

Simultaneous Claude+ChatGPT (shared workspace): DAAF_DATA_VOLUME_NAME override
(unset = legacy <project>_daaf-data; set = literal volume name) centralized in
daaf_lib resolvers (bash + PowerShell), propagated to all 17 whitelist copies,
backup/restore/install derivations in both twins, and install-time seeding;
commented external:true + name: opt-in block under the daaf-data volume;
5-step conversion procedure in the install guide (edit-in-container-then-
rebuild); shared-workspace FAQ; migrate_daaf legacy-scope comments.

Codex plugin (codex-plugin-cc): setup subsection framed around the two
race-free configurations (dual-container; single Anthropic-route container),
one warning against combining with the ChatGPT shim lane (refresh-token
rotation race), device-code auth default; explicit nodejs install + build-time
Node >= 18.18 floor assertion at the end of the Dockerfile root section.

Tests: resolver precedence cases (bats + new Pester twin), install seeding
case, env-example key lint 6->7, whitelist parity pin 6->7 keys,
test_migration Phase 8 override sub-scenario in both harness twins. All
suites green (parity 9/9, daaf_lib 32/32, install 42/42, env-example 10/10,
backup 47/47, restore 50/50, test_migration bats 49/49 / Pester 56/56,
conventions lint 0 failures).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Replace the CLAUDE_CODE_EFFORT_LEVEL=high env-var pin (a hard per-session override that /effort and the /model picker could not change) with the top-level "effortLevel": "high" setting, which keeps high as the default while allowing live /effort overrides.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Inject concise, warm, equal-stakeholder communication guidance for GPT orchestrator sessions and harden the model-cache transport against malformed identities and control-character aliasing. Add focused hook and statusline regression coverage.

Co-Authored-By: Claude <noreply@anthropic.com>
…ycle (D3/D4)

Release verified 158/158 Python + 41/41 bats, three-angle review clean.
Includes post-review fix-it round: no-reasoning-turn test, trailing-thinking
history-replay test, bounded error-body read (MAX_ERROR_BODY_BYTES 1 MiB).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Make the codex CLI the single writer of CODEX_HOME/auth.json. The shim now
only reads tokens; on near-expiry (proactive) or a backend 401 (reactive) it
spawns codex login status and re-reads auth.json, judging success solely by
the re-read result. Deletes the Python OAuth refresh path (token POST,
rotated-token persistence, manager.rs-mirror reload guard) and the
SHIM_OAUTH_TOKEN_URL/SHIM_OAUTH_CLIENT_ID seams. Adds SHIM_CODEX_BIN and
SHIM_CODEX_TIMEOUT_S; the proactive window now mirrors codex 5-min refresh
window. Every auth-failure surface carries the literal recovery command
codex login --device-auth.

SHIM_VERSION stays 1.2.14 - version bump, changelog, /health auth block, and
start_shim.sh land in A1-ii.

Implements A1-R1/R2/R3/R5/R7. Adds tests/provider_shim/fake_codex.py stub and
test_v130_auth_delegation.py (12 tests); deletes the obsolete rotating-OAuth
persistence test. Full suite: Ran 169 tests OK (independently verified).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…loy-smoke T0.9 (A1-ii)

Complete the ChatGPT-lane auth-delegation work (Tier 3 A1) and cut v1.3.0.

- /health gains a read-only auth block {state, expires_at, days_left, recovery?}
  on the chatgpt lane (n/a on openai), derived from auth.json presence + JWT exp
  only - never token material. Expiring = exp within 48h (A1-R4).
- start_shim.sh readiness + --status print an auth line: expiring -> expires-in-N-
  days warning naming codex login --device-auth; expired/absent/unreadable ->
  is-dead phrasing. D4-sanitized output (A1-R6a).
- deploy-smoke T0.9 extends from auth.json-readable to the /health auth block:
  FAIL on expired/absent/unreadable, WARN on expiring, PASS on valid (A1-R6b).
- SHIM_CODEX_BIN/SHIM_CODEX_TIMEOUT_S documented in start_shim.sh; the deleted
  SHIM_OAUTH_* seams removed from its config docs (A1-R7).
- SHIM_VERSION 1.2.14 -> 1.3.0; cumulative v1.3.0 changelog covering A1-i + A1-ii;
  the two historical v1.2.5 OAuth comments carry superseded-in-v1.3.0 markers.
- Version pins bumped in provider-shim tests; +8 /health auth-block tests, +5 bats
  auth tests. Gates independently verified: Ran 177 tests OK; bats 46/46;
  deploy-smoke TD.0 38 OK.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…th_json (A1-iii)

Covers PASS/WARN/FAIL state transitions, non-shim-route SKIP, and
malformed/missing auth-block edge cases introduced in commit 3c3075e.
Harness suite: Ran 50 tests OK (38 + 12 new), independently verified.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…d reap, doc sweep)

Cycle-1 fixes from the three-angle A1 auth-delegation review:
- _auth_health_block(): guard the JWT-exp computation against OverflowError/
  OSError/ValueError (pathological numeric exp), classify as unreadable
  rather than raising - upholds the /health never-raises contract; +1 test
- _run_codex_login_status(): bound the post-kill reap with wait_for(5s) so an
  unkillable child cannot stall the request path
- host template + install guide + technical FAQ: drop the deleted SHIM_OAUTH_*
  seams and reframe the rotation-race caution around codex-delegated refresh
  (shim is now a pure reader; keep per-tool CODEX_HOME isolation advice);
  also align the Codex-plugin warning block mechanism wording (install guide
  ~L1236) with the v1.3.0 delegation model

Version unchanged (1.3.0). Gates independently verified: Ran 178 tests OK,
bats 46/46, deploy-smoke harness 50/50.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Shim caches the latest chatgpt-lane quota snapshot to an install-shared
quota_state.json (atomic, 0600, fail-open); context-bar.sh renders it as
the Plan-usage segment on shim-lane sessions (window labels from
window-minutes, stale-window drop rule, zero-secondary omitted).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… bats case, FAQ statusline scope, comment sweep)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… filters (Tier 4)

New provider-shim-tests job runs the full offline 184-test shim suite
(loopback harness + fake-codex stub; httpx/uvicorn pinned to container
versions) on ubuntu-latest with a 15-minute cap. tests/provider_shim/**
added to push and pull_request path filters; header job list corrected
to eleven jobs.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…bility

The loopback harness hardcoded /daaf as the repo root; every test spawns
the production shim through that path, which exists in the container but
not on a CI runner checkout. Resolve from __file__ instead (identical
in-container). Review finding from the Tier 4 CI wiring (c2c17fe).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…dation, classifier, cache races)

Ports confirmed findings from an external hardening audit across the two statusline renderers and the context-reporter hook (applied to the installed hook from host; delivered via proposed copy since the hooks dir is edit-protected).

- Escape-safe rendering: ANSI-C color literals plus literal %s render (drop %b) so untrusted model/branch/task text cannot inject terminal control bytes; strip C0/C1 from untrusted fields.

- Identifier allowlist before path construction; closed-set GPT flagship classifier for physical-window mapping; full-transcript usage/model recovery (drop tail -50); numerator overflow bound before multiply; suppressed redirection-open diagnostics.

- context-bar.sh also: atomic ctx-window cache publish, OpenRouter catalog validation with private temp, plan-usage percentage clamp. context-reporter.sh also: parent-model isolation, future-timestamp gate guard, and a DAAF_CONTEXT_REPORTER_CACHE_DIR test-isolation seam (default /tmp, inert in production).

Tests: context_bar.bats +14 cases (53/53), subagent_bar.bats +9 (54/54); reporter suite 69/69. Three-angle review passed.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… + hermetic cache isolation

This file combines two sessions' work, interleaved and not cleanly separable by hunk:

- The context-reporter hardening test cases (adversarial session/agent IDs, full-scan recovery past 50-plus zero placeholders, closed-set classifier grammar, parent-model isolation, future/corrupt gate timestamp, numerator bound, redirection-open suppression) were authored by a prior session in this hardening effort.

- This session added the DAAF_CONTEXT_REPORTER_CACHE_DIR isolation-seam refactor, relocating the suite off shared /tmp onto per-test project scratch to make it hermetic: 69/69 deterministic, where it was previously flaky against a live session's /tmp cache writes.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…anch, model cache)

Close-review follow-up to 6527a97: byte-wise strips (tr cntrl on the git branch; a bash C0+DEL range on the cat-read subagent model cache) passed UTF-8-encoded C1 controls (U+0080-U+009F, e.g. 8-bit CSI on xterm-class terminals) through to the display stream. Both sites now use the Unicode-aware jq idiom - gsub of the cntrl class, whose Oniguruma semantics are Unicode Cc (C0+DEL+C1) - and jq UTF-8 decoding maps raw stray bytes to inert U+FFFD. Fail-open preserved: on jq failure the field reads empty and the bar/row still renders. The context-reporter hook is unchanged (its output carries no untrusted display fields).

Tests: context_bar.bats +1 (54/54), subagent_bar.bats +1 (55/55), reporter 69/69 unchanged; shellcheck clean; od-level end-to-end probes confirm removal on both paths. Two-angle review passed (consistency, completeness). Close-review session and this fix cycle are logged in the StatuslineHardening workspace SESSION_NOTES (research/ is git-ignored by design).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…A_STATE_FILE seam) + exponent-notation pct drop

- shim: _write_quota_state honors DAAF_QUOTA_STATE_FILE (redirect seam mirroring
  the context-bar reader seam; default __file__-derived path byte-identical);
  loopback harness now seams every spawned shim to per-instance scratch, so test
  runs no longer overwrite the live install-shared quota_state.json (defect
  observed live 2026-07-21: full-suite run rewrote the production file with
  all-dash snapshots, blanking the other install's Plan-usage segment)
- context-bar.sh: fractional-floor strip now gated on ^[0-9]+\.[0-9]+$ so
  exponent-notation percents (1.0e999) drop the segment instead of rendering 1%
  (statusline-hardening session deferred observation O2)
- tests: seam + production-non-pollution + default-derivation + bats exponent cases
- SHIM_VERSION 1.3.2, changelog, version pins swept

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…(v1.3.2 fix cycle)

e665fbe seamed spawned shims (child env) and the v131 unit tests (constant
patching) but missed in-process production-module loads: controlled_asgi_probe
executes the real request path in the test-runner process, where
DAAF_QUOTA_STATE_FILE was unset, so its chatgpt-lane lazy-401 case
(attempt_outcomes=[401,200]) rewrote the live install-shared quota_state.json
on every run (deterministic repro; the "external container" attribution in the
e665fbe round is corrected — all observed writes were this in-process case).
Fix: runner-level os.environ.setdefault in the loopback harness seams every
present and future in-process load to SCRATCH_ROOT; regression test locks the
exact polluter case against the production file.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…on, per-test in-process seam, retry-once brackets, track scratch ignore)

- shim changelog: corrected root-cause narrative (in-process controlled_asgi_probe
  was the decisive polluter; spawned child-env seam + runner-level in-process
  default together cover test runs; seam resolves at module import)
- in-process regression: per-test DAAF_QUOTA_STATE_FILE via mock.patch.dict; now
  asserts the probe write landed at the per-test seam (non-vacuous) and
  production unchanged
- both non-pollution guards: retry-once bracket tolerates a bursty live-neighbor
  write on the shared /daaf volume while deterministic suite pollution still fails
- .gitignore: track scripts/scratch/ exclusion (was local-only info/exclude;
  runner seam now writes scratch on CI)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…core)

Persist a bounded, newest-first snapshot of the in-memory _REASONING_CACHE on
each cache mutation and restore it at module import, so a restart mid-session no
longer discards reasoning continuity (graceful misses -> restored replay).

Shim (A2-R1..R6, amended):
- DAAF_REASONING_CACHE_FILE seam, resolved at import; HOME-derived default
  $HOME/.claude/provider_shim/reasoning_cache.json (off the repo tree by intent).
- Fail-open atomic writer (mkstemp+os.replace, 0600, makedirs 0700), entry cap
  256 + 2 MiB byte cap keeping the newest; restore gated by a 30-day sanity TTL.
- /health gains reasoning_cache:{entries,restored} (counts only).
- _cache_reasoning/_populate_reasoning_cache now report mutation; persist wired
  at both populate call sites. In-memory cap/LRU/graceful-miss semantics unchanged.

Tests/harness:
- New test_v133_reasoning_cache_persistence.py (design tests 1-9, 15 methods),
  incl. the restart-restore money test and production-default non-pollution.
- Harness: runner-level seam + _purge_in_process_reasoning_cache_seam() to close
  the restore-at-import cross-test leak (A2-R5); per-RealShim scratch seam;
  allowlists. _load_fresh_shim purge closes the same leak in the auth tests.
- _HEALTH_KEYS updated for the new /health field.

Defers to A2-ii: SHIM_VERSION bump, changelog, start_shim state-target hardening.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…n bump (A2-ii)

Complete Tier 3 A2 (reasoning-cache persistence) on top of the A2-i core:

- start_shim.sh: state_targets_are_safe() now covers quota_state.json in its
  symlink/non-regular hijack checklist (closing a gap open since v1.3.1). The
  reasoning-cache file stays out of scope by design - it lives under
  $HOME/.claude/, outside the start_shim domain, and os.replace does not
  dereference a dest symlink.
- start_shim.bats: +2 tests (symlink and non-regular quota_state.json both refused).
- SHIM_VERSION -> 1.3.3 with a cumulative changelog block documenting the A2
  persistence feature, its off-repo-tree per-container placement, the
  DAAF_REASONING_CACHE_FILE import-time seam, security posture (opaque blobs,
  counts-only logging), the /health reasoning_cache surface, the state-target
  hardening, and the one-shim-per-container topology.
- Version-pin sweep: health-version assertions in test_historical_regressions.py
  and test_reasoning_formatting.py, plus the startup-log literal in
  test_stream_hardening.py, updated to 1.3.3.

Gates: 204 Python tests OK; start_shim.bats 48/48; deploy-smoke 50 OK; shellcheck
clean; start_shim.sh mode 100755; workspace invariants OK.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…unt clamp, hermeticity + docs

F1: purge the runner-default reasoning-cache seam before the in-process load in
test_v131_quota_state._load_shim_module, matching the test_v130 pattern, so every
in-process loader starts cold (latent cross-test leak closed).

F2: harden _restore_reasoning_cache in anthropic_openai_shim.py - (a) skip a file
whose on-disk size exceeds the 2 MiB persist cap before reading it (defense-in-depth;
only hand-tampered files can trip it), and (b) report the count of entries actually
resident after restore so a tampered over-cap file cannot overstate
/health.reasoning_cache.restored. One changelog bullet folded into the existing
v1.3.3 block; no version bump. Two new tests in test_v133.

F3: name the provider shim reasoning-cache continuity file in the daaf-claude-config
volume enumerations (installation quickstart :334, FAQ :83 and :708, with a one-sentence
privacy rationale in the Why-Docker answer) and add a shim-topology caveat to the
shared-workspace advanced section.

F4: widen the scripts/scratch/ .gitignore comment to name both in-process seam files.

Gates: full suite Ran 206 tests OK; v131 11 OK; v133 17 OK; workspace invariants OK.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Raise all four DAAFBench runners --timeout argparse default to a uniform
900s logistical cap (2026-07-21 walltime redesign; formerly 120/180/300/300
per-phase) so runs complete rather than censor - duration is now the
measured axis. Replace the dead TIMEOUT_BY_TIER tier dict in executor.py
with a single DEFAULT_TIMEOUT_S=900 fallback (contract preserved), and
align the README flags table, OpenRouter guidance, and invocation example.

Add benchmarks/scripts/build_rerun_queue.py: a read-only scanner that emits
the timed-out re-run queue (models by descending timeout rate; backburner
deferral for Gemma 4 31B/26B + GPT-5.6 Luna; criterion-invalid dc-11/dc-12
excluded per the 2026-07-18 static audit; one ready-to-run command per
case). Reconciles to the 401/3187 pre-campaign baseline: 249 active reps +
85 deferred + 67 excluded = 401.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TjgirAEm8zyNTW4ikptBUC
…iplier (v3.3.0)

Exclude timed-out runs at a single load_runs chokepoint so they never reach
the embedded DATA payload or any precomputed aggregate; remove all timeout
presentation (leaderboard column, About caveat, hide-timeouts filter, clock
glyphs, TIMED OUT badge, Key Takeaway T5 figure). Add a PRECOMPUTED.duration
block (per-model est_duration_per_run / est_battery_duration / multiplier vs
Opus 4.8 + separate duration.frontiers) computed from per-run duration_s
(parallelization-invariant, never wall_time_s), surfaced as a Relative
Duration leaderboard column and a duration axis on the Cost vs Performance
scatter. load_runs now returns a 3-tuple with the excluded count reported
via print_summary (fixes a NameError in the report path). Bump
generator_version to 3.3.0.

Tests: update both viewer suites to the 3-tuple contract and 3.3.0 pin; add
timed-out-exclusion coverage (data payload, per_model_phase, per_case, token
totals, duration aggregation, degenerate all-timed-out CASE and PHASE cells,
composite partial idiom with an exclusion-not-zero-fill score pin, removed
PRECOMPUTED keys, and absence from rendered HTML).

Verified: 22/22 unit tests pass; corpus regen = 2786 completed, 401
timed-out excluded, no crash.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TjgirAEm8zyNTW4ikptBUC
DAAF Container and others added 28 commits July 22, 2026 14:24
…che cap resize

R1-R3: capture usage.input_tokens_details.cached_tokens at all three parse sites;
map to Anthropic-native client usage via subtraction (input_tokens = total - cached,
cache_read_input_tokens = cached), always-emitting both cache fields (sum invariant
preserved). R2: terminal record gains cached_tokens (OpenAI total kept for input_tokens;
None -> "-"). R4: new top-level /health prompt_cache block (requests_with_usage,
requests_with_cached, cached_tokens_total, input_tokens_total; backend-sourced only,
cached counters gated cached>0). R5: reasoning-cache persist cap 256->1024 entries /
2->8 MiB (measured ~19 ms median, ~25 ms worst full-snapshot write; in-memory cap
unchanged). R6: SHIM_VERSION -> 1.3.6 + changelog.

Tests: sanctioned always-emit usage-shape flips across 5 pin locations - 4 exact-dict
sites in test_stream_hardening plus the test_v1214 golden projection (2 dicts:
message_start seed + message_delta terminal); USAGE_WITH_CACHE harness sibling; symbolic
re-derivation of the oversized-file persist test; new test_v136_prompt_cache_observability
(8 tests: streaming + both non-stream lanes, absent-default, malformed battery, clamp,
/health block + counter advancement). Version-pin sweep to 1.3.6 (0 functional pins remain).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UwRw2Eg36MDCxDPoorrXCQ
…ture realism

Harness-only. Add response.in_progress (created preamble via new _start_response
helper) to 5 positive text/reasoning builders; rework _append_text_item to the
live content_part.added -> output_text.done -> content_part.done shape; add one
mid-stream keepalive + response.metadata to full_response_scenario. All five event
types are _KNOWN_EVENT_TYPES-skippable, so downstream Anthropic projection is
byte-identical (227/227, golden pin intact). Exercises v1.3.4 allowlist and
content_part skip branches no positive fixture previously hit. No shim source
change, no version bump. Off-limits/malformed/tool fixtures untouched.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UwRw2Eg36MDCxDPoorrXCQ
…n) + drop orphan

Harness-only. Every function_call_arguments.delta now carries a default
obfuscation field via _append_tool_item, mirroring the live Codex wire on
both lanes; the arg_delta_fields seam is preserved as an override so the
distinct pinned value in obfuscation_tool_scenario still wins. obfuscation is
an upstream-only field the shim strips, so the downstream Anthropic projection
is byte-identical (227/227, golden _SERIALIZED_TWO_TOOL_PROJECTION intact).
Also deletes the orphaned MockResponsesServer.rotated_access_token assignment
(no reader; grep-clean). No shim source change, no version bump. Off-limits
interleaved/malformed fixtures keep their deliberate shapes.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UwRw2Eg36MDCxDPoorrXCQ
…onse headers

Harness-only. Give MockResponsesServer default success (2xx) responses a
lane-appropriate live header set: openai lane -> x-request-id +
openai-processing-ms + x-ratelimit-* (notes/04); chatgpt lane -> x-oai-request-id
+ a representative x-codex-* primary/credits quota family, no x-ratelimit
(notes/07). Lane is read from the request path (/v1/responses vs /responses),
which already encodes it. Defaults are seeded first and any scenario-injected
header (stream_headers/attempt_headers) overrides; applied to 2xx only so errors
keep their bare-header behavior. Secondary x-codex-* omitted (live-empty) to
preserve the pinned absent-header-renders-dash quota-snapshot contract.
Exercises the shim upstream_req_id + chatgpt quota_snapshot paths on realistic
input where they previously ran on empty headers. 227/227, golden pin intact,
production quota_state.json byte-identical. No shim source change, no version
bump.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UwRw2Eg36MDCxDPoorrXCQ
…ack harness

Review fix-it (Consistency WARNING): the full_response_scenario comment
attributed the keepalive + response.metadata frames to the Tier 0 capture
notes (notes/04, notes/07), which do not document them. Corrected: the two
frames were observed live during v1.2.14 validation and absorbed into the
shim _KNOWN_EVENT_TYPES allowlist in v1.3.4; the comment now states that
explicitly and flags their absence from the Tier 0 notes. Comment-only;
targeted modules re-run green (allowlist 5 OK, tolerant reducer 8 OK,
golden pin intact).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UwRw2Eg36MDCxDPoorrXCQ
…moke hardening

The pyfixest 0.40.0 wheel declared zero runtime dependencies (packaging bug: no Requires-Dist in METADATA) - it installed successfully without its real dependencies and imported only because unrelated pins (umap-learn, wildboottest, linearmodels, great-tables) supplied them transitively. 0.60.0 declares correct metadata; 0.40.1 was avoided due to a scipy upper bound conflicting with scipy==1.17.0.

- Dockerfile: pin bump with rationale NOTE; new transitive dep maketables
- pyfixest skill: refreshed to 0.60.0 (cumulative 0.40->0.60 breaking changes, etable->maketables backend with coef_fmt star token trap, Rust MAP demeaner default with numba as optional extra, typed MapDemeaner/LsmrDemeaner API, feglm FE-GLMs since 0.50, fepois offset, docs moved to pyfixest.org) - every load-bearing claim verified against the live install
- Cross-skill sweep: corrected the now-false 'feglm() does not support FE' claim and stale 0.40.0 version labels across fixest, r-python-translation, python-r-translation, stata-python-translation, stata-r-translation, and statsmodels skills
- smoke_pyfixest.py/_a: new smoke test (version + metadata sanity + feols/fepois + etable/ritest probes)
- smoke_imports_c.py: suite-wide declared-dependency metadata-sanity check for all 52 pins (allowlist: numpy, pyarrow, pyyaml) - catches broken-metadata wheels at rebuild-validation time
- debugger.md: pyfixest gotchas pointer broadened to cumulative 0.40->0.60

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MSMpYgPYkneHvzzXaHoiAi
…rrency safety + error taxonomy

Session work (2026-07-28 FrameworkDev):
- Score-complete early stop (dispatch_compliance only; all DC criteria are
  monotone-pass, so terminating on all-PASS is score-neutral; other three
  runners carry monotone-FAIL negative criteria and get stall-only). 60s
  watchdog poll runs the real scorers against live transcripts; one
  confirmation poll protects the subagent-transcript flush; status
  completed_early with score_complete_seconds (time-to-all-criteria-pass)
  substituted into viewer duration aggregates.
- Hung-run detection on all four runners: 90s first-activity + 330s staleness
  x2 consecutive reads (K3-validated thresholds), parent+subagent max-recency,
  lookup_errors visibility, --stall-retries (default 1) auto-relaunch with
  fresh session/sandbox, stall_attempts persisted; status stalled (distinct
  from timed_out) and selected by build_rerun_queue with separate counts.
- Progressive per-run archiving: results/{ts}/runs written per-run with
  atomic incremental manifest/summary rollups (partial flag, try/finally
  finalizer) - a killed invocation no longer loses completed runs.
- --max-concurrent (default 5) per invocation; previously uncapped
  ThreadPoolExecutor(max_workers=len(runs)).
- Cross-batch safety: DC fixture flock (EX restore / SH copy, kernel-released
  on kill), read-only fixture-source hardening, per-batch uniqueness token on
  results dir + sandbox + manifest (batch_token/batch_pid); viewer and
  rerun-queue verified tolerant of old+new dir names side by side.
- Error taxonomy: per-run error_counts (hook_blocks / tool_failures /
  tool_failures_unclassified) classified from ~830 archived error records.
- Tests: test_watchdog.py (12), test_concurrency_safety.py (6, incl.
  two-process flock), viewer seam regression; suite 121/121 OK; viewer
  verified over all 322 existing archives.

Also includes the pre-existing uncommitted wire_id/child-model-purity strand
(models.yaml wire_id declarations, route_provenance build_opener, purity
comparison-target fixes + archive-case regression tests): its hunks interleave
with this session's in models.py/artifacts.py/viewer/run_dispatch_compliance,
so it is committed together to keep the snapshot coherent and test-green.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01J7AU49zLNWPh4CBJ3FpVnm
Translate GPT Fast intent to the canonical priority service tier, add route-bound control and honest requested-versus-served telemetry, and synchronize status, deployment checks, documentation, and deterministic regression coverage.

Co-Authored-By: Claude <noreply@anthropic.com>
… fixes

Sol/Luna GPT-diagnostic follow-up (verified claim-by-claim against code and
archives before implementation):

- DC heading criteria (task/context/instructions) normalized from
  case-sensitive exact-label substring lists to structural heading matching
  (ATX/bold heading extraction, casefold, concept keywords incl. 'request'
  for '## User Request'), ORed with the legacy lists so the change is a
  strict widening — no legacy-passing prompt can regress (unit-tested
  property; verified by archive dry-run).
- rescore_archives.py: rescored all 166 dispatch_compliance sets (1,159
  runs) in place per user decision (no dual-metric versioning; decision
  recorded in README §8 with a provenance-stamped criteria-correction
  exception to the immutability policy). Net effect: GPT DC section-criteria
  49.4% -> 74.2% (+24.8pt), Claude 82.7% -> 83.4% (+0.7pt) — the spurious
  heading-lexicon gap collapses while behavioral criteria are untouched.
  113 FAIL->PASS flips total, 0 PASS->FAIL. Additive rescored_at /
  rescore_reason provenance on all rewritten records; transcripts never
  modified. Pre-2026-07-28 viewer bundles display pre-correction numbers
  (README caveat added).
- Shell-safe sandbox slugs via sandbox_slug() in all 4 runners (kills the
  unquoted-parentheses path hazard behind 57 of Luna's 92 recorded tool
  failures) + batch-start slug-uniqueness guard.
- Parent-transcript error scan for error_counts in all 4 runners: closes
  the timeout/stalled/early-stopped parent-side undercount (89 omitted
  events in the Luna G34-G36 diagnostic), bounded to post-checkpoint
  content (checkpoint_lines threaded in dispatch_compliance/skill_routing;
  goldens-no-is_error invariant test covers the rest).
- Wrapper relocation: prepare_fixtures now seeds run_with_capture.sh at
  {sandbox}/scripts/ (BASE_DIR-level, repo-isomorphic) — every model family
  was constructing that path per CLAUDE.md convention and hitting exit 127;
  containment sentence now names the location; deterministic
  prompt-promise==filesystem tests added.
- Tests: 154/154 green (+15 this batch); rescore integrity independently
  verified (fresh scorer output == stored rescored verdicts on sampled
  archives); viewer end-to-end clean over all 322 sets.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01J7AU49zLNWPh4CBJ3FpVnm
…early-stop doc alignment

- generate_results_viewer_v2.py v3.3.0->3.4.0: --transcripts/--no-transcripts
  tri-state (bundle default includes lazy shards; single-file defaults to
  transcript-lite monolith); explicit discovery skip of probes/removed_runs
  and _-prefixed (_quarantine*) containers; load-time exclusion extended to
  new-taxonomy status stalled/timed_out (latent leak fix)
- viewer_template.html: three-way transcript feature-detect (inline / lazy
  index / "not included" notice, no fetch on transcript-less builds)
- README.md: Sec 8 rewritten for new viewer semantics; Sec 3/Sec 4 early-stop
  docs aligned with the 0bd08dc opt-in flip (monotone-pass argument recorded
  as falsified; --early-stop row added; --no-early-stop marked deprecated)
- run_dispatch_compliance.py: docstrings caveated to match the flip; run_one
  signature default enable_early_stop True->False
- reconcile_openrouter_costs.py: stale gemini-3.5-flash blanket exclusion
  flagged with pointer to the v2 per-slug-boundary pipeline

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y86U28PD47GZMrY8HJjkEJ
…nners

Two portability regressions from the GPT Fast controls commit (318f0e4):
provider-shim suite errored 226 times because the harness's HOME-isolated
child env hides pip user-site packages on runners (install httpx/uvicorn
into a venv instead — sys.executable carries venv site-packages through
the allowlisted env), and gpt_fast.bats hardcoded container-only /daaf
paths (now derived from BATS_TEST_DIRNAME, matching test_helper.bash).
Also gitignore .shim-venv/ for local-run hygiene.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014GuK32tjpGK5jubHYUz9Q4
research/ project files are session artifacts, not framework code; this
one was tracked by mistake. Removed from the index only — the file stays
on disk.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014GuK32tjpGK5jubHYUz9Q4
Add the CHANGELOG v3.0.1 entry (Stability and Polish). Bump version strings to 3.0.1 across README, CITATION.cff, install-guide tag examples, and the agent_reference citation templates. Collapse the duplicated GPT Fast deep-dives into one guided setup plus a single gated under-the-hood block, with the FAQ pointing to it. Align the install-guide paste blocks with the settings-file no-inline-comment convention (loader takes values literally). In environment_settings_example.txt: add a bare-value conventions line, trim shim internals from the service-tier and ChatGPT-lane passages, add a context-window TL;DR, reframe Option B setup-token for the persistent-login era, and add Bedrock/Vertex orienting notes.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

Claude-Session: https://claude.ai/code/session_01XpVieJ1AqWdRuMgXqUhwpD
…tier suppression, hollow-circle markers

- OpenRouter battery costs restored via derived token-mix snapshot
  (openrouter_reconciliation_2026-07-29.json, built from the v2 classified
  billing parquet; zero loader change — legacy glob reads it)
- GPT chatgpt-subscription trio priced on explicit api-equivalent
  counterfactual basis with leaderboard badge (never conflated with invoiced)
- Leaderboard columns: suppress unknown-phase/zero-run sets; fold
  subagent-less dc sets (kills UNKNOWN_PERFECT / DISPATCH_COMPLIANCE_PERFECT)
- Tier banding: >50%-share cap triggers range-quartile fallback
  (post-rescore compression had put 25/29 models in T1)
- Composite-bar component ticks -> hollow circles
- Docs: README battery-cost basis semantics (token-mix provenance vs dollar
  normalization), producer-name correction, JS basis comment

Reviewed 3-angle (consistency/quality/completeness); battery figures
hand-reverified against bundle ground truth (K3 \$76.25, Sol \$13.62).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y86U28PD47GZMrY8HJjkEJ
…led_asgi_probe

The in-process probe inherited the runner's CODEX_HOME via
patch.dict(clear=False): inside the DAAF container the codex plugin
exports one holding a real auth.json (chatgpt-lane probes silently
authenticated against live credentials), while CI runners export none,
so the chatgpt lane failed closed with upstream_calls == 0 (the 7
remaining ShimPolicyIntegrationTests failures in run 30457795712).
Provision the same fake-JWT auth fixture RealShim writes for spawned
shims and pin CODEX_HOME to the probe's scratch home; the
auth_store_unavailable branch keeps its missing-store semantics.
Verified: full 280-test suite OK in-container, and the affected file
OK under a CI-like env with no reachable real auth.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014GuK32tjpGK5jubHYUz9Q4
…, failure-class tags, rescore reason

Bundles four bounded, additive harness changes plus review-pass fixes (no
scoring-behavior change beyond the approved C2 gate):

- C2: dispatch_compliance zero-dispatch grader gate — all 8 prompt_* criteria
  FAIL (not vacuously pass) when a run made zero Agent-dispatch attempts;
  recorded-failed and recovered calls count as attempts. Applied retroactively
  to the archive corpus via rescore_archives.py (dc-only, additive provenance,
  reason zero-dispatch-gate-2026-07-29: 1364 runs rescored, 19 changed, all
  flips PASS->FAIL).
- C3: display-only relabel of the legacy_numeric accounting category to
  numeric_computed_cost in format_coverage() console output; persisted
  summary.json accounting KEY unchanged (still read by viewer and tests).
- C4: additive classify_tool_failure_class() (policy_hook / infra_transient /
  capacity_limit / infra_config / model_error) with first-match precedence and
  a Codex-lane rule distinguishing a config refusal of the configured child
  model from a model-authored wrong id (delimiter-aware match: gpt-5.6-terra
  vs gpt-5.6-terra[1m] are distinct ids); executor tags each extracted tool
  failure with tool_failure_class. Bounded infra_transient retry deferred.
- R: rescore_archives.py gains --reason (defaults to prior constant; blank
  rejected) and prints the effective reason before processing.
- Review fixes: anchored 429 matching (no trace-id/token-count false
  positives), recovered-only gate regression test, failed-only comment
  accuracy, precedence doc note, format_coverage relabel assertion, README
  docs for the gate, the taxonomy, and --reason.

Tests: test_error_classification + test_dispatch_heading_normalization +
test_artifacts_and_preflight = 84/84 OK. Pre-existing viewer-schema
generator_version failures (3.3.0 vs 3.5.0) are unrelated and untouched.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y86U28PD47GZMrY8HJjkEJ
Two assertions in test_viewer_schema_loading lagged the committed viewer
(e46594b): the generator_version pin (3.3.0 -> 3.5.0) and the reworded
non-phase discovery-skip message ('Ignoring non-phase results reserved
container'). Both suites now pass: 23/23 OK.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y86U28PD47GZMrY8HJjkEJ
…ent line

The v3.0.1 docs clarity pass (b43d1fc) wrapped a sentence so that
CLAUDE_CODE_DISABLE_FAST_MODE=1 landed at the start of a comment line in
environment_settings_example.txt, matching the activatable-looking
"# KEY=value" shape that the template's bats lint (test 461) forbids.
Rewrap only — wording unchanged. Verified: environment_settings_example
suite 10/10 and full local bats suite 1146/1146 green.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014GuK32tjpGK5jubHYUz9Q4
…t-exit load screen

v3.6.0 (display-only, render-time; payload join keys unchanged):
- Remove the Provenance section (data pipeline intact; TOC/renderer/CSS
  removed in lockstep)
- Strip ' (ChatGPT Subscription)' from displayed GPT model names via
  displayModelName(); provider badge renders 'chatgpt'
- Remove the per-cell api-equiv leaderboard badge; basis disclosure moves to
  Relative Test Cost methods prose (hover tooltip retains per-cell basis)
- Cost-vs-performance scatter: 'Anthropic API' -> 'Anthropic'; chatgpt-lane
  points get a distinct green-triangle marker with a matching 'ChatGPT'
  legend entry; legend extracted to a shared helper and now also renders on
  the intro preview plot
- Composite-score bar hollow-circle markers: stroke 1px -> 2px

v3.6.1 (behavior): exclude legacy (schema-v1) instant-exit stub runs at load
(status null, not timed out, no error, top-level output_tokens null) with a
stderr NOTE per exclusion — code-level guard mirroring the parity scan's
instant-exit screen, after the 2026-07-29 audit found 7 such stubs (Fable 5
x3, Opus 4.5 x4, all dc) polluting rep counts and averages (now quarantined
in results/_quarantine_2026-07-29_instantexit/). Schema-v2 records are
exempt (they legitimately lack status; tokens live in usage_observed).
Errored legacy runs keep their existing inclusion behavior.

Tests: viewer schema loading + rendering 24/24 OK (new stub-exclusion
regression test; node harness executes the full embedded main script).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y86U28PD47GZMrY8HJjkEJ
… copied from Luna)

The gpt-56-terra-chatgpt and gpt-56-sol-chatgpt entries were created by
mirroring the Luna entry and wrongly inherited Luna's $1/$6 rate card,
understating Terra 2.5x and Sol 5x. Corrected to each model's own published
schedule (verified 2026-07-29 against developers.openai.com model docs):
Terra $2.50/$0.25/$3.125/$15, Sol $5/$0.50/$6.25/$30, with per-model
long-context blocks (2x input / 1.5x output above 272k input) and own
source_url + accessed_at. Battery-cost impact: Sol ~$13.72 -> ~$68.60,
Terra ~$10.97 -> ~$27.43; Luna unchanged.

Long-context blending deliberately NOT wired into the viewer: a per-request
measurement across all 459 countable trio runs (scripts/scratch/
25_gpt-longcontext-share.py) found the largest single request is 159,692
input tokens — zero requests exceed 272k, so short-context pricing is exact
for this corpus (0.00% uplift).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y86U28PD47GZMrY8HJjkEJ
…reement metric, duration column removal

Rewrite all five Key Takeaways for the July 2026 corpus: the top tier now
spans three providers (Fable 5 leads at 94.2%; Opus 5 close but dominated;
GPT-5.6 Sol and open-weights Kimi K3 in Tier 1); a six-point, four-provider
efficiency frontier (two open-weights); steep diminishing returns (Luna ~84%
of Fable at ~5% of cost, Sol ~91% at ~29%); reliability and predictability as
the values budget tiers give up (new agreement metric); and the open-weights /
provider-flexibility thesis. Rebuild the fillTakeaways() kt-* span contract
(28 live-injected spans so figures track the corpus), refresh the hero
bottom-line (Sol/Sonnet 5 mid-budget, Luna value pick, Kimi K3 topping the
open-weights pack), Cost-vs-Performance lead, cost caveat (verified OpenAI
rate schedules; zero >272k requests), and Phase 3a dispatch explainer
(model-authored invalid dispatch models).

Add schema-additive PRECOMPUTED.consistency fields cells_all_agree/rate_agree
(share of multi-rep cells where all reps land on the identical grade —
predictability decoupled from score level; Fable 5 92.2% vs DeepSeek V4
Flash 64.7%), with a loading-test assertion.

Remove the Relative Duration leaderboard column (header, cells, sort hooks,
footnote, CSS, orphaned durationMult); the duration pipeline and the CvP
duration scatter axis are unchanged. Voice anchors (hero TLDR, four About
intro paragraphs) byte-untouched.

Review: 2-angle pass verified every prose claim against a fresh render
(frontier exact by Pareto recompute; agreement gap reproduces) and found no
stale references or orphans. Tests 24/24 OK.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y86U28PD47GZMrY8HJjkEJ
…ion-pricing note

Applies the 2026-07-29 user edit slate (B1-B9) over the July narrative: hero
bottom-line reframed on the ratified June register (top performer /
budget-conscious reassurance / slash-compound), all five Key Takeaway
headlines and closers rewritten as plain declaratives with interleaved
honest-limits hedges (sample-noise parenthetical, small-denominator caveat
pointer), 'All to say:' summary connective, forward-looking DAAFBench close,
and mechanical fixes (API-equivalent capitalization, whitespace). Voice-passed
passages are flagged user-ratified via anchor comments; the kt-* 28-span
contract is untouched.

Adds one NEW unratified passage (flagged for the user's intensive pass): a
subscription-pricing note in the Cost-vs-Performance lead — all dollar figures
are API-style list pricing, while subscription access (Claude Max / ChatGPT,
the lane the corpus GPT runs actually executed on, verified from run
provenance) is often the biggest cost-efficiency lever.

Independent look-over: brief fidelity verbatim on all ratified passages,
do-not-touch list held, 28 spans matched, retired phrases absent, 24/24
tests OK. generator_version 3.7.0 -> 3.7.1.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y86U28PD47GZMrY8HJjkEJ
claude-opus-4-5 resolves on the wire to claude-opus-4-5-20251101 (OBSERVED:
all 11 substantive runs in results/20260726_163821 + 20260726_171652 report
exactly one distinct child model id; the claude-opus-4-6 parent records are
the replayed golden checkpoint prefix). Without the declaration the purity
gate false-failed authentic Opus 4.5 runs under exact string equality. Also
corrects the stale "every bare-slug entry omits wire_id" claim in the Opus 5
entry comment. Archived verdicts re-adjudicated separately (scratch 27/28,
additive provenance stamps); first live run under the new wire_id verified
purity (results/20260729_194049_3ca30f).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y86U28PD47GZMrY8HJjkEJ
…hor restamp

The five Key Takeaways items were hand-edited directly by the user
(2026-07-29 intensive pass) — the strongest ratification tier, superseding
the v3.7.1 anchors for those passages. Anchor comments restamped; hero
bottom-line and About-intro anchors untouched. Prose-only: 28-span contract
and all fillTakeaways setters intact (24/24 viewer schema tests pass).
Changelog entry added to the generator, including the corpus changes shipped
alongside this version (Sol + Opus 4.5 spend-limit quarantines, the 11-run
purity re-adjudication that also fixes 20260726_171652's phase-unknown
classification, and the dc-08 top-up). Bundle daafbench_2026-07-29g
regenerated from this template.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y86U28PD47GZMrY8HJjkEJ
P1: consolidate model-selection guidance into one canonical FAQ block
(07_faq "Which Claude model should I use?" — July-2026 corpus table, tier-1
membership, four-provider efficiency frontier, sample-noise caveat); the
quickstart's stale three-row table becomes a prose summary linking to it.
P2: five narrow passages — API-vs-Max gains the subscription-lever finding
(all GPT runs executed on flat-monthly ChatGPT subscription; API-equivalent
price tags), different-provider drops 2,799-runs/GLM-#4 for the
4,437-run/29-model corpus and the no-top-tier-monopoly headline, free-way
leads with DeepSeek/Gemma at ~2-3% (Gemma home-runnable), 02's cost-dial
passage and 01's OpenRouter provider row aligned.
P3: benchmarks/README user pointer to the FAQ block; root README quickstart
paragraph updated (Sonnet top-tier at ~half cost, FAQ link).
Independent Opus review pass: all numeric claims re-derived from bundle
daafbench_2026-07-29g PASS; one stale 33% GLM figure it caught (faq L181)
fixed to 22%; stale-claim sweep now clean; all anchors resolve.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y86U28PD47GZMrY8HJjkEJ
@brhkim
brhkim merged commit aaed416 into main Jul 29, 2026
24 of 34 checks passed
@brhkim
brhkim deleted the daaf_dev branch July 29, 2026 20:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant