docs(vol-1): ch04 prose review — advance to voice-check#172
Conversation
Prose review pass (Stage 5). Cut from 5,051 words to 3,770 words, landing
within the 3,150–3,850 target range. Removed ~1,281 words via:
- Cut the full regulatory-atlas paragraph in Filter 3 (deferred to Appendix F)
- Compressed Filter 1 CAP explanation (removed restatement sentences)
- Removed hedging phrases throughout ("could potentially", "may", "might")
- Cut the standalone "Practical Shortcut" section header and its framing
paragraph; folded the three questions directly into "What the Analysis Produces"
- Removed restatement sentences across all five filter sections
- Trimmed Zone B/C description prose; removed repeated parenthetical disclaimers
- Compressed compliance table footnote prose in Zone C body
- Applied active voice throughout; removed academic scaffolding
Advanced ICM marker from icm/prose-review to icm/voice-check.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
📝 WalkthroughWalkthroughThis revision tightens an architectural decision chapter by reframing the central "one question," sharpening five sequential decision filters (consistency, ownership, connectivity, business model, team capability), and rewriting the Three Outcome Zones section with updated descriptions, compliance table, worked example, and conclusion. ChangesArchitectural Decision Framework Revision
Estimated code review effort🎯 2 (Simple) | ⏱️ ~12 minutes Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
Actionable comments posted: 2
🧹 Nitpick comments (2)
vol-1/part-1-thesis-and-pain/ch04-choosing-your-architecture.md (2)
231-233: ⚡ Quick winOpen the section with purpose before mechanism.
“Three questions produce…” starts with mechanics. Recast the opener to lead with why this section exists (decision velocity / risk reduction), then present the three-question method.
As per coding guidelines, “Write book chapters using purpose-first structure: every section opens with why it exists, not what it does” and “Lead with the punchline: decision before reasoning, constraint before implementation detail.”
🤖 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 `@vol-1/part-1-thesis-and-pain/ch04-choosing-your-architecture.md` around lines 231 - 233, Rewrite the "## What the Analysis Produces" section to open with the purpose and benefit (e.g., decision velocity, risk reduction, when to use this method) before introducing the method itself; replace the current opener "Three questions produce a fast first-pass answer for most cases." with a purpose-first lead that states why the reader should care (the decision outcome), then follow with the three-question technique as the mechanism and a brief transition sentence tying the method to that purpose.
14-14: ⚡ Quick winNormalize architecture terminology to one canonical name.
The chapter alternates between “local-node architecture,” “local node,” “local-first,” and “local-first node.” Pick one canonical term for the core concept and use it consistently throughout this chapter.
As per coding guidelines, “Use consistent naming for concepts throughout the book. Do not cycle through synonyms; name once and use that name everywhere.”
Also applies to: 24-24, 41-43, 64-64, 176-176, 188-188
🤖 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 `@vol-1/part-1-thesis-and-pain/ch04-choosing-your-architecture.md` at line 14, Choose a single canonical term for the concept (e.g., "local-first") and use it consistently across this chapter: replace all occurrences of "local-node architecture", "local node", "local-first node", and any other synonyms in the sentence shown and at the other flagged locations (24-24, 41-43, 64-64, 176-176, 188-188) with the chosen term, and adjust surrounding grammar if needed so the sentence reads naturally with the unified name.
🤖 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 `@vol-1/part-1-thesis-and-pain/ch04-choosing-your-architecture.md`:
- Line 247: Update the implementation-bridge paragraph to explicitly state the
architecture is engine-agnostic by naming the current engine (YDotNet used in
Sunfish) and the aspirational target (Loro) and explaining they are
interchangeable via the ICrdtEngine abstraction; keep the existing references to
Zone A and Zone C accelerators and Sunfish, but append a concise sentence such
as “Sunfish’s current implementations use YDotNet, but the architecture is
engine-agnostic and supports replacement with Loro through the ICrdtEngine
interface,” ensuring ICrdtEngine is mentioned exactly to signal the abstraction
layer.
- Around line 66-67: The paragraph beginning "When a regulatory custodian must
hold the authoritative copy..." in ch04-choosing-your-architecture.md must
include inline IEEE numeric citations ([1], [2], ...) in first-appearance order
for each legal/factual claim and a matching bibliographic entry assembled per
vol-1/appendices/appendix-e-citation-style.md; update the sentence(s)
referencing HIPAA, 45 CFR §164.312, FINRA Rule 4511, and SEC Rule 17a-4 to add
the appropriate bracketed citations and include section-level sourcing (e.g.,
v13 §X, v5 §Y, R1/R2) as required by the guidelines, then add the new references
to the references list in the appendix format; apply the same fixes to the other
flagged blocks (lines 87-92 and 200-209) ensuring citation numbering follows
first appearance throughout the file.
---
Nitpick comments:
In `@vol-1/part-1-thesis-and-pain/ch04-choosing-your-architecture.md`:
- Around line 231-233: Rewrite the "## What the Analysis Produces" section to
open with the purpose and benefit (e.g., decision velocity, risk reduction, when
to use this method) before introducing the method itself; replace the current
opener "Three questions produce a fast first-pass answer for most cases." with a
purpose-first lead that states why the reader should care (the decision
outcome), then follow with the three-question technique as the mechanism and a
brief transition sentence tying the method to that purpose.
- Line 14: Choose a single canonical term for the concept (e.g., "local-first")
and use it consistently across this chapter: replace all occurrences of
"local-node architecture", "local node", "local-first node", and any other
synonyms in the sentence shown and at the other flagged locations (24-24, 41-43,
64-64, 176-176, 188-188) with the chosen term, and adjust surrounding grammar if
needed so the sentence reads naturally with the unified name.
🪄 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: 7f58338b-c162-40b3-a062-e394da352aba
📒 Files selected for processing (1)
vol-1/part-1-thesis-and-pain/ch04-choosing-your-architecture.md
| When a regulatory custodian must hold the authoritative copy, the architecture cannot make that guarantee structurally. HIPAA accommodates local-first when a Business Associate Agreement covers the storage architecture and audit trails satisfy 45 CFR §164.312's technical safeguards. FINRA Rule 4511 and SEC Rule 17a-4 specify third-party WORM storage for broker-dealer records - requirements that may route specific retention flows to a centralized custodian even when day-to-day operations run local-first. The applicable regime determines what this filter produces. | ||
|
|
There was a problem hiding this comment.
Add IEEE citations for legal and factual claims.
These regulatory and jurisdictional assertions need inline IEEE numeric citations ([1], [2], …) in first-appearance order, with references assembled per the appendix style. Right now the claims are unsourced in-body.
As per coding guidelines, “vol-1/**/*.md: Use IEEE numeric citation style (in-text: [1], [2], [3] in order of first appearance) and follow all rules in vol-1/appendices/appendix-e-citation-style.md exactly” and “Source sections inline by citing v13 §X, v5 §Y, R1/R2 where applicable.”
Also applies to: 87-92, 200-209
🤖 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 `@vol-1/part-1-thesis-and-pain/ch04-choosing-your-architecture.md` around lines
66 - 67, The paragraph beginning "When a regulatory custodian must hold the
authoritative copy..." in ch04-choosing-your-architecture.md must include inline
IEEE numeric citations ([1], [2], ...) in first-appearance order for each
legal/factual claim and a matching bibliographic entry assembled per
vol-1/appendices/appendix-e-citation-style.md; update the sentence(s)
referencing HIPAA, 45 CFR §164.312, FINRA Rule 4511, and SEC Rule 17a-4 to add
the appropriate bracketed citations and include section-level sourcing (e.g.,
v13 §X, v5 §Y, R1/R2) as required by the guidelines, then add the new references
to the references list in the appendix format; apply the same fixes to the other
flagged blocks (lines 87-92 and 200-209) ensuring citation numbering follows
first appearance throughout the file.
| ## What the Analysis Produces | ||
|
|
||
| A system that clears all five filters earns an architecture that outlives vendor decisions, works through connectivity gaps and power interruptions, and satisfies compliance in every major regulatory jurisdiction. The Zone A accelerator is the reference implementation for greenfield local-first projects. The Zone C accelerator is the reference for teams migrating an existing SaaS product or offering a hosted option alongside a self-hosted one. Both reference Sunfish (the open-source ERP product, [github.com/ctwoodwa/Sunfish](https://github.com/ctwoodwa/Sunfish)) packages - pre-1.0 implementations of the architecture this book specifies, not finished products - and both are specified in full in Part IV. | ||
| A system that clears all five filters earns an architecture that outlives vendor decisions, works through connectivity gaps and power interruptions, and satisfies compliance in every major regulatory jurisdiction. The Zone A accelerator is the reference implementation for greenfield local-first projects. The Zone C accelerator is the reference for teams migrating an existing SaaS product. Both reference Sunfish (the open-source ERP product, [github.com/ctwoodwa/Sunfish](https://github.com/ctwoodwa/Sunfish)) packages - pre-1.0 implementations of the architecture this book specifies, not finished products - and both are specified in full in Part IV. |
There was a problem hiding this comment.
Add engine-agnostic framing with YDotNet, Loro, and ICrdtEngine.
This implementation bridge paragraph references Sunfish but omits the required engine-agnostic statement connecting current (YDotNet) and target (Loro) through ICrdtEngine.
As per coding guidelines, “Mention both YDotNet (current Sunfish implementation) and Loro (aspirational target) where relevant, emphasizing that the architecture is engine-agnostic via ICrdtEngine.”
🤖 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 `@vol-1/part-1-thesis-and-pain/ch04-choosing-your-architecture.md` at line 247,
Update the implementation-bridge paragraph to explicitly state the architecture
is engine-agnostic by naming the current engine (YDotNet used in Sunfish) and
the aspirational target (Loro) and explaining they are interchangeable via the
ICrdtEngine abstraction; keep the existing references to Zone A and Zone C
accelerators and Sunfish, but append a concise sentence such as “Sunfish’s
current implementations use YDotNet, but the architecture is engine-agnostic and
supports replacement with Loro through the ICrdtEngine interface,” ensuring
ICrdtEngine is mentioned exactly to signal the abstraction layer.
Summary
icm/prose-reviewtoicm/voice-checkWhat was cut
Test plan
icm/voice-check<!-- CLAIM: source? -->markers introducedSummary by CodeRabbit