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-23**. Click a release na

| Release | Theme | Progress | Status |
|---|---|---|---|
| [MVP1 / v0.1](MVP1_DASHBOARD.md) | The Loop | 66 / 67 scoped done · 9 remaining | **In progress** |
| [MVP1 / v0.1](MVP1_DASHBOARD.md) | The Loop | 67 / 67 scoped done · 8 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: 12 additions & 19 deletions docs/00_overview/MVP1_DASHBOARD.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,40 +6,35 @@ _Reflects feature-folder state as of **2026-05-23** (latest mtime of any planned

## Next up

**[feat_config_repo_baseline_tracking](../02_product/planned_features/feat_config_repo_baseline_tracking/feature_spec.md)** — Feature, currently in **Plan**
All scoped MVP1 features shipped 🎉

> A single denormalized FK `config_repos.last_merged_proposal_id` points at the most recently merged proposal for each config repo.

Plan approved; run /impl-execute to ship

```bash
/impl-execute docs/02_product/planned_features/feat_config_repo_baseline_tracking/implementation_plan.md --all
```
Pull from the Idea backlog or capture a new feature spec.

## MVP1 Progress

| Metric | Value |
|---|---|
| Scoped items done | **66 / 67** (99%) — feat_/infra_/chore_/epic_ past idea stage |
| Pending work | **16** items (every not-done feat/infra/chore/bug across all priorities) |
| Scoped items done | **67 / 67** (100%) — feat_/infra_/chore_/epic_ past idea stage |
| Pending work | **15** items (every not-done feat/infra/chore/bug across all priorities) |
| → P0 — do next | **0** unblocking / paying daily cost |
| → P1 | **1** high-value, ready when P0 clears |
| → P2 (default) | 14 important to file, not blocking |
| → P2 (default) | 13 important to file, not blocking |
| → Backlog | 1 captured for record, not planned |
| Open bugs | 4 |
| Legacy "Path to MVP1" | 9 items — scoped-not-done + bugs + chore-ideas only (excludes feat/infra ideas) |
| Legacy "Path to MVP1" | 8 items — scoped-not-done + bugs + chore-ideas only (excludes feat/infra ideas) |
| Backlog ideas | 7 idea-only feat/infra (not yet scoped into MVP1) |
| In flight | 0 feature(s) actively shipping |

## Pipeline

### Done (78)
### Done (79)

| Feature | Type | One-liner | Depends on | Status |
|---|---|---|---|---|
| [feat_agent_propose_search_space](implemented_features/2026_05_21_feat_agent_propose_search_space/feature_spec.md) | Feature | A new read-only agent tool `propose_search_space(template_id, cluster_id, judgment_list_id?, prior_study_id?) → SearchSpace JSON` that emits a deterministic, code-generated search space using the same | — | [PR #175](https://github.com/SoundMindsAI/relyloop/pull/175) merged 2026-05-21 |
| [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_auto_followup_studies` `feat_chat_last_message_preview` `feat_cluster_target_filter` `feat_config_repo_baseline_tracking` `feat_contextual_help` `feat_contextual_help_mvp2` `feat_create_study_search_space_builder` `feat_create_study_target_autocomplete` `feat_data_table_primitive` `feat_digest_executable_followups` `feat_digest_proposal` `feat_fts_rank_ordering_mvp2` `feat_github_pr_worker` `feat_github_webhook` `feat_home_demo_reseed_endpoint` `feat_home_first_run_demo_nudge` `feat_judgments_periodic_resume_sweep` `feat_llm_judgments` `feat_orchestrator_zero_streak_abort` `feat_pr_metric_confidence` `feat_proposals_ui` `feat_query_inline_crud` `feat_studies_ui` `feat_study_baseline_trial` `feat_study_clone_from_previous` `feat_study_lifecycle` `feat_study_preflight_overlap_probe` `feat_study_target_judgment_mismatch_guard` `feat_ubi_judgments` `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_ir_measures_migration` `infra_make_targets_split_backend_only` `infra_nvmrc` `infra_optuna_eval` `infra_per_trial_timeout` `infra_structlog_test_helpers` `infra_study_preflight_real_engine_integration` `infra_uv_sync_drops_precommit` | [PR #60](https://github.com/SoundMindsAI/relyloop/pull/60) merged 2026-05-12 |
| [feat_cluster_target_filter](implemented_features/2026_05_20_feat_cluster_target_filter/feature_spec.md) | Feature | Each registered cluster can optionally carry a glob pattern (`products*`, `team-a-*`, `docs-[ef][nr]-*`) that scopes `list_targets()` to the matching subset. | — | [PR #168](https://github.com/SoundMindsAI/relyloop/pull/168) merged 2026-05-20 |
| [feat_config_repo_baseline_tracking](implemented_features/2026_05_23_feat_config_repo_baseline_tracking/feature_spec.md) | Feature | A single denormalized FK `config_repos.last_merged_proposal_id` points at the most recently merged proposal for each config repo. | — | [PR #202](https://github.com/SoundMindsAI/relyloop/pull/202) merged 2026-05-23 |
| [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_create_study_target_autocomplete](implemented_features/2026_05_20_feat_create_study_target_autocomplete/feature_spec.md) | Feature | Operator selects a cluster → an autocomplete dropdown lists the user-visible targets on that cluster (name + doc count), pre-sorted alphabetically. | — | [PR #165](https://github.com/SoundMindsAI/relyloop/pull/165) merged 2026-05-20 |
Expand Down Expand Up @@ -120,11 +115,9 @@ Plan approved; run /impl-execute to ship

_None._

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

| Priority | Feature | Type | One-liner | Depends on | Status |
|---|---|---|---|---|---|
| P2 | [feat_config_repo_baseline_tracking](../02_product/planned_features/feat_config_repo_baseline_tracking/feature_spec.md) | Feature | A single denormalized FK `config_repos.last_merged_proposal_id` points at the most recently merged proposal for each config repo. | — | [PR #56](https://github.com/SoundMindsAI/relyloop/pull/56) merged 2026-05-10 |
_None._

### Spec (0)

Expand Down Expand Up @@ -161,8 +154,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_config_repo_baseline_tracking["config repo baseline tracking"]
class feat_config_repo_baseline_tracking plan;
infra_foundation["foundation"]
class infra_foundation done;
feat_study_lifecycle["study lifecycle"]
Expand Down Expand Up @@ -293,6 +284,8 @@ graph LR
class feat_orchestrator_zero_streak_abort done;
feat_study_preflight_overlap_probe["study preflight overlap probe"]
class feat_study_preflight_overlap_probe done;
feat_config_repo_baseline_tracking["config repo baseline tracking"]
class feat_config_repo_baseline_tracking done;
infra_ir_measures_migration["ir measures migration"]
class infra_ir_measures_migration done;
feat_study_lifecycle --> feat_digest_proposal
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 @@ -384,7 +384,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">66 / 67 scoped done · 9 remaining</div>
<div class="progress">67 / 67 scoped done · 8 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 — Config Repo Baseline Tracking

**Date:** 2026-05-22
**Status:** Draft
**Status:** Complete (PR #202, merged 2026-05-23)
**Primary spec:** [feature_spec.md](feature_spec.md)
**Policy source(s):** [CLAUDE.md](../../../../CLAUDE.md) absolute rules; [docs/01_architecture/api-conventions.md](../../../01_architecture/api-conventions.md); [docs/01_architecture/data-model.md](../../../01_architecture/data-model.md)

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# Pipeline Status — Config Repo Baseline Tracking

## Idea
- Status: Complete
- File: idea.md (preflight-refreshed 2026-05-22)

## Spec
- Status: Approved (auto-mode, no inter-stage user pause)
- Date: 2026-05-22
- File: feature_spec.md
- Cross-model review: GPT-5.5 — 3 cycles, 21 findings total (15 cycle-1 + 5 cycle-2 + 1 cycle-3), 21/21 accepted, 0 rejected. Convergence reached at cycle 3.
- Phases: 1 (single phase, no deferred phase)
- Follow-up captured: [`bug_pr_reconciler_blocked_by_closed_fallback/idea.md`](../bug_pr_reconciler_blocked_by_closed_fallback/idea.md) — pre-existing reconciler bug surfaced during cycle-2 review; scoped out of this feature.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The relative path to the follow-up bug is broken. Since this folder was moved from docs/02_product/planned_features/ to docs/00_overview/implemented_features/, relative links to other planned features now need to ascend three levels to reach the docs/ directory. Please also audit and fix similar broken links in the moved idea.md, feature_spec.md, and implementation_plan.md files.

Suggested change
- Follow-up captured: [`bug_pr_reconciler_blocked_by_closed_fallback/idea.md`](../bug_pr_reconciler_blocked_by_closed_fallback/idea.md) — pre-existing reconciler bug surfaced during cycle-2 review; scoped out of this feature.
- Follow-up captured: [`bug_pr_reconciler_blocked_by_closed_fallback/idea.md`](../../../02_product/planned_features/bug_pr_reconciler_blocked_by_closed_fallback/idea.md) — pre-existing reconciler bug surfaced during cycle-2 review; scoped out of this feature.


## Plan
- Status: Approved (auto-mode, no inter-stage user pause)
- Date: 2026-05-22
- File: implementation_plan.md
- Cross-model review: GPT-5.5 — 3 cycles, 17 findings total (14 cycle-1 + 3 cycle-2 + 0 cycle-3), 15/17 accepted, 2/17 rejected with cited codebase counter-evidence. Convergence reached at cycle 3.
- Stories: 10 stories across 3 epics + 1 finalization step
- Phases covered: single phase (entire spec)

## Implementation
- Status: Complete
- Date: 2026-05-23
- PR: [#202](https://github.com/SoundMindsAI/relyloop/pull/202) (squash `435badfa03fabdf1086e279abc6ef812e90dd433`)
- CI: 7/7 jobs green on the final SHA after one in-flight CI fix (test_migration_0016.py seed literal `tmpl-0000-0000-0000-0000-000000000001` was 37 chars, overflowed VARCHAR(36); replaced with `00000000-0000-0000-0000-000000000001`).
- Stories completed: 10 stories across 3 epics + finalization.
- Cross-model review: spec 21/21 findings accepted (3 cycles); plan 15/17 accepted + 2 rejected with cited codebase counter-evidence (3 cycles); final cumulative-diff review 1 rejected (false-positive on import block) + 2 accepted-and-applied in commit `9724664` (contract assertions in test_digest_proposal_api_contract.py + filter-chip vitest after component extraction).
- Gemini Code Assist: 2 findings — F1 (webhook handler extra cluster query) rejected with cited counter-evidence (single PK SELECT in a per-delivery path, not an N+1); F2 (reconciler per-iteration cluster query) deferred as non-regression follow-up (matches the established per-proposal-HTTPS-GET pattern). Adjudication summary posted on PR #202.
- Alembic head moved to `0016_config_repos_last_merged_proposal_id`.
- Follow-up captured: [`bug_pr_reconciler_blocked_by_closed_fallback`](../bug_pr_reconciler_blocked_by_closed_fallback/idea.md) — pre-existing reconciler bug; documented limitation in `webhook-debugging.md §8`.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The relative path to the follow-up bug is broken here as well.

Suggested change
- Follow-up captured: [`bug_pr_reconciler_blocked_by_closed_fallback`](../bug_pr_reconciler_blocked_by_closed_fallback/idea.md) — pre-existing reconciler bug; documented limitation in `webhook-debugging.md §8`.
- Follow-up captured: [`bug_pr_reconciler_blocked_by_closed_fallback`](../../../02_product/planned_features/bug_pr_reconciler_blocked_by_closed_fallback/idea.md) — pre-existing reconciler bug; documented limitation in `webhook-debugging.md §8`.

63 changes: 32 additions & 31 deletions docs/00_overview/mvp1_dashboard.html
Original file line number Diff line number Diff line change
Expand Up @@ -382,28 +382,28 @@ <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_config_repo_baseline_tracking/feature_spec.md">Config Repo Baseline Tracking</a></div>
<div class="one-liner">A single denormalized FK `config_repos.last_merged_proposal_id` points at the most recently merged proposal for each config repo.</div>
<div class="stage-hint">Plan approved; run /impl-execute to ship</div>
<code class="cmd">/impl-execute docs/02_product/planned_features/feat_config_repo_baseline_tracking/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">66 / 67</div>
<div class="sub">99% of feat_/infra_/chore_/epic_ items past idea stage</div>
<div class="bar"><span style="width:99%"></span></div>
<div class="value">67 / 67</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">Pending work</div>
<div class="value">16</div>
<div class="value">15</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>MVP1 Progress</h2>
</div>
<div class="kpi">
<div class="label">P2 (default)</div>
<div class="value">14</div>
<div class="value">13</div>
<div class="sub">important to file, not blocking</div>
</div>
<div class="kpi">
Expand All @@ -435,7 +435,7 @@ <h2>MVP1 Progress</h2>
</div>
<div class="kpi">
<div class="label">Legacy "Path to MVP1"</div>
<div class="value">9</div>
<div class="value">8</div>
<div class="sub">scoped not-done + bugs + chore-ideas only (excludes feat/infra ideas)</div>
</div>
</div>
Expand Down Expand Up @@ -667,19 +667,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" data-priority="P2">
<div class="name"><a href="../../docs/02_product/planned_features/feat_config_repo_baseline_tracking/feature_spec.md">Config Repo Baseline Tracking</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/56">PR #56</a> <span>merged 2026-05-10</span>
</div>
<div class="one-liner">A single denormalized FK `config_repos.last_merged_proposal_id` points at the most recently merged proposal for each config repo.</div>


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

</div>

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

<div class="col done">
<h3>Done <span class="count">78</span></h3>
<h3>Done <span class="count">79</span></h3>

<div class="card feat" data-prefix="feat" data-priority="P2">
<div class="name"><a href="../../docs/00_overview/implemented_features/2026_05_21_feat_agent_propose_search_space/feature_spec.md">Agent Propose Search Space</a></div>
Expand Down Expand Up @@ -730,6 +718,19 @@ <h3>Done <span class="count">78</span></h3>
</div>


<div class="card feat" data-prefix="feat" data-priority="P2">
<div class="name"><a href="../../docs/00_overview/implemented_features/2026_05_23_feat_config_repo_baseline_tracking/feature_spec.md">Config Repo Baseline Tracking</a></div>
<div class="meta">
<span class="badge feat">Feature</span>

<a class="pr" href="https://github.com/SoundMindsAI/relyloop/pull/202">PR #202</a> <span>merged 2026-05-23</span>
</div>
<div class="one-liner">A single denormalized FK `config_repos.last_merged_proposal_id` points at the most recently merged proposal for each config repo.</div>


</div>


<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/feature_spec.md">Contextual Help</a></div>
<div class="meta">
Expand Down Expand Up @@ -1717,8 +1718,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_config_repo_baseline_tracking[&quot;config repo baseline tracking&quot;]
class feat_config_repo_baseline_tracking plan;
infra_foundation[&quot;foundation&quot;]
class infra_foundation done;
feat_study_lifecycle[&quot;study lifecycle&quot;]
Expand Down Expand Up @@ -1849,6 +1848,8 @@ <h2>Dependency graph (feat_ + infra_)</h2>
class feat_orchestrator_zero_streak_abort done;
feat_study_preflight_overlap_probe[&quot;study preflight overlap probe&quot;]
class feat_study_preflight_overlap_probe done;
feat_config_repo_baseline_tracking[&quot;config repo baseline tracking&quot;]
class feat_config_repo_baseline_tracking done;
infra_ir_measures_migration[&quot;ir measures migration&quot;]
class infra_ir_measures_migration done;
feat_study_lifecycle --&gt; feat_digest_proposal
Expand Down Expand Up @@ -1954,8 +1955,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_config_repo_baseline_tracking[&quot;config repo baseline tracking&quot;]
class feat_config_repo_baseline_tracking plan;
infra_foundation[&quot;foundation&quot;]
class infra_foundation done;
feat_study_lifecycle[&quot;study lifecycle&quot;]
Expand Down Expand Up @@ -2086,6 +2085,8 @@ <h2>Dependency graph (feat_ + infra_)</h2>
class feat_orchestrator_zero_streak_abort done;
feat_study_preflight_overlap_probe[&quot;study preflight overlap probe&quot;]
class feat_study_preflight_overlap_probe done;
feat_config_repo_baseline_tracking[&quot;config repo baseline tracking&quot;]
class feat_config_repo_baseline_tracking done;
infra_ir_measures_migration[&quot;ir measures migration&quot;]
class infra_ir_measures_migration done;
feat_study_lifecycle --&gt; feat_digest_proposal
Expand Down

This file was deleted.

Loading