Skip to content

Releases: agent-kit-startup/agent-kit

v5.9.0

Choose a tag to compare

@agent-kit-startup agent-kit-startup released this 15 Sep 12:42
30101a1

Fixed

  • npx install / update no longer send you to a stale PATH agent-kit. A global or pnpm shim at an older version (the binary that prints agent-kit v5.7.0 after npx @latest install) used to be treated as "on PATH, run it directly". init/update from that binary then re-stamped the overlay. Install, init and update now compare PATH's package.json to this CLI, print the pinned npx -y @dadado/agent-kit-cli@<this-version> form, and on an interactive TTY with a writable npm prefix run npm i -g at that pin. setup-global no longer exits "nothing to fix" when the prefix is writable but PATH is missing or old. status names overlay/PATH drift and the same pin.
  • agent-kit run-plan-all is a terminal command. Welcome and docs treated the queue as chat-only. agent-kit run-plan-all, agent-kit run run-plan-all, and agent-kit /run-plan-all dispatch .cursor/commands/run-plan-all.md (numbered-list HITL; not the run-plan tick loop). Typing /run-plan-all in zsh is a filesystem path. /git-prod and /kit-prod stay operator-gated.

v5.8.0

Choose a tag to compare

@agent-kit-startup agent-kit-startup released this 14 Sep 14:14
0700035

Added

  • Pending-only plan index. agent-kit plan-index (and sessionStart) writes .cursor/context/plan-index.json from HANDOFF-named plans. /continue-plan, /run-plan-all, and Broad Intake read index + HANDOFF; they do not glob .cursor/plans/*.plan.md.
  • Agent signature guard in git-hooks/prepare-commit-msg. The hook was Cursor-only (it removed one Co-authored-by: Cursor trailer). It now strips any known coding-agent signature or session link from the commit message before it is recorded: Claude Code Co-Authored-By: Claude ... <noreply@anthropic.com> and Claude-Session: https://claude.ai/code/... trailers, Cursor, Copilot, Codex, Gemini, Devin, Aider and peer co-author trailers, the 🤖 Generated with Claude Code footer and Made with Cursor lines, and agent session URLs. Human Co-authored-by: trailers are kept (matching is on agent names, agent mail domains and session hosts, never on the trailer key). The pattern list is embedded in the hook (--list), so the documented single-file copy install stays self-contained, and a new --check [file|-] mode scans a message or PR body and exits 1 with the offending lines (the /git-staging and /git-prod routines run it as a hard stop, see the next bullet). POSIX sh, BSD and GNU grep. node --test scripts/git-hooks-prepare-commit-msg.test.mjs (in pnpm test:root-node). Scope, honestly: the hook strips on the machine where it is installed and does not rewrite history; the private factory branches already carry such trailers on past commits, while the public mirror's sync commits are written by scripts/sync-public.mjs with their own message and were found clean. Install: git-hooks/README.md.
  • Public repo is humans-only, technically now, not just by policy. git-hooks/pre-push and agent-kit guard shell both refuse a direct write to the public mirror repo (agent-kit-startup/agent-kit, never this private repo) — pre-push blocks any push whose remote URL resolves there regardless of branch, and the shell guard's new public-repo-direct-write rule blocks git push (by URL, -R/--repo, or a named remote resolved via git remote -v) and gh pr create / gh pr merge naming that repo directly, same ALLOW_PUBLIC_PUSH=1 escape shape as the existing ALLOW_MAIN_PUSH gate on both layers (independent of it — the public repo's main branch still needs both). gh issue * and gh api against the public repo are named, not-covered gaps (not silently enforced). Agents ship product changes to the public repo only through scripts/sync-public.mjs via CI, as before; this closes the "an agent shell could otherwise push/PR there directly" gap. Local guard only — it is not a substitute for GitHub branch protection or CODEOWNERS on the public repo itself, which stay an operator decision.
  • Agent signature gate in /git-staging and /git-prod (/kit-staging and /kit-prod inherit it). Both routines now run git-hooks/prepare-commit-msg --check as a hard stop, in the same shape as the Evidence-checks merge gate: /git-staging scans the outgoing commit messages (git log origin/staging..HEAD --format=%B) before git push and the PR body (gh pr view <N> --json body) before gh pr merge; /git-prod scans the whole promotion delta (git log origin/main..origin/staging --format=%B) and, on the PR lane, the staging→main PR body before the merge to main. Exit 1 lists the offending lines and the routine stops until the message is reworded; exit 2 (missing hook) counts as red. This closes the "uninstalled hook" gap: a Co-Authored-By: Claude ... / Claude-Session: trailer, a Generated with <agent> line or an agent session URL that reached a branch commit (no hook, --no-verify, a commit made elsewhere) is caught before it can land on staging or main, where a squash merge would otherwise copy it into the branch history. Scope, honestly: the gate runs on the machine executing the routine; there is no server-side check on the private repo yet. SoT: .cursor/commands/git-staging.md step 5, git-prod.md step 5, autogit/gitupdate.md Prompt git staging §8–9 and Prompt git prod §5 and §7; git-hooks/README.md.
  • Install on a fresh Ubuntu 24.04 server (docs/install-ubuntu24-bare-metal.md): a consumer recipe for a bare-metal or VM box with no Node.js and no terminal attached (cloud-init, Ansible, bash -c over SSH). NodeSource Node 20+ unattended, git init to clear the project-root guard without a prompt, npm_config_cache=... npx -y @dadado/agent-kit-cli@latest install --yes with a cache directory owned by the install, status to verify, and a recovery table for the EPERM cache-ownership and exit 255 signatures. Same CLI-first path as Getting Started, Port B stays the fallback, L0 only (no Ubuntu pack). Validated end-to-end on a clean Ubuntu 24.04 host on 2026-09-12: install, status, and the no-terminal (bash -c ... </dev/null) case all completed cleanly, no EPERM or exit 255. Pointers from install.md, Getting Started and the docs index.
  • agent-kit run <slash> starts one headless session whose prompt is the L0 command file under .cursor/commands/. --backend auto selects the first installed agent CLI (cursor-agent, then claude). Cursor Ask questions stays Cursor-only; headless confirmations are a numbered list. /git-prod is omitted from the catalog and is never auto-promoted. agent-kit run-plan stays the existing one-tick loop.
  • --backend claude for headless plan-loop ticks. agent-kit run-plan --backend claude (and the agent-kit run run-plan alias) runs each tick as headless claude -p under the same one-tick contract as cursor-agent: one to-do per tick, LOOP_TICK_RESULT sentinel, /git-staging on a diff, never /git-prod. --backend auto no longer fails on a machine where only claude is installed. ANTHROPIC_BASE_URL / ANTHROPIC_AUTH_TOKEN pass through to the tick for gateway routing and are redacted in every tick log, tip and error on every backend, cursor-agent included (chunk-boundary safe; the gateway host and common encoded forms — JSON-escaped, URL-encoded, base64 at value start — are elided too, not only the exact value); agent-kit run <slash> on the claude backend gets the same env passthrough, log redaction and headless permission flags (--dangerously-skip-permissions --permission-prompts none), so a dispatched git-staging can actually commit. The claude child env drops the four nested-session markers the claude CLI itself strips (CLAUDECODE, CLAUDE_CODE_SESSION_ID, CLAUDE_CODE_CHILD_SESSION, CLAUDE_CODE_BRIDGE_SESSION_ID). Pre-spawn checks: claude >= 2.1.259 and the .claude/commands/run-plan.md adapter (agent-kit install --claude), each refused with a named cause. Opt-in caps AGENT_KIT_CLAUDE_MAX_TURNS / AGENT_KIT_CLAUDE_MAX_BUDGET_USD (no default). A tick whose stream-json result carries is_error stops the loop with the result subtype on the console. Console tips print workspace-relative paths and collapse the home directory to ~. Reverses the Not --backend claude plan-loop ticks non-goal at every documented site under the reservation in ADR 2026-08-13_claude-cli-ultracode-orchestration-thin-adapter.md; the audits reviewer key externalPlanReview.backend: "claude" is a different field and is untouched. Plan major-tom Phase 1; ADR 2026-09-04_major-tom-autonomous-mode.md. MINOR.

Changed

  • Cursor Projects (beta, shipped 2026-09-10) studied and decided: no structural change. Primary-source study (docs/research/cursor-projects-study.md) and ADR 2026-09-12_cursor-projects-thin-adapter.md conclude Mission Kit's continuity model (HANDOFF/plans), plan-loop BackendId (cursor-agent/claude only), Mission Control's local-only/copy-only posture, and thin hook adapters all stay as-is — Projects is a Cursor-native surface the operator may use directly. docs/cursor-3-features.md (retitled from "Cursor 3.0 Features," same filename) gains a Projects row; docs/cursor-native-audit.md gains a Projects inventory row, a refreshed last-refreshed date, and records that agent-kit cursor-awareness --check does not detect Projects (no feature-keyword diff, only open action items and a version-number baseline).
  • Mission Control TUI paints field labels with the muted visual-kit token and status / lifecycle values with dashboard --green / --yellow / --red / --cyan. NO_COLOR, CI, and non-TTY frames stay uncolored.

Fixed

  • agent-kit update no longer silently overwrites a customized hook or script. The consumer overlay that preserves edited kit files now covers .cursor/hooks/ and .cursor/scripts/ in addition to agents, skills and commands. A consumer that widened .cursor/hooks/pre-commit/check-secrets.sh (a security control) lost that edit to a no-version-change apply that printed only + path; the file now stays as the consumer left it, is reported under Preserved customized overlay with its path, and the output says where the change belongs (agent-kit diff, agent-kit contribute, or a single-path protected pin). Unedited hooks and scripts still refresh, including copies shipped at v5.3.0–v5.7.0. The manifest personalization.generatorVersion is also restamped with the applying CLI version on every apply so it no longer disagrees with version after an update (the personalization result file itself is not regenerated).
  • install and doctor warn when the running CLI is behind npm latest, honoring the existing updateCheck opt-in and interval (no network on every invoke by default). Recovery and post-install npx copy pin @latest. Mission Control TUI quit is exact q / Q / Ctrl-C, not a substring.
  • Mission Control TUI live view: q quits, refresh no longer stacks collectors, a non-git cwd stays quiet, and the CLI pack gate pins dashboard/lib data deps (semantic-model, terminal-snapshot, triage-heading, live-refresh).
  • **`agent-kit upd...
Read more

v5.7.0

Choose a tag to compare

@agent-kit-startup agent-kit-startup released this 27 Aug 20:35
0d2d8c3

Changed

  • Consumer install copy is Cursor-first: root package.json, README eyebrow, and getting-started no longer list VS Code or Windsurf as peer IDEs. Partial generators still ship; Action A7 (generator parity) stays a non-goal.
  • Mission Kit landing shows the current public release version (New release pill plus a link to the public GitHub Release) and short product notes in the existing changelog field, matching the original pill-and-frame visual. Release version and product notes are static page fields, not a third-party feed or a factory-changelog dump. Operators stamp those two fields with pnpm landing:update-release (does not deploy).
  • Consumer documentation rewritten with usage-first Fable copy. README hero section, getting-started guide, and CONTRIBUTING page now focus on concrete install steps, surfaces, and day-to-day workflow. Retired five-layer claim matrix from consumer storefront; factory evidence files preserved for CI.

Added

  • Public changelog filter: public GitHub CHANGELOG.md, GitHub Release notes, and the landing product-notes field publish only consumer and contributor product notes. Factory-only bullets stay behind <!-- changelog-private --> fences. Preview with node scripts/public-changelog.mjs; landing stamp uses --version X.Y.Z --blurb (never pass CHANGELOG.md as --notes-file).
  • /kit-staging and /kit-prod wrap native /git-staging and /git-prod (those stay git-only: branch/MR for staging, stagingmain plus tag and npm for prod). When a product changelog or release actually changed, the kit bundles add a surgical public-landing field update and, after an explicit Ask, deploy the landing to staging or promote it to production. docs(memory) monitor commits do not trigger a landing deploy. Repo-only shipping stays the native git commands.
  • CLI-native Mission Control TUI (agent-kit mission-control): browser-free ASCII view of Mission, Flight Log, Checklist, and Crew Monitor. Reuses dashboard/dashboard-data.mjs / semantic-model.mjs without starting the HTTP server; live refresh uses the existing PERIODIC_REFRESH_MS poll. Visual-kit tokens (HELMET_* / LABEL_MUTED) and TTY / NO_COLOR / CI / AGENT_KIT_REDUCED_MOTION gates stay as in ADR 2026-08-13_cli-visual-kit-space-chrome.md. ADR 2026-08-27_cli-native-mission-control-tui-thin-deps-third-surface.md records stay-inside-thin-deps (@clack/prompts / citty / kolorist only; no Ink/ora/chalk/figlet) and that the TUI is a third surface, not a Path C replacement. Claude Code /agent-kit renders mission-control --once (one-shot; not a live loop). Plan cli-native-mission-control-tui.
  • Mission Control Git tab visual tree + new DevOps tab. The Git tab's existing markdown git log --graph block stays as-is; a new state-colored vertical tree renders next to it, reusing the .now-stepper/.now-step-marker timeline primitive built for the Current Mission panel (parses SNAPSHOT.git.graph's commit lines, flattened to one row per commit — HEAD/promoted-to-origin/main-or-origin/staging state-colored, degrading to a compact empty-state on an unparseable graph). New DevOps tab (#devops, nav dot, hash-deep-linkable) is scoped to CI/CD + deploy signal, distinct from the existing local-process-only Processes tab: a pipeline card from a new dashboard-data.mjs gh run list collector (budget-guarded, fails soft to an honest empty-state when gh is unavailable/unauthenticated or the run itself would blow the snapshot's soft time budget), and a best-effort "what shipped recently" deploy-activity card from v* git tags + the latest non-Unreleased CHANGELOG.md entry — deliberately not a live infra/hosting poll, and says so. dashboardDataVersion 1.3.0 -> 1.4.0. Plan mc-git-tab-visual-tree-and-devops-panel.
  • Per-agent/subagent context-usage cap, docs + enforcement: ADR 2026-08-24_agent-context-usage-cap-window-pressure.md sets a <=50%-of-window target using the existing context_usage_percent signal from the Cursor preCompact hook — the only real local window-pressure signal, reused exactly as-is (no new token/cost telemetry, no violation of the standing 2026-08-14_mc-idle-session-token-cost-no-go.md no-go). Documents the operator's "190k tokens" framing as a window-size-class ratio (200K-class ~95%, 1M-class ~19% — hence the enforceable cap is a percentage, not a literal token count), and the coverage gap that preCompact is Cursor-only (no signal exists for Claude Code sessions today). packages/cli/src/hooks/pre-compact.ts gained CONTEXT_USAGE_CAP_PERCENT = 50 and threshold logic in buildPreCompactUserMessage: a preCompact firing at/above the cap (or with no reported percentage — auto-compaction implies high pressure) escalates the emitted user_message to name the cap and force a HANDOFF checkpoint before continuing; below-cap firings keep the original gentle wording. .cursor/commands/run-plan.md's tick-close contract gained step 3a treating an observed escalated firing as a mandatory (not optional) HANDOFF checkpoint. New packages/cli/src/hooks/pre-compact.test.ts (5 tests). Also surveyed 5 real third-party token-reduction/context-compression tools (Headroom, Caveman, Graphify, atlassian-labs/mcp-compressor, Tokalator) for scam/legitimacy risk — all rated evaluate-further (no confirmed malicious signal in any, but three show anomalous star-velocity worth independent scrutiny before reliance); none installed or adopted. Plan agent-context-cap-and-token-tool-research.

Fixed

  • DevOps tab pipeline card: collectPipelineRuns()'s gh run list timeout (GH_RUN_LIST_TIMEOUT_MS) had no real headroom over this repo's observed latency — 3500ms against live-measured samples spanning 2.1-9.9s across sessions (8 fresh samples this pass: 3476-6584ms, one 7674ms outlier). Fixed in dependency order: (1) the collector now runs last among the snapshot's budget-guarded collectors (after processes, detached-audit-sessions, agentPrompts, externalReports, subagentRuns), not ahead of them, so a slow gh network call can no longer starve the local-only collectors sharing SNAPSHOT_BUDGET_MS; call cost trimmed too (--limit 10 -> 5, unused databaseId/url --json fields dropped — neither is read by the card). (2) GH_RUN_LIST_TIMEOUT_MS raised 3500ms -> 12000ms with real margin over the measured range; SNAPSHOT_BUDGET_MS default raised by the same delta (12000ms -> 20500ms) so the larger reserve the collector needs is actually available. (3) The pipeline card's empty-state copy no longer unconditionally blames "gh is unavailable or not authenticated" — the collector now returns a reason ("budget" when the shared snapshot budget ran out before gh was even attempted, "call-failed" when gh was attempted and failed/timed out) and the card copy follows it. Live 5-run + 1-diagnostic-budget verification (this sandboxed dev environment) found the dominant real failure mode is in fact "budget": a separate, out-of-scope collector (SNAPSHOT.git, ~10 unguarded execSync calls with no budget check) is consuming the entire default budget on its own here, before the snapshot even reaches the now-last-placed pipeline collector — confirmed via a diagnostic run with AGENT_KIT_DASHBOARD_DATA_BUDGET_MS=60000, which returns available: true with real runs. That collector is unguarded/unbudgeted and outside this fix's scope; noted as a residual. Plan close-mc-git-tab-devops-pipeline-timeout-residuals.

v5.6.0

Choose a tag to compare

@agent-kit-startup agent-kit-startup released this 24 Aug 12:31
da27299

See CHANGELOG.md for full details.

v5.5.0

Choose a tag to compare

@agent-kit-startup agent-kit-startup released this 22 Aug 16:55
2920928
chore: sync private v5.5.0 (8bb0ffd) (#47)

v5.4.0

Choose a tag to compare

@agent-kit-startup agent-kit-startup released this 16 Aug 15:02
b77eebf
chore: sync private v5.4.0 (65d20e0) (#46)

* chore: sync private v5.4.0 (65d20e0)

* Apply suggestions from code review

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: agent-kit-sync <sync@agent-kit.dev>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

v5.3.0

Choose a tag to compare

@agent-kit-startup agent-kit-startup released this 15 Aug 22:57
701e9f6

5.3.0 - 2026-08-15

Added

  • Optional Cursor Cloud Agents audits backend (externalPlanReview.backend: "cloud"), pin only.
  • Spec Kit SDD mapped onto existing Agent Kit surfaces (adapt vocabulary, ignore runtime).
  • Multi-instance Mission Control broadcast: per-workspace port, honest preflight, no kill recipe.

Fixed

  • HANDOFF HITL provenance; /backlog-add never-Ask on confirm-provider; wait-slice exit 3 same-session resume; broadcast preflight names listeners and does not kill strangers.

Changed

  • Marketplace Core Pack submission pending review.
  • Dogfood and audit path stays on main commands (/run-plan, /run-plan-all, /continue-plan, /backlog-add).

v5.2.1

Choose a tag to compare

@agent-kit-startup agent-kit-startup released this 14 Aug 15:20
e633cbf

[5.2.1] - 2026-08-14

Changed

  • Marketplace SoT no longer claims the public plugin manifest is 4.8.9 / metadata-only. Public .cursor-plugin/plugin.json is 5.2.0 with explicit component paths; live Cursor Marketplace submission stays publisher HITL and unchecked (docs/marketplace.md, docs/cursor-update-awareness.md, docs/comms-channel-map.md, docs/cursor-native-audit.md).
  • Marketplace / plugin logotype is dashboard/logo-marketplace.svg: 512×512 (1:1) SVG, transparent square canvas, rounded #0b0e14 plate, Cursor-skin stroke mark centered. Mission Control chrome still uses unplated dashboard/logo.svg (legacy) and dashboard/logo-cursor.svg (Cursor skin).
  • Production also versions the Mission Control logo marks (helmet, cursor-skin, marketplace plate) under assets/production/ (private; not public-synced).

Fixed

  • /plan-review-triage no longer tells agents to suggest Field Report Review all or /field-report-review when every monitor is already triaged. Next step is /plan-external-review if a new review is owed, or a Flight Log Copy triage command paste. There is no /field-report-review slash command and no Mission Control Review all button.

v5.2.0

Choose a tag to compare

@agent-kit-startup agent-kit-startup released this 14 Aug 12:59
720834e

Release v5.2.0 (synced from private source of truth).

Added

  • Overlay known-hashes refresh helper (pnpm overlay:hashes)
  • Knowledge-classification dirty-tree guard (--require-clean-tree)
  • Dashboard guards.d.mts export parity (49/49)
  • Factory CI Evidence checks run root node --test suites

Changed

  • Audits Claude reviewer default is sonnet so --permission-mode auto can run
  • sessionStart adapter emits a degraded-mode diagnostic when kit resolve fails
  • /plan-review-triage names closeout_depth sources and Hard stop 5 override

Fixed

  • Cursor-awareness inventory/stamp at resolved root; walk-up stops at .git
  • Factory composed pre-commit (main-guard + secrets/JSON when present)
  • Mission Control progress math and readable non-error colors
  • Cache lock hardening and install exitCode recovery path
  • Public-sync denylist fail-closed; Path C skips factory-only tests

See CHANGELOG.md for the full 5.2.0 notes.

v5.0.0

Choose a tag to compare

@agent-kit-startup agent-kit-startup released this 12 Aug 13:51
734c4a7

Fixed

  • agent-kit cursor-awareness --check: walk up from --cwd to find docs/cursor-native-audit.md (fixes false Missing inventory when the shell is under packages/cli or another nested path); consumer/missing-docs path returns an actionable --cwd hint. Native-audit Action table: A5 Done (root AGENTS.md present), A4 Partial with dual-lane next step, A7 Open with scoped multi-IDE next step; A6 unchanged.

  • Pre-v5.0.0 evidence gate: R14-pair mid-batch monitors plan-monitor-fix-staging-ci-and-queue-end-product-residuals.md and plan-monitor-close-ship-5.0-npm-npx-install-residuals.md with _index.md Audits rows and regenerate docs/evidence/knowledge-classification.json so pnpm evidence:knowledge-classification:check is green again (Still open A from ship-5.0 clean pre-git-prod gate).

  • Pre-v5.0.0 tag gate: re-verify lint/typecheck/tests/deny-links/evidence/landing/Path-C-pack on staging 71dbbae; persist matrix at docs/evidence/runtime/ship-5.0-pre-tag-green-gate-2026-08-12.md; R15 Closed-by A/B on plan-monitor-ship-5.0-clean-pre-git-prod-gate.md. No tag; no /git-prod.

  • Landing closeout: factory CI runs pnpm landing:build + landing:build:check; Align Closed-by pointer notes public LICENSE still pending /git-prod; R15 Closed-by appends on the five queue-end monitors (Design SoR re-absorb + clipboard success-path evidence still owed before next sync).

  • Mission Control broadcast: live missionkit.io/mc/open.html matches repo harden (R1 verified by sha256); start-broadcast degrades to LAN/token print when share encode rejects non-RFC1918 primary LAN (Tailscale 100.64/10); HTTP-level serve auth matrix covers /open + /open.html without token vs token-gated data.

  • Mission Control preferred-browser residuals: CLI uses resolveContextConfigPath; OS-default and fallback opens detect failure before claiming success; reject win32/cmd metacharacters " % ^ ' = , +; expand hermetic which/win32 spawnSync tests; ADR trust-boundary + failure-honesty updated.

  • Dogfood L0 nits: /run-plan-all per-plan worker template states orchestrator already skimmed Unprocessed; drop inert PO dogfood read_scope paths; promote /continue-plan dogfood preflight to its own hard stop (runs regardless of externalPlanReview.preflight); overlay hash set +2.

  • Dogfood Unprocessed parser: accept markdown table rows and numbered list items; terminate the Unprocessed section on any Processed Files heading (stops mixed H2/H3 leaks).

  • Knowledge-classification CLI: default to the handoff fixture and refuse baking live .cursor/HANDOFF.md into the tracked ledger unless --allow-live-handoff (prevents repeated Evidence-check red after bare node …mjs regenerations).

  • Staging Evidence checks: regenerate docs/evidence/knowledge-classification.json via pnpm evidence:knowledge-classification (handoff fixture) and R14-pair five queue-end plan monitors plus _index.md Audits rows so evidence:knowledge-classification:check is green again.

  • missionkit.io install / prompt copy CTAs: await clipboard writes, show honest failure UI (not optimistic ✓), and fall back to execCommand when the Clipboard API rejects; decorative "Copy plan path" / "Copy /git-staging" mock buttons marked disabled. Built via landing:build, deployed to Hostinger; Design SoR re-absorb notes in UPSTREAM-DESIGN-FIX-PROMPT.md.

  • Mission Control preferred-browser residuals (A–H): validate preferredBrowser as an app/binary name (reject path separators and shell metacharacters); attach spawn error handlers and fall back once to the OS default opener with honest starter messages; align start-broadcast.mjs preference root with resolveSnapshotRepoRoot; share normalizePreferredBrowser / OS_DEFAULT_TOKENS with the CLI; document per-platform values and factory/CLI-only /dashboard-broadcast slash; expand hermetic tests (win32, spawn-failed, invalid-url, fallback). Pack-gate hygiene I remains on broadcast F8. ADR 2026-08-11_mission-control-preferred-browser.md

  • Dogfood Broad Intake / sessionStart now accept consumer ## Unprocessed Files as well as factory ### (parser ends on same-or-higher heading); /dogfood pins H3 on new consumer writes; ADR decision 2 append-only correction; bucket-count prose uses table-as-SoT (no hardcoded numeral); /run-plan-all orchestrator owns Unprocessed preflight (workers skip re-recite); docs/external-plan-review.md Broad Intake row names the dogfood bucket

  • Cache lock release fail-closes when owner metadata is missing, unreadable, or mismatched (no longer deletes a successor's lock during the mkdir → owner publish window); owner.json is published via temp file + rename; install RootRefusedError matches update (process.exitCode = 1 + return) so cleanup/finally stay reachable

  • Crew Monitor structural pin (residuals E/F from close-crew-glyph-avatar-still-open): expectBadgeIsRowSiblingBeforeActor now whole-template-counts ${chipHtml} / chip classes to zero and requires exactly one ${badgeHtml}, closing the half-locked sibling gap left by the retired feed-label helper; empty-template assertion names the crewMonitorRowRenderTemplate marker for clearer diagnostics

  • npm pack --dry-run --json now receives clean JSON on stdout because the CLI dashboard prepack sync message is written to stderr.

  • Close multi-workspace install isolation residuals D2/L1/L2/L4/P2/P3: mode-independent root guard for --yes/$HOME///no-git+no-manifest with --force-root escape hatch; cache lock ownership token (PID/UUID) with mtime refresh and ownership check before stale reclaim/release; hold cache lock across install/update/add/diff/contribute registry copy; refused update exits non-zero; dashboard-broadcast.md derives MC_PORT from repo root; install.md Port B notes chat-install Ask as the confirmProjectRoot equivalent. D3/L3/P1 were already fixed at HEAD (see .cursor/memory/plan-monitor-multi-workspace-install-isolation.md Closed-by section).

  • Close vscode-first-install dashboard onboard residuals C/E/K/J-vscode: skip-if-exists guard for .vscode/settings.json, .github/copilot-instructions.md, and .vscode/security-review.agent.md; generated artifacts registered in protectedPaths and PersonalizationResult.items; generator/vscode.test.ts pins the guard; docs/getting-started.md splits npx -y (suppresses npx's own confirmation) from CLI --yes / AGENT_KIT_YES=1 (skips project-root prompt); terminal.test.ts pins isNonInteractive for CI, AGENT_KIT_YES, and stdin.isTTY. A/B fixed at HEAD; D2 owned by multi-workspace plan; F/G/H/I out of scope.

  • Close BIGFIX PTY monitor still-open residuals R1–R7: build job checkout now uses fetch-depth: 0; risk-hotspot scorer no longer depends on a shallow-unresolvable git range; knowledge-classification --check ignores commit provenance fields; ledger census scopes to tracked paths; HANDOFF Gaps updated to honest red-build voice; behavioral tests added for wait_for_pty_progress banner-baseline and deadline logic; liveness probe for cap/warn concurrent-arm refusal documented as backlog

  • Config persona Inherit default sends null to clear a stored mode override (guards merge delete path)

  • Overlay update: end-to-end ledger-absent evidence that known-shipped files refresh while customized peers stay preserved (docs/evidence/overlay-update-preserve-refresh.md)

  • SECURITY.md: private vulnerability reporting preferred first when enabled; public no-detail issue is fallback; PVR enable remains repo-admin HITL

  • CLI welcome helmet outline uses HELMET_OUTLINE via trueColor; test asserts rendered ANSI

  • CLI welcome grouped help: await citty Resolvable<CommandMeta> in help-groups.ts and accept generic CommandDef<T extends ArgsDef> so pnpm typecheck and packages/cli DTS build pass after the bare-invoke welcome work

  • Regenerated docs/evidence/knowledge-classification.json and tracked three queue-end plan monitors with paired _index.md Audits rows so evidence:knowledge-classification:check is green

  • Ship packages/cli/LICENSE in the published package files list so npm tarballs include PolyForm Noncommercial text

  • Landing Mission Control demo (landing-missionkit/remote/mc): refresh #mc-mock-data Current Mission agent to Tech Lead and feed labels to design-v2 wire tokens (Eng / SQ). The tracked snapshot does not ship product CREW_ACTOR_MASK / crewActorRole, so the iframe still renders wire tokens verbatim (not long display masks). Correcting the earlier false claim that fixtures were display-masked; demo lexicon restoration waits on product-snapshot regen or Design export → landing:sync (do not hand-edit remote/ as SoT). See docs/agentkit-landing.md

  • Evidence anti-overwrite: generate-codebase-findings.mjs --write preserves on-disk reviewed coverage batches; non-mutating findings/hotspots checks ignore HEAD-volatile generatedAt / working-tree digest fields

  • Backfilled 11 registry skill hashes into KNOWN_SHIPPED_OVERLAY_HASHES and pin registry SKILL.md coverage in Vitest

  • Capability inventory: regenerate launch-announcement anchors, restore SHA-verified counts, document factory-only /public-issue-triage counting policy

  • Capability inventory: re-verify README positioning anchors against HEAD (Anchor L# column) and point verified-against SHA at 7fdb03c

  • Config tab: persona mode "Inherit default" skips empty mode overrides; document /api/config token exemption in write verification matrix

  • SECURITY.md: list working private maintainer channel first while public PVR remains disabled

  • CLI welcome nits: guard meta (shell, prompt), column-aligned hints, broader CI env detect, hasCliSubcommand tests, helmet outline uses light text color

  • KNOWN_SHIPPED_OVERLAY_HASHES was missing .cursor/skills/core/docs-repo/SKILL.md, so an unedited consumer copy of that skill was misread as customized and never refreshed by agent-kit update. Ledger refreshed...

Read more