diff --git a/docs/00_overview/DASHBOARD.md b/docs/00_overview/DASHBOARD.md index fa452f36..57a33f7b 100644 --- a/docs/00_overview/DASHBOARD.md +++ b/docs/00_overview/DASHBOARD.md @@ -6,7 +6,7 @@ _Top-level index across MVP1 → GA v1+ as of **2026-05-16**. Click a release na | Release | Theme | Progress | Status | |---|---|---|---| -| [MVP1 / v0.1](MVP1_DASHBOARD.md) | The Loop | 37 / 38 scoped done · 3 remaining | **In progress** | +| [MVP1 / v0.1](MVP1_DASHBOARD.md) | The Loop | 38 / 38 scoped done · 2 remaining | **In progress** | | [MVP2 / v0.2](MVP2_DASHBOARD.md) | Observable | 1 / 1 scoped done · 1 remaining | **In progress** | | MVP3 / v0.3 | Production Stacks | — | **Not yet scoped** | | MVP4 / v0.4 | Multi-tenant, Multi-LLM | — | **Not yet scoped** | diff --git a/docs/00_overview/MVP1_DASHBOARD.md b/docs/00_overview/MVP1_DASHBOARD.md index e4f0d384..1c20fa25 100644 --- a/docs/00_overview/MVP1_DASHBOARD.md +++ b/docs/00_overview/MVP1_DASHBOARD.md @@ -6,20 +6,16 @@ _Reflects feature-folder state as of **2026-05-16** (latest mtime of any planned ## Next up -**[feat_data_table_primitive](../02_product/planned_features/feat_data_table_primitive/feature_spec.md)** — Feature, currently in **Plan** +All scoped MVP1 features shipped 🎉 -Plan approved; run /impl-execute to ship - -```bash -/impl-execute docs/02_product/planned_features/feat_data_table_primitive/implementation_plan.md --all -``` +Pull from the Idea backlog or capture a new feature spec. ## MVP1 Progress | Metric | Value | |---|---| -| Scoped items done | **37 / 38** (97%) — feat_/infra_/chore_/epic_ past idea stage | -| Path to MVP1 | **3** items remaining (features + bugs + chores) | +| Scoped items done | **38 / 38** (100%) — feat_/infra_/chore_/epic_ past idea stage | +| Path to MVP1 | **2** items remaining (features + bugs + chores) | | Open bugs | 1 | | Open chores | 1 (idea-stage debt) | | Backlog ideas | 1 idea-only feat/infra (not yet scoped into MVP1) | @@ -27,12 +23,13 @@ Plan approved; run /impl-execute to ship ## Pipeline -### Done (45) +### Done (46) | Feature | Type | One-liner | Depends on | Status | |---|---|---|---|---| | [feat_chat_agent](implemented_features/2026_05_12_feat_chat_agent/feature_spec.md) | Feature | A chat surface at `/chat/{conversation_id}` streams OpenAI completions via SSE. | `feat_contextual_help` `feat_contextual_help_mvp2` `feat_data_table_primitive` `feat_digest_proposal` `feat_fts_rank_ordering_mvp2` `feat_github_pr_worker` `feat_github_webhook` `feat_judgments_periodic_resume_sweep` `feat_llm_judgments` `feat_proposals_ui` `feat_query_inline_crud` `feat_studies_ui` `feat_study_lifecycle` `infra_adapter_elastic` `infra_arq_subprocess_test_mvp2` `infra_ci_smoke_makeup` `infra_dashboard_regen_pre_commit_conflict` `infra_e2e_seed_completed_study` `infra_foundation` `infra_frontend_stack_refresh` `infra_make_targets_split_backend_only` `infra_nvmrc` `infra_optuna_eval` `infra_per_trial_timeout` `infra_structlog_test_helpers` | [PR #60](https://github.com/SoundMindsAI/relyloop/pull/60) merged 2026-05-12 | | [feat_contextual_help](implemented_features/2026_05_15_feat_contextual_help/feature_spec.md) | Feature | a relevance engineer can launch their second study and interpret its digest without re-reading the tutorial, because every domain-jargon label has a one-click contextual definition grounded in the sam | — | [PR #122](https://github.com/SoundMindsAI/relyloop/pull/122) merged 2026-05-15 | +| [feat_data_table_primitive](implemented_features/2026_05_16_feat_data_table_primitive/feature_spec.md) | Feature | Complete (PR #126, merged 2026-05-16) | — | [PR #126](https://github.com/SoundMindsAI/relyloop/pull/126) merged 2026-05-16 | | [feat_digest_proposal](implemented_features/2026_05_11_feat_digest_proposal/feature_spec.md) | Feature | When a study transitions to `completed`, the digest worker generates: a narrative summary (LLM-authored), a parameter-importance map (computed by `optuna.importance`), and a recommended config. | `feat_study_lifecycle` `feat_llm_judgments` | [PR #41](https://github.com/SoundMindsAI/relyloop/pull/41) merged 2026-05-11 | | [feat_github_pr_worker](implemented_features/2026_05_12_feat_github_pr_worker/feature_spec.md) | Feature | `POST /api/v1/proposals/{id}/open_pr` enqueues a Git worker job that clones the configured repo, edits `*.params.json`, commits with a structured message, pushes a branch, opens a GitHub PR, attaches | `infra_foundation` `infra_adapter_elastic` `feat_study_lifecycle` `feat_digest_proposal` | [PR #45](https://github.com/SoundMindsAI/relyloop/pull/45) merged 2026-05-12 | | [feat_github_webhook](implemented_features/2026_05_12_feat_github_webhook/feature_spec.md) | Feature | GitHub posts to `POST /webhooks/github` with HMAC-SHA256 signature; the receiver verifies the signature, looks up the proposal by `pr_url`, updates `pr_state` and `pr_merged_at`. | `infra_foundation` `infra_adapter_elastic` `feat_github_pr_worker` | [PR #56](https://github.com/SoundMindsAI/relyloop/pull/56) merged 2026-05-12 | @@ -81,11 +78,9 @@ Plan approved; run /impl-execute to ship _None._ -### Plan (1) +### Plan (0) -| Feature | Type | One-liner | Depends on | Status | -|---|---|---|---|---| -| [feat_data_table_primitive](../02_product/planned_features/feat_data_table_primitive/feature_spec.md) | Feature | | — | [PR #122](https://github.com/SoundMindsAI/relyloop/pull/122) merged 2026-05-15 | +_None._ ### Spec (0) @@ -110,8 +105,6 @@ graph LR classDef plan fill:#fef9c3,stroke:#854d0e,color:#854d0e; classDef spec fill:#dbeafe,stroke:#1e40af,color:#1e40af; classDef idea fill:#f1f5f9,stroke:#334155,color:#334155; - feat_data_table_primitive["data table primitive"] - class feat_data_table_primitive plan; infra_foundation["foundation"] class infra_foundation done; feat_study_lifecycle["study lifecycle"] @@ -186,6 +179,8 @@ graph LR class infra_structlog_test_helpers done; feat_contextual_help["contextual help"] class feat_contextual_help done; + feat_data_table_primitive["data table primitive"] + class feat_data_table_primitive done; feat_study_lifecycle --> feat_digest_proposal feat_llm_judgments --> feat_digest_proposal infra_foundation --> feat_llm_judgments diff --git a/docs/00_overview/dashboard.html b/docs/00_overview/dashboard.html index 6d09b2a2..c4ebbf57 100644 --- a/docs/00_overview/dashboard.html +++ b/docs/00_overview/dashboard.html @@ -371,7 +371,7 @@

Releases

MVP1 / v0.1
The Loop
-
37 / 38 scoped done · 3 remaining
+
38 / 38 scoped done · 2 remaining
In progress
diff --git a/docs/02_product/planned_features/feat_data_table_primitive/feature_spec.md b/docs/00_overview/implemented_features/2026_05_16_feat_data_table_primitive/feature_spec.md similarity index 100% rename from docs/02_product/planned_features/feat_data_table_primitive/feature_spec.md rename to docs/00_overview/implemented_features/2026_05_16_feat_data_table_primitive/feature_spec.md diff --git a/docs/02_product/planned_features/feat_data_table_primitive/idea.md b/docs/00_overview/implemented_features/2026_05_16_feat_data_table_primitive/idea.md similarity index 100% rename from docs/02_product/planned_features/feat_data_table_primitive/idea.md rename to docs/00_overview/implemented_features/2026_05_16_feat_data_table_primitive/idea.md diff --git a/docs/02_product/planned_features/feat_data_table_primitive/implementation_plan.md b/docs/00_overview/implemented_features/2026_05_16_feat_data_table_primitive/implementation_plan.md similarity index 99% rename from docs/02_product/planned_features/feat_data_table_primitive/implementation_plan.md rename to docs/00_overview/implemented_features/2026_05_16_feat_data_table_primitive/implementation_plan.md index b787abc5..8fadcb3f 100644 --- a/docs/02_product/planned_features/feat_data_table_primitive/implementation_plan.md +++ b/docs/00_overview/implemented_features/2026_05_16_feat_data_table_primitive/implementation_plan.md @@ -1,7 +1,7 @@ # Implementation Plan — Shared `` primitive (FTS + sort + filter + URL state) **Date:** 2026-05-15 -**Status:** Draft +**Status:** Complete (PR #126, merged 2026-05-16) **Primary spec:** [feature_spec.md](./feature_spec.md) **Policy source(s):** - [`docs/01_architecture/api-conventions.md`](../../../01_architecture/api-conventions.md) — cursor pagination + `X-Total-Count` + error envelope diff --git a/docs/02_product/planned_features/feat_data_table_primitive/pipeline_status.md b/docs/00_overview/implemented_features/2026_05_16_feat_data_table_primitive/pipeline_status.md similarity index 70% rename from docs/02_product/planned_features/feat_data_table_primitive/pipeline_status.md rename to docs/00_overview/implemented_features/2026_05_16_feat_data_table_primitive/pipeline_status.md index 93617a57..011cc49f 100644 --- a/docs/02_product/planned_features/feat_data_table_primitive/pipeline_status.md +++ b/docs/00_overview/implemented_features/2026_05_16_feat_data_table_primitive/pipeline_status.md @@ -28,4 +28,17 @@ - Phases covered: single-phase delivery per Locked Decision #4. No deferred phases. ## Implementation -- Status: Not started +- Status: Complete +- Date: 2026-05-16 +- PR: [#126](https://github.com/SoundMindsAI/relyloop/pull/126) (squash commit `d6115b3`, merged 2026-05-16) +- CI: all 7 checks green on cycle 4 — backend lint + typecheck + tests + coverage, backend unit fast lane, docker buildx, frontend lint + typecheck + tests + build, gitleaks, secrets files guard, smoke (operator-path E2E) +- Stories completed: 28 / 28 (Epic 1: 5 backend stories, Epic 2: 13 primitive stories, Epic 3: 9 table-migration stories incl. Story 3.9 inheritor, Epic 4: 2 docs/idea-capture stories) +- Cross-model review: + - 3 Epic-2 phase-gate GPT-5.5 cycles (15 + 7 + 3 findings) — converged with 13 fixes applied, 7 deferred to `chore_data_table_primitive_followups`, 4 rejected with cited counter-evidence + - 1 Epic-3 phase-gate GPT-5.5 cycle (7 findings) — 5 accepted + fixed, 2 rejected with cited counter-evidence + - Final cross-model GPT-5.5 review on full PR diff: 2 findings — 1 accepted + fixed (`test-llm-rater` fixture), 1 deferred to `bug_cursor_decode_value_validation` +- Gemini Code Assist: 7 line-level findings, all 7 accepted + fixed (commit `acfd304`). Adjudication summary posted as PR comment. +- Deferred follow-ups captured: + - [`feat_fts_rank_ordering_mvp2`](../feat_fts_rank_ordering_mvp2/idea.md) — rank-ordered FTS results (per spec §16) + - [`chore_data_table_primitive_followups`](../chore_data_table_primitive_followups/idea.md) — 6 review-cycle items + - [`bug_cursor_decode_value_validation`](../bug_cursor_decode_value_validation/idea.md) — cursor payload validation diff --git a/docs/00_overview/mvp1_dashboard.html b/docs/00_overview/mvp1_dashboard.html index a6ffff26..69524f8d 100644 --- a/docs/00_overview/mvp1_dashboard.html +++ b/docs/00_overview/mvp1_dashboard.html @@ -369,12 +369,12 @@

RelyLoop MVP1 Dashboard

-
-
Next up — Feature, currently in Plan
- -
-
Plan approved; run /impl-execute to ship
- /impl-execute docs/02_product/planned_features/feat_data_table_primitive/implementation_plan.md --all +
+
Next up
+
All scoped MVP1 features shipped 🎉
+
+ Pull from the Idea backlog or capture a new feature spec. +
@@ -382,15 +382,15 @@

RelyLoop MVP1 Dashboard

MVP1 Progress

-
+
Scoped items done
-
37 / 38
-
97% of feat_/infra_/chore_/epic_ items past idea stage
-
+
38 / 38
+
100% of feat_/infra_/chore_/epic_ items past idea stage
+
Path to MVP1
-
3
+
2
items left = features + bugs + chores
@@ -473,18 +473,7 @@

Spec 0

-

Plan 1

- -
- -
- Feature - PR #122merged 2026-05-15 -
-
- - -
+

Plan 0

@@ -494,7 +483,7 @@

Implementing 0

-

Done 45

+

Done 46

@@ -520,6 +509,18 @@

Done 45

+
+ +
+ Feature + PR #126merged 2026-05-16 +
+
Complete (PR #126, merged 2026-05-16)
+ + +
+ +
@@ -1048,8 +1049,6 @@

Dependency graph (feat_ + infra_)

classDef plan fill:#fef9c3,stroke:#854d0e,color:#854d0e; classDef spec fill:#dbeafe,stroke:#1e40af,color:#1e40af; classDef idea fill:#f1f5f9,stroke:#334155,color:#334155; - feat_data_table_primitive["data table primitive"] - class feat_data_table_primitive plan; infra_foundation["foundation"] class infra_foundation done; feat_study_lifecycle["study lifecycle"] @@ -1124,6 +1123,8 @@

Dependency graph (feat_ + infra_)

class infra_structlog_test_helpers done; feat_contextual_help["contextual help"] class feat_contextual_help done; + feat_data_table_primitive["data table primitive"] + class feat_data_table_primitive done; feat_study_lifecycle --> feat_digest_proposal feat_llm_judgments --> feat_digest_proposal infra_foundation --> feat_llm_judgments @@ -1199,8 +1200,6 @@

Dependency graph (feat_ + infra_)

classDef plan fill:#fef9c3,stroke:#854d0e,color:#854d0e; classDef spec fill:#dbeafe,stroke:#1e40af,color:#1e40af; classDef idea fill:#f1f5f9,stroke:#334155,color:#334155; - feat_data_table_primitive["data table primitive"] - class feat_data_table_primitive plan; infra_foundation["foundation"] class infra_foundation done; feat_study_lifecycle["study lifecycle"] @@ -1275,6 +1274,8 @@

Dependency graph (feat_ + infra_)

class infra_structlog_test_helpers done; feat_contextual_help["contextual help"] class feat_contextual_help done; + feat_data_table_primitive["data table primitive"] + class feat_data_table_primitive done; feat_study_lifecycle --> feat_digest_proposal feat_llm_judgments --> feat_digest_proposal infra_foundation --> feat_llm_judgments diff --git a/state.md b/state.md index 00244665..d1bff561 100644 --- a/state.md +++ b/state.md @@ -2,13 +2,13 @@ > Read this first. Snapshots the active branch, what just shipped, what's in flight, what's queued, and where the project currently sits in the MVP1 → GA roadmap. Updated whenever a feature lands or a priority shifts. -**Last updated:** 2026-05-16 (during `feat_data_table_primitive` Epic 4 docs work — shared `` primitive consolidating 8 hand-rolled tables onto @tanstack/react-table + FTS / sort / filter / URL-state surface across 6 list endpoints + 9 new E2E specs. Branch `feat/data-table-primitive` carries all 4 epics; PR open pending Epic 4 phase gate). +**Last updated:** 2026-05-16 (after `feat_data_table_primitive` merged as PR #126 — 18th MVP1 feature; shared `` primitive consolidating 8 hand-rolled tables onto @tanstack/react-table + FTS / sort / filter / URL-state surface across 6 list endpoints. All 7 CI checks green; 4 review-fix cycles before merge). --- ## Current branch / execution context -- **Branch:** `feat/data-table-primitive` (Epic 4 docs in flight). `v0.1.0` annotated tag still on `main` commit `d099536` 2026-05-13; GitHub Release at https://github.com/SoundMindsAI/relyloop/releases/tag/v0.1.0. +- **Branch:** `main` (post-merge of PR #126 squash commit `d6115b3` 2026-05-16). Finalization docs PR off `docs/finalize-data-table-primitive`. `v0.1.0` annotated tag still on `main` commit `d099536` 2026-05-13; GitHub Release at https://github.com/SoundMindsAI/relyloop/releases/tag/v0.1.0. - **Active feature:** none in flight. **Three PRs shipped 2026-05-15:** PR #122 (Phase 1, 16th MVP1 feature — Tooltip primitive + 26 placements on create-study modal + study detail), PR #123 (Phase 1 finalization docs), PR #124 (Phases 2 + 3 — 17th MVP1 feature; 21 additional tooltips on judgments + proposals + cluster registration + 2 new first-run components: chat ExamplePrompts strip + Stripe-style StartHereChecklist on home page). The original "MVP1 Phase 1 only" scope-lock was reversed mid-day: operator decided to ship Phases 2 + 3 together with a Stripe-style design call rather than wait for MVP2. PR #124 took 2 hours from idea-folder reuse to merge. 47 total tooltip placements + 2 new first-run components live in `main`. **PR #122 shipped 2026-05-15 morning** — `feat_contextual_help` Phase 1 (16th MVP1 feature). Adds the first Tooltip primitive (`@radix-ui/react-tooltip@~1.2.8` + shadcn-style wrapper at `ui/src/components/ui/tooltip.tsx`), two glossary-backed wrappers (`InfoTooltip` standalone + asChild modes; `HelpPopover` click-to-open with `react-markdown` safety filter), and a 49-key glossary source-of-truth at `ui/src/lib/glossary.ts` (8 enum groups parity-tested against `enums.ts`). 26 tooltip placements across the create-study modal (Step 1 target + Step 3 template + 9 Step 5 inputs), study-header (status badge dynamic key + Best metric + Trials), trials-table (5 column headers + Sort label), and digest panel (5 section labels + Open PR enabled + Open PR disabled). The disabled Open PR button refactored from native `disabled` to `aria-disabled="true"` so it stays focusable and the tooltip reveals on focus (AC-11). Gemini Code Assist: 2 findings (1 accepted + fixed, 1 rejected with cited counter-evidence). Final GPT-5.5 review: 1 Medium accepted-framing-but-deferred. Spec converged at GPT-5.5 cycle 3 (24 findings, 23 accepted + 1 rejected); plan converged at cycle 2 (12 findings, 10 accepted + 1 rejected + 1 spec patch). UI vitest now **279 passing across 48 files** (was 249 across 45 — +3 new test files, +30 cases). Playwright E2E **8 passing** (was 5 — +3 new contextual-help tests). One follow-up filed: `infra_e2e_seed_completed_study/idea.md` tracks the E2E gap for digest-panel triggers + AC-11 (cross-subsystem helper for seeding a completed study with digest + proposal; component-level coverage is in place). Phases 2 + 3 deferred to MVP2 via `feat_contextual_help_mvp2/` (judgments + proposals tooltips; chat + cluster + home onboarding; the home-page "Start here" panel is the only product-design-shaped item). **Earlier — seven PRs shipped 2026-05-14:** `feat_judgments_periodic_resume_sweep` (PR #104, 14th MVP1 feature), `bug_query_inline_crud_since_filter_uuidv7_ms_collision` (PR #106 — UUIDv7 ms-collision test flake), `infra_dashboard_regen_pre_commit_conflict §2+§4` (PR #108 — dashboard regen idempotency + relative-link rewriting), `infra_make_targets_split_backend_only` (PR #110 — `make backend-fmt/lint/typecheck` + symmetric `ui-fmt` so Node-18 contributors aren't blocked), `chore_digest_worker_narrow_except` (PR #112 — narrowed `except Exception` allowlist to `(ValueError,)` + ERROR-level `digest_importance_failed_unexpected` event), `infra_structlog_test_helpers` (PR #114 — factored the two structlog test-assertion patterns into `backend/tests/_log_helpers.py`), and `chore_chat_last_message_preview` (PR #117 — `last_message_preview` + `last_message_at` on `ConversationSummary` via LATERAL JOIN; frontend shows preview under title + swaps displayed timestamp from `created_at` to `last_message_at`). Plus PR #116 dropped `chore_studies_ui_shadcn_polish` as won't-do (forward-compat audit on NavigationMenu primitive + ClusterFilterSelect precedent on native `