Files
hermes-skills/ask-claude/references/peer-response-protocol.md
Hermes Agent 1533a6e8c3 ask-claude v2.6.1, ask-hermes v4.2.0, ask-dev v1.1.0, create-plan v1.1.0
- ask-claude v2.4.0 -> v2.6.1: Added mandatory disagreement scan (Step 3.5) with web-reference demand + internal consistency check. Updated callouts for the paste-vs-path rule (now HARD RULE, not just example).
- ask-hermes v4.1.1 -> v4.2.0: Added mandatory disagreement scan mirroring ask-claude.
- ask-dev v1.0.0 -> v1.1.0: Added mandatory disagreement scan mirroring ask-claude.
- create-plan v1.1.0 (new): Multi-agent plan-build dispatcher. Trigger phrases, 10-Q brief script (min as needed, max 10), curator dispatch, capture/handoff format, all 6 failure modes. Companion references: curator-framing-prompt.md, deep-research-dispatch-template.md, ask-claude-validation-template.md, structured-brief-10q.md.

5 rounds of Claude validation on the design plan; final SHIP from ask-hermes peer review.
2026-07-06 12:51:02 -05:00

157 lines
6.6 KiB
Markdown

# Peer Response Protocol — Disagreement Scan, Web-Reference Mandate, Cross-Doc Desync
This reference documents the three cross-cutting patterns that emerged from the
v2.6.0 ask-claude update. They apply to ANY peer/consultant dispatch
(ask-claude, ask-hermes, ask-dev, ask-claude-as-curator, future peers) and to
ANY document-edit workflow where multiple sections describe the same thing.
## 1. Disagreement Scan (MANDATORY before applying)
Source: ask-claude v2.6.0 Step 3.5, ask-hermes v4.2.0, ask-dev v1.1.0 (all
updated in the same session).
**Rule:** For every peer response, before applying or moving on, walk through
the peer's findings and classify each one:
- **Agree + will apply** → no action
- **Agree + will skip** → state explicitly WHY you are skipping. Do not
silently drop. The "why" matters — operator can re-prioritize if the
rationale is wrong.
- **Disagree** → push back via `--resume` (ask-hermes/ask-dev) or a follow-up
turn (ask-claude). Either send the pushback OR state why you decided not to.
- **Disagreed silently dropped: should be EMPTY.** If non-empty, that's a
bug — surface it.
**Output format (emit every time):**
```
[Peer's findings as-is]
## My disagreement scan
- **Agreed and applied:** [list]
- **Agreed but skipped:** [item] — [reason]
- **Disagreed and pushed back:** [item] — [what I said]
- **Web references / live tests requested:** [items where I demanded a URL or run]
- **Disagreed silently dropped:** (should be empty — if not, justify)
```
The "disagreed silently dropped" line is the tripwire. Empty is the only
acceptable state. Non-empty means the agent is rationalizing acceptance
without doing the work.
## 2. Web-Reference Mandate (for unverified concrete claims)
Source: ask-claude v2.6.0, ask-hermes v4.2.0 (already had canonical form), ask-dev v1.1.0.
**Rule:** For any peer claim that is a concrete factual statement
(tool version, API behavior, library status, system state assertion,
"best practice" recommendation) AND where the peer did NOT cite a source URL
inline OR run a live command to verify, send a follow-up demanding the
verification.
**Pattern:**
> "Show me the command output that supports X. I want a URL or a live test,
> not reasoning."
Claude has web search (mcp_searxng_searxng_web_search). Hermes peers have
filesystem + terminal + web search. **No concrete factual claim is acceptable
without a source.**
**Applies to:**
- Tool versions, port numbers, env var names, config keys
- "X is broken" / "Y is down" system state assertions
- Library APIs, package availability, install commands
- Architecture pattern recommendations
- "Best practice" assertions
- Anything the plan or system will depend on
## 3. Cross-Document Desync (the recurring edit pattern)
Source: observed across 5 rounds of plan validation in a single session
(plan_skill_plan.md v1 → v5). The pattern fires every time.
**The problem:** When a value (count, name, path, number) changes in a
document with multiple sections describing the same thing (prose + diagram +
checklist + cross-references), the edit almost always lands in the prose
section and gets missed in the diagram and checklist.
**Symptom:** Sections describe the same construct with different values. The
section that gets READ CAREFULLY (prose) is correct; the section that gets
SCANNED (diagram, checklist) is stale.
**Meta-pattern from the workshop (5 rounds of validation, 4 had desync):**
the first round almost always misses 2-3 cross-references. The second round
catches 1-2 more. The third+ rounds usually surface real design issues
that the desync had been hiding. **Treat the first round of "all clean"
findings as suspicious** — re-grep for the changed value across the whole
document before declaring done.
**Mitigation (MANDATORY before finalizing any doc edit):**
1. Identify the value being changed (count, name, path, etc.)
2. `grep -nE "<old_value>" <file>` to find every occurrence
3. Update ALL occurrences, not just the obvious one
4. Re-grep with the new value to confirm zero stragglers
5. For cross-section references (e.g., "see §6 for the 9 pitfalls" when
§6 now has 11), grep the literal cross-reference too — they are
often hardcoded numbers that don't update with the section they point
at
**This applies to:**
- Plan documents (sections, diagrams, checklists, cross-references)
- Skill files (description, examples, pitfall counts, version strings)
- Config files (any field referenced in multiple sections)
- Any markdown with both ASCII diagrams AND prose describing the diagram
**The lesson generalizes:** if a value is mentioned in 3+ places, expect
to miss at least one on each edit. Treat the grep as a pre-commit hook.
**Pre-finalize workflow (run this every time, no exceptions):**
```bash
# 1. Identify the value you just changed
OLD_VALUE="<the value before your edit>"
NEW_VALUE="<the value after your edit>"
# 2. Find any stragglers of the old value
grep -nE "$OLD_VALUE" <file> || echo "OK: no stragglers of $OLD_VALUE"
# 3. Confirm the new value is in the expected places
grep -nE "$NEW_VALUE" <file>
# 4. Find any cross-section references that hardcode the count/number
grep -nE "§[0-9].*\b$OLD_VALUE\b" <file> || echo "OK: no §X cross-refs to $OLD_VALUE"
```
Run this even when "the edit is in one obvious place." Multi-place edits
hide.
## 4. Pre-Build Verification Gate
Source: plan_skill_plan.md §7, surfaced when Claude flagged session-id
line-1 capture as a first-run failure risk that "five rounds of counting-fixes
never touched."
**The problem:** Plans can be internally consistent on design while
containing hidden assumptions about the runtime environment (positional
output parsing, banner formats, version-specific CLI flags, etc.). These
don't show up in design review.
**Mitigation:** Before declaring any plan "buildable," list the
runtime-assumption items and empirically verify each one against the
actual deployed environment. Common categories:
- Positional parsing assumptions (line 1 of output, JSON field order)
- CLI flag assumptions (`--max-turns 600` works, `--yolo` works, etc.)
- Path assumptions (config files at expected locations, skills registered)
- Version assumptions (skill X is at version Y, has feature Z)
**Output: a verified-items checklist in the plan's §7.** Each item is
either confirmed (with the actual command output) or marked as
"out of scope" (with the reason).
## When to apply this protocol
- After EVERY ask-claude, ask-hermes, ask-dev, or any peer response —
emit the disagreement scan output.
- After EVERY multi-section doc edit — grep for the old value, then re-grep.
- Before declaring any plan "buildable" — verify the runtime-assumption
checklist empirically.