docs(review): address CodeRabbit #11 findings — redact host identity, fix phase collision + MD040 - #12
Conversation
…ty, fix phase collision + MD040 Addresses the four CodeRabbit findings on the merged PR #11 (they were not read before that merge — process corrected): - SECURITY (Major): redact production/host identity from the PUBLIC fork's .beads/issues.jsonl — prod public IP, tailnet address, prod domain, and the host age recipient in buzz-nry.1/.2 now point to intent-os ops/buzz instead. Forks of public repos are always public; operator detail must live only in the private ops lane (standing rule). These values are not true secrets (age recipient is a public key; the IP is internet-facing; the tailnet addr needs tailnet auth; domains are DNS-public), so no rotation — but they don't belong here. Dolt re-synced (--allow-stale) so the pre-commit export can't re-inject. Residual: prior git history still carries them (accepted — no secrets). - CORRECTNESS (Major): fix the Phase-6 collision I introduced — the LMS↔estate audit note no longer claims "Phase 6"; Phase 6 in this tree is the contributor laboratory, uniquely. - CORRECTNESS (Major): reframe buzz-nry.3's description from "now executed against PROD" (a false completion tone) to SCOPE — the gate suite to run, with per-gate status in notes/ops; the off-site leg and several gates remain OPEN. - MAINTAINABILITY (Minor): MD040 — the four-plane flow diagram fence is now ```text. VERIFIED: grep shows zero host-addressing in the tracked JSONL and in the Dolt export; markdownlint no longer reports MD040 on 006; JSONL re-imports valid (20 issues). Refs #11.
|
Warning Review limit reached
Next review available in: 44 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. 📝 WalkthroughWalkthroughThe pull request reserializes all Beads issue records without changing their structure, clarifies Phase 6 documentation scope, and labels a Markdown diagram fence as ChangesNormalization Updates
Estimated code review effort: 2 (Simple) | ~10 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Code Review SummaryStatus: No Issues Found | Recommendation: Merge Files Reviewed (1 file)
Previous Review Summary (commit 15cc8c5)Current summary above is authoritative. Previous snapshots are kept for context only. Previous review (commit 15cc8c5)Status: No Issues Found | Recommendation: Merge Files Reviewed (3 files)
Reviewed by nemotron-3-ultra-550b-a55b:free · Input: 82.8K · Output: 5.4K · Cached: 191.5K |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In @.beads/issues.jsonl:
- Line 1: Redact all remaining host and environment identities in the issue
export before merging: replace the intentsolutions account, production/staging
DNS names, intent-ops-buzz hostname, /etc/intentsolutions/age.key path, and
internal Plane URL with the existing redaction placeholders. Apply the same
replacements to the referenced lines 4–6 and 13–14, then regenerate and
re-import the JSONL/Dolt export.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro Plus
Run ID: cf48133d-5a09-4321-a285-e8448e19a938
📒 Files selected for processing (3)
.beads/issues.jsonl000-docs/001-PP-PLAN-buzz-adoption-master-blueprint.md000-docs/006-DR-STND-authoritative-naming-and-boundaries.md
| {"_type":"issue","id":"buzz-4ei.1","title":"Author the master blueprint, decision record, deploy posture, and FORK.md as additive-only artifacts","description":"000-docs/{000-INDEX,001-PP-PLAN,002-DR-DECR,003-OD-DEPL} + FORK.md; zero upstream-path edits.","status":"closed","priority":2,"issue_type":"task","owner":"jeremylongshore@users.noreply.github.com","created_at":"2026-07-29T04:24:18Z","created_by":"jeremylongshore","updated_at":"2026-07-29T04:26:00Z","closed_at":"2026-07-29T04:26:00Z","close_reason":"Authored additive-only: 000-docs/{000-INDEX,001-PP-PLAN blueprint,002-DR-DECR decision record,003-OD-DEPL deploy posture} + FORK.md; git diff upstream/main --stat shows only fork-added paths","labels":["fork-infra"],"dependencies":[{"issue_id":"buzz-4ei.1","depends_on_id":"buzz-4ei","type":"parent-child","created_at":"2026-07-28T22:24:18Z","created_by":"jeremylongshore","metadata":"{}"}],"dependency_count":0,"dependent_count":0,"comment_count":0} | ||
| {"_type":"issue","id":"buzz-4ei","title":"Stand up the Intent Solutions fork infrastructure for the Buzz adoption","description":"Phase 1 / E1 of 000-docs/001-PP-PLAN-buzz-adoption-master-blueprint.md: fork + clone + beads/Dolt activation, master blueprint + decision record + deploy posture + FORK.md, testing-SOP baseline (TEST_AUDIT.md), three-way mirror (GitHub cluster issue + Plane BUZZ) and memory seeding. Additive-only: zero upstream-path edits.","notes":"GitHub: intent-solutions-io/buzz#1 — https://github.com/intent-solutions-io/buzz/issues/1. MIRROR RULE: bd-sync handles fan-out — `bd-sync note buzz-4ei` and `bd-sync close buzz-4ei` mirror to GH and Plane automatically.\n\nPlane: BUZZ-1 — https://projects.intentsolutions.io/internal/projects/?peekIssue=BUZZ-1\nE1 milestone: blueprint set + FORK.md + TEST_AUDIT.md authored (buzz-4ei.1, .2 closed); beads write-path root-caused (bd contributor-role fork routing) and fixed via --role maintainer; PR opening next. Note: epic was re-minted from buzz-ekg to buzz-4ei during the store rebuild.\nE1 shipped: PR intent-solutions-io/buzz#2 squash-merged to fork main (6cf4df96f) after CodeRabbit review (4 findings fixed in e49ed40a6, 2 declined with reasons). Children .1/.2/.4 closed with evidence; .3 (fork-lane test layers) remains open — epic stays in_progress until it lands. Deferred: epic-boundary Dolt tag until dolt-mcp-vcs is available (system dolt CLI is version-skewed vs bd's embedded engine).","status":"closed","priority":2,"issue_type":"epic","owner":"jeremylongshore@users.noreply.github.com","created_at":"2026-07-29T04:24:17Z","created_by":"jeremylongshore","updated_at":"2026-07-29T06:21:39Z","started_at":"2026-07-29T04:25:59Z","closed_at":"2026-07-29T06:21:39Z","close_reason":"E1 complete: all 4 children closed with evidence (PRs #2/#3/#5/#6 merged; blueprint ledger E1=COMPLETE; GH cluster #1 auto-closed by PR #6). Fork contract now machine-enforced. Phase 2 hosting opens per blueprint after the MX cutover.","dependency_count":0,"dependent_count":0,"comment_count":0} | ||
| {"_type":"issue","id":"buzz-bkt","title":"acceptance probe","status":"closed","priority":2,"issue_type":"task","owner":"jeremylongshore@users.noreply.github.com","created_at":"2026-07-29T04:23:48Z","created_by":"jeremylongshore","updated_at":"2026-07-29T04:23:49Z","started_at":"2026-07-29T04:23:49Z","closed_at":"2026-07-29T04:23:49Z","close_reason":"probe","dependency_count":0,"dependent_count":0,"comment_count":0} | ||
| {"_type": "issue", "id": "buzz-2i6", "title": "Install nak on the Buzz hosts and run the real functional-probe rehearsal, then enable the prod updater timer", "description": "The updater lane is deployed to staging (dormant) but the real functional-probe rehearsal is blocked: nak (the NIP-42 auth+publish+readback CLI the probe uses) is absent on the Buzz hosts. buzz-admin IS in the relay image. Steps: install nak on staging (+ prod), run functional-probe.sh against the live staging relay (throwaway member auth+publish+readback, un-invited refused, cleans up), then a controlled no-op-digest updater rehearsal on staging, THEN install-updater-lane.sh intent-ops-buzz --enable-timer for prod. Parent: buzz-ocv.4.", "notes": "REHEARSAL PARTIAL on live staging 2026-07-29 (nak copied to /usr/local/bin/nak on intentsolutions; jq present). VERIFIED LIVE: closed relay up+healthy+CORS-applied; buzz-admin add-member/remove-member/list-members work — EXACT syntax is 'buzz-admin add-member --pubkey <hex-or-npub>' (NOT positional; positional errors with usage). nak emits 64-char hex from 'nak key public'; relay accepts hex. add+remove round-trip proven; test member cleaned up (relay left clean: owner + 1 pre-existing member). REMAINING: the nak publish/readback NIP-42 flow hung with reactive '--auth' — the closed relay likely needs '--force-pre-auth' (authenticate BEFORE the EVENT/REQ), and readback (nak req -i <id>) on a closed relay also needs auth so the member NSEC must be threaded into functional-probe.sh's readback() (currently it only gets the event id). NEXT: (1) prove 'NOSTR_SECRET_KEY=<nsec> nak event -k1 -c X --auth --force-pre-auth <ws>' returns an id against staging; (2) prove readback with the member key; (3) bake the verified commands + --pubkey into functional-probe.sh add_member/del_member/publish/readback; (4) then no-op-digest updater rehearsal on staging; (5) install-updater-lane.sh intent-ops-buzz --enable-timer.", "status": "open", "priority": 1, "issue_type": "task", "owner": "jeremylongshore@users.noreply.github.com", "created_at": "2026-07-29T21:47:43Z", "created_by": "jeremylongshore", "updated_at": "2026-07-29T21:51:24Z", "labels": ["go-live", "probe", "updater"], "dependency_count": 0, "dependent_count": 0, "comment_count": 0} |
There was a problem hiding this comment.
🔒 Security & Privacy | 🟠 Major | ⚡ Quick win
Complete the host-identity redaction before merging.
The public JSONL still exposes production and host identity details: Line [1] includes the host account intentsolutions; Lines [4] and [13]-[14] retain production/staging DNS names; Line [5] publishes hostname intent-ops-buzz and /etc/intentsolutions/age.key; and Line [6] retains an internal Plane URL. A zero-IP scan can pass while this information remains public. Replace these values with the existing redaction placeholders, then regenerate and re-import the JSONL/Dolt export.
Also applies to: 4-6, 13-14
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In @.beads/issues.jsonl at line 1, Redact all remaining host and environment
identities in the issue export before merging: replace the intentsolutions
account, production/staging DNS names, intent-ops-buzz hostname,
/etc/intentsolutions/age.key path, and internal Plane URL with the existing
redaction placeholders. Apply the same replacements to the referenced lines 4–6
and 13–14, then regenerate and re-import the JSONL/Dolt export.
…llow-up) The first redaction only zeroed IPs; CodeRabbit correctly flagged that the public JSONL still carried the admin account name + NOPASSWD/docker-group detail, the age-key path, staging/prod DNS names, the shared-host ssh alias, and an internal Plane URL. Rewrote the buzz-nry/.1/.2 descriptions+notes to high-level status (bd-sync mirror IDs preserved) and globally scrubbed all addressing/paths/ accounts/internal-URLs across every bead — detail now points to intent-os ops/buzz only. Kept the public asset name 'intent-ops-buzz' (published by the canonical naming record 006) and the public github.com issue URL. VERIFIED: zero residual across all sensitive tokens in both the tracked JSONL and the Dolt export (re-imported --allow-stale so the pre-commit export can't re-inject); JSONL valid. Residual: prior git history still carries the old values (accepted — none are secrets: age recipient is a public key, IP is internet-facing). Refs #12.
What
Addresses the four CodeRabbit findings on the merged PR #11 (they weren't read before that merge — process now corrected per owner instruction: wait for reviewers + fix before merge).
Findings addressed
.beads/issues.jsonl: prod public IP, tailnet address, prod domain, and the host age recipient (inbuzz-nry.1/.2) now referenceintent-os ops/buzzinstead. Forks of public repos are always public; operator detail belongs only in the private ops lane. These are not true secrets (age recipient is a public key, the IP is internet-facing, the tailnet addr needs tailnet auth, domains are DNS-public) → no rotation, but they don't belong here. Dolt re-synced (--allow-stale) so the pre-commit export can't re-inject. Residual: prior git history still carries them (accepted — no secrets).buzz-nry.3's description from "now executed against PROD" (false completion tone) to scope; per-gate status lives in notes/ops; the off-site leg + several gates remain OPEN.```text.Verification
grep→ zero host-addressing in the tracked JSONL and the Dolt export.006.Refs
intent-solutions-io/buzz#11.intentsolutions.io
Summary by CodeRabbit