Repository navigation
test(acp): KAS 0.66.58 captures for markdown agents and the crewmate worker kit - #23534
Conversation
…worker kit Two live KAS captures, taken on kiro-cli 2.33.1 (KAS engine 0.66.58, read from the installed @kiro/agent package.json): - kas/markdown-agent-live.jsonl: a markdown agent read with load_agent_spec and bound with customAgents plus session/set_mode. Its body is applied as the prompt and its tools as the tool tags. ACP_BACKENDS_MARKDOWN_AGENT_SPECS now cites it, and its X_CAPTURE_ALLOWLIST entry is gone. - kas/worker-kit-live.jsonl: a worker spec built by merge_worker_spec from a base with read and shell and a crewmate file that adds a prompt and excludes shell. KAS ran it with the read tools only and followed the added prompt. ACP_BACKENDS_MATE_WORKER_KIT now cites it and joins G2's X_FEATURE_SETS. Both headers record kiro_cli_version beside agent_version (the engine). A test checks every live kas/ capture names an engine version. The X allowlist ceiling drops from 10 to 7. No runtime change.
UX Review (Opus 5.5) — ⏭️ skippedRevision |
Design Review (Opus 5.5) — ✅ PASSDesign-level review of Design-Verdict: PASS Nothing blocks: the change is test fixtures, gate registry data and comments, and the only thing it removes is one entry from an allowlist that can only shrink. Notes
[DESIGN-REVIEWED] 68b6b32 Description read[DESCRIPTION-READ] 99ef55398502dbe0336dee377c1be0f485ab91a6fa4bb5e8f0a35cc7b1d49f49 That sha256 names everything this verdict read: the PR description, plus the 1 evidence file(s) the workflow collected from it and handed this review. It covers that evidence because the media strip replaces every attachment URL with the same placeholder, so an edit swapping one attachment for another would leave the description's captured text identical while what this review judged changed. Recompute it with |
First Principles Review (Opus 5.5) — ✅ PASSPremise-level review of First-Principles-Verdict: PASS Nothing blocks: the change is test evidence only, and every item backs a set membership that already ships. Notes
What this change shipsInventory (6 items) — 5 justifiedIntent: back KAS's markdown-agent and worker-kit set memberships with live captures so the parity gate catches a KAS regression. This is a FIX (a gap in gate coverage, #23533).
[FIRST-PRINCIPLES-REVIEWED] 68b6b32 Description read[DESCRIPTION-READ] 2f33eeebe926e3200da8593193fb6e718987a0a761e7c5d7b0d3c88351476840 That sha256 names the PR description this verdict read. Recompute it with |
Opus 5.5 Review — ✅ no blocking findingsReviewed Verdict parsed from the review's SHA-scoped output markers for commit False positive or not applicable? A repository writer can comment: |
GPT 6.1 Review — ✅ no blocking findingsGPT 6.1 completed its review of This comment is updated in place on each push. Review detailsNo findings. False positive or not applicable? A repository writer can comment: |
|
Disposition, Design note (KAS 0.66.43 still drops the prompt): agreed, and it is out of this PR's goal. It is now tracked in #23549, which covers a version floor or notice and the 0.66.33 bundle pin, both owner decisions. No code change here. |
|
Disposition, First Principles item 5 (engine-version test is oversized): kept. The gate checks only that |
KiroCrewCaptain
left a comment
There was a problem hiding this comment.
Tier 1 auto-approve: test (9 files). Criteria: no conflict, no requested changes, security path denylist clean, design-doc gate clean, security checklist all-NO, no reviewer-lane findings, readiness signal fresh for this head SHA, declared category matches the diff. Category: adds two live KAS 0.66.58 ACP frame captures with their replay snapshots and tests, drops the harness-parity allowlist entry and lowers the capture ceiling they retire; the source edits are comments only, with no runtime change.
Problem / Motivation
Goal: Have the harness-parity gate (G2) check KAS's markdown agents and the crewmate worker kit against live KAS captures.
ACP_BACKENDS_MARKDOWN_AGENT_SPECS(kas) sat onX_CAPTURE_ALLOWLISTwith the note "live KAS 0.66.43 registers a markdown agent but ignores its prompt". The backend card still marksmarkdown_agentsas available on KAS.ACP_BACKENDS_MATE_WORKER_KIT(#23010) was not inX_FEATURE_SETSat all, so only unit tests covered it.Why it matters
Both sets decide what a KAS session runs: the agent's prompt and tools, and a crewmate worker's prompt and switched-off tools. With no capture behind them, a KAS release that drops either one would go unnoticed. That is what happened on KAS 0.66.43.
Not a goal
kas/fixtures. They already record the engine version inagent_version.What changed (motivation → approach → change)
A re-measure on kiro-cli 2.33.1 (KAS engine 0.66.58, read from the installed
@kiro/agentpackage.json) shows KAS applies the custom-agent prompt now. I recorded that as two live captures, each sent through main's own projection code:ACP_BACKENDS_MARKDOWN_AGENT_SPECS(kas)X_CAPTURE_ALLOWLISTkas/markdown-agent-live.jsonl; allowlist entry removedACP_BACKENDS_MATE_WORKER_KIT(kas)X_FEATURE_SETSX_FEATURE_SETS; citeskas/worker-kit-live.jsonlmarkdown-agent-live.jsonl: a markdown agent (tools: [read], a body that asks for one fixed reply) goes throughload_agent_spec→build_kas_custom_agents→customAgents+session/set_mode. The last_kiro/tools/didChangelists onlyread, and the model gives the fixed reply.worker-kit-live.jsonl: the spec comes frommerge_worker_spec(base, worker_additions(base, mate)). The base hasreadandshell. The crewmate file adds a prompt and excludesshell. The lasttools/didChangelists onlyread. The model lists read tools, noexecute_bash, and ends with the phrase the crewmate prompt asked for. A control run without the exclusion listedreadandshelland namedexecute_bash; it is not committed.kiro_cli_versionbesideagent_version(the engine version).docs/ci/harness-parity-gate.mdsays so in one line.X_CAPTURE_CEILINGgoes from 10 to 7, matching the 7 entries left.Sanitizing: agent-to-client lines only. The session id and engine uuids are synthetic, the scratch dir reads as
/work, and home reads as~. Host inventory frames are dropped, except the lasttools/didChange.Backwards compatibility
Compatible: only test fixtures, comments, the gate's registry and allowlist, and tests change; no runtime path is touched.
Removes nothing: the only removal is an
X_CAPTURE_ALLOWLISTentry, and that allowlist is shrink-only by design.Tests
test_kas_custom_agents_are_proven_by_their_own_captures: both sets are inX_FEATURE_SETS, off the allowlist, cite their capture, and gain a gap when the citation is changed.test_the_markdown_agent_capture_shows_its_prompt_and_tools_applied,test_the_worker_kit_capture_shows_the_crewmate_prompt_and_limit_applied: these read the reply and the last tool tags from each capture.test_every_live_kas_capture_names_the_engine_version: every livekas/capture has a dottedagent_versionthat differs fromkiro_cli_versionwhen both are present.test_dropping_an_x_set_is_refusednow dropsMATE_WORKER_KIT, because the markdown allowlist entry is gone.X_FEATURE_SETSentry, one at a time; each removal fails these tests.test_acp_frame_replay.pyreplays both new captures from their.expected.json.Proof: not provable -- test-only change
Manual verification
The captures are live runs of local kiro-cli 2.33.1. Locally I ran
check_harness_parity.py(7 + 0 allowlisted),check_acp_frame_host_data.py,docs-lint.sh, and the parity, replay and card suites (1813 passed). A local GPT and Opus review found nothing.Related Issues
Fixes #23533
Possible textual overlap: #23388 adds a line higher up in
X_FEATURE_SETS. #22911 edits a different comment block inbackends_members.py.Checklist
feat|fix|docs|style|refactor|perf|test|chore|ci|build|revert: ...)Contribution License Agreement
Contributed under the project's Apache-2.0 license.