Skip to content

spec(automation): kanban-card-chat -- a card opens its agent conversation - #5389

Merged
gHashTag merged 6 commits into
masterfrom
feat/kanban-card-chat-spec
Oct 2, 2026
Merged

gHashTag merged 6 commits into
masterfrom
feat/kanban-card-chat-spec

Conversation

@gHashTag

@gHashTag gHashTag commented Oct 1, 2026 •

Copy link
Copy Markdown
Collaborator

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:

  • The thread key. task:gHashTag/<repo>#<n>, owned by this repo's owner only. A bare number takes the board's repository and is never guessed.
  • Ownership. The thread is per person and never splits. A specialist may join it; a client, a room or a ?c= conversation may not.
  • The frame envelope {v:1, type:'t27-app', kind:'open-card'}, accepted from the same origin only.
  • The task note handed to the model. It is bounded (NOTE_MAX 1200) and fenced as foreign text. It says so when the board is down or the card is untitled.
  • The sheet. It is mobile first: it opens at half, the composer stays pinned, GitHub is a secondary link, touch targets are ≥ 44 px.
  • The address ?card=<n>[&repo=].
  • A2A. Either metadata.task or a contextId equal 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).
  • v2 adds the card's work: linked PRs, the worst check state, and "not measured" as distinct from "no PR".
  • v3 adds limits found against live GitHub. The timeline is read at both ends (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). Mutating TIMELINE_PAGES_MAX to 1 fails both new tests.
  • v4 adds the server read and the move contract. STATUS_DOOR with SERVER_TOKEN_ENV: the server reads once for everyone (SERVER_READS_PER_OPEN 1, newest SERVER_REFS_LAST references, 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_EXISTS false, REGISTRY_PUT_IS_A_MOVE false), says the column the person saw, and targets only backlog or dropped. Mutating move_target_ok to accept done fails the move test.
  • Negative control: assert(RUN_LIVE) fails 1 test.
  • Every test is numeric or boolean. The Zig backend refuses == on []const u8, so the string values are pinned by the host test (999 render/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

…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>
@github-actions

github-actions Bot commented Oct 1, 2026

Copy link
Copy Markdown
Contributor

📓 NotebookLM Notebook linked to this PR

This notebook contains session context, decisions, and artifacts for this work.

@github-actions

github-actions Bot commented Oct 1, 2026

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-10-01 09:32:58 UTC

Summary

Status Count
Total Open PRs 46
PRs with Failing Checks 42
PRs with All Checks Green 4
READY 3
FAILING 42
PENDING 0
NO CHECKS YET 0

These columns do not partition: 3 + 42 + 0 + 0 = 45, and there are 46 open PRs. A PR is being counted twice or not at all.

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=403499176a5d != manifest seal=87e5cbd3ad94.
    The committed NMSE numbers were certified against an older compiler.rs.
    Run scripts/reseal-check.sh locally for the two-step reseal command (advisory; not a merge gate).

…, 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>
@github-actions

github-actions Bot commented Oct 1, 2026

Copy link
Copy Markdown
Contributor

📓 NotebookLM Notebook linked to this PR

This notebook contains session context, decisions, and artifacts for this work.

@github-actions

github-actions Bot commented Oct 1, 2026

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-10-01 13:14:21 UTC

Summary

Status Count
Total Open PRs 49
PRs with Failing Checks 46
PRs with All Checks Green 3
READY 3
FAILING 46
PENDING 0
NO CHECKS YET 0

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=403499176a5d != manifest seal=87e5cbd3ad94.
    The committed NMSE numbers were certified against an older compiler.rs.
    Run scripts/reseal-check.sh locally for the two-step reseal command (advisory; not a merge gate).

@github-actions

github-actions Bot commented Oct 1, 2026

Copy link
Copy Markdown
Contributor

📓 NotebookLM Notebook linked to this PR

This notebook contains session context, decisions, and artifacts for this work.

@github-actions

github-actions Bot commented Oct 1, 2026

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-10-01 14:42:03 UTC

Summary

Status Count
Total Open PRs 48
PRs with Failing Checks 45
PRs with All Checks Green 3
READY 3
FAILING 45
PENDING 0
NO CHECKS YET 0

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=403499176a5d != manifest seal=87e5cbd3ad94.
    The committed NMSE numbers were certified against an older compiler.rs.
    Run scripts/reseal-check.sh locally for the two-step reseal command (advisory; not a merge gate).

@github-actions

github-actions Bot commented Oct 1, 2026

Copy link
Copy Markdown
Contributor

📓 NotebookLM Notebook linked to this PR

This notebook contains session context, decisions, and artifacts for this work.

This was referenced Oct 2, 2026
@gHashTag gHashTag added the bee-reviewed A reviewer bee reviewed and verified this PR at its current head; the only merge signal (#5525) label Oct 2, 2026
@gHashTag

gHashTag commented Oct 2, 2026

Copy link
Copy Markdown
Collaborator Author

Reviewer bee W -- verified at head a6626feb10.

Evidence (fresh clone under /tmp, master 6111696, t27c built from master):

  • t27c typecheck specs/automation/kanban-card-chat.t27 -- OK
  • t27c seal specs/automation/kanban-card-chat.t27 --verify -- all hashes MATCH (also MATCH under the compiler of fix(compiler): assert (a & b) == c is one condition, not assert(a & b) then == c #5594, which lands alongside)
  • t27c test-report -- 23/23 pass, 0 FAIL
  • Diff is exactly what the title says: one new spec, its seal, one docs/now entry. No money / wallet / payments_v2 content.
  • The spec is VERSION 6 while the PR body describes v4; the body is out of date, but the spec is self-consistent. The token constants name env vars (GITHUB_READ_TOKEN, TRIOS_API_TOKEN) and carry no values.
  • 'Documented t27c subcommands' and duplicate-bodies are red on this older base (opened Oct 1); the PR touches neither.

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.

@gHashTag
gHashTag merged commit e58f4be into master Oct 2, 2026
27 of 32 checks passed
@gHashTag
gHashTag deleted the feat/kanban-card-chat-spec branch October 26, 2026 05:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bee-reviewed A reviewer bee reviewed and verified this PR at its current head; the only merge signal (#5525)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant