Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
157 changes: 116 additions & 41 deletions docs/V0865_RELEASE_LEDGER.md
Original file line number Diff line number Diff line change
@@ -1,58 +1,133 @@
# v0.8.65 Release Ledger

Updated: 2026-06-23 10:35 America/Los_Angeles.
Updated: 2026-06-23 (Phase 2 triage + reconciliation), America/Los_Angeles.

This ledger tracks completion by concrete outcome: merged, replaced by a clean PR, absorbed with evidence, closed after implementation evidence, or blocked only by Hunter approval.
This ledger tracks completion by concrete outcome: merged, replaced by a clean
PR, absorbed with evidence, closed after implementation evidence, or blocked
only by Hunter approval. It is reconciled against live `main` and the GitHub
`v0.8.65` milestone, not against titles/labels.

## Current Baseline
## Release-readiness verdict (read first)

| Item | Track | Status | Completion evidence required | Next action |
| --- | --- | --- | --- | --- |
| PR #3468 WeCom `activeTurnId` fix | B/H | Merged into `main` | PR #3468 merged after green CI | Done |
| PR #3472 retired sub-agent refs | B | Merged into `main` | PR #3472 merged after green CI | Done |
| PR #3476 digest archive route | B | Merged into `main` | PR #3476 merged after green CI | Done |
| PR #3473 fact-drift CI gate | B | Replaced | Conflicting PR #3473 closed with evidence; clean replacement PR #3481 open and closes #3415 | Wait for #3481 CI, then merge if green |
| PR #3481 fact-drift CI gate replacement | B | Open, mergeable, CI queued | PR #3481 merged after green CI | `gh pr view 3481 --json mergeable,statusCheckRollup` |
| PR #3479 YOLO git tag probe fix | B/H | Merged into `main` | PR #3479 merged after green CI | Done |
| Issue #3477 install script | C | Replaced by PR #3482 | PR #3482 closes #3477; `sh -n`, web lint/build, fake-release smoke completed locally | Wait for #3482 CI, then merge if green |
| PR #3482 install script | C | Open, mergeable, CI starting | PR #3482 merged after green CI | `gh pr view 3482 --json mergeable,statusCheckRollup` |
| Release ledger | A | Created locally in `CodeWhale-v0865-release-ledger` | This file committed and PR opened/merged if durable tracking is desired | Keep updated as lanes land |
**v0.8.65 is NOT release-ready.** A 25-issue reconciliation against `main`
(2026-06-23) found **0 issues closeable**: 18 are partially landed (a
foundation/slice merged, scope remains) and 7 are not started. The milestone
still contains large unbuilt architecture — the Fleet execution substrate,
provider descriptors/pricing/catalog/telemetry/context-budget engines, the
config-module split, and the README end-cap. Recent foundation PRs have landed
(route foundation #3458, Fleet profile types #3469, provider docs #3471,
readiness dashboard #3485, reasoning streams #3446, Qianfan #3425,
deepseek-anthropic #3449, model-picker search #3484), but the bulk of scope is
outstanding.

## Worktree Layout
**Do not bump the version, tag, publish artifacts, create a GitHub Release, or
deploy the website.** Those are Hunter-gated *and* unwarranted until the
milestone is substantially complete and full release verification
(`cargo test --workspace`, web `lint`/`build`/`check:facts`, release build) is
green.

The outer `/Users/hunter/Desktop/Harnesses/CodeWhale` directory is a harness folder, not a Git repository. Keep unrelated repos there, but do not use them for CodeWhale release work.
## Phase 1 — landed (prior session)

CodeWhale worktrees currently in use:
| Item | Status |
| --- | --- |
| #3468 WeCom `activeTurnId` fix | Merged |
| #3472 retired sub-agent refs | Merged |
| #3476 digest archive route | Merged |
| #3481 fact-drift CI gate (replaced #3473, closes #3415) | Merged |
| #3479 YOLO git tag probe fix | Merged |
| #3482 install script (closes #3477) | Merged |
| #3483 release ledger | Merged |

| Worktree | Branch | Purpose |
| --- | --- | --- |
| `CodeWhale` | `milestone/v0.8.65-provider-model-routing` | Dirty provider-routing stabilization work; do not reset |
| `CodeWhale-install-script` | `codex/install-script-website` | Track C install script work |
| `CodeWhale-yolo-approval` | `codex/v0.8.65-yolo-git-readonly-approval` | PR #3479, merged; local worktree kept intact |
| `CodeWhale-pr3473-fix` | `codex/finish-pr-3473` | Clean replacement PR #3481 |
| `CodeWhale-v0865-release-ledger` | `codex/v0.8.65-release-ledger` | This coordination ledger |
## Phase 2 — this session (2026-06-23)

### Merged
| PR | Outcome |
| --- | --- |
| #3485 provider readiness dashboard | Merged after green CI. Delivers the `ProviderDashboardRow` slice of issue **#3083** (issue stays open — capability badges, action menu, `/model` filtering remain). |
| #3491 prompt-mode boundary | Merged after green CI. Credit-preserving rebase of community PR **#3455** (@mvanhorn) onto live `main`; **closed #3387**. Mode/route changes now never come from prompt text. |

### Closed with evidence
| PR | Outcome |
| --- | --- |
| #3433 storage hardening | Closed — superseded by merged **#3450** (`8d74738257`), same 6 files. Sole delta (async `write_task_artifact_for`) invited as a focused follow-up. |
| #3455 prompt-mode boundary | Closed in favor of #3491 (rebased, credited). |
| #3492 route_resolver harvest | **Closed by author (me).** Harvested a *parallel* `crates/tui/src/route_resolver.rs` from the pre-#3458 milestone WIP. The canonical route foundation is `crates/config/src/route/resolver.rs` (PR #3458) — documented as *"the sole producer of ReadyRouteCandidate (#3384)"* and already consumed by the dashboard. Shipping a second resolver would be divergent machinery (forbidden by AGENTS.md). #3384's wiring should build on #3458, not this. |

### Reviewed — needs rework (credit preserved, left open)
| PR | Outcome |
| --- | --- |
| #3437 approval-modal prominence | Good idea; cannot land. Carries a **SECURITY.md `.net`→`.com` regression**, a stray `codewhale` submodule gitlink, and scratch pollution; the widget hunk references nonexistent `palette::SELECTION_BG` (selection styling is theme-aware). Reviewed with the exact path to a clean single-file PR. Aesthetic restyle of the security-critical approval surface → needs Hunter design sign-off. |
| #3440 site/mirror provenance | **v0.8.69-scoped**, not v0.8.65. Same SECURITY.md regression + pollution as #3437. Redirected to a clean v0.8.69 branch with only the 3 provenance files (`docs/CNB_MIRROR.md`, `web/components/footer.tsx`, `web/app/[locale]/install/page.tsx`). |

Unrelated repos under the same harness folder include `codew`, `codewhale-bench`, `codewhale-bench-v0862-final`, and `cw-deepswe`.
### Holds for Hunter (will not merge without your call)
| PR | Why |
| --- | --- |
| #3470 Orchestration disposition + Fleet RFC | Author-gated: *"maintainer's to bless — this is a constitution philosophy change."* `constitution.md` is the sole base prompt; the disposition ships to every agent turn. CLEAN/green; merge-ready the instant you bless it. (Optional: soften the unqualified "Always have work in flight" at constitution.md:390.) |
| #3452 refresh agent guidance | Good "Start With Live Truth" framing, but the rewrite **drops hard guardrails** present on `main`'s AGENTS.md: the `agent`-only sub-agent surface, "constitution.md is the sole base prompt", the "no speculative `spawn_blocking` freeze fix" note, and the known-flaky-suite papercuts. Re-add those before merge (or prefer the milestone WIP's additive refresh). Currently a draft. |
| #3432 bridge-core consolidation | DRAFT, CLEAN, but `integrations/` is **not exercised by any CI workflow**, so green CI does not test the refactor. Needs manual bridge tests (`npm --prefix integrations/bridge-core test` + per-bridge smoke) and ready-for-review before merge. |

## Merge Order
### Out of v0.8.65 scope (parked correctly by their owners)
| PR | Scope |
| --- | --- |
| #3381 memory tags | v0.8.69/v0.9.0. Competing design with #2933 — needs a Hunter direction decision (flat-markdown tag index vs. typed v2 store). |
| #2933 hippocampal memory v2 | v0.9.0; maintainer deferred pending a design conversation. Three accepted unrelated fixes should be split out. |
| #2486 WhaleFlow cost tracking | v0.9.0 source branch; safe slices already harvested via merged #2821/#2827 (credited @AdityaVG13). |
| #2239 i18n Phase 1-4b | v0.8.71; branch ~1630 commits behind, infra superseded on `main`. Redirect to a fresh narrow branch (target #790). |

1. Finish Phase 1 queue: #3481 after CI is green.
2. Merge installer PR #3482 after CI is green.
3. Stabilize provider route resolution from clean worktrees before dependent provider UI/pricing/context work.
4. Land Fleet substrate/loadout/persona work before Fleet parity proof and final docs.
5. Run full release verification before any version bump, tag, artifact publish, or GitHub Release.
## Milestone issue reconciliation (25 open, 2026-06-23)

## Blockers
**0 closeable.** Disposition counts: 18 partial-keep-open, 7 not-started-keep-active.

| Blocker | Track | Owner action |
| Issue | Disposition | Status (capability on `main`) | Evidence / next |
| --- | --- | --- | --- |
| #2300 (EPIC) multi-model compat + auto loadout | partial | docs slice only | PR #3471 docs; behavioral acceptance via #2608 |
| #2574 (EPIC) capability-aware fallback chain | partial | happy-path fallback present, not capability-aware | #2779 + harvest 662a459ee; rebase onto route foundation |
| #2608 (EPIC) separate facts/offerings/route resolution | partial | foundation merged | PR #3458 route/ module; #3485 consumer |
| #2961 (EPIC) normalize provider usage telemetry | partial | Anthropic mapping only | PR #3014; define `UsageTelemetry` schema |
| #2963 DeepSeek Anthropic-compatible spike | partial | plumbing merged | PR #3449 (`5b8a5ac0b`); run smoke + write comparison |
| #2984 Codex/ChatGPT OAuth route + usage | partial | infra present | #3485 readiness + 940ea2875; live-account verification pending |
| #3075 cross-provider `/model` search | partial | search slice live | PR #3484 (`19d217b3e`); route selections via resolver remains |
| #3083 `/provider` readiness dashboard | partial | row-model + dashboard live | PR #3485; capability badges/action menu/filtering remain |
| #3084 (EPIC) provider descriptors + conformance | partial | descriptor/type/resolver layer | PR #3458; ~1 of 6 scope items |
| #3085 (EPIC) PricingSku usage engine + provenance | partial | enum stub + display label | PR #3458/#3485; engine unstarted |
| #3086 (EPIC) resolved-route context budget service | partial | budget-math foundation | `context_budget.rs` (5634fa6f9); provenance contract remains |
| #3154 (EPIC) Fleet execution substrate | partial | ~7.7k-line subsystem + types | PR #3469 types; executor/model-class wiring remains |
| #3166 (EPIC) Fleet route parity smoke/soak/handoff | partial | thin smoke slice | blocked on #3167/#3205/#3384/#3154 |
| #3167 (EPIC) Fleet profiles roles/loadouts/delegation | partial | types + config plumbing | PR #3469 slice 1 |
| #3222 reasoning stream style overrides | partial | core fix landed | PR #3446 (`2a4c67afa`); route-explanation integration remains |
| #3357 Baidu Qianfan route fixture | partial | fixture merged | PR #3425 (`0861661b6`); deferred deps remain |
| #3384 resolve switches through ReadyRouteCandidate | partial | foundation only | PR #3458 (canonical resolver); **wiring is the remaining slice — build on #3458, not a parallel module** |
| #3439 GLM-5.2 provider route fixture | partial | works via Z.ai/OpenRouter, not bigmodel.cn | decide Zhipu first-class vs. redirect; reply to reporter |
| #1519 custom provider endpoints/models/auth | not started | foundation only | unblocked by #3458; consumer slice unstarted |
| #3087 README end-cap rewrite | not started | gated on architecture stabilizing | do last |
| #3205 (EPIC) Fleet model classes + route roles | not started | absent | unwired seams in #3458/#3469; needs build |
| #3311 split config modules around boundaries | not started | absent | now actionable post-#3458/#3384; schedule migration |
| #3367 user-defined personas as Fleet inputs | not started | absent | blocked until #3167/#3205 wired |
| #3385 provider-owned live catalogs + secret-free cache | not started | absent (offline metadata layer only) | build on #3383/#3428; wire live `/models` refresh |
| #3478 (EPIC) TUI transcript smoothing + UX polish | not started | absent | split into 2-3 testable slices; land a calm-transcript preset first |

## Worktree layout

| Worktree | Branch | Purpose |
| --- | --- | --- |
| #3481 Rust CodeQL, macOS, and Windows checks still running | B | Wait; merge only after completion |
| #3482 CI just started | C | Wait; merge only after completion |
| Version bump/tag/release | A | Blocked on Hunter approval only |
| `CodeWhale` | `milestone/v0.8.65-provider-model-routing` | **Dirty** WIP (route_catalog.rs/route_resolver.rs + config refactor). Untouched. Do not reset. Note: route_resolver predates #3458; route_catalog table-consolidation (#3311) needs a behavior-equivalence pass before any harvest. |
| `CodeWhale-trackd-routes` | `codex/v0.8.65-ledger-truth` | This ledger update; otherwise a clean `main` checkout for verification. |

Stale (merged) worktrees from prior sessions left intact: `CodeWhale-install-script`,
`CodeWhale-pr3473-fix`, `CodeWhale-v0865-release-ledger`, `CodeWhale-yolo-approval`,
`CodeWhale-v0865-ledger-update` (orphan ledger branch — superseded by this update).

## Phase 1 Commands
## Blockers / decisions for Hunter

```bash
gh pr view 3481 --json mergeable,statusCheckRollup
gh pr view 3482 --json mergeable,statusCheckRollup
```
1. **Milestone is large and incomplete** — decide whether to (a) keep pushing
v0.8.65 through more implementation cycles, or (b) re-milestone the unstarted
EPICs (#3205, #3311, #3367, #3385, #3478) to a later version and ship a
smaller v0.8.65.
2. **#3384 route wiring** — build `switch_provider`/`/provider` on the canonical
`codewhale_config::route::RouteResolver` (#3458); do not harvest the parallel
pre-#3458 WIP resolver.
3. **#3470 / #3452 / #3432** — philosophy bless / guardrail re-add / draft-ready +
manual bridge verification (see Holds table).
4. **#3381 vs #2933** — pick the memory architecture direction.
5. **Version bump / tag / artifacts / GitHub Release / website deploy** — Hunter
approval only, and not yet warranted.
Loading