feat(b6-4): Hermes-Async event-driven messenger agent (K.1)#42
Merged
Conversation
…ign/tasks) K.1 Hermes-Async event-driven messenger agent for event-driven-eu (plan §9 line 2668 + §6.1 line 2556; ARCHITECTURE-TARGET §9.2 line 731). Advisory specialist mirroring the b7-pythia (Sibyl) precedent: no scanner, no data file, no new standard. FR-B6-HA-* / NFR-B6-HA-* / ADR-K1-* + K1-RULE-* namespace. Q-001/002/003 non-blocking (open-questions.md). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…ge-ci Grep-only harness mirroring b7-pythia.test.sh: HERMES_AGENT name-resolution variable, 18 L1 anchor tests + 1 L2 fresh-checkout anchor-integrity fixture. Negative guards: no new standard, no Janus/index edit, no scanner, no K1-RULE/J8/K2/K3 namespace leak. Registered in the forge-ci.yml B.6 block after b6-2.test.sh. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
New .claude/agents/hermes-async.md (mirrors sibyl.md depth): Persona (disambiguated from Hermes/Flutter-perf + Hermes-API/Connect), Purpose (4 responsibilities + 3 B.6.3 standards by reference), 4 checklist H3 grounded in the real b6-2 code shapes (EventEnvelope, Nats-Msg-Id publish dedup, InboxDedup, SagaStep, events.v<n>. subjects), Event Contract Readiness Report, K1-RULE-001..006 (single Blocking = VIII.2 end-to-end idempotency), Integration, Anti-Hallucination (III.4 + LIVE-verify via Context7). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Additive single rows only, disjoint from the concurrent B.6 lanes: CLAUDE.md agent-delegation row (Event-driven / AsyncAPI -> Hermes-Async, adjacent to Sibyl); docs/GUIDE.md Agents Transversaux row (disambiguated from Hermes/Flutter perf); CHANGELOG.md [Unreleased] Added entry. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…ven-eu.md Append the B.6.4 archived-requirements block (FR-B6-HA-* / NFR-B6-HA-* / ADR-K1-*) after the B.6.1 + B.6.2 blocks; .forge.yaml already status: archived. Verification: b6-4.test.sh 19/19 GREEN; verify.sh RESULT PASS (519/0); constitution-linter OVERALL PASS; siblings b6-1/b6-2/b7-pythia/k3/k5 unchanged. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
… + narrow false-positive guard b6-3-standards merged first and legitimately cites "hermes-async" as a routing trigger keyword in its own global/event-driven.md and global/asyncapi-contracts.md index.yml entries (the standard naming its consumer agent). This collided with b6-4's own scope-guard test (_test_b64_015_no_janus_index_edit), which grepped the whole merged index.yml for the substring "hermes-async" rather than checking whether THIS change's own commits added an entry. Narrowed the check to only fail on an id:/path: field naming hermes-async (i.e. a whole new entry authored by this change), which is what FR-B6-HA-083 actually intends. Conflict itself was in forge-ci.yml harness registration (b6-3.test.sh vs b6-4.test.sh insertion point) — resolved by keeping both entries. Re-ran b6-4 (19/19), b6-3 (7/7), verify.sh (525/0), constitution-linter.sh (PASS 77/0), t5-1.test.sh CI line-budget (17/17, 376/380 lines) — all green. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Bogala
added a commit
that referenced
this pull request
Jul 12, 2026
… + b6-4-hermes-async) Two sibling B.6 bricks merged first (#39 standards, #42 Hermes-Async) and touched the same shared files this lane also touches. Conflicts in: - .forge/specs/event-driven-eu.md (both sides appended an archived-brick section at the same point) — kept both sections, B.6.4 before B.6.5. - .github/workflows/forge-ci.yml (harness registration insertion point) — merged into one consolidated b6-1..b6-5 block. - CHANGELOG.md ([Unreleased] entries) — kept both bullets, B.6.4 before B.6.5. Re-ran b6-5 (10/10), b6-4 (19/19), b6-3 (7/7), t5-1.test.sh CI line-budget (17/17, 377/380 lines), verify.sh (531/0), constitution-linter.sh (PASS 78/0) — all green post-merge. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Bogala
added a commit
that referenced
this pull request
Jul 12, 2026
… CI line budget Three sibling B.6 bricks merged first (#39 standards, #42 Hermes-Async, #40 CI templates) and touched the same shared files. Conflicts in: - .github/workflows/forge-ci.yml (harness registration insertion point) — merged into one consolidated b6-1..b6-6 block. - CHANGELOG.md ([Unreleased] entries) — kept all bullets, B.6.4/B.6.5/B.6.6 in module order. The merged forge-ci.yml landed at 381 lines, one over the NFR-CI-002/ NFR-T51-005 380-line budget (t5-1.test.sh caught it) — condensed the b6-6 harness comment from 3 to 2 lines to land exactly at 380. Re-ran b6-6 (13/13), b6-5 (9/9), t5-1.test.sh CI line-budget (17/17, 380/380 lines), verify.sh (537/0), constitution-linter.sh (PASS 79/0) — all green post-merge. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Bogala
added a commit
that referenced
this pull request
Jul 12, 2026
…6-6) + trim CI line budget Four sibling B.6 bricks merged first (#39, #42, #40, #41) and touched the same shared files. Conflicts in: - .forge/specs/event-driven-eu.md (both sides appended an archived-brick section at the same point) — kept both sections, reordered numerically (B.6.4, B.6.5, B.6.9). Note: B.6.3 and B.6.6 never added their own section to this consolidated spec doc (pre-existing gap, not introduced here — flagging for awareness, not fixing on their behalf). - .forge/standards/REVIEW.md (ledger entries at the same insertion point) — kept both, ordered by actual landing order (b6-3 merged before b6-9). - .forge/standards/index.yml (both sides appended entries at the same point) — kept both blocks, B.6.3 before B.6.9. - CHANGELOG.md ([Unreleased] entries) — kept all four bullets in module order (B.6.4, B.6.5, B.6.6, B.6.9). .github/workflows/forge-ci.yml auto-merged cleanly but landed at 384 lines (4 over the 380 budget, t5-1.test.sh caught it) — condensed the b7-5/b6-9 harness-registration comments from 2x3 lines to 2 lines total. Re-ran b6-9 (20/20), b7-5 (19/19), i6 (16/16), b6-3 (7/7), t5-1.test.sh CI line-budget (17/17, 380/380 lines), verify.sh (544/0), constitution-linter.sh (PASS 80/0) — all green post-merge. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Bogala
added a commit
that referenced
this pull request
Jul 12, 2026
… trim CI line budget Final B.6 fan-out brick. Five sibling bricks merged first (#39, #42, #40, #41, #44) and touched the same shared files. Conflicts in: - .forge/standards/REVIEW.md (ledger entries at the same insertion point) — kept all three, reordered by actual landing order (b6-3, b6-9, then b6-10 last). - .github/workflows/forge-ci.yml (harness registration insertion point) — merged into one consolidated b6-1..b6-10 block. - CHANGELOG.md ([Unreleased] entries) — kept all five bullets in module order (B.6.4, B.6.5, B.6.6, B.6.9, B.6.10). The merged forge-ci.yml landed at 382 lines (2 over the 380 budget, t5-1.test.sh caught it) — condensed two harness-registration comment blocks to free 4 lines, landing at 378/380. Re-ran b6-10 (12/12), b7-9 (15/15), i3 (18/18), i2 (14/14), t5-1.test.sh CI line-budget (17/17, 378/380 lines), verify.sh (551/0), constitution-linter.sh (PASS 81/0) — all green post-merge. This is the last of the 6 step-2 B.6 fan-out bricks (B.6.3/4/5/6/9/10). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds Hermes-Async (K.1), the event-driven messenger specialist agent for the
event-driven-euarchetype — the B.6 sibling of K.2 Sibyl (b7-pythia). Advisory specialist in the Sibyl/Panoptes mould: no scanner, no data file, no new standard (consumes the B.6.3 standards by reference).Sources:
docs/new-archetypes-plan.md§9 line 2668 (K.1) + §6.1 line 2556 (B.6.4);docs/ARCHITECTURE-TARGET.md§9.2 line 731.Deliverables
.claude/agents/hermes-async.md— Persona (disambiguated from Hermes / Flutter perf and Hermes-API / Connect codegen), Purpose (4 responsibilities + the 3 B.6.3 standards by reference), four checklists (AsyncAPI Contract Maintenance / NATS/Kafka Binding Generation / Idempotency-Key Enforcement / Event Versioning & Compatibility) grounded in the real scaffolded code shapes (EventEnvelope, theNats-Msg-Idpublish-dedup header,InboxDedup, theSaga/SagaStepcompensator,events.v<version>.<EventType>subjects), an Event Contract Readiness Report, aK1-RULE-001..006catalogue (advisory ladderAdvisory<Concern<Blocking; the single Blocking rule is end-to-end idempotency / exactly-once per Article VIII.2), Integration, and an anti-hallucination protocol requiring LIVE verification (Context7) of AsyncAPI/NATS/Temporal API details.CLAUDE.md(Agent Delegation) +docs/GUIDE.md(Agents Transversaux) + aCHANGELOG.md[Unreleased]entry..forge/scripts/tests/b6-4.test.sh(18 L1 + 1 L2 anchor-integrity), registered inforge-ci.ymlafterb6-2.test.sh..forge/changes/b6-4-hermes-async/(proposal/specs/design/tasks/.forge.yaml/open-questions) + archived block appended to.forge/specs/event-driven-eu.md.Scope boundary (divergence from b7-pythia): this brick edits no Janus file and no
standards/index.yml; it references the three B.6.3 standards (global/event-driven.md,global/asyncapi-contracts.md,infra/nats-jetstream.md) by path — those land via the parallelb6-3-standardslane. No blocking open question (unlike b7-pythia's Q-001: "Hermes-Async" is a distinct roster name).Test plan
b6-4.test.sh --level 1,2→ 19/19 GREEN (RED confirmed first: 15 feature tests failing before the persona + rows existed)verify.sh→ RESULT: PASS (519 passed / 0 failed; the 1 warning is the pre-existing "no lib/src, skipping TODO check")constitution-linter.sh→ OVERALL: PASS (76/0; the 4 WARN are pre-existing transport-codegen-coverage notes)b6-118/0,b6-210/0,b7-pythia18/0,k320/0,k525/0shellcheckclean (only SC1091 info on the_helpers.shsource, same as every harness)K1-RULEnamespace contained to b6-4 files (no leak into Janus / Demeter / Sibyl)🤖 Generated with Claude Code