spec(automation): kanban-card-chat -- a card opens its agent conversation - #5389
Conversation
…ns its agent conversation One conversation per (person, task), keyed task:gHashTag/<repo>#<n> in the host's agent_messages; the same thread for the app's sheet, tri card and any A2A agent (metadata.task or contextId = the key). The frame opens a card only through the named same-origin envelope; the sheet opens at half with the composer pinned; the agent's note about the card is bounded and fenced. test-report 10/10; negative control (assert(RUN_LIVE)) FAILs as it must. String constants are pinned by the host test: the Zig backend does not compare []const u8 with ==. Refs #5388 (EPIC) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
📓 NotebookLM Notebook linked to this PR
This notebook contains session context, decisions, and artifacts for this work. |
…, actions on a tap The sheet says which pull requests name the issue and the worst state of their checks; a read that did not happen is "not measured", never "no PR". The agent's proposals are approve/decline cards in the card chat and run only on the person's tap. The column is the Queen's verdict: no move is offered, and the agent does not open PRs (the host holds no GitHub token). test-report 14/14; negative controls on checks_rank and action_runs FAIL. Refs #5388 (EPIC) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
📓 NotebookLM Notebook linked to this PR
This notebook contains session context, decisions, and artifacts for this work. |
PR DashboardGenerated at: 2026-10-01 13:14:21 UTC
Summary
Seal Status
|
… ends, four reads per open Refs #5388
|
📓 NotebookLM Notebook linked to this PR
This notebook contains session context, decisions, and artifacts for this work. |
…e; the move door's contract Refs #5388
PR DashboardGenerated at: 2026-10-01 14:42:03 UTC
Summary
Seal Status
|
|
📓 NotebookLM Notebook linked to this PR
This notebook contains session context, decisions, and artifacts for this work. |
|
Reviewer bee W -- verified at head Evidence (fresh clone under /tmp, master 6111696, t27c built from master):
Red checks are noise: Corpus ratchet, spec-guards, untrusted-input, coverage and Scorecard are red on master too; emit-bitexact fails on every open PR and does not run on master pushes. |
Refs #5388 (EPIC: a card on the game's kanban opens its agent conversation).
What
specs/automation/kanban-card-chat.t27: the spec of record for "tap any card on app.t27.ai/game/kanban, a chat with the agent opens with its history, and any A2A agent continues the same thread".It pins:
task:gHashTag/<repo>#<n>, owned by this repo's owner only. A bare number takes the board's repository and is never guessed.?c=conversation may not.{v:1, type:'t27-app', kind:'open-card'}, accepted from the same origin only.NOTE_MAX1200) and fenced as foreign text. It says so when the board is down or the card is untitled.?card=<n>[&repo=].metadata.taskor acontextIdequal to the thread key continues the thread. History is capped at 20 turns.RUN_LIVE=false: the chat is designed but not yet live.Checks
t27c typecheck: OK.t27c test-report: 19/19 at v4 (16 at v3, 10 at v1).TIMELINE_PAGES_MAX), the unread middle is a floor (more_is_lower_bound), checks take one read (CHECKS_ONE_READ), and an open costs at most 4 of the 60 public reads an hour (READS_PER_OPEN_MAX). MutatingTIMELINE_PAGES_MAXto 1 fails both new tests.STATUS_DOORwithSERVER_TOKEN_ENV: the server reads once for everyone (SERVER_READS_PER_OPEN1, newestSERVER_REFS_LASTreferences, a shared cache), and with no token the client reads as in v3 (status_source).MOVE_*: a move is one card through a Queen door that does not exist yet (MOVE_DOOR_EXISTSfalse,REGISTRY_PUT_IS_A_MOVEfalse), says the column the person saw, and targets only backlog or dropped. Mutatingmove_target_okto accept done fails the move test.assert(RUN_LIVE)fails 1 test.==on[]const u8, so the string values are pinned by the host test (999render/src/spec/kanban-card-chat.test.ts).The host implementation (render task thread, A2A continuation, the app's card sheet) lands in gHashTag/999-multibots-telegraf.
🤖 Generated with Claude Code