diff --git a/GOAL.md b/GOAL.md index afb5a36c..9c3f3e58 100644 --- a/GOAL.md +++ b/GOAL.md @@ -214,25 +214,25 @@ the team trusts to tell better recommendations from worse ones without anyone re --- -## Implementation status (as of 2026-05-27) - -This file is the north-star *spec*. A first cut of the supporting implementation — fixture schema, -five catalog-valid spec fixtures, the scorer (`recommendation_evaluation.py` + the CLI runner), the -Node deterministic-source bridge, the UI verification badge wired into `AnalysisResults.tsx`, and -the `RECOMMENDATION_VERDICT.md` write-up — was built on the local branch `worktree-goal-doc` (worktree -at `.claude/worktrees/goal-doc/`) under an explicit "continue without input" directive. It is **not** -on `main`. Landing that work is a separate, deliberate decision; in particular: - -1. Sub-goal 1's renders are owner-gated — the five specs need to be dialed in Live 12 and rendered to - 48 kHz / 24-bit FLAC before the corpus is authoritative (see the worktree's - `apps/backend/NEEDS.md` for the build-and-render checklist). -2. The Gemini-vs-deterministic verdict in the worktree was scored against numpy-proxy renders, not - Ableton renders, so its known-settings axes (role recall, value accuracy) are provisional until - the real renders exist. -3. Before any further sub-goal 3 prompt iteration, the worktree branch needs to be rebased on top of - the Tier-1/2 phase2 prompt fixes that already landed on `main` (commits around `5610ca56` / - `ade2ae5a`). - -When you're ready to bring the implementation across, start from the worktree's `NEEDS.md` — it is -the living status doc for the campaign and tells you what's built, what's render-gated, and what's -next. +## Implementation status (as of 2026-05-28) + +This file is the north-star *spec*. The supporting implementation — fixture schema, five +catalog-valid spec fixtures, the scorer (`apps/backend/recommendation_evaluation.py` + the CLI +runner `apps/backend/scripts/evaluate_recommendations.py`), the Node deterministic-source bridge +(`apps/backend/scripts/emit_deterministic_recs.ts`), the UI verification badge wired into +`apps/ui/src/components/AnalysisResults.tsx`, and the `apps/backend/RECOMMENDATION_VERDICT.md` +write-up — **landed on `main` in PR #114 (commit `348498d`)** and sits on top of the Tier-1/2 +phase2 prompt fixes (`5610ca5` / `ade2ae5`). The mechanical four-sub-goal scaffolding is in place; +the campaign's open work is now the owner-gated parts called out in `apps/backend/NEEDS.md`: + +1. **Sub-goal 1's renders are still owner-gated** — the five specs need to be dialed in Live 12 + and rendered to 48 kHz / 24-bit FLAC before the corpus is authoritative (see + `apps/backend/tests/fixtures/recommendation_tracks/README.md` for the build-and-render checklist). +2. **The Gemini-vs-deterministic verdict** in `RECOMMENDATION_VERDICT.md` was scored against + numpy-proxy renders, not Ableton renders, so its known-settings axes (role recall, value + accuracy) are provisional until the real renders exist. +3. **The UI verification badge degrades to nothing pre-render** — confidence bands are all `NONE` + until a real corpus regenerates `apps/ui/src/data/recommendationVerification.ts`. + +`apps/backend/NEEDS.md` is the living status doc for the campaign and tells you what's built, +what's render-gated, and what's next. diff --git a/apps/backend/NEEDS.md b/apps/backend/NEEDS.md index 2a701438..4ac36a15 100644 --- a/apps/backend/NEEDS.md +++ b/apps/backend/NEEDS.md @@ -35,9 +35,6 @@ not Ableton renders), so their *data* is provisional pending real renders. melodic_techno key mis-detected AND Gemini returned 0 structured cards there. 4. **Genre confirmation** — house/techno/melodic-techno/dnb/acid were chosen as owner-plausible; confirm or swap. -5. **Branch convergence** — rebase `chore/phase2-surface-audit-and-claude-md` - (audit + Tier-1/2 prompt fixes) under this branch before further sub-goal-3 - prompt iteration. --- @@ -84,7 +81,8 @@ citations**, so the chain-of-custody penalty drives its adjusted aggregate to #2). The rules **are** feature-triggered, so attaching the triggering measurement as a citation is a concrete, harness-rewarded improvement — a candidate sub-goal-3 "score-driven change" (frontend edit to `abletonDevices.ts` → - `npm run verify`; coordinate with the branch convergence below). + `npm run verify`). But see the dead-code finding under NEEDS-WIRING before + investing in this path. This is the first real signal toward the Gemini verdict — likely Gemini earns its place on citation + full-surface coverage. Confirm on real renders; the synthetic @@ -206,14 +204,13 @@ corpus. To deliver the **full** verdict: *does Gemini raise the score, on which domains, by how much?* Feed a surprising answer back into `PURPOSE.md` / the `asa-next-work-priorities` memory. -**Branch convergence needed for 3.2:** GOAL.md references +**Phase 2 audit context for 3.2:** GOAL.md references `audits/phase2-recommendation-surface-2026-05-24.md` for the Tier-2/3 backlog. That audit — **and the Tier-1/2 phase2 prompt/catalog fixes it drove** (commits -`bd975ab0`, `dc8daa02`) — live on branch `chore/phase2-surface-audit-and-claude-md`, -which is **not** an ancestor of this campaign branch (`worktree-goal-doc`) and not -yet on `main`. Before working sub-goal 3, rebase/merge so the campaign sits on top -of that phase2 work (otherwise you'd iterate against a stale prompt and miss the -audit's backlog). Confirm with `git log --oneline | grep -E 'bd975ab0|dc8daa02'`. +`bd975ab0`, `dc8daa02`, `5610ca5`, `ade2ae5`) — is on `main` and the campaign sits +on top of it (PR #114 / commit `348498d` merged after). Iterate against the +current prompt; the audit backlog is the source for next-round score-driven +changes. Confirm with `git log --oneline | grep -E 'bd975ab|dc8daa0|5610ca5|ade2ae5'`. ---