docs: finalize feat_overnight_final_solution (PR #440)#441
Conversation
- state.md: prepend the PR #440 one-liner to Last-5-merges (drop the now-6th row), update branch + active-feature + in-flight lines. - pipeline_status.md: Implementation → Complete (PR #440, 1e9522a) + mvp2 release marker. - implementation_plan.md: Status → Complete. - Split the two deferred-phase idea files into their own planned_features folders (established practice — they stay discoverable to /pipeline status which only walks planned_features/): * feat_overnight_final_solution_phase2/idea.md (morning summary card) * feat_overnight_final_solution_phase3/idea.md (proposal superseded) Fixed cross-references for the new locations. - Moved the feature folder → implemented_features/2026_06_04_feat_overnight_final_solution. - Dashboard + roadmap regen included. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Signed-off-by: SoundMindsAI <eric.starr@soundminds.ai>
There was a problem hiding this comment.
Code Review
This pull request updates the project's dashboards, roadmap, and feature documentation to reflect the completion and merging of the "Overnight Final Solution" (Phase 1) feature, while deferring Phase 2 and Phase 3 as planned feature ideas. The review feedback highlights several broken relative links and stale file references across the updated documentation files (feature_spec.md, idea.md files for Phase 2 and Phase 3, and state.md) resulting from the relocation of these feature specifications.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
| - **Phase 1 (this spec, MVP2):** FR-1 through FR-9 — the strategy wire contract, the wizard toggle, the worker dispatch, the cycle guard, the chain endpoint additive field, the panel badge, telemetry, tutorial, glossary key. Ships the autonomous cross-knob/cross-template exploration capability behind an opt-in toggle. | ||
| - **Phase 2 (deferred to [`phase2_idea.md`](phase2_idea.md)):** Dedicated morning summary card surfacing the rolled-up winner + the explored path + total lift, separate from the chain panel. Coordinates with [`feat_overnight_studies_summary_card`](../feat_overnight_studies_summary_card/idea.md). Rationale for deferral: the existing `/chain` endpoint already exposes the data needed; a polished morning card is a UX add-on that should follow rather than block the capability. | ||
| - **Phase 3 (deferred to [`phase3_idea.md`](phase3_idea.md)):** Proposal `superseded` status value + state-transition logic that marks non-winning chain links' proposals `superseded` so the morning artifact is unambiguously *one* answer. Rationale for deferral: requires a migration that reopens shipped schema (CHECK constraint on `proposals.status`) and a UX decision on whether superseded proposals appear in the `/proposals` index at all. Phase 1 delivers cross-knob exploration; Phase 3 polishes the rollup. Build it when an incident or design partner asks for the cleaner index. | ||
| - **Phase 2 (deferred to [`feat_overnight_final_solution_phase2/idea.md`](../../planned_features/02_mvp2/feat_overnight_final_solution_phase2/idea.md)):** Dedicated morning summary card surfacing the rolled-up winner + the explored path + total lift, separate from the chain panel. Coordinates with [`feat_overnight_studies_summary_card`](../feat_overnight_studies_summary_card/idea.md). Rationale for deferral: the existing `/chain` endpoint already exposes the data needed; a polished morning card is a UX add-on that should follow rather than block the capability. |
There was a problem hiding this comment.
The relative link to feat_overnight_studies_summary_card is broken:
[feat_overnight_studies_summary_card](../feat_overnight_studies_summary_card/idea.md)
Since this file was moved to implemented_features/2026_06_04_feat_overnight_final_solution/, the relative path needs to go up two levels to reach docs/00_overview/ and then down to planned_features/02_mvp2/feat_overnight_studies_summary_card/feature_spec.md.
Please update the link to:
[feat_overnight_studies_summary_card](../../planned_features/02_mvp2/feat_overnight_studies_summary_card/feature_spec.md)
| - A `superseded` value on `proposals.status` (Phase 3 → `feat_overnight_final_solution_phase3/idea.md`). MVP2 leans on the existing `/chain` endpoint's `best_link_id` + `proposal_id_for_best_link` to give the operator a single morning artifact; marking non-winning links' proposals `superseded` is a separate UX decision + migration that's not required for the core "explore + roll up" capability. | ||
| - A standalone morning summary card on the `/studies` list (Phase 2 → `feat_overnight_final_solution_phase2/idea.md`, coordinates with the existing `feat_overnight_studies_summary_card` sibling idea). |
There was a problem hiding this comment.
The references to feat_overnight_final_solution_phase3/idea.md and feat_overnight_final_solution_phase2/idea.md are plain backticked strings with incorrect relative paths. Since this file was moved to implemented_features/, these should be updated to clickable relative links with the correct paths:
- For Phase 3:
[Phase 3](../../planned_features/02_mvp2/feat_overnight_final_solution_phase3/idea.md) - For Phase 2:
[Phase 2](../../planned_features/02_mvp2/feat_overnight_final_solution_phase2/idea.md)
Please update these lines to:
- A `superseded` value on `proposals.status` ([Phase 3](../../planned_features/02_mvp2/feat_overnight_final_solution_phase3/idea.md)). MVP2 leans on the existing `/chain` endpoint's `best_link_id` + `proposal_id_for_best_link` to give the operator a single morning artifact; marking non-winning links' proposals `superseded` is a separate UX decision + migration that's not required for the core "explore + roll up" capability.
- A standalone morning summary card on the `/studies` list ([Phase 2](../../planned_features/02_mvp2/feat_overnight_final_solution_phase2/idea.md), coordinates with the existing `feat_overnight_studies_summary_card` sibling idea).| ## Relationship to other work | ||
|
|
||
| - **Builds on** [`feat_overnight_final_solution`](feature_spec.md) Phase 1 — depends on its `selected_followup_kind` field and the strategy persistence. | ||
| - **Builds on** [`feat_overnight_final_solution`](../../implemented_features/2026_06_04_feat_overnight_final_solution/feature_spec.md) Phase 1 — depends on its `selected_followup_kind` field and the strategy persistence. |
There was a problem hiding this comment.
The relative link to feat_overnight_final_solution is broken:
[feat_overnight_final_solution](../../implemented_features/2026_06_04_feat_overnight_final_solution/feature_spec.md)
Since this file is located at docs/00_overview/planned_features/02_mvp2/feat_overnight_final_solution_phase2/idea.md (which is 5 levels deep from the root), it needs to go up three levels (../../../) to reach docs/00_overview/ before going down to implemented_features/.
Please update the link to:
[feat_overnight_final_solution](../../../implemented_features/2026_06_04_feat_overnight_final_solution/feature_spec.md)
| - **Depends on** [`feat_overnight_final_solution`](../../implemented_features/2026_06_04_feat_overnight_final_solution/feature_spec.md) Phase 1 — uses its chain-termination signal. | ||
| - **Adjacent to** [`feat_overnight_final_solution`](../../implemented_features/2026_06_04_feat_overnight_final_solution/feature_spec.md) Phase 2 — the morning card (Phase 2) may want to know which intermediate proposals are superseded for cleaner rendering. |
There was a problem hiding this comment.
The relative links in these lines are broken or can be improved:
-
On line 64, the link to
feat_overnight_final_solutionis missing one../level (it should go up three levels to reachdocs/00_overview/):
[feat_overnight_final_solution](../../../implemented_features/2026_06_04_feat_overnight_final_solution/feature_spec.md) -
On line 65, instead of linking to the main Phase 1 spec and writing "Phase 2" as plain text, it is much more precise and useful to link directly to the Phase 2 idea file:
[feat_overnight_final_solution_phase2](../feat_overnight_final_solution_phase2/idea.md)
Please update these lines to:
- **Depends on** [`feat_overnight_final_solution`](../../../implemented_features/2026_06_04_feat_overnight_final_solution/feature_spec.md) Phase 1 — uses its chain-termination signal.
- **Adjacent to** [`feat_overnight_final_solution_phase2`](../feat_overnight_final_solution_phase2/idea.md) — the morning card (Phase 2) may want to know which intermediate proposals are superseded for cleaner rendering.|
|
||
| Detail + reasoning for each is in [`state_history.md`](state_history.md). | ||
|
|
||
| - **2026-06-04** — `feat_overnight_final_solution` (PR #440, squash-merged `1e9522a0`). **Autonomous cross-knob overnight tuning.** Teaches the overnight autopilot to consume the parent digest's *executable* follow-ups (narrow / widen / **swap_template**) on each chain link instead of always running the hardcoded ±50% narrow on the same template — so a chain can branch knobs AND templates while you sleep. Opt-in via a new wizard **Strategy** toggle (`"narrow"` default = byte-identical legacy behavior; `"follow_suggestions"` = the new mode); the existing `test_auto_followup.py` passes unmodified (that's the backward-compat gate). 7 stories / 4 epics: (1.1) `StudyConfigSpec.auto_followup_strategy: str | None` + `_validate_auto_followup_strategy` via the `AUTO_FOLLOWUP_STRATEGY_INVALID` 422 envelope (str-not-Literal per D-13 so the canonical error-code unwrap works) + a `mode="before"` validator rejecting operator-submitted worker-managed keys (single-writer rule, D-14); (1.2) wizard Strategy `<Select>` visible only when depth ≥ 1 + `overnight_strategy` glossary key; (2.1) pure-domain `select_executable_followup → SelectionOutcome` (filters text, cycle-guards swap-to-visited, first-executable-by-index — trusts digest's convergence-aware ordering, D-5); (2.2) `enqueue_followup_study` dispatch — narrow/widen consume the follow-up's search_space, swap_template branches `child.template_id` (defensive `get_query_template` → `auto_followup_swap_target_missing` WARN + fallback on deleted target), no-candidate falls back to narrow; per-link `auto_followup_visited_template_ids` (ordered-unique) + `auto_followup_selected_kind` persisted ONLY under `follow_suggestions` (D-12); defensive try/except → narrow fallback; (3.1) `StudyChainLink` gains `template_id` (P1-B5, needed by the badge) + `selected_followup_kind` with defensive coercion against unknown JSONB values (`chain_selected_kind_unknown` WARN, never a 500); (3.2) chain-panel per-link Strategy badge (`narrow ↓`/`widen ↑`/`swapped to {name}`/`refined`) resolving swap names via `useTemplate`; (4.1) docs. **No migration** (all new state is JSONB keys on `studies.config`; head stays `0022`). 5 new telemetry events. Phase 2 (morning summary card) + Phase 3 (proposal `superseded` status) deferred via `phase2_idea.md`/`phase3_idea.md`. Tangential `chore_e2e_overnight_strategy_radix_select_timing` (Radix-Select + react-hook-form E2E timing footgun) + adjacent `feat_proposal_full_param_space_view` ideas filed. Tests: 17 domain unit + 10 worker integration + 11 contract + 4 schema unit + 6 wizard vitest + 2 chain-panel vitest + 4 enum source-of-truth + 1 glossary. Cross-model: spec + plan each GPT-5.5 cycle-2 converged (0 High); Gemini 1 finding (rejected — hunk-isolated `child_id` false positive, defined at `auto_followup.py:387`); GPT-5.5 final 3 findings (0 High; 2 Medium + 1 Low all accepted+applied in `ac2fdc8a` — strategy stale-value reset, missing-digest WARN, glossary ≤120 char). All 17 `pr.yml` checks green. |
There was a problem hiding this comment.
The text references phase2_idea.md/phase3_idea.md which no longer exist under those names/paths:
Phase 2 (morning summary card) + Phase 3 (proposal supersededstatus) deferred viaphase2_idea.md/phase3_idea.md.
Since they have been split into their own folders under planned_features/02_mvp2/, please update the reference to reflect their new locations:
Phase 2 (morning summary card) + Phase 3 (proposal supersededstatus) deferred viafeat_overnight_final_solution_phase2/idea.md/feat_overnight_final_solution_phase3/idea.md.
Summary
Post-merge finalization for
feat_overnight_final_solution(merged1e9522a0).state.md— prepended the PR feat: autonomous cross-knob overnight tuning (feat_overnight_final_solution) #440 one-liner to "Last 5 merges", dropped the now-6th row, refreshed branch / active-feature / in-flight lines.pipeline_status.md→ Implementation Complete +Release: mvp2marker;implementation_plan.md→ Complete.planned_featuresfolders (the established practice — phase idea files get their own folder before the parent moves toimplemented_features/, so they stay discoverable to/pipeline status, which only walksplanned_features/):feat_overnight_final_solution_phase2/— morning summary card + study-detail strategy linefeat_overnight_final_solution_phase3/— proposalsupersededstatus + auto-supersedefeature_spec.mdreferences to the implemented location; updated the spec/plan/pipeline_status cross-references to the new sibling-folder paths.implemented_features/2026_06_04_feat_overnight_final_solution/.Test plan
🤖 Generated with Claude Code