Skip to content

dashboard: say how fresh it is, and hand over its own refresh - #265

Merged
Jammy2211 merged 1 commit into
mainfrom
claude/automind-prompts-dashboard-enl7mh
Aug 24, 2026
Merged

dashboard: say how fresh it is, and hand over its own refresh#265
Jammy2211 merged 1 commit into
mainfrom
claude/automind-prompts-dashboard-enl7mh

Conversation

@Jammy2211

Copy link
Copy Markdown
Contributor

Merge this before the PyAutoMind twin (PyAutoLabs/PyAutoMind#…, same branch name). dashboard_refresh.yml renders the Mind page with PyAutoBrain's default branch, so if the Mind side lands first its PR check reads the new banner as content drift and the self-heal on main commits it straight back out.

Why

The Mind dashboard's failure mode is asymmetric. dashboard_refresh.yml self-heals a stale render on every push to main, but nothing self-heals a stale prompt: a task that ships without its prompt advancing to complete/ keeps rendering as pickable backlog, and a human finds out by starting work that is already done. That happened often enough to be the ask behind this change.

What changed

A freshness banner on both twins, above the counts:

  • the generation date;
  • one paragraph on why a fresh render is not a fresh backlog;
  • and — in the same one-tap 📋 idiom as every task row — the whole reconcile-then-regenerate chore as a single copyable instruction (pull, run the lifecycle checks, decide which prompts are already done and why, write each record and retire its prompt, regenerate, push).

The markdown page gets a <details> row; the HTML twin gets a real copy button and its own .fresh rule, since no other organ board carries one.

A widened drift detector. _FIX_PR_RE caught only the Fix: … PR #n idiom. The commoner signal is the prompt's own Status: header — the shipping session writes shipped / superseded / absorbed into it and leaves the file in draft/. _done_status() reads that off the parsed header, and only when the status opens on a done-word, so a tracker reporting phases 1-3 SHIPPED; phase 4 open stays live work. Run against PyAutoMind it immediately surfaced two spent prompts a manual sweep had missed.

Validation

455 passed — the full Brain suite. New contract tests cover: shipped/superseded/absorbed statuses flag; partly-shipped ones do not; both twins carry the banner; and the HTML blurb renders its code spans while the copy payload keeps its markdown verbatim.

That last one needed a scoping fix to a pre-existing test. test_the_html_blurb_renders_its_code_spans asserted over the whole page, and a copy payload is a clipboard literal — the message a human pastes into a Claude chat — so it legitimately carries markdown the page must not render. A shared _prose() helper strips data-cmd attributes, which is what that assertion was always about.


Generated by Claude Code

The Mind dashboard's failure mode is asymmetric. `dashboard_refresh.yml`
self-heals a stale *render* on every push to main, but nothing self-heals a
stale *prompt*: a task that ships without its prompt advancing to `complete/`
keeps rendering as pickable backlog, and a human finds out by starting work
that is already done. Two changes, both aimed at that.

**A freshness banner** on both twins, above the counts: the generation date,
one paragraph on why a fresh render is not a fresh backlog, and — in the same
one-tap 📋 idiom as every task row — the whole reconcile-then-regenerate chore
as a single copyable instruction (pull, run the lifecycle checks, decide which
prompts are already done and why, write each record and retire its prompt,
regenerate, push). The markdown page gets a `<details>` row; the HTML twin gets
a real copy button and its own `.fresh` rule, since no other organ board
carries one.

**A widened drift detector.** `_FIX_PR_RE` caught only the `Fix: ... PR #n`
idiom. The commoner signal is the prompt's own `Status:` header — the shipping
session writes `shipped` / `superseded` / `absorbed` into it and leaves the file
in `draft/`. `_done_status()` reads that off the parsed header and only when the
status *opens* on a done-word, so a tracker reporting "phases 1-3 SHIPPED;
phase 4 open" stays live work. Run against PyAutoMind it immediately surfaced
two prompts a manual sweep had missed.

Tests: shipped/superseded/absorbed statuses flag, partly-shipped ones do not,
both twins carry the banner, and the HTML blurb renders its code spans while
the copy payload keeps its markdown verbatim (`_prose` scopes the pre-existing
assertion to rendered prose, which is what it was always about).

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NcL3NFXVPW4xipE8wJfjSx
@Jammy2211
Jammy2211 merged commit 9063997 into main Aug 24, 2026
2 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.

2 participants