Release 2.1.55 (2026-11-02)¶
Documentation¶
- require paad-delegate for every review round and remove the fallback path (#885)
- docs(paad-doctrine): require paad-delegate for every review round and remove the fallback path
A round that cannot dispatch paad:paad-delegate no longer falls back to a general-purpose reviewer: mode 1 stops and mode 2 pauses, naming the fix (start the session with the fleet's paad checkout loaded via vrg-vm session). The fallback prompts, the stray-write sweep and TMPDIR check, the paad/security/ preparation and collection, SECURITY-CHECK-FAILED and the Path: record are removed from the doctrine, the paad policy, and the issue-implement and epic-create skills. The checks around every round (doctrine 1.9 and 1.10) stay.
- docs(paad-doctrine): list every pre- and post-review check, and keep the material when the delegate reports a write
The issue-implement and epic-create round steps now name the clean-status check, the branch and HEAD record, the fetch, and the paad/ directory check after the review. Doctrine 2.4 stops at once for a file left in paad/security/ or paad/code-reviews/, and mode 2 gains the rule mode 1 has for a delegate that reports a write: the paths go to the human, the material is kept, and dismiss does not apply.
- docs(paad-doctrine): keep and record the material when the delegate writes or leaves a file in paad/, in both modes
Mode 1's stop-at-once exits for a reported write and a file left in paad/ now say which files the scratch copy keeps and post a round comment with their hashes, and the cleanup rule keeps them. Mode 2 treats a file left in paad/ like a reported write, with dismiss not applying, and issue-implement carries that rule. The case-insensitive keyword list gains the agentic-review report labels, the delegate section's after-review note names the paad/ check, and the policy limits unattended-only to the doctrine's review rounds.
- docs(paad-doctrine): settle how the stop-at-once exits combine, and record an interactive round
The doctrine's stop-at-once exits take precedence over the broken-round re-run, each one met applies and is named, and the worktree is reverted with reported paths and paad/ files left in place; dismiss applies only when it applies to every cause. A round run interactively at the human's choice records a deviation line instead of the delegate's counts, and the policy names that exception. The mode 2 pause list gives every pre-dispatch cause, and epic-create says the kept result is security material.
- check the counts line against the findings and decode the notice's entities (#887)
- docs(paad-doctrine): check the counts line against the findings and decode the completion notice's entities
agentic-review's counts line must now agree with the findings outside the security section, by severity and by scope; a mismatch fails mode 2's output check. The result taken from the harness's completion notice has its &, < and > entities decoded before it is checked, cut or written. issue-implement and epic-create summarise both rules.
Ref vergil-project/vergil-claude-plugin#883
- docs(paad-doctrine): check each Scope value and the shape of Defaults applied
Mode 2 now requires each finding's Scope: value to be exactly one of the three, before the counts line is compared, so a malformed value fails as itself. Defaults applied: is accepted as 'none' or as the bare label followed by one or more '- ' lines; a bare label with no lines, or other text after the label, fails.
Ref vergil-project/vergil-claude-plugin#883
- docs(paad-doctrine): settle dismiss on a Scope check and how result text is recorded
A failed Scope: value check takes only another-round, since the findings comment needs each finding's scope bucket. The round records' formatting of result text and their count of Defaults applied: lines are made explicit.
Ref vergil-project/vergil-claude-plugin#883
- docs(paad-doctrine): fence result text in round records and widen the Scope dismiss bar
Text copied from a delegate result into a public round record goes only in a top-level fenced code block longer than its longest backtick run; the mode 2 findings example follows it. dismiss is barred after a missing or invalid Scope: field, and issue-implement's summary says so.
Ref vergil-project/vergil-claude-plugin#883
- list and count the security discard lines in the delegate result (#888)
- docs(paad-doctrine): list and count the security discard lines in the delegate result
The delegate result template now shows one '- ' line per discard under 'Security discards:
Ref vergil-project/vergil-claude-plugin#886
- docs(paad-doctrine): state exactly how the security section's labels and discard lines are checked
Each label is matched at the start of a line with nothing stripped, so free-text discard lines that quote a label do not count as a second occurrence. The rule against other lines now covers only the lines between 'Security discards:' and the end marker, not the whole section, and the comparison with the 'Discards:
Ref vergil-project/vergil-claude-plugin#886
- docs(paad-doctrine): require the ordinary discard lines to start with '- ', as the security ones do
The 'Discards:
Ref vergil-project/vergil-claude-plugin#886
- docs(paad-policy): record fleet commit 58db477 as the validated delegate build
Section 10's validated-version line now records fleet commit 58db477, validated in vergil-project/.github#843 with a reduced set of runs by the human's ruling. The announce stays v2.0.2-preview, and the first validation at abf879f in vergil-project/.github#733 is kept as history.
Ref vergil-project/vergil-claude-plugin#886
- docs(paad-doctrine): bound the discard lines, define an empty security section and mark the reduced validation as a one-off
The ordinary discard lines run up to the next field, and any other line there fails. An empty security section is the markers with 'Security: 0' and 'Security discards: 0' between them and nothing else. paad-policy section 10 states that 58db477's reduced validation set is the human's one-off ruling for a wording-only contract change, recorded on vergil-project/.github#843, with the gate text unchanged.
Ref vergil-project/vergil-claude-plugin#886
CI Evidence: All gates passed — full audit bundle available. Download →