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-05-31**. 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 · 13 remaining | **In progress** |
| [MVP2 / v0.2](MVP2_DASHBOARD.md) | Three-Engine + Real Signals | 6 / 10 scoped done · 22 remaining | **In progress** |
| MVP3 / v0.3 | Observable | — | **Not yet scoped** |
| GA v1 / v1.0 | Production-ready | — | **Not yet scoped** |

Expand Down
46 changes: 28 additions & 18 deletions docs/00_overview/MVP2_DASHBOARD.md

Large diffs are not rendered by default.

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 · 13 remaining</div>
<div class="progress">6 / 10 scoped done · 22 remaining</div>
<span class="state-pill in_progress">In progress</span>
</div>

Expand Down
144 changes: 137 additions & 7 deletions docs/00_overview/mvp2_dashboard.html
Original file line number Diff line number Diff line change
Expand Up @@ -398,17 +398,17 @@ <h2>MVP2 Progress</h2>
<div class="kpi ">
<div class="label">Specced features done</div>
<div class="value">6 / 10</div>
<div class="sub">60% specced · 24 filed under MVP2</div>
<div class="sub">60% specced · 34 filed under MVP2</div>
<div class="bar"><span style="width:60%"></span></div>
</div>
<div class="kpi warn">
<div class="label">Pending work</div>
<div class="value">18</div>
<div class="value">28</div>
<div class="sub">every not-done feat/infra/chore/bug across all priorities</div>
</div>
<div class="kpi bug">
<div class="label">Open bugs</div>
<div class="value">3</div>
<div class="value">9</div>
<div class="sub">tracked bug_* idea files</div>
</div>
<div class="kpi ">
Expand All @@ -425,7 +425,7 @@ <h2>MVP2 Progress</h2>
</div>
<div class="kpi">
<div class="label">P2 (default)</div>
<div class="value">14</div>
<div class="value">24</div>
<div class="sub">important to file, not blocking</div>
</div>
<div class="kpi">
Expand All @@ -435,14 +435,14 @@ <h2>MVP2 Progress</h2>
</div>
<div class="kpi">
<div class="label">Legacy "Path to MVP2"</div>
<div class="value">13</div>
<div class="value">22</div>
<div class="sub">scoped not-done + bugs + chore-ideas only (excludes feat/infra ideas)</div>
</div>
</div>
<div class="kpi-secondary">
<span>
<strong>Backlog ideas:</strong>
5 idea-only feat/infra folders (not yet scoped into MVP2)
6 idea-only feat/infra folders (not yet scoped into MVP2)
</span>
<span>
<strong>In flight:</strong>
Expand All @@ -463,7 +463,7 @@ <h2>Pipeline</h2>
</div>
<div class="kanban">
<div class="col idea">
<h3>Idea <span class="count">14</span></h3>
<h3>Idea <span class="count">24</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_apply_path_normalizer_declaration">Apply Path Normalizer Declaration</a></div>
Expand Down Expand Up @@ -504,6 +504,32 @@ <h3>Idea <span class="count">14</span></h3>
</div>


<div class="card infra" data-prefix="infra" data-priority="P2">
<div class="name"><a href="../../docs/00_overview/planned_features/02_mvp2/infra_generated_artifact_freshness_gate">Generated Artifact Freshness Gate</a></div>
<div class="meta">
<span class="badge infra">Infra</span>
<span class="badge priority" data-priority="P2">P2</span>

</div>
<div class="one-liner">- `ui/src/lib/types.ts` — regenerated from `http://localhost:8000/openapi.json` via `pnpm types:gen` (`ui/scripts/gen-types.mjs`). Nothing fails CI when a backend schema change lands without a matchin</div>


</div>


<div class="card chore" data-prefix="chore" data-priority="P2">
<div class="name"><a href="../../docs/00_overview/planned_features/02_mvp2/chore_arq_pool_aclose_deprecation">Arq Pool Aclose Deprecation</a></div>
<div class="meta">
<span class="badge chore">Chore</span>
<span class="badge priority" data-priority="P2">P2</span>

</div>
<div class="one-liner">[`backend/app/main.py`](../backend/app/main.py) (~line 144, the FastAPI lifespan/shutdown that closes the Arq Redis pool) calls `arq_pool.close()`. arq deprecated the sync-named `close()` in favor of </div>


</div>


<div class="card chore" data-prefix="chore" data-priority="P2">
<div class="name"><a href="../../docs/00_overview/planned_features/02_mvp2/chore_cluster_detail_rung_badge">Cluster Detail Rung Badge</a></div>
<div class="meta">
Expand All @@ -517,6 +543,32 @@ <h3>Idea <span class="count">14</span></h3>
</div>


<div class="card chore" data-prefix="chore" data-priority="P2">
<div class="name"><a href="../../docs/00_overview/planned_features/02_mvp2/chore_solr_cred_backfill_needs_api_restart">Solr Cred Backfill Needs Api Restart</a></div>
<div class="meta">
<span class="badge chore">Chore</span>
<span class="badge priority" data-priority="P2">P2</span>

</div>
<div class="one-liner">`scripts/install.sh` step 5a backfills a `local-solr:` entry into a **pre-existing** `./secrets/cluster_credentials.yaml`. That write is correct and idempotent. But the `api` (and `worker`) process re</div>


</div>


<div class="card chore" data-prefix="chore" data-priority="P2">
<div class="name"><a href="../../docs/00_overview/planned_features/02_mvp2/chore_solr_post_pipeline_followups">Solr Post Pipeline Followups</a></div>
<div class="meta">
<span class="badge chore">Chore</span>
<span class="badge priority" data-priority="P2">P2</span>

</div>
<div class="one-liner">The 13-story `infra_adapter_solr` execution surfaced several follow-on items that fit neither the original spec nor any sister feature folder. None block the MVP2 Solr release — they&#x27;re operator-exper</div>


</div>


<div class="card chore" data-prefix="chore" data-priority="P2">
<div class="name"><a href="../../docs/00_overview/planned_features/02_mvp2/chore_studies_post_arq_spy_fixture">Studies Post Arq Spy Fixture</a></div>
<div class="meta">
Expand Down Expand Up @@ -569,6 +621,84 @@ <h3>Idea <span class="count">14</span></h3>
</div>


<div class="card bug" data-prefix="bug" data-priority="P2">
<div class="name"><a href="../../docs/00_overview/planned_features/02_mvp2/bug_baseline_phase_test_isolation">Baseline Phase Test Isolation</a></div>
<div class="meta">
<span class="badge bug">Bug</span>
<span class="badge priority" data-priority="P2">P2</span>

</div>
<div class="one-liner">`backend/tests/unit/workers/test_orchestrator_baseline_phase.py::TestComputeBaselineWaitS::*` fail when run in isolation with:</div>


</div>


<div class="card bug" data-prefix="bug" data-priority="P2">
<div class="name"><a href="../../docs/00_overview/planned_features/02_mvp2/bug_demo_seed_ubi_insufficient_data">Demo Seed Ubi Insufficient Data</a></div>
<div class="meta">
<span class="badge bug">Bug</span>
<span class="badge priority" data-priority="P2">P2</span>

</div>
<div class="one-liner"></div>


</div>


<div class="card bug" data-prefix="bug" data-priority="P2">
<div class="name"><a href="../../docs/00_overview/planned_features/02_mvp2/bug_e2e_teardown_chain_node_delete_500">E2E Teardown Chain Node Delete 500</a></div>
<div class="meta">
<span class="badge bug">Bug</span>
<span class="badge priority" data-priority="P2">P2</span>

</div>
<div class="one-liner">The E2E global-teardown deletes seeded rows in a fixed order (per `chore_e2e_test_rows_isolation` Story 1.2 cleanup registration). For auto-followup **chains**, the seeded nodes are `queued` studies c</div>


</div>


<div class="card bug" data-prefix="bug" data-priority="P2">
<div class="name"><a href="../../docs/00_overview/planned_features/02_mvp2/bug_judgment_header_omits_click_bucket">Judgment Header Omits Click Bucket</a></div>
<div class="meta">
<span class="badge bug">Bug</span>
<span class="badge priority" data-priority="P2">P2</span>

</div>
<div class="one-liner">A judgment list generated from UBI (or hybrid UBI+LLM) carries non-zero `source_breakdown.click`, but the header&#x27;s source-breakdown card silently drops it. Operators reviewing a UBI list see only the </div>


</div>


<div class="card bug" data-prefix="bug" data-priority="P2">
<div class="name"><a href="../../docs/00_overview/planned_features/02_mvp2/bug_relyloop_spec_ubi_section_drift">Relyloop Spec Ubi Section Drift</a></div>
<div class="meta">
<span class="badge bug">Bug</span>
<span class="badge priority" data-priority="P2">P2</span>

</div>
<div class="one-liner">[`docs/00_overview/relyloop-spec.md`](relyloop-spec.md) §&quot;Click-derived judgments — OpenSearch UBI as the engine-neutral primary path&quot; (line ~706) carries two staleness bugs from the 2026-05-27 releas</div>


</div>


<div class="card bug" data-prefix="bug" data-priority="P2">
<div class="name"><a href="../../docs/00_overview/planned_features/02_mvp2/bug_reseed_failure_blocks_retry_arq_singleton_dedup">Reseed Failure Blocks Retry Arq Singleton Dedup</a></div>
<div class="meta">
<span class="badge bug">Bug</span>
<span class="badge priority" data-priority="P2">P2</span>

</div>
<div class="one-liner">`run_demo_reseed` is enqueued with a fixed Arq job id `demo_reseed:singleton` (the singleton concurrency guard). When a run reaches a terminal state, Arq stores its **result** under `arq:result:demo_r</div>


</div>


<div class="card bug" data-prefix="bug" data-priority="P2">
<div class="name"><a href="../../docs/00_overview/planned_features/02_mvp2/bug_seed_meaningful_demos_silent_bulk_errors">Seed Meaningful Demos Silent Bulk Errors</a></div>
<div class="meta">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

**Type:** bug
**Priority:** P2 (demo-only; does not affect the product/adapter code paths)
**Re-verify (2026-05-31):** the **async** home-button reseed (`demo_seeding.py`, the UI path) now completes **6/6 incl. UBI judgment generation on all scenarios** after `feat_demo_reseed_solr_and_steplog` (PR #348). This bug is about the **sync CLI** path (`make seed-demo FORCE=1` → `seed_meaningful_demos.py`) + the synthetic-event-count vs readiness-threshold, which #348 did not directly touch — but re-run the sync CLI to confirm the symptom persists before scoping; it may now be stale/resolved. Moved from `00_unsure/` to `02_mvp2/` 2026-05-31.

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 dashboard generator script requires a plain-text paragraph or a delimiter on the Priority line to extract the one-liner description for the dashboard. Currently, bug_demo_seed_ubi_insufficient_data has an empty one-liner in both MVP2_DASHBOARD.md and mvp2_dashboard.html because it lacks a plain-text description paragraph at the top. Adding a concise one-liner paragraph at the beginning of the file will allow the generator to correctly populate the dashboard.

Suggested change
**Re-verify (2026-05-31):** the **async** home-button reseed (`demo_seeding.py`, the UI path) now completes **6/6 incl. UBI judgment generation on all scenarios** after `feat_demo_reseed_solr_and_steplog` (PR #348). This bug is about the **sync CLI** path (`make seed-demo FORCE=1``seed_meaningful_demos.py`) + the synthetic-event-count vs readiness-threshold, which #348 did not directly touch — but re-run the sync CLI to confirm the symptom persists before scoping; it may now be stale/resolved. Moved from `00_unsure/` to `02_mvp2/` 2026-05-31.
3 scenarios fail with UBI_INSUFFICIENT_DATA when running make seed-demo FORCE=1.
**Re-verify (2026-05-31):** the **async** home-button reseed (`demo_seeding.py`, the UI path) now completes **6/6 incl. UBI judgment generation on all scenarios** after `feat_demo_reseed_solr_and_steplog` (PR #348). This bug is about the **sync CLI** path (`make seed-demo FORCE=1``seed_meaningful_demos.py`) + the synthetic-event-count vs readiness-threshold, which #348 did not directly touch — but re-run the sync CLI to confirm the symptom persists before scoping; it may now be stale/resolved. Moved from `00_unsure/` to `02_mvp2/` 2026-05-31.

**Origin:** Surfaced during the infra_adapter_solr rework (2026-05-30), Phase 8, while
running `make seed-demo FORCE=1` to investigate pre-existing UBI demo failures.
**NOT caused by the Solr adapter** — the failing scenarios are all
Expand Down
Loading
Loading