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 @@ -7,7 +7,7 @@ _Top-level index across MVP1 → GA v1+ as of **2026-06-01**. Click a release na
| Release | Theme | Progress | Status |
|---|---|---|---|
| [MVP1 / v0.1](MVP1_DASHBOARD.md) | The Loop | 94 / 94 scoped done | **Complete** |
| [MVP2 / v0.2](MVP2_DASHBOARD.md) | Three-Engine + Real Signals | 6 / 10 scoped done · 22 remaining | **In progress** |
| [MVP2 / v0.2](MVP2_DASHBOARD.md) | Three-Engine + Real Signals | 7 / 10 scoped done · 21 remaining | **In progress** |
| MVP3 / v0.3 | Observable | — | **Not yet scoped** |
| GA v1 / v1.0 | Production-ready | — | **Not yet scoped** |

Expand Down
22 changes: 11 additions & 11 deletions docs/00_overview/MVP2_DASHBOARD.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,26 +21,27 @@ Plan approved; run /impl-execute to ship
| Metric | Value |
|---|---|
| Filed under MVP2 | **34** folders total (done + specced not-done + idea backlog + bugs) |
| Specced features done | **6 / 10** (60%) — of features *past the idea stage* (those with a spec); the idea backlog below is NOT in this denominator, so 100% ≠ release complete |
| Pending work | **28** items (every not-done feat/infra/chore/bug across all priorities) |
| Specced features done | **7 / 10** (70%) — of features *past the idea stage* (those with a spec); the idea backlog below is NOT in this denominator, so 100% ≠ release complete |
| Pending work | **27** items (every not-done feat/infra/chore/bug across all priorities) |
| → P0 — do next | **0** unblocking / paying daily cost |
| → P1 | **0** high-value, ready when P0 clears |
| → P2 (default) | 24 important to file, not blocking |
| → P2 (default) | 23 important to file, not blocking |
| → Backlog | 4 captured for record, not planned |
| Open bugs | 9 |
| Legacy "Path to MVP2" | 22 items — scoped-not-done + bugs + chore-ideas only (excludes feat/infra ideas) |
| Legacy "Path to MVP2" | 21 items — scoped-not-done + bugs + chore-ideas only (excludes feat/infra ideas) |
| Backlog ideas | 6 idea-only feat/infra (not yet scoped into MVP2) |
| In flight | 0 feature(s) actively shipping |

## Pipeline

### Done (6)
### Done (7)

| Feature | Type | One-liner | Depends on | Status |
|---|---|---|---|---|
| [feat_contextual_help_mvp2](implemented_features/2026_05_15_feat_contextual_help_mvp2/idea.md) | Feature | Phase 1 covered the create-study modal + study-detail surface — the steepest onboarding cliff. Two clusters of surfaces remain that a relevance engineer encounters after running their first study: | — | [PR #124](https://github.com/SoundMindsAI/relyloop/pull/124) merged 2026-05-15 |
| [feat_demo_ubi_study_comparison](implemented_features/2026_05_30_feat_demo_ubi_study_comparison/feature_spec.md) | Feature | After this feature, the home-button reseed (and the | — | [PR #320](https://github.com/SoundMindsAI/relyloop/pull/320) merged 2026-05-30 |
| [feat_overnight_autopilot](implemented_features/2026_05_31_feat_overnight_autopilot/feature_spec.md) | Feature | an operator can (a) discover the overnight path while creating a study because the wizard control is reframed as a labeled "🌙 Run overnight (compound automatically)" toggle with explicit copy about th | — | [PR #343](https://github.com/SoundMindsAI/relyloop/pull/343) merged 2026-05-31 |
| [feat_study_convergence_indicator](implemented_features/2026_06_01_feat_study_convergence_indicator/feature_spec.md) | Feature | Every completed study carries a plain-language **convergence verdict** — `converged` / `still_improving` / `too_few_trials` — backed by a best-metric-so-far curve. | — | [PR #352](https://github.com/SoundMindsAI/relyloop/pull/352) merged 2026-06-01 |
| [feat_study_sub_warmup_guard](implemented_features/2026_05_29_feat_study_sub_warmup_guard/feature_spec.md) | Feature | A non-blocking inline warning appears under the `max_trials` input whenever the derived preset is `custom` AND `max_trials < STUDIES_TPE_WARMUP_FLOOR (= 50)`, naming Focused/Standard as one-click reme | — | [PR #316](https://github.com/SoundMindsAI/relyloop/pull/316) merged 2026-05-29 |
| [feat_ubi_judgments](implemented_features/2026_05_29_feat_ubi_judgments/feature_spec.md) | Feature | Operators with the OpenSearch / ES UBI plugin installed (today; Solr's first-party `solr.UBIComponent` lights up with the sibling `infra_adapter_solr` MVP2 release) can derive judgments from real clic | — | [PR #317](https://github.com/SoundMindsAI/relyloop/pull/317) merged 2026-05-29 |
| [infra_adapter_solr](implemented_features/2026_05_31_infra_adapter_solr/feature_spec.md) | Infra | A single `SolrAdapter` implements the `SearchAdapter` Protocol against Apache Solr 9.x and 10.x (both SolrCloud and standalone), pivoting on a capability probe at construction time. | `feat_ubi_judgments` | [PR #336](https://github.com/SoundMindsAI/relyloop/pull/336) merged 2026-05-31 |
Expand All @@ -49,14 +50,13 @@ Plan approved; run /impl-execute to ship

_None._

### Plan (4)
### Plan (3)

| # | Priority | Feature | Type | One-liner | Depends on | Status |
|---|---|---|---|---|---|---|
| 1 | P2 | [feat_query_normalization_tuning](planned_features/02_mvp2/feat_query_normalization_tuning/feature_spec.md) | Feature | A template that opts in by declaring `query_normalizer` as a Categorical param gets the Optuna loop deciding empirically — on the operator's judgment set — whether lowercasing, trimming, or contractio | — | — |
| 2 | P2 | [feat_study_convergence_indicator](planned_features/02_mvp2/feat_study_convergence_indicator/feature_spec.md) | Feature | Every completed study carries a plain-language **convergence verdict** — `converged` / `still_improving` / `too_few_trials` — backed by a best-metric-so-far curve. | — | [PR #316](https://github.com/SoundMindsAI/relyloop/pull/316) |
| 3 | P2 | [feat_ubi_llm_study_comparison](planned_features/02_mvp2/feat_ubi_llm_study_comparison/feature_spec.md) | Feature | A single dedicated route `/studies/compare?a={id}&b={id}` renders the two studies side-by-side with a per-panel diff column: a sentence-level digest-narrative diff, a best-trial parameter table with s | — | [PR #320](https://github.com/SoundMindsAI/relyloop/pull/320) |
| 4 | P2 | [chore_demo_seeding_integration_tests_rewrite](planned_features/02_mvp2/chore_demo_seeding_integration_tests_rewrite/feature_spec.md) | Chore | The 9 skipped cases are rewritten to the async "POST + poll-until-terminal" shape, the timeout case is re-homed to the worker layer, a new `AC-Async` case asserts the `running → complete` polling tran | — | [PR #286](https://github.com/SoundMindsAI/relyloop/pull/286) |
| 2 | P2 | [feat_ubi_llm_study_comparison](planned_features/02_mvp2/feat_ubi_llm_study_comparison/feature_spec.md) | Feature | A single dedicated route `/studies/compare?a={id}&b={id}` renders the two studies side-by-side with a per-panel diff column: a sentence-level digest-narrative diff, a best-trial parameter table with s | — | [PR #320](https://github.com/SoundMindsAI/relyloop/pull/320) |
| 3 | P2 | [chore_demo_seeding_integration_tests_rewrite](planned_features/02_mvp2/chore_demo_seeding_integration_tests_rewrite/feature_spec.md) | Chore | The 9 skipped cases are rewritten to the async "POST + poll-until-terminal" shape, the timeout case is re-homed to the worker layer, a new `AC-Async` case asserts the `running → complete` polling tran | — | [PR #286](https://github.com/SoundMindsAI/relyloop/pull/286) |

### Spec (0)

Expand Down Expand Up @@ -106,8 +106,6 @@ graph LR
class chore_demo_seeding_integration_tests_rewrite plan;
feat_query_normalization_tuning["query normalization tuning"]
class feat_query_normalization_tuning plan;
feat_study_convergence_indicator["study convergence indicator"]
class feat_study_convergence_indicator plan;
feat_ubi_llm_study_comparison["ubi llm study comparison"]
class feat_ubi_llm_study_comparison plan;
feat_contextual_help_mvp2["contextual help mvp2"]
Expand All @@ -122,6 +120,8 @@ graph LR
class feat_overnight_autopilot done;
infra_adapter_solr["adapter solr"]
class infra_adapter_solr done;
feat_study_convergence_indicator["study convergence indicator"]
class feat_study_convergence_indicator done;
feat_ubi_judgments --> infra_adapter_solr
```

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 @@ -392,7 +392,7 @@ <h2>Releases</h2>
<div class="roadmap-row">
<div class="release-name"><a href="mvp2_dashboard.html">MVP2 / v0.2</a></div>
<div class="theme">Three-Engine + Real Signals</div>
<div class="progress">6 / 10 scoped done · 22 remaining</div>
<div class="progress">7 / 10 scoped done · 21 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 — Study convergence indicator

**Date:** 2026-05-31
**Status:** Ready for Execution
**Status:** Complete (PR #352, merged 2026-06-01)
**Primary spec:** [`feature_spec.md`](feature_spec.md)
**Policy source(s):** [`CLAUDE.md`](../../../../../CLAUDE.md), [`docs/01_architecture/api-conventions.md`](../../../../01_architecture/api-conventions.md), [`docs/01_architecture/ui-architecture.md`](../../../../01_architecture/ui-architecture.md)

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Pipeline Status — feat_study_convergence_indicator

**Release:** mvp2

## Idea
- Status: Complete
- File: idea.md
Expand All @@ -21,4 +23,9 @@
- Phases covered: single-phase delivery (FR-1 through FR-9 all in this plan; no deferred phases)

## Implementation
- Status: Not started
- Status: Complete
- Date: 2026-06-01
- PR: #352 (squash-merged `0eee17a9`)
- CI: green (pr + DCO + secrets-defense; SKIP_HEAVY_CI fast lane)
- Stories: 11/11 complete
- Cross-model review: Gemini (1 Medium accepted+fixed `644feeed`) + GPT-5.5 final (4 findings: 2 accepted+fixed `644feeed`/`ad72e297`, 3 rejected as review-window truncation artifacts)
50 changes: 25 additions & 25 deletions docs/00_overview/mvp2_dashboard.html
Original file line number Diff line number Diff line change
Expand Up @@ -397,13 +397,13 @@ <h2>MVP2 Progress</h2>
<div class="kpi-row">
<div class="kpi ">
<div class="label">Specced features done</div>
<div class="value">6 / 10</div>
<div class="sub">60% specced · 34 filed under MVP2</div>
<div class="bar"><span style="width:60%"></span></div>
<div class="value">7 / 10</div>
<div class="sub">70% specced · 34 filed under MVP2</div>
<div class="bar"><span style="width:70%"></span></div>
</div>
<div class="kpi warn">
<div class="label">Pending work</div>
<div class="value">28</div>
<div class="value">27</div>
<div class="sub">every not-done feat/infra/chore/bug across all priorities</div>
</div>
<div class="kpi bug">
Expand All @@ -425,7 +425,7 @@ <h2>MVP2 Progress</h2>
</div>
<div class="kpi">
<div class="label">P2 (default)</div>
<div class="value">24</div>
<div class="value">23</div>
<div class="sub">important to file, not blocking</div>
</div>
<div class="kpi">
Expand All @@ -435,7 +435,7 @@ <h2>MVP2 Progress</h2>
</div>
<div class="kpi">
<div class="label">Legacy "Path to MVP2"</div>
<div class="value">22</div>
<div class="value">21</div>
<div class="sub">scoped not-done + bugs + chore-ideas only (excludes feat/infra ideas)</div>
</div>
</div>
Expand Down Expand Up @@ -784,7 +784,7 @@ <h3>Spec <span class="count">0</span></h3>
</div>

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

<div class="card feat" data-prefix="feat" data-priority="P2">
<div class="name"><a href="../../docs/00_overview/planned_features/02_mvp2/feat_query_normalization_tuning/feature_spec.md">Query Normalization Tuning</a></div>
Expand All @@ -799,19 +799,6 @@ <h3>Plan <span class="count">4</span></h3>
</div>


<div class="card feat" data-prefix="feat" data-priority="P2">
<div class="name"><a href="../../docs/00_overview/planned_features/02_mvp2/feat_study_convergence_indicator/feature_spec.md">Study Convergence Indicator</a></div>
<div class="meta">
<span class="badge feat">Feature</span>
<span class="badge priority" data-priority="P2">P2</span>
<a class="pr" href="https://github.com/SoundMindsAI/relyloop/pull/316">PR #316</a>
</div>
<div class="one-liner">Every completed study carries a plain-language **convergence verdict** — `converged` / `still_improving` / `too_few_trials` — backed by a best-metric-so-far curve.</div>


</div>


<div class="card feat" data-prefix="feat" data-priority="P2">
<div class="name"><a href="../../docs/00_overview/planned_features/02_mvp2/feat_ubi_llm_study_comparison/feature_spec.md">Ubi Llm Study Comparison</a></div>
<div class="meta">
Expand Down Expand Up @@ -845,7 +832,7 @@ <h3>Implementing <span class="count">0</span></h3>
</div>

<div class="col done">
<h3>Done <span class="count">6</span></h3>
<h3>Done <span class="count">7</span></h3>

<div class="card feat" data-prefix="feat" data-priority="P2">
<div class="name"><a href="../../docs/00_overview/implemented_features/2026_05_15_feat_contextual_help_mvp2">Contextual Help</a></div>
Expand Down Expand Up @@ -886,6 +873,19 @@ <h3>Done <span class="count">6</span></h3>
</div>


<div class="card feat" data-prefix="feat" data-priority="P2">
<div class="name"><a href="../../docs/00_overview/implemented_features/2026_06_01_feat_study_convergence_indicator/feature_spec.md">Study Convergence Indicator</a></div>
<div class="meta">
<span class="badge feat">Feature</span>

<a class="pr" href="https://github.com/SoundMindsAI/relyloop/pull/352">PR #352</a> <span>merged 2026-06-01</span>
</div>
<div class="one-liner">Every completed study carries a plain-language **convergence verdict** — `converged` / `still_improving` / `too_few_trials` — backed by a best-metric-so-far curve.</div>


</div>


<div class="card feat" data-prefix="feat" data-priority="P2">
<div class="name"><a href="../../docs/00_overview/implemented_features/2026_05_29_feat_study_sub_warmup_guard/feature_spec.md">Study Sub Warmup Guard</a></div>
<div class="meta">
Expand Down Expand Up @@ -941,8 +941,6 @@ <h2>Dependency graph (feat_ + infra_)</h2>
class chore_demo_seeding_integration_tests_rewrite plan;
feat_query_normalization_tuning[&quot;query normalization tuning&quot;]
class feat_query_normalization_tuning plan;
feat_study_convergence_indicator[&quot;study convergence indicator&quot;]
class feat_study_convergence_indicator plan;
feat_ubi_llm_study_comparison[&quot;ubi llm study comparison&quot;]
class feat_ubi_llm_study_comparison plan;
feat_contextual_help_mvp2[&quot;contextual help mvp2&quot;]
Expand All @@ -957,6 +955,8 @@ <h2>Dependency graph (feat_ + infra_)</h2>
class feat_overnight_autopilot done;
infra_adapter_solr[&quot;adapter solr&quot;]
class infra_adapter_solr done;
feat_study_convergence_indicator[&quot;study convergence indicator&quot;]
class feat_study_convergence_indicator done;
feat_ubi_judgments --&gt; infra_adapter_solr</div>
<noscript><pre>graph LR
classDef done fill:#dcfce7,stroke:#14532d,color:#14532d;
Expand All @@ -968,8 +968,6 @@ <h2>Dependency graph (feat_ + infra_)</h2>
class chore_demo_seeding_integration_tests_rewrite plan;
feat_query_normalization_tuning[&quot;query normalization tuning&quot;]
class feat_query_normalization_tuning plan;
feat_study_convergence_indicator[&quot;study convergence indicator&quot;]
class feat_study_convergence_indicator plan;
feat_ubi_llm_study_comparison[&quot;ubi llm study comparison&quot;]
class feat_ubi_llm_study_comparison plan;
feat_contextual_help_mvp2[&quot;contextual help mvp2&quot;]
Expand All @@ -984,6 +982,8 @@ <h2>Dependency graph (feat_ + infra_)</h2>
class feat_overnight_autopilot done;
infra_adapter_solr[&quot;adapter solr&quot;]
class infra_adapter_solr done;
feat_study_convergence_indicator[&quot;study convergence indicator&quot;]
class feat_study_convergence_indicator done;
feat_ubi_judgments --&gt; infra_adapter_solr</pre></noscript>
</div>
</section>
Expand Down
Loading
Loading