-
Notifications
You must be signed in to change notification settings - Fork 0
feat(messaging): adopt RabbitMQ, remove Azure Service Bus (closes #148) #159
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
9 commits
Select commit
Hold shift + click to select a range
bae19be
docs(audits): log wolverine-asb-emulator audit
emeraldleaf 9777204
fix(messaging): correct ASB subscription-listener API + emulator/Auto…
emeraldleaf 5d45848
feat(messaging): config-selectable transport — RabbitMQ (default) or …
emeraldleaf 50ba93c
refactor(messaging): remove Azure Service Bus — RabbitMQ-only
emeraldleaf 126d0ec
chore(messaging): address architecture-review findings on the RabbitM…
emeraldleaf 318d506
docs(messaging): complete the RabbitMQ sweep — CodeRabbit findings on…
emeraldleaf 0ddc681
Merge remote-tracking branch 'origin/main' into feat/swappable-transport
emeraldleaf b65d8c8
chore(loop): encode the #159 review findings — drift RCA, tombstone c…
emeraldleaf 8aebb5e
fix(loop): address CodeRabbit round-3 findings on the controls + doc …
emeraldleaf File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
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
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
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
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,62 @@ | ||
| #!/usr/bin/env bash | ||
| # Tombstone audit — removed-identifier drift control. See CLAUDE.md. | ||
| # | ||
| # When a subsystem is removed (a transport, a metric, an API), its identifiers get | ||
| # tombstoned in .claude/tombstones.txt. This script fails if any tombstoned pattern | ||
| # appears in tracked files outside the allowlist (.claude/tombstones-allowlist.txt). | ||
| # | ||
| # Why: the compiler catches stale identifiers in code; NOTHING catches them in docs, | ||
| # comments, and config. The RabbitMQ swap (#159) left 15+ docs teaching Azure Service | ||
| # Bus as current — found by an ultracode review, not by the loop. This closes that gap | ||
| # mechanically: the sweep's completion criterion is "this script passes", not "the docs | ||
| # someone remembered are updated". | ||
| # | ||
| # Usage: .claude/scripts/check-tombstones.sh (run from anywhere; CI runs it per PR) | ||
|
|
||
| set -euo pipefail | ||
|
|
||
| ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)" | ||
| cd "$ROOT" | ||
|
|
||
| TOMBSTONES=".claude/tombstones.txt" | ||
| ALLOWLIST=".claude/tombstones-allowlist.txt" | ||
|
|
||
| excludes=() | ||
| while IFS= read -r line; do | ||
| [ -z "$line" ] && continue | ||
| case "$line" in \#*) continue ;; esac | ||
| excludes+=(":(exclude)$line") | ||
| done < "$ALLOWLIST" | ||
|
|
||
| fail=0 | ||
| while IFS= read -r pattern; do | ||
| [ -z "$pattern" ] && continue | ||
| case "$pattern" in \#*) continue ;; esac | ||
| # git grep over tracked files only; -i case-insensitive, -E extended regex. | ||
| # Exit codes: 0 = matches (violation), 1 = clean, >=2 = error (e.g. invalid | ||
| # regex) — an invalid tombstone must FAIL the audit, not silently disable it. | ||
| set +e | ||
| hits=$(git grep -inE "$pattern" -- '.' "${excludes[@]}" 2>&1) | ||
| status=$? | ||
| set -e | ||
| if [ "$status" -ge 2 ]; then | ||
| echo "TOMBSTONE AUDIT ERROR — pattern '$pattern' failed to evaluate (git grep exit $status):" | ||
| echo "$hits" | sed -n '1,5p' | ||
| fail=1 | ||
| elif [ "$status" -eq 0 ] && [ -n "$hits" ]; then | ||
| echo "TOMBSTONE VIOLATION — pattern '$pattern':" | ||
| # sed -n '1,30p' rather than piping through head: under pipefail, head | ||
| # closing the pipe early would SIGPIPE the producer and abort the script. | ||
| echo "$hits" | sed -n '1,30p' | sed 's/^/ /' | ||
| echo "" | ||
| fail=1 | ||
| fi | ||
| done < "$TOMBSTONES" | ||
|
|
||
| if [ "$fail" -eq 1 ]; then | ||
| echo "Removed identifiers are resurfacing (or were never fully swept)." | ||
| echo "Fix the references — or, for genuinely historical/comparative mentions," | ||
| echo "add the file to $ALLOWLIST with a justification comment." | ||
| exit 1 | ||
| fi | ||
| echo "Tombstone audit clean." | ||
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,21 @@ | ||
| # Files exempt from the tombstone audit — each entry earns its place by containing | ||
| # LEGITIMATE historical or comparative mentions of removed identifiers. Keep this list | ||
| # short; an allowlisted file can re-drift invisibly, so prefer fixing over allowlisting. | ||
| # | ||
| # Historical decision records (past-tense by nature): | ||
| docs/project-decisions.md | ||
| docs/full-saga-deployment-plan.md | ||
| docs/war-story-wolverine6-outbox-atomicity.md | ||
| # Comparative/portable guides where the removed transport is a subject of comparison: | ||
| docs/messaging-transport-selection.md | ||
| docs/performance-and-data-correctness.md | ||
| # Canon: carries the "evaluated and removed" rationale + durable-pub/sub pattern comparison: | ||
| CLAUDE.md | ||
| # Past-tense removal note (line ~57) + AWS-alternative comparison section: | ||
| docs/architecture.md | ||
| # The control's own definition files: | ||
| .claude/tombstones.txt | ||
| .claude/tombstones-allowlist.txt | ||
| .claude/scripts/check-tombstones.sh | ||
| # Audit log of external-article reviews (historical verdicts, intentionally tracked): | ||
| .claude/audits/INDEX.md |
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,16 @@ | ||
| # Removed-identifier tombstones — one extended-regex pattern per line (case-insensitive). | ||
| # When a subsystem/identifier is REMOVED from the codebase, its names go here so CI fails | ||
| # any doc/comment/config that still presents it as current. This is the identifier-level | ||
| # counterpart of the file-move discipline. See CLAUDE.md. | ||
| # | ||
| # Files where historical/comparative mentions are legitimate are listed in | ||
| # tombstones-allowlist.txt. Everything else must be clean. | ||
| # | ||
| # --- Azure Service Bus transport (removed in #159; RabbitMQ is the transport) --- | ||
| azureservicebus | ||
| azure service bus | ||
| azure\.messaging\.servicebus | ||
| servicebus\.windows\.net | ||
| service bus | ||
| # Old ASB subscription names (renamed to queue names without the -sub suffix) | ||
| (payment-orders|notify-orders|order-payments|shipping-payments|notify-payments|order-shipping|notify-shipping)-sub |
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
Oops, something went wrong.
Oops, something went wrong.
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.
Uh oh!
There was an error while loading. Please reload this page.