Skip to content
Merged
Show file tree
Hide file tree
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
2 changes: 1 addition & 1 deletion docs/00_overview/DASHBOARD.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ _Top-level index across MVP1 → GA v1+ as of **2026-05-20**. Click a release na

| Release | Theme | Progress | Status |
|---|---|---|---|
| [MVP1 / v0.1](MVP1_DASHBOARD.md) | The Loop | 48 / 49 scoped done · 3 remaining | **In progress** |
| [MVP1 / v0.1](MVP1_DASHBOARD.md) | The Loop | 49 / 49 scoped done · 1 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** |
Expand Down
31 changes: 13 additions & 18 deletions docs/00_overview/MVP1_DASHBOARD.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,33 +6,30 @@ _Reflects feature-folder state as of **2026-05-20** (latest mtime of any planned

## Next up

**[feat_create_study_search_space_builder](../02_product/planned_features/feat_create_study_search_space_builder/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_create_study_search_space_builder/implementation_plan.md --all
```
Pull from the Idea backlog or capture a new feature spec.

## MVP1 Progress

| Metric | Value |
|---|---|
| Scoped items done | **48 / 49** (98%) — feat_/infra_/chore_/epic_ past idea stage |
| Path to MVP1 | **3** items remaining (features + bugs + chores) |
| Open bugs | 1 |
| Scoped items done | **49 / 49** (100%) — feat_/infra_/chore_/epic_ past idea stage |
| Path to MVP1 | **1** items remaining (features + bugs + chores) |
| Open bugs | 0 |
| Open chores | 1 (idea-stage debt) |
| Backlog ideas | 3 idea-only feat/infra (not yet scoped into MVP1) |
| In flight | 0 feature(s) actively shipping |

## Pipeline

### Done (57)
### Done (59)

| 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_agent_propose_search_space` `feat_contextual_help` `feat_contextual_help_mvp2` `feat_create_study_search_space_builder` `feat_create_study_target_autocomplete` `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_clone_from_previous` `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_e2e_wire_seed_helper_into_studies_spec` `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_create_study_search_space_builder](implemented_features/2026_05_20_feat_create_study_search_space_builder/feature_spec.md) | Feature | Complete (PR #163, squash commit `c703953`, merged 2026-05-20) | — | [PR #163](https://github.com/SoundMindsAI/relyloop/pull/163) merged 2026-05-20 |
| [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 |
Expand Down Expand Up @@ -84,6 +81,7 @@ Plan approved; run /impl-execute to ship
| [bug_digest_param_importance_seam](implemented_features/2026_05_13_bug_digest_param_importance_seam/idea.md) | Bug | Complete | — | Complete |
| [bug_dockerfile_missing_prompts](implemented_features/2026_05_13_bug_dockerfile_missing_prompts/idea.md) | Bug | Complete | — | Complete |
| [bug_env_file_corrupted_during_session](implemented_features/2026_05_13_bug_env_file_corrupted_during_session/idea.md) | Bug | Complete | — | Complete |
| [bug_judgment_lists_listing_ignores_query_set_filter](implemented_features/2026_05_20_bug_judgment_lists_listing_ignores_query_set_filter/idea.md) | Bug | Complete | — | Complete |
| [bug_judgment_template_default_params_contract](implemented_features/2026_05_13_bug_judgment_template_default_params_contract/idea.md) | Bug | Complete | — | Complete |
| [bug_query_inline_crud_since_filter_uuidv7_ms_collision](implemented_features/2026_05_14_bug_query_inline_crud_since_filter_uuidv7_ms_collision/idea.md) | Bug | Complete | — | Complete |
| [bug_test_smoke_requires_env_vars](implemented_features/2026_05_13_bug_test_smoke_requires_env_vars/idea.md) | Bug | Complete | — | Complete |
Expand All @@ -93,25 +91,22 @@ Plan approved; run /impl-execute to ship

_None._

### Plan (1)
### Plan (0)

| Feature | Type | One-liner | Depends on | Status |
|---|---|---|---|---|
| [feat_create_study_search_space_builder](../02_product/planned_features/feat_create_study_search_space_builder/feature_spec.md) | Feature | | — | [PR #157](https://github.com/SoundMindsAI/relyloop/pull/157) merged 2026-05-20 |
_None._

### Spec (0)

_None._

### Idea (5)
### Idea (4)

| Feature | Type | One-liner | Depends on | Status |
|---|---|---|---|---|
| [feat_agent_propose_search_space](../02_product/planned_features/feat_agent_propose_search_space/idea.md) | Feature | The agent surface is the marketing front door — "describe your relevance problem in chat, get a tuned config." Today the chat agent's `create_study` tool takes a `search_space` argument as if it were | — | Idea — surfaced during a UX review of parameter-tuning ergonomics on 2026-05-19. |
| [feat_create_study_target_autocomplete](../02_product/planned_features/feat_create_study_target_autocomplete/idea.md) | Feature | The "Target index / collection" field at Step 1 of the create-study modal is a free-text `<Input id="cs-target">` (see [`ui/src/components/studies/create-study-modal.tsx:457`](../../ui/src/components/ | — | Idea — surfaced during local verification of PR #163 (`feat_create_study_search_space_builder`) on 2026-05-20. Step 4 builder verification required walking through Step 1, where the UX gap surfaced. |
| [feat_study_clone_from_previous](../02_product/planned_features/feat_study_clone_from_previous/idea.md) | Feature | A relevance engineer's normal workflow after the first study completes: | — | Idea — surfaced during a UX review of parameter-tuning ergonomics on 2026-05-19. |
| [chore_template_library_expansion](../02_product/planned_features/chore_template_library_expansion/idea.md) | Chore | Three connected gaps: | — | Idea — surfaced during a UX review of parameter-tuning ergonomics on 2026-05-19. |
| [bug_judgment_lists_listing_ignores_query_set_filter](../02_product/planned_features/bug_judgment_lists_listing_ignores_query_set_filter/idea.md) | Bug | The frontend hook at [`ui/src/lib/api/judgments.ts:37-46`](../../ui/src/lib/api/judgments.ts#L37-L46) (`useJudgmentLists`) passes `query_set_id` and `cluster_id` query parameters when listing judgment | — | Bug — surfaced during local verification of PR #163 (`feat_create_study_search_space_builder`). Pre-existing since `feat_llm_judgments` (PR #35, 2026-05-11); not introduced by PR #163. |

## Dependency graph

Expand All @@ -124,8 +119,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_create_study_search_space_builder["create study search space builder"]
class feat_create_study_search_space_builder plan;
infra_foundation["foundation"]
class infra_foundation done;
feat_study_lifecycle["study lifecycle"]
Expand Down Expand Up @@ -222,6 +215,8 @@ graph LR
class chore_create_study_modal_e2e_stability done;
chore_create_study_wizard_polish["create study wizard polish"]
class chore_create_study_wizard_polish done;
feat_create_study_search_space_builder["create study search space builder"]
class feat_create_study_search_space_builder done;
feat_study_lifecycle --> feat_digest_proposal
feat_llm_judgments --> feat_digest_proposal
infra_foundation --> feat_llm_judgments
Expand Down
2 changes: 1 addition & 1 deletion docs/00_overview/dashboard.html
Original file line number Diff line number Diff line change
Expand Up @@ -371,7 +371,7 @@ <h2>Releases</h2>
<div class="roadmap-row">
<div class="release-name"><a href="mvp1_dashboard.html">MVP1 / v0.1</a></div>
<div class="theme">The Loop</div>
<div class="progress">48 / 49 scoped done · 3 remaining</div>
<div class="progress">49 / 49 scoped done · 1 remaining</div>
<span class="state-pill in_progress">In progress</span>
</div>

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Implementation Plan — Create-Study Search-Space Builder

**Date:** 2026-05-20
**Status:** Draft
**Status:** Complete (PR #163, squash commit `c703953`, merged 2026-05-20)
**Primary spec:** [`feature_spec.md`](./feature_spec.md)
**Policy source(s):** [`CLAUDE.md`](../../../../CLAUDE.md) §"Enumerated Value Contract Discipline" + §"Frontend Conventions" · [`docs/01_architecture/ui-architecture.md`](../../../01_architecture/ui-architecture.md) §"Form dropdown primitive" + §"DataTable primitive"

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Pipeline Status — Create-Study Search-Space Builder

## Idea
- Status: Complete
- File: [idea.md](./idea.md)

## Spec
- Status: Approved
- Date: 2026-05-20
- File: [feature_spec.md](./feature_spec.md)
- Cross-model review: GPT-5.5 — 3 cycles run; all 16 findings (8 cycle-1 high, 4 cycle-2 mixed, 4 cycle-3 medium/low) accepted with cited fixes
- Phases: 1 total, 1 covered by spec (single-phase feature; no deferred Phase 2)

## Plan
- Status: Approved
- Date: 2026-05-20
- File: [implementation_plan.md](./implementation_plan.md)
- Cross-model review: GPT-5.5 — 3 cycles run; 27 total findings (13 cycle-1, 8 cycle-2, 6 cycle-3) all accepted with cited fixes
- Stories: 8 stories across 4 epics
- Phases covered: Phase 1 (single-phase feature; no deferred phases)

## Implementation
- Status: Complete
- Date: 2026-05-20
- PR: [#163](https://github.com/SoundMindsAI/relyloop/pull/163) (squash commit `c703953`, merged 2026-05-20)
- CI: all 5 jobs green on final commit `d708827`
- Stories completed: 8/8 (all FRs 1–11 implemented; 1 phase, no deferred work)
- Test coverage: 512 vitest assertions / 77 files + 4 real-backend Playwright e2e cases (happy path, type-switch stash, categorical chip coercion, cardinality cap warning) + 2 new backend tests for the bundled bug fix (integration + contract on judgment-list filter)
- Cross-model review: 16 spec findings + 27 plan findings + 3 Gemini findings + 1 GPT-5.5 v2 finding, all 47 accepted with cited fixes
- Bundled bug fix: `bug_judgment_lists_listing_ignores_query_set_filter` — `GET /api/v1/judgment-lists` now honors `query_set_id` + `cluster_id` filters; closes the cross-entity 422 surfaced during local verification
87 changes: 44 additions & 43 deletions docs/00_overview/mvp1_dashboard.html
Original file line number Diff line number Diff line change
Expand Up @@ -369,33 +369,33 @@ <h1>RelyLoop MVP1 Dashboard</h1>
<main>

<section>
<div class="next-up">
<div class="eyebrow">Next up — Feature, currently in <strong>Plan</strong></div>
<div class="title"><a href="../../docs/02_product/planned_features/feat_create_study_search_space_builder/feature_spec.md">Create Study Search Space Builder</a></div>
<div class="one-liner"></div>
<div class="stage-hint">Plan approved; run /impl-execute to ship</div>
<code class="cmd">/impl-execute docs/02_product/planned_features/feat_create_study_search_space_builder/implementation_plan.md --all</code>
<div class="next-up done">
<div class="eyebrow">Next up</div>
<div class="title">All scoped MVP1 features shipped 🎉</div>
<div class="one-liner">
Pull from the Idea backlog or capture a new feature spec.
</div>
</div>
</section>


<section>
<h2>MVP1 Progress</h2>
<div class="kpi-row">
<div class="kpi ">
<div class="kpi complete">
<div class="label">Scoped items done</div>
<div class="value">48 / 49</div>
<div class="sub">98% of feat_/infra_/chore_/epic_ items past idea stage</div>
<div class="bar"><span style="width:98%"></span></div>
<div class="value">49 / 49</div>
<div class="sub">100% of feat_/infra_/chore_/epic_ items past idea stage</div>
<div class="bar"><span style="width:100%"></span></div>
</div>
<div class="kpi warn">
<div class="label">Path to MVP1</div>
<div class="value">3</div>
<div class="value">1</div>
<div class="sub">items left = features + bugs + chores</div>
</div>
<div class="kpi bug">
<div class="kpi ">
<div class="label">Open bugs</div>
<div class="value">1</div>
<div class="value">0</div>
<div class="sub">tracked bug_* idea files</div>
</div>
<div class="kpi warn">
Expand Down Expand Up @@ -428,7 +428,7 @@ <h2>Pipeline</h2>
</div>
<div class="kanban">
<div class="col idea">
<h3>Idea <span class="count">5</span></h3>
<h3>Idea <span class="count">4</span></h3>

<div class="card feat" data-prefix="feat">
<div class="name"><a href="../../docs/02_product/planned_features/feat_agent_propose_search_space">Agent Propose Search Space</a></div>
Expand Down Expand Up @@ -475,18 +475,6 @@ <h3>Idea <span class="count">5</span></h3>
<div class="one-liner">Three connected gaps:</div>


</div>


<div class="card bug" data-prefix="bug">
<div class="name"><a href="../../docs/02_product/planned_features/bug_judgment_lists_listing_ignores_query_set_filter">Judgment Lists Listing Ignores Query Set Filter</a></div>
<div class="meta">
<span class="badge bug">Bug</span>

</div>
<div class="one-liner">The frontend hook at [`ui/src/lib/api/judgments.ts:37-46`](../../ui/src/lib/api/judgments.ts#L37-L46) (`useJudgmentLists`) passes `query_set_id` and `cluster_id` query parameters when listing judgment</div>


</div>

</div>
Expand All @@ -497,18 +485,7 @@ <h3>Spec <span class="count">0</span></h3>
</div>

<div class="col plan">
<h3>Plan <span class="count">1</span></h3>

<div class="card feat" data-prefix="feat">
<div class="name"><a href="../../docs/02_product/planned_features/feat_create_study_search_space_builder/feature_spec.md">Create Study Search Space Builder</a></div>
<div class="meta">
<span class="badge feat">Feature</span>
<a class="pr" href="https://github.com/SoundMindsAI/relyloop/pull/157">PR #157</a><span>merged 2026-05-20</span>
</div>
<div class="one-liner"></div>


</div>
<h3>Plan <span class="count">0</span></h3>

</div>

Expand All @@ -518,7 +495,7 @@ <h3>Implementing <span class="count">0</span></h3>
</div>

<div class="col done">
<h3>Done <span class="count">57</span></h3>
<h3>Done <span class="count">59</span></h3>

<div class="card feat" data-prefix="feat">
<div class="name"><a href="../../docs/00_overview/implemented_features/2026_05_12_feat_chat_agent/feature_spec.md">Chat Agent</a></div>
Expand All @@ -544,6 +521,18 @@ <h3>Done <span class="count">57</span></h3>
</div>


<div class="card feat" data-prefix="feat">
<div class="name"><a href="../../docs/00_overview/implemented_features/2026_05_20_feat_create_study_search_space_builder/feature_spec.md">Create Study Search Space Builder</a></div>
<div class="meta">
<span class="badge feat">Feature</span>
<a class="pr" href="https://github.com/SoundMindsAI/relyloop/pull/163">PR #163</a><span>merged 2026-05-20</span>
</div>
<div class="one-liner">Complete (PR #163, squash commit `c703953`, merged 2026-05-20)</div>


</div>


<div class="card feat" data-prefix="feat">
<div class="name"><a href="../../docs/00_overview/implemented_features/2026_05_16_feat_data_table_primitive/feature_spec.md">Data Table Primitive</a></div>
<div class="meta">
Expand Down Expand Up @@ -1156,6 +1145,18 @@ <h3>Done <span class="count">57</span></h3>
</div>


<div class="card bug" data-prefix="bug">
<div class="name"><a href="../../docs/00_overview/implemented_features/2026_05_20_bug_judgment_lists_listing_ignores_query_set_filter">Judgment Lists Listing Ignores Query Set Filter</a></div>
<div class="meta">
<span class="badge bug">Bug</span>
<span>merged 2026-05-20</span>
</div>
<div class="one-liner">Complete</div>


</div>


<div class="card bug" data-prefix="bug">
<div class="name"><a href="../../docs/00_overview/implemented_features/2026_05_13_bug_judgment_template_default_params_contract">Judgment Template Default Params Contract</a></div>
<div class="meta">
Expand Down Expand Up @@ -1216,8 +1217,6 @@ <h2>Dependency graph (feat_ + infra_)</h2>
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_create_study_search_space_builder[&quot;create study search space builder&quot;]
class feat_create_study_search_space_builder plan;
infra_foundation[&quot;foundation&quot;]
class infra_foundation done;
feat_study_lifecycle[&quot;study lifecycle&quot;]
Expand Down Expand Up @@ -1314,6 +1313,8 @@ <h2>Dependency graph (feat_ + infra_)</h2>
class chore_create_study_modal_e2e_stability done;
chore_create_study_wizard_polish[&quot;create study wizard polish&quot;]
class chore_create_study_wizard_polish done;
feat_create_study_search_space_builder[&quot;create study search space builder&quot;]
class feat_create_study_search_space_builder done;
feat_study_lifecycle --&gt; feat_digest_proposal
feat_llm_judgments --&gt; feat_digest_proposal
infra_foundation --&gt; feat_llm_judgments
Expand Down Expand Up @@ -1395,8 +1396,6 @@ <h2>Dependency graph (feat_ + infra_)</h2>
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_create_study_search_space_builder[&quot;create study search space builder&quot;]
class feat_create_study_search_space_builder plan;
infra_foundation[&quot;foundation&quot;]
class infra_foundation done;
feat_study_lifecycle[&quot;study lifecycle&quot;]
Expand Down Expand Up @@ -1493,6 +1492,8 @@ <h2>Dependency graph (feat_ + infra_)</h2>
class chore_create_study_modal_e2e_stability done;
chore_create_study_wizard_polish[&quot;create study wizard polish&quot;]
class chore_create_study_wizard_polish done;
feat_create_study_search_space_builder[&quot;create study search space builder&quot;]
class feat_create_study_search_space_builder done;
feat_study_lifecycle --&gt; feat_digest_proposal
feat_llm_judgments --&gt; feat_digest_proposal
infra_foundation --&gt; feat_llm_judgments
Expand Down
Loading