- Include model in session list output (eliminates N+1 reads)
- Add jq error handling in Supervisor dispatch_ready_beads
- Use process substitution in Supervisor to avoid subshell variable scope
- Fix claude backend Execute to return error (commands go through PTY)
- Make createSubtask return childID (eliminates duplicate O(n) scan)
Fixes: bd-1z2, bd-73r, bd-cid, bd-viu, bd-vdi
- Conductor: spawn per-worktree researcher, route worker QUERY_REQUESTs
through researcher, add post-completion review gate with Reviewer bot,
auto-approve trivial/docs/config beads
- Taskmaster: handle review rejection by parsing findings into new beads
- claude.go: enable slash command support (pass through to Claude CLI)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Extends lintDescription() with 8 new rules: Acme address format correction
(file:N-N → file:N,N), imperative verb start, vague language detection, how
signal, no first-person voice, forbidden vague phrases, inline code (backticks),
and cross-reference on long descriptions (>150 chars). Updates containsLineRef()
to also recognise #N char-position addresses; adds containsAcmeRegexAddr(),
containsHyphenRange(), and containsBdRef() helpers. Adds 32 tests covering every
rule in beads_lint_test.go.
Updates bot-templates/Conductor (6-question cold-completion gate, File Addressing
section), bot-templates/Taskmaster (File Addressing section with grammar
reference), and skills/beads/SKILL.md (Description Quality section with full lint
rule table and Acme addressing guide).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add description lint check to beads new command (bd-3bu.3):
warns to stderr on missing file path, function/line ref, short
description, or missing acceptance criterion; --no-lint and
IDEA:-prefixed titles bypass lint
- Add post-completion write-back convention to beads SKILL.md
(bd-3bu.2): quality ratings good/missing-location/missing-pattern/
too-vague, plus anti-pattern for closing without a quality comment
- Update Taskmaster prompt with five-field schema, KB query
requirement, and type-specific templates bug/feature/refactor/idea
(bd-3bu.1, bd-3bu.4)
- Add P1/P2 cold-completion gate to Conductor prompt (bd-3bu.5):
five-question checklist before assigning high-priority beads to bots
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- anvilsrv sets CLAUDE_CONFIG_DIR to ~/.config/anvillm/claude on start
if not already set in the environment
- Claude backend includes CLAUDE_CONFIG_DIR in its Environment map so
it is set in the tmux session and exported to the shell
- tmux backend now exports all b.cfg.Environment vars to the shell
(via sendKeys) in addition to setting them in the tmux environment,
both on CreateSession and Restart
- cfg/backends/claude.yaml adds CLAUDE_CONFIG_DIR to the sandbox env
whitelist so landrun passes it through to the Claude process
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The protocol is now canonically defined in skills/beads/SKILL.md,
which all agents load. No need to inject it verbatim into worker contexts.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
All bots load this skill, so codifying the child-before-parent completion
rule here makes it universal — not just for Conductor-spawned workers.
Adds a dedicated protocol section, updates Recommended Workflow and
Session Workflow steps, and adds a NEVER anti-pattern entry.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Clarify that workers should receive their specific child bead ID (not
parent), and add explicit worker bead protocol steps covering claim,
grandchild checking, and completion sequence.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Prompts agents to comment on beads with decisions, dead ends, and
discoveries during execution, and to search past beads before starting
non-trivial work. Covers human-authored comments as equally authoritative
context. Implements bd-3r1.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- OUTPUT_PROTOCOL.md: shared protocol injected at session start for all backends
- anvillm-hook: injects OUTPUT_PROTOCOL.md via Kiro agentSpawn
- claude/agent/anvillm-agent.md: Output Protocol section (Claude session-start equivalent)
- bot-templates: Output Protocol block in Conductor and Taskmaster contexts
- anvillm-communication skill: structured body schemas for all message types
- install-hooks.sh: also installs anvillm-agent.md to ~/.claude/agents/
- kiro-cli/README.md: install instructions for prompt files
Co-authored-by: Levi Neely <lkn@darkstar.example.net>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* Add inline Put actions for sessions and tasks windows
Introduce a Put command to both the sessions list and tasks windows,
allowing inline edits via prefixed annotations in the body:
Sessions (cmd/Assist/main.go):
- `- <id>` Kill session
- `~ <id>` Stop session (graceful)
- `@ <id> <alias>` Set alias on session
- `+ <backend> <path> [alias]` Start new session
Tasks (cmd/Assist/main.go + internal/p9/beads.go):
- `- [idx]` Delete bead
- `~ [idx]` Claim bead as user
- `^ [idx]` Unclaim bead (clear assignee, reset to open)
- `x [idx]` Complete bead
- `f [idx]` Fail bead
- `+ <title>` Create new bead with title pre-filled
Also adds `unclaim` ctl command to BeadsFS and helper functions:
claimBeadAsUser, unclaimBead, completeBead, failBead,
openNewBeadWindowWithTitle.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* Add [Failed] [PendingReview] [PendingApproval] filters to tasks window
Extends the tasks window filter bar with three new status filters:
- [Failed] closed beads whose close_reason != "completed"
- [PendingReview] beads with status "pending_review"
- [PendingApproval] beads with status "pending_approval"
Implementation details:
- Add CloseReason field (json:"close_reason") to Bead struct so
fail-vs-complete distinction is available after JSON decode.
- listBeadsWithFilter: add "failed" special case (closed beads with
non-"completed" close_reason); "pending_review" and
"pending_approval" fall through the existing status equality path.
- handleTasksWindow: wire Failed/PendingReview/PendingApproval cases
to set statusFilter and refresh the list.
- refreshTasksWindowWithBeads: update filter bar header line.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* Add bulk-archive via inline Put notation to inbox and archive windows
In the inbox window, lines prefixed with "- <shortID>" are parsed on Put
and each matching message is archived (moved to completed). In the archive
window the same notation permanently deletes the message from the archive.
Adds: parseMailEdits, mailEdit type, deleteArchivedMessage in Assist;
DeleteFromCompleted in mailbox.Manager; "delete <msg-id>" command on
user/ctl in the p9 server.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Levi Neely <lkn@darkstar.example.net>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Implements bd-258: display and toggle of requires_approval / requires_review
boolean flags in all four AnviLLM frontends. Flags are backed by labels
(requires_approval, requires_review) on each bead, read from the labels
array in bead JSON and toggled via label/unlabel ctl commands.
- Acme: adds Labels/HasLabel to Bead struct; shows flags in frontmatter;
updateBead parses and applies label/unlabel on Put
- TUI: showBead displays flags (green when set); edit dialog adds two
checkboxes that toggle labels on save
- Web: detail view shows flag status with Set/Unset buttons; new
toggleBeadFlag() function calls beads ctl API and refreshes
- Emacs: detail buffer shows flag lines; A/R keybindings invoke new
anvillm-bead-toggle-approval and anvillm-bead-toggle-review commands
Co-authored-by: Levi Neely <lkn@darkstar.example.net>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* Fix child relationship handling
* Fix: Remove automatic dependency creation in createSubtask()
Parent-child relationships are hierarchical via ID structure only.
The server was incorrectly creating blocking dependencies between
parent and child beads, causing children to block parents.
---------
Co-authored-by: Levi Neely <lkn@darkstar.example.net>
* Add approval/rejection flags and actions to tasks UI
Adds visual flags for APPROVAL_REQUEST and REVIEW_REQUEST messages across
all UI frontends (Acme, TUI, web, Emacs), with one-click approve/reject
actions and inferred reply type mapping.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* Auto-archive messages on approve or reject across all UIs
After an approval or rejection response is sent, the original inbox
message is now automatically completed/archived in all four frontends:
- Acme: handleReplyWindow gains an originalMsgID param; approve/reject
windows pass the message ID so the original is archived on Send
- TUI: already archived via completeInboxMessage in approveMessage /
rejectMessage — no change needed
- Web: approveCurrentMessage archives after reply succeeds; rejectCurrent-
Message sets pendingArchiveId so the reply-form submit handler archives
on send
- Emacs: anvillm-inbox-approve and anvillm-inbox-reject write "complete
<id>" to user/ctl and refresh the inbox after sending the response
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Levi Neely <lkn@darkstar.example.net>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
- Regenerate all SVGs with neutral theme instead of dark
- Improves visibility on both light and dark backgrounds
- Better contrast for arrows and boxes