Skip to content

Plan: Variant lineage tree visualization (objective-colored, hover-preview, click-to-detail) (#123)#267

Merged
ealt merged 4 commits into
mainfrom
plan/issue-123-variant-lineage-tree
Jun 2, 2026
Merged

Plan: Variant lineage tree visualization (objective-colored, hover-preview, click-to-detail) (#123)#267
ealt merged 4 commits into
mainfrom
plan/issue-123-variant-lineage-tree

Conversation

@ealt
Copy link
Copy Markdown
Owner

@ealt ealt commented Jun 2, 2026

Plan-stage PR for #123codex-reviewed to convergence (3 rounds: 0→1→2).

Adds docs/plans/issue-123-variant-lineage-tree.md — the implementation strategy for a read-only /admin/lineage/ web-ui page rendering the experiment as an objective-colored variant-lineage DAG (D3 force-directed), plus the bundled Forgejo deep links on the variant-detail page. Full codex-review record committed under docs/plans/review/issue-123/plan/.

Key findings driving the plan

What codex-review changed (rounds 0–1, converged round 2)

  • Forgejo links use a distinct FORGEJO_WEB_URL browse-base, NOT the credential-bearing FORGEJO_CLONE_URL_HOST clone URL (would leak creds / malform links).
  • Objective evaluator: two-class failure model. Experiment-global failure (parse error / unknown OR non-numeric text metric) → loud invalid-objective banner + grey-all; per-node gap → that node grey. The issue's blanket "first-metric fallback" is deliberately not implemented (mixes incompatible semantics into one heat map) — deferred.
  • Grammar narrowed to + - * / + parens + unary minus (no Pow/Mod); namespaced node ids (seed:<sha>/variant:<id>) to avoid opaque-variant_id collision; degenerate color-scale rule; multi-parent diff link labeling.
  • JSON embedding via dict + |tojson (not |safe on a string; XSS-safe), client reads textContent.
  • Validation story strengthened: an automated live-stack assertion for /admin/lineage/ + both JS assets, plus a corrected wave-gate framing (interim subsets vs the literal pre-push quartet) and an explicit irreducible manual gate for D3 layout/hover/export.
  • Added config-drift risk (web-ui reads objective/schema from startup YAML) and operator-facing objective-grammar docs.

Decisions surfaced for operator review (defaults chosen)

  1. Server builds graph + scores; D3 only lays out + colors.
  2. Objective evaluator scoped to web-ui (promotion candidate, not built shared).
  3. Admin-gated /admin/lineage/ — tension with the issue's ideator-page link (ideators may be non-admin); alternative is an open /lineage/ route.
  4. Force-directed v0; defer linearize-single-parent pre-pass.
  5. SVG export in-scope; PNG export best-effort.
  6. New --forgejo-web-url / FORGEJO_WEB_URL, no fictional default.

Plan only — operator reviews + approves before impl spawn.

@ealt ealt force-pushed the plan/issue-123-variant-lineage-tree branch from f8306c2 to 5474fee Compare June 2, 2026 03:04
@ealt ealt enabled auto-merge (squash) June 2, 2026 03:04
@ealt ealt force-pushed the plan/issue-123-variant-lineage-tree branch 2 times, most recently from fc77cdc to 44be76b Compare June 2, 2026 08:28
ealt and others added 3 commits June 2, 2026 08:29
…eview, click-to-detail) (#123)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Round-0/1 codex-review corrections incorporated:
- Forgejo deep links use a distinct FORGEJO_WEB_URL browse-base (NOT the
  credential-bearing FORGEJO_CLONE_URL_HOST clone URL).
- JSON embedding via dict + |tojson (not |safe on a string); client reads
  textContent.
- Objective evaluator: two-class failure model — experiment-global (parse
  error / unknown OR non-numeric metric) → loud banner + grey-all; per-node
  gap → grey. First-metric fallback dropped from v0 (deferred).
- Grammar narrowed to + - * / parens unary-minus; namespaced node ids;
  degenerate color-scale rule; multi-parent diff labeling.
- Added automated live-stack assertion for /admin/lineage/ + JS assets;
  corrected wave-gate wording (interim subsets vs literal pre-push quartet).
- Config-drift risk + operator-facing objective-grammar docs.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Line 19 + 69: 'promotion candidate' — distinct semantic from the retired
integrate-as-promote verb (here: future code-promotion to wider scope).
Line 103: backticked code function name 'evaluate' — code reference, not
the retired task-kind verb.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@ealt ealt force-pushed the plan/issue-123-variant-lineage-tree branch from 44be76b to fdf4128 Compare June 2, 2026 08:29
@ealt ealt merged commit cc9e77c into main Jun 2, 2026
19 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant