Skip to content

Build out MS19 (7 phases); extend MS18; finding-doc convention#67

Merged
n8bar merged 36 commits into
mainfrom
claude/ms19-buildout
May 9, 2026
Merged

Build out MS19 (7 phases); extend MS18; finding-doc convention#67
n8bar merged 36 commits into
mainfrom
claude/ms19-buildout

Conversation

@n8bar
Copy link
Copy Markdown
Owner

@n8bar n8bar commented May 9, 2026

Summary

  • MS19 fully scoped: built out the milestone doc and all 7 phase strategy docs (notification coverage audit, auth hardening, LLC formation, legal layer, content promises reconciliation, contributor docs review, 2FA). Decisions resolved per phase. MS19/MS20 reorg consolidates the legal layer into MS19. LLC formation lined up as Phase 3: Arizona, single-member, AFCU, May $0 prep / June filing, draft-now / publish-at-MS21 split for the legal copy.
  • MS18 extended to 2026-05-31 with explicit hard-cap rationale (Rachel's nursing program starts 2026-06-01; video either ships by 5/31 or drops from scope).
  • Finding-doc convention: Date fixed line standardized in docs/DOC_ROLES.md. Finding 1 backfilled (fixed via MS14 on 2026-03-26). Finding 2 documented for the rate-button rename ("Use current rate" → "Refresh rate", commit 33489f2).

Includes a merge of main (commit a522780 milestone-date shift) into this branch, with date conflicts resolved in favor of the newer state (MS18 hard cap dominates; MS19/20/21 keep their existing post-shift targets).

Test plan

  • PR Tests pass on CI.
  • docs/PLAN.md table reflects MS18 → 2026-05-31, MS19 → 2026-06-11, MS20 → 2026-06-23, MS21 → 2026-07-05.
  • docs/milestones.ics matches; Proton Calendar subscription updates after merge.
  • docs/qa/Finding1.md and docs/qa/Finding2.md both have a Date fixed: line near the top.
  • docs/milestones/19_RC_HARDENING_OPS.md lists Phases 1–7 in Current Focus and Phase Rollup.
  • All 7 strategy docs exist under docs/strategies/19.{1..7}_*.md.
  • Rate-button rename verified — invoice create/edit shows "Refresh rate" (touches Blade views; sanity check nothing broke).

🤖 Generated with Claude Code

n8bar and others added 30 commits April 24, 2026 18:46
Corrected homepage lastmod (2026-03-18 → 2026-04-12) and BTCPay
alternatives lastmod (2026-04-18 → 2026-04-21) to match git history.
All five SEO verification checks pass — URLs, lastmod, canonical/OG,
staging noindex, and robots.txt.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…r restructure

Scanned all 6 published pages for promises — added 13 new entries
(homepage, BTCPay alternatives, What Is a Bitcoin Invoice). Verified
every open entry against the codebase. Restructured catalog into
major (9 entries needing individual MS19 reconciliation) and minor
(18 entries for bulk verification). Fixed stale staging source paths.

Scoped the 0% fee claim to beta only: table now reads "0% (beta)",
CZ description adds "No fees during beta. Long-term pricing hasn't
been decided; free is still on the table, and if not, the intent is
to keep it very low." Staging copy synced.

Added MS19 objective to sweep "pre-release"/"Release Candidate" copy
to "open beta" across all published pages.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Moved low-concern entries (custodial, open-source, self-host, hosted
onboarding, "Full" invoicing) from Major to Minor. Deleted entries
for promises CZ would only violate through deliberate architectural
redesign (custodial framing, noncustodial listing, self-custody ethos).
Added DELETED_PROMISES.md so future scans skip already-triaged items.
Added curation note to catalog preamble. Added Resolved section for
the fee omission entry. Merged duplicate unique-address entries.

Major is now 3 entries (fee hypocrisy, 0% beta, stated limitations).
Minor is 17. Resolved is 1.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Phase 2 was left in Active status with 11 unchecked articles and an
untouched video section while Phase 3 was started. Fixed: articles
5-15 annotated as queued in CONTENT_PLAN.md (not Phase 2 deliverables),
video deferred to Phase 3 with cross-reference, all exit criteria
checked and documented, status set to Complete. Also updated
CONTENT_PLAN.md video section to point to 18.3.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Shooting script for first YouTube video. Rachel teaches Nate how to
invoice someone in Bitcoin using CryptoZing as the concrete example.
Educational, not an ad. 14-minute target with talking head + narrated
screen recordings. Banter beats brainstormed throughout.

Decisions captured: topic, format, cast (Rachel + Nate), target length,
YouTube hosting, optional real-client shoot with Leo/ANC. Strategy doc
items 1 and 3 checked off, item 2 (full script) outlined and partially
fleshed out — needs final pass before recording.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Extra week gives the video production breathing room. Script moved
out of the public repo into gitignored .cybercreek/video/.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Check off the script-writing task (full shooting script now lives at
.cybercreek/video/how-to-invoice-bitcoin-script.md) and add a HyperFrames
note on the edit-and-review step.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
The "Videos for n8 to watch" list is a personal learning queue, not
project documentation. Loaded into agent context on every UX-related
task with no behavioral effect. Moved to .cybercreek/ux_learning.md
(local-only); UX_GUARDRAILS.md now only contains the rules agents
actually need to apply.

Part of the context-efficiency audit at
.cybercreek/agent_context_audit_2026-04-25.md.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Cut four sections that duplicated Claude Code's built-in system prompt
or described auto-loaded systems without changing behavior:

- Tool Preferences: Claude already prefers Read/Edit/Write/Glob/Grep
  over shell equivalents — no project override here, just a restatement
  of defaults.
- Subagents descriptive bullets: Agent/Explore/Plan are documented in
  Claude's system prompt. The project-specific coordination pointer
  ("follow AGENTS.md multi-agent rules") is preserved.
- Persistent Memory: the memory index is auto-loaded by the harness;
  describing it here changed nothing.
- Confirmation Defaults: meta-commentary that pointed back at the
  AGENTS.md rules as already-aligned. Tautological.

Down from 33 lines to 15. All cut content logged in
.cybercreek/agent_context_cuts_log.md with reasoning.

Part of the context-efficiency audit at
.cybercreek/agent_context_audit_2026-04-25.md.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Removed the line under "Environment Notes" that restated the rule
already in "Working Style":

  Whenever docs/** changes, commit/push those updates right away.
  Exception: single-item checklist checkoffs in the same active
  workstream do not need to be pushed right away and may be
  committed together later.

The earlier instance (under Working Style) is broader — it covers
AGENTS.md changes too — so it supersedes this duplicate.

Part of the context-efficiency audit at
.cybercreek/agent_context_audit_2026-04-25.md.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Harvey (Devil's Advocate Progress Reporter) is invoked on demand by
the user, not on every task. Moving the description out of always-
loaded AGENTS.md and into AgentRoles/HARVEY.md keeps it accessible
when needed without paying the context cost on every session.

A one-line pointer remains under "## Roles" in AGENTS.md so the agent
knows where to look when Harvey is invoked. The relocated file also
expands the guidance — when to invoke, what NOT to do, output format —
which would have been too verbose for an always-loaded doc.

Logged in .cybercreek/agent_context_cuts_log.md.

Part of the context-efficiency audit at
.cybercreek/agent_context_audit_2026-04-25.md.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
CLAUDE.md previously said "All rules in AGENTS.md apply" but Claude
Code does not auto-load AGENTS.md — only CLAUDE.md and CLAUDE.local.md
load on session start. The cross-reference was a pointer, not a load,
so AGENTS.md rules only stuck when Claude actively read the file.

Adding the `@AGENTS.md` import to CLAUDE.md makes Claude Code resolve
and inline AGENTS.md contents at session start, alongside CLAUDE.md.
This gets us reliable AGENTS.md loading without duplicating its
contents into CLAUDE.md.

Verified via claude-code-guide subagent: @import is the documented,
supported pattern. Hooks would also work but add overhead and
maintenance cost; @import is the canonical approach.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Pulled ~21 lines of doc taxonomy out of always-loaded AGENTS.md and
into a new docs/DOC_ROLES.md, leaving a one-line pointer behind.

Content moved:
- Canonical doc list (PLAN, PRODUCT_SPEC, BACKLOG, UX_GUARDRAILS)
- Doc-tree role taxonomy (milestones/, specs/, strategies/, ops/, qa/)
- Strategy doc rules: authority, subagent-aware authoring, owner
  labels (User vs Guided User), lifecycle
- Checklist-depth separation between PLAN, milestones, strategies
- "Numbered tasks done in order" rule
- CHANGELOG.log conventions (chronological, append-only)

The relocated content is also more scannable than the original
intermixed prose — strategy doc rules and checklist depth now sit
together under their own headings instead of being scattered through
"Working Style."

Doc-roles are navigational, not behavior-shaping on most tasks. Late-
load is acceptable because relevance is bounded to doc-shaping
decisions.

AGENTS.md down from 80 to 60 lines.

Logged in .cybercreek/agent_context_cuts_log.md.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Created four small directory-level instruction files that load on
demand when Claude operates in those subtrees:

- tests/CLAUDE.md — Sail-prefixed test invocation, pointer to
  TESTING_STANDARDS.md, fixture watch-only reminder
- node_scripts/CLAUDE.md — derive-address.cjs invocation contract,
  watch-only constraint on extending the helper
- database/migrations/CLAUDE.md — spec-first rule, test requirement,
  no private keys in seeders/migrations
- site/CLAUDE.md — GitHub Pages placeholder is NOT the Laravel app;
  staging-before-published authoring order

Also moved the node helper architecture note (AGENTS.md line 67) into
node_scripts/CLAUDE.md since its relevance is bounded to wallet-
derivation code. The watch-only invariant itself stays at root because
it applies repo-wide.

Deliberately NOT creating app/Mail/CLAUDE.md or app/Services/CLAUDE.md:
their rules apply to adjacent code (anything sending mail, any caller
of HdWallet) so late-loading would miss reasoning that doesn't touch
those directories. Those rules stay in AGENTS.md.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Rachel's video-shoot availability pushes the schedule out a week.
New targets: MS18 2026-05-16, MS19 2026-06-11, MS20 2026-06-23,
MS21 2026-07-05. Updated PLAN.md table, milestones.ics spans, and
the stale narrative MS21 date in the Published Release Target block.
Eleventy was templating site/CLAUDE.md into public/CLAUDE/index.html
and would have published it to GitHub Pages on the next merge to main.
Add a .eleventyignore covering CLAUDE.md and AGENTS.md at any depth so
agent context never leaks into the public site.
Current MS21 target (2026-07-05) sits at the front edge of "mid-2026,"
leaving no room for further slips. Late 2026 gives realistic cushion
without overshooting the 2027 public release commitment in the same
paragraph. Nobody complains about an early arrival.
Rachel's nursing program starts 2026-06-01 and removes her availability
for the foreseeable timeline. The video either records by 2026-05-31 or
is dropped from MS18 scope rather than slipping the milestone.

Also brings stale Phase 2 / Phase 3 status indicators current: Phase 2
strategy is complete, Phase 3 is in progress (SEO verification and
content promises catalog review done; video and close-out remain).
…ng 2)

The label implied invoice rate behavior changed when the button only
refreshes the issuer's form-input snapshot at creation/edit time. Every
viewed invoice already shows current rate; the button was a form helper,
not a behavior toggle. Renamed in create and edit views, JS reset paths,
and helper-text references. Full rationale in docs/qa/Finding2.md.
Move ToS/Privacy Policy drafting, disclaimer copy, monetization-neutral
copy review, and UI placement entirely into MS19. MS20 returns to pure
mainnet cutover preparation.

The previous arrangement put legal text drafting in MS20 with UI
implementation "deferred" to MS19, creating a cross-milestone dependency
where MS19 needed artifacts produced in MS20. The original MS20 stub
(6e338e0) recorded the split as intentional, but the corresponding exit
criterion ended up duplicated in both milestones rather than removed
from MS20. This consolidates the entire legal layer under MS19 where it
sits alongside related pre-cutover work (auth hardening, content
promises reconciliation, contributor docs).

Updates: MS19 doc (objectives, new Decisions Recorded section, Phase 3
expanded, exit criteria), MS20 doc (legal scope trimmed from
objectives/decisions/phases/exit criteria), PLAN.md row descriptions,
milestones.ics descriptions.
…nding2

Finding docs under docs/qa/Finding*.md gain a "Date fixed:" line near
the top once resolved, with a brief reference to the milestone/PR/commit
that landed the fix. Findings without that line are treated as still
open. Convention recorded in docs/DOC_ROLES.md.

Backfills:
- Finding1 — fixed 2026-03-26 via MS14 (On-Chain Payment Attribution
  Hardening); date taken from the last MS14 work commit (Phase 5
  follow-up fixes).
- Finding2 — fixed 2026-05-08 in commit 33489f2.
MS19 milestone doc: drop stub note, replace flat phase list with a
linked Current Focus block and a Phase Rollup section with checkboxes
and one-line phase descriptions. Status flag updated to call out the
skeleton state.

Phase strategy docs (skeletons): each carries a "Decisions to confirm
before flesh-out" section near the top with numbered questions and
_Answer:_ slots for inline replies, then top-level numbered section
headings (no detailed checklists yet) and an Exit Criteria placeholder.

Decision counts:
- 19.1 Notification Coverage Audit: 3 decisions
- 19.2 Auth Hardening: 4 decisions
- 19.3 Legal Layer: 6 decisions (largest — drafting source, disclaimer
  approach, pages location, monetization guide location, copy-review
  scope, "open beta" refactor placement)
- 19.4 Content Promises Reconciliation: 2 decisions
- 19.5 Contributor Docs: 2 decisions

Flesh-out follows once the user answers in the skeleton files.
MS19 was incorrectly tagged "Not started — pending MS18 close-out" in
the recent skeleton commit. Parallelism between MS18 and MS19 was
explicitly approved on 2026-05-08 because MS18 is blocked end-to-end on
Rachel's video deliverable; MS19 phases are independent of that work.
This update restores MS19 to Active and lists both milestones under
PLAN.md's Current section as parallel-active.
Parallelism between MS18 and MS19 is the natural dependency-respecting
state, not a special exception requiring justification. The two
milestones share no hard dependencies, so simultaneous progress is just
efficient execution. Updates the language in PLAN.md and the MS19
milestone doc to reflect that.
19.1 (Notification Coverage Audit) goes from skeleton to fleshed-out
strategy doc. The phase scope is leaner than the original skeleton
implied: NOTIFICATIONS.md is substantively complete, with one specific
self-flagged gap — the coverage matrix that MS17 was supposed to deliver
but didn't. Fleshed-out plan focuses on populating that matrix using
the column set the spec already specifies, reconciling drift with small
in-place spec tweaks, and routing larger fixes either in-phase or to
backlog per Decision 3.

19.2 (Auth Hardening) keeps its skeleton state, with the user's
in-progress Decision 1 answer preserved. Decisions 2–4 are still blank;
flesh-out waits for those.
…wers

Phase 2 (Auth Hardening) goes from skeleton to fleshed-out strategy
doc, narrowed to 419-redirect + session-expiry logout per the user's
scope confirmation. Decisions captured:
- 419 redirect target: investigation-then-decide via Section 1 survey.
- Session expiry: keep Laravel default 120-minute rolling idle timeout.
- Logout-on-expiry: inline expired-session message on the login page.
- Scope: 2FA split out to a new Phase 6.

Phase 6 (Two-Factor Authentication) added as a new skeleton with four
decision points (TOTP cutoff trigger, recovery option, code TTL/lockout,
recommendation surface). Email-based 2FA is the mandatory baseline;
TOTP is opportunistic (only if Phase 6 begins with at least 5 working
days remaining before MS19 close, with the cutoff confirmable).
Phase 6 is positionally last in MS19 by design.

Milestone doc updated: new objective bullet for 2FA, Phase 6 added to
Current Focus and Phase Rollup, three new exit criteria covering email
2FA, recommendation surface, and TOTP-or-deferred.

Phase 3 (Legal Layer) preserves the user's in-progress decision answers
(four resolved, two pending — D1 BTCPay drafting source, D4
monetization-guide location). Doc remains skeleton; flesh-out waits.
Adds LLC formation as MS19 Phase 3 (single-member LLC in Arizona, EIN,
business bank account, operating agreement) so the entity backing is in
place before the legal layer (Phase 4) drafts ToS that depend on it for
liability protection. Bumps existing Phases 3–6 forward by one:

  Phase 3 — LLC Formation                 (NEW)
  Phase 4 — Legal Layer                   (was Phase 3)
  Phase 5 — Content Promises Reconciliation (was Phase 4)
  Phase 6 — Contributor Docs Review       (was Phase 5)
  Phase 7 — Two-Factor Authentication     (was Phase 6, stays positionally last)

Renumbering covered: strategy doc filenames (git mv), strategy doc titles,
internal cross-references between strategy docs (19.2 → 19.7 link, 19.4
D6 references), milestone doc Current Focus links, Phase Rollup entries,
Exit Criteria (LLC criteria added; Phase 6 → Phase 7 reference updated),
PLAN.md MS19 row description, and milestones.ics MS19 description.

Phase 3 LLC strategy doc lands as a near-fleshed skeleton: state,
entity type, tax treatment, and statutory agent are pre-decided
(Arizona, single-member, default disregarded entity, self as agent);
four open decisions remain (entity name, county/publication, bank
account choice, E&O insurance timing).

Phase 7 (2FA) keeps the positionally-last-by-design property — if MS19
ever grows additional phases, 2FA stays at the end.
Drops the over-dramatized "MS19 must slip 5 weeks for LLC" framing.
The actual structure: Phase 4 drafts the legal layer with placeholder
entity names during MS19; the entity-name swap and publication to live
URLs is a deploy-time finishing step in MS21 Phase 2 (cutover) — its
natural home anyway, since that's when legal docs go live to real users
for the first time.

19.3 (LLC Formation):
- Adds Timing constraint section explaining May $0 prep / June filing
  split (driven by personal-budget cap, not credit cards).
- Mohave County publication confirmed; moved from "to confirm" to
  "Decisions made" with budget guidance.
- Restructures work sections into May prep (no-cost research, drafts,
  shortlists) and June+ execution (filing, EIN, signing, banking).
- Exit criteria add the "notify Phase 4 of final entity name for the
  MS21 swap-and-publish" handoff.

19.4 (Legal Layer):
- Goal updated to make explicit that drafting + scaffolding land here;
  publication is MS21.
- Exit criteria softened: "drafted; ready for entity-name swap and
  publication at MS21 deploy time" instead of "published".

21 (RC Deployment):
- Adds objective bullet for legal-layer activation at deploy.
- Records the cross-milestone arrangement under "Decisions recorded"
  so the dependency direction is unambiguous.
- Adds explicit exit criterion for legal layer being live.

No MS19 target slip; no cross-phase blocking; meaningful work proceeds
across all 7 MS19 phases through May and June.
All three open decisions now resolved:
- Entity name: CryptoZing LLC, filed with Nate as sole member.
  Future restructure under a CyberCreek LLC holding company is
  considered but out of scope for this phase.
- Business bank: America First Credit Union; account opens in §5
  once formation + EIN are in hand.
- E&O / Professional Liability Insurance: deferred — revenue-gated,
  not milestone-gated. Won't bind from day-job income.

Strategy doc updates:
- "Decisions to confirm before flesh-out" section removed; all entries
  moved into "Decisions made" with the resolution context preserved.
- §5 (bank account) and §1.4 (AFCU requirements check) now reference
  AFCU specifically.
- §7 rewritten as a deferred / revenue-gated stance with a tracking
  item rather than a quote-and-bind workflow.
- Exit criteria updated to match (entity name, AFCU specifically,
  deferred-insurance documented).
- Reference section gains future-restructure note for CyberCreek LLC
  holding company.
n8bar added 5 commits May 8, 2026 22:05
Phase 4 (Legal Layer) decisions all resolved and moved to "Decisions
made":
- Drafting source: narrow at phase start; direction locked as beta-style
  with strong all-bets-off lean grounded in operational reality.
- Disclaimer wording: context-specific per surface, small print, ultra-
  concise.
- Pages location: both public site and Laravel app.
- Monetization-safe language guide: section in UX_GUARDRAILS.md.
- Existing-copy review scope: all UI and mail copy.
- "Open beta" refactor: folded into this phase as §5.

Seven work sections fleshed out with concrete checklists. Exit criteria
match the resolved decisions and the deferred-publication-to-MS21 split.

Phase 5 (Content Promises Reconciliation) trimmed and resolved:
- Approach: per-case judgment, no pre-set lean. Thorough on majors;
  bulk on minors with low-consequence drift routed to backlog.
- 0% fee (beta) handling: not re-decided here; resolved in commit
  09014b7 and treated as such.
- Decisions section dropped (no genuine decisions remained); replaced
  with a brief Approach note.
- Four work sections with concrete checklists.
Both decisions resolved:
- Scope: AGENTS.md, CLAUDE.md, AgentRoles/, contributor-facing parts
  of docs/ops/. Don't broaden to README/DOC_ROLES (different doc
  shapes). Don't neutralize agent docs — solo-operator project,
  maintainer-style is the right voice.
- Retire-or-merge candidates: discover during the review pass rather
  than enumerate up front.

Five work sections (AGENTS, CLAUDE, AgentRoles, ops, retire/merge)
with concrete checklists. Exit criteria match.
All four decisions resolved with lean defaults:
- TOTP cutoff: ≥3 working days remaining at phase start.
- Recovery: Option C — no recovery codes for email 2FA; locked-out
  users go through manual-support path with a maintainer admin tool
  to disable 2FA after identity verification. TOTP keeps recovery
  codes since "contact maintainer" can't substitute for a lost device.
- Code TTL / lockout: 10-min TTL, 5 attempts, 15-min lockout.
- Recommendation surface: non-blocking dashboard banner only.

Five work sections (email 2FA, recovery flow, recommendation banner,
opportunistic TOTP, tests) with concrete checklists. Exit criteria
match.
Recovery via solo-maintainer manual support has a real gap: identity
verification in lost-email scenarios is weak, and some verification
levers (account dates, invoice numbers, business details) leak through
invoices recipients have already seen — making social engineering
plausible against a single-operator support flow.

Switched to Option A — recovery codes — which is the industry standard
for this scale of product. Generated at 2FA enable, displayed once,
hashed-stored, single-use. User saves out-of-band; regenerate available
in settings. If both email and recovery codes are lost, account
recreation is the answer, documented honestly. No SMS fallback —
NIST-deprecated, weak against SIM-swap, paid vendor cost not justified
for a non-custodial product.

Updates: D2 in "Decisions made"; §1.6 disable flow accepts code OR
recovery code; §2 fully rewritten as recovery-codes flow; §5 tests
include recovery-code paths; exit criteria match.

Other three pre-decided defaults (3-day TOTP cutoff, 10-min TTL with
5/15 lockout, non-blocking banner) unchanged per user confirmation
that "the only one that was really different was the recovery email
thing."
# Conflicts:
#	docs/PLAN.md
#	docs/milestones.ics
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: b5edc3bf77

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread docs/CONTENT_PROMISES.md
- Corollary that binds CZ: CZ should not be expanded to be a custodial service, or this article makes us hypocritical
- Resolution path: (a) commit to noncustodial design — Bitcoin goes directly to user-controlled wallet, CZ never holds funds — and verify product enforces this; or (b) revise the article to soften the custodial criticism (loses positioning value)
- Status: open — awaiting product confirmation
**1. [Potential hypocrisy]** — "taking a cut they expect you to absorb"
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Preserve promise IDs when reorganizing the catalog

This reassigns the existing pricing promise from its stable ID (2.1 in the parent) to 1, while the same doc still says IDs are never reused or renumbered. During MS19 reconciliation, any existing notes or audit references to 2.1 now point nowhere, and minor entries also reuse 1, making follow-up ambiguous; keep the old IDs or add an explicit alias/mapping instead of renumbering.

Useful? React with 👍 / 👎.

Comment thread docs/PLAN.md
Comment on lines +20 to +22
- **MS19 - RC Hardening & Ops** — pre-flight; strategy doc skeletons drafted, decisions awaiting user input before flesh-out.
- Status: `active`
- Next action: Phase 3 — site architecture, SEO verification, video production, and MS18 close-out.
- Primary next doc: [`docs/milestones/18_PRERELEASE_CONTENT_SEO.md`](milestones/18_PRERELEASE_CONTENT_SEO.md)
- Next action: MS19 strategy doc decision answers (user) → flesh-out (Claude). MS18 video gated on Rachel.
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Update the resume pointer after fleshing out MS19

The dashboard now tells the next agent/user that MS19 is still waiting on decision answers before flesh-out, but this same commit adds the fleshed-out Phase 1–7 strategy docs with recorded decisions. Because PLAN.md is explicitly the first doc to open when resuming work, this stale next action can send the workstream back to a non-existent user-input step instead of starting Phase 1 execution.

Useful? React with 👍 / 👎.

Comment on lines +62 to 63
- [ ] ToS and Privacy Policy drafted and published to the live site.
- [ ] Disclaimer copy present at signup, wallet onboarding, and invoice/payment surfaces; footer links to ToS and Privacy Policy on every page.
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Keep MS19 legal exit criteria aligned with MS21 activation

This milestone-level exit criterion still requires the ToS/Privacy Policy to be published to the live site during MS19, but the new Phase 4 strategy says they are only drafted/scaffolded in MS19 and the final entity-name swap plus publication happens at MS21 deploy time. If followed literally, MS19 will either block on work intentionally deferred to MS21 or publish placeholder legal docs early; change this to match the Phase 4/MS21 handoff.

Useful? React with 👍 / 👎.

InvoiceNotificationTest past-due delivery assertions have been failing
in CI across every recent PR back to MS17 — expects `queued`, observes
`skipped`/`sent`. Pre-existing, not caused by any specific PR's changes.

Captured in 19.1 as a "Carried-in known finding" section + a matching
exit criterion. Per user direction at MS19 buildout PR merge: must be
resolved before Phase 1 closes.
@n8bar n8bar merged commit 4ad7f96 into main May 9, 2026
1 check failed
@n8bar n8bar deleted the claude/ms19-buildout branch May 9, 2026 05:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant