Skip to content

feat(cortex): dashboard leads with projects, check-in prompt and a freshness stamp; epics discarded #354

Closed

Description

@Jammy2211

Overview

The Cortex dashboard opens with every phase of every active project, so a reader scrolls past the whole Euclid plan before reaching what needs a verdict, and nothing on the page says when the science state was last refreshed. This task reorders the board around the reader's morning: a copyable check-in prompt and a last-check-in stamp (red after an hour) on top, a one-row-per-project summary, a compact Projects section (active → planned → dormant) that routes to follow-up work, then Awaiting ruling first among the state sections. The Cortex Epics section and epics.md are discarded — science projects are long exploratory programmes by nature; epics stay a Mind concept for chaining development tasks.

Plan

  • Put a 📋 check-in chip first on the page: the paste for the laptop science chat that pulls, scores, moves, re-renders and pushes, then reads back the by-project summary.
  • Beside it, a "Last check-in" stamp read from a committed checkin.yaml; the HTML twin colours it red on view when older than 60 minutes.
  • Add a summary table: one row per active project — next phase and state, awaiting / running / ready counts, last ruling.
  • Replace the leading "By project" wall and the trailing "Projects" table with one Projects section ordered active → planned → dormant; each card shows Local / RAL on their own bold lines, phase counts, the next phase with its own chip, and folds the remaining open phases behind links (phase files, phases/<project>/, the project repo's issues).
  • Awaiting ruling follows, unchanged; Running / submitted drops the "run it again" chip; Ready shows one visible phase per project with the rest folded; Gated and Recent rulings unchanged.
  • Remove the Epics section, parse_epics, PyAutoCortex/epics.md and its doc mentions; keep the optional Epic: phase header as a join key to Mind epics.
  • Rewrite the pinned tests, regenerate dashboard.md / dashboard.html, ship PyAutoBrain first and PyAutoCortex second.
Detailed implementation plan

Affected Repositories

  • PyAutoBrain (primary — renderer + tests + cortex skill doc)
  • PyAutoCortex (epics.md removal, docs, checkin.yaml, regenerated pages)

Branch Survey

Repository Current Branch Dirty?
./PyAutoBrain main (2 behind origin, board-family helper) clean
./PyAutoCortex main clean

Suggested branch: feature/cortex-dashboard-projects-first

Implementation Steps

  1. PyAutoBrain/agents/conductors/cortex/_cortex.py
    • census(): read <root>/checkin.yaml (refreshed: <UTC ISO>) into c["checkin"] (empty when missing); drop parse_epics and c["epics"].
    • cmd_checkin (and collect --apply): write the refresh stamp to checkin.yaml before rendering so push_ledger carries it; dirty_paths must include it.
    • New _checkin_payload(c) — the paste prompt naming the last stamp; rendered as the first task row in both twins, followed by the "Last check-in" line (<time datetime> + inline script in HTML: red + "stale, paste the check-in" when older than 60 min on the viewer's clock; "never checked in" in red when the file is missing).
    • New summary_rows(c) → table (project, next phase + state, awaiting / running / ready, last ruling date) for active projects.
    • SECTIONS → projects, awaiting, live, ready, gated, rulings (by_project and epics removed; blurbs updated; REFRESH_BLURB no longer names epics.md).
    • project_paths returns separate lines with bold labels; project_card(key, c): next open phase via next_open_phase (awaiting > live > ready > gated > planned, lowest phase number) with its phase_chips, then a <details> fold of the remaining open phases as links plus phases/<project>/ and <remote>/issues; no where-to-look bullets. Order by status rank active < planned < dormant; dormant projects with nothing open stay one folded line.
    • phase_chips: no rerun chip for LIVE_STATES (Awaiting keeps it).
    • Ready: group by project, first (lowest phase) row visible with the submit chip, rest in a <details>.
    • emit_census / emit_by_project / check-in printout keep the full per-phase tree — only the page shrinks.
  2. PyAutoBrain/tests/test_cortex_conductor.py: replace the by-project-leads and epics-schema pins with: check-in chip is the first task row; stamp rendered from checkin.yaml and "never checked in" without it; the stale script is present in the HTML twin; summary table present; Projects precedes Awaiting; active before planned before dormant; Local/RAL on separate bold lines; one visible Ready row per project with the rest folded; no rerun chip in the live section; no Epics section; census tolerates a missing epics.md.
  3. PyAutoBrain/skills/cortex/cortex.md and agents/conductors/cortex/AGENTS.md: drop epics.md mentions; document checkin.yaml.
  4. PyAutoCortex: delete epics.md; strip references from AGENTS.md, README.md, REFERENCE.md, scripts/ledger_merge.py, .github/workflows/dashboard_refresh.yml paths (add checkin.yaml); add checkin.yaml with the current stamp; regenerate dashboard.md / dashboard.html with PYAUTO_CORTEX pointed at the worktree.

Key Files

  • PyAutoBrain/agents/conductors/cortex/_cortex.py — both renderers, SECTIONS, phase_chips, census, cmd_checkin
  • PyAutoBrain/tests/test_cortex_conductor.py — section-order and payload pins
  • PyAutoCortex/epics.md — removed; PyAutoCortex/checkin.yaml — new
  • PyAutoCortex/.github/workflows/dashboard_refresh.yml — path triggers

Original Prompt

Click to expand starting prompt

PyAutoMind/draft/feature/pyautobrain/cortex_dashboard_projects_first.md (the full text, including the verbatim feedback and the freshness-stamp addendum, moves to active/ with this issue).

🤖 Generated with Claude Code

https://claude.ai/code/session_01FDMikgtrzGV799S5WXPpFq

Activity

  1. Jammy2211 commented on Sep 4, 2026

    @Jammy2211
    ContributorAuthor

    Shipped

    • PyAutoBrain#355 — merged (912b19f): Cortex board renderer leads with the check-in paste chip, a checkin.yaml freshness stamp (age computed on view, red after 60 min), a per-project summary table, Projects first (active → planned → dormant) with next-phase chip, Awaiting next, rerun chips off the live section, Ready folded per project; Cortex epics discarded (the Epic: phase header survives as an optional join key to a Mind epic).
    • PyAutoCortex#14 — merged (5e6d8b0): epics.md removed, checkin.yaml added and carried by push_ledger, dashboard pages regenerated projects-first. Its refresh check was red until feat(cortex): board leads with the check-in prompt, a freshness stamp and projects; epics discarded #355 landed (renders against Brain main); re-run green after the merge.

    Follow-up the human may want: an Issue: header on phases so the per-project fold can link a phase's own issue rather than the repo's issue list.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions