feat(apps): add chat-status-tags builtin — SDLC + health tagging for dashboard chats - #7877
feat(apps): add chat-status-tags builtin — SDLC + health tagging for dashboard chats#7877billygerhard wants to merge 1 commit into
Conversation
c2148cc to
1d1c279
Compare
9c55d2b to
22e757e
Compare
22e757e to
9f29ab3
Compare
9f29ab3 to
e32d9b7
Compare
Design Review (Fable 5, fork) — 🔴 BLOCK (blocking)Design-level review of Design-Verdict: BLOCK The repo's built-in app set is closed by a blocking governance rule; this ships a new builtin whose own README proves the mandated external-app shape is feasible. Blockers
Watch
[DESIGN-REVIEWED] 6a9b356 |
First Principles Review (Fable 5, fork) — 🔴 BLOCKPremise-level review of All lenses are run; the evidence is collected. Final review: First-Principles-Verdict: BLOCK The whole app is real and well-aimed, but it ships as a new builtin — the one publishing path this repo's own blocking rule closes. What this change shipsIntent: keep dashboard chat tags truthful (SDLC phase + health) without manual toil. ADDITION.
BlockersNew builtin app directory. Watch
Subtractions
[FIRST-PRINCIPLES-REVIEWED] 6a9b356 |
UX Review (Fable 5, fork) — 🟡 CONCERNSUX-level review of UX-Verdict: CONCERNS Enabling the app silently starts recurring model spend, and the cron-status row asserts a failure it can't actually see while greying out the only fix. Watch
Suggestions
[UX-REVIEWED] 6a9b356 |
GPT 5.6 Review (fork) — 🔴 changes requested (blocking)Reviewed BLOCKING -- src/kiro_crew/apps/builtins/chat_status_tags/app.json:2 -- New built-in app violates the closed built-in set
BLOCKING -- src/kiro_crew/mcp_tools/apps.py:157 -- Global core tool bypasses cross-chat authorization
BLOCKING -- src/kiro_crew/apps/builtins/chat_status_tags/hooks.py:224 -- Truncated history grants a second resume budget
BLOCKING -- src/kiro_crew/apps/builtins/chat_status_tags/hooks.py:245 -- Resume state performs filesystem I/O on the event loop (origin: validation)
|
Opus 4.8 Review (fork) — 🔴 changes requested (blocking)Reviewed Only Candidate 1 is grounded. The MCP-tool reach (C2), hardcoded probes (C3), and reconcile-prompt (C4) are design/hardening opinions with the candidates' own low/medium confidence and no re-derivable concrete wrong outcome — C2 mirrors the existing Candidate 1 is a clean, blocking AUTOSDE violation: a new BLOCKING — the PR adds a new built-in app, which the [BLOCK-MERGE] 6a9b356 [OPUS-REVIEWED] 6a9b356 |
5687ac9 to
64322e5
Compare
|
Addressed the review findings in GPT 5.6 + Opus findings fixed:
Fork workflow guard — the PR no longer touches On the |
64322e5 to
374b6c1
Compare
374b6c1 to
3d54633
Compare
…dashboard chats Adds a builtin app that keeps dashboard chat tags truthful end to end: - Self-tag skill: agents tag their own chat's SDLC phase (planned/todo/ implementation/review/done) at each transition via a bundled tag.sh. - Zero-token health sweep (always on): a 60s in-process loop tags chats that hit a terminal error card or hang (running with stale activity), and clears health tags when a chat resumes. - Auto-resume (toggleable): network-killed chats are continued automatically once connectivity is stable, capped per episode; auth and unknown errors are never auto-resumed. - Hourly reconciler (toggleable): an LLM cron promotes review -> done from the real state of the PRs a chat owns, via a new chat_status_tags_api MCP tool with a 4-call read/tag allowlist (it cannot send messages or read chat detail). Closed-without-merge is explicitly not done. - App page: editable reconcile prompt (delivered as the cron job's own message), cron status row with a repair button, and cost-labeled toggles for the two credit-spending behaviors. Testing: full backend + frontend gate floor, ~160 app tests, and multi-day hands-on testing in a live gateway including a merged-PR -> done promotion and a closed-unmerged PR correctly left untouched. Signed-off-by: Billy Gerhard <billygerhard@gmail.com>
3d54633 to
6a9b356
Compare
Open PR relationship auditThis is a consolidated, point-in-time code-level audit note. It compares complete merge-base diffs and current/merged code; it does not treat a shared topic as duplication or partial coverage as completion. Relationship findings
No PR, Issue, label, branch, or review state was changed by the relationship-note portion of this audit. |
|
@billygerhard Thanks for this. Nothing on #8064 (Kiro Crew Guide, @buluoray) edits the same five places this PR does: #8463 (AgentCore Observatory, @warren830) is the same shape again on All three add a new directory under Two things specific to this PR: its agent tag-write path overlaps #7779, which needs its own reconciliation, and it is 635 commits behind with a merge conflict, so a rebase is needed regardless. Audited at 6a9b356. Posted from the 2026-09-08 open-PR relationship audit (read-only, one auditor per PR); reply here if any of this is wrong. |
Problem / Motivation
Dashboard chat tags go stale on their own: a chat that finishes review sits tagged
reviewforever, a chat killed by a network drop just stops with no signal, and a hung chat looks identical to a working one. Keeping tags truthful is manual toil today, and errored/hung chats are easy to miss entirely.Why it matters
Users running many parallel agent chats (the core KiroCrew workflow) triage by the sidebar. Stale or missing status means real failures hide among healthy chats — network-killed work silently stops overnight, and done work looks perpetually in-review. Automatic, truthful tags turn the sidebar into a reliable operations board.
What changed (motivation → approach → change)
New builtin app
chat-status-tags(default-disabled). Four cooperating pieces, each the cheapest mechanism that can do its job:planned→todo→implementation→review→done) via a bundledtag.shthat resolves the slot from the injected session key and exits 0 gracefully outside dashboard contexts.errorand running-but-stale chatsstuck, clearing health tags on resume. Zero tokens.review→donefrom the real state of the PRs a chat owns (from slot source links), via a newchat_status_tags_apiMCP tool with a narrow 4-call allowlist — it cannot send chat messages or read chat detail. A PR closed without merging is explicitly not done.Reviewer notes: the reconciler needs an authenticated
ghCLI and tool approval (the install default); withinteractiveapproval it degrades to a no-op. One entry pruned from.github/black-baseline.txt(mcp_tools/apps.pygraduated to black-clean).Tests
Manual verification
Multi-day hands-on testing in a live gateway: a merged PR promoted its chat to
doneend-to-end; a closed-unmerged PR correctly left the tag unchanged; exercised the prompt editor (save/reset/default badge), the cron repair button, and both automation toggles.Screenshots / video
The same image ships as the app-store asset (
website/public/app-assets/chat-status-tags/).Related Issues
None.