Repository navigation
docs(roadmap): betanet 2026-12-01, 1.0 2027-01-25, mainnet 2027-02-01 — DRAFT, needs counsel - #37
SaulBuilds wants to merge 1 commit into
Conversation
Replace the Q2 2027 mainnet target with the betanet timeline: betanet genesis + Citrate Core 0.5.2 on 2026-12-01 (the genesis mainnet keeps), the 1.0 release on 2027-01-25, and mainnet when the 1.0 soft fork activates on 2027-02-01. State what carries: testnet may be reset before betanet; betanet state carries into mainnet. All rows stay Specified. Regenerated content/_generated/content.ts. truth-lint + content-lint OK. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Bg756tPRfuEgYHzJQsWDCV
SaulBuilds
left a comment
There was a problem hiding this comment.
[MAC] CHANGES REQUESTED at 937e0ac
Reviewed the current head 937e0ac (GitHub draft), 4 files: roadmap.md, open-source.md, what-is-citrate.md and the regenerated content.ts. I checked it against UI truth contract v1 (citrate-chain docs/ui-truth/UI_TRUTH_CONTRACT.md, main), C2_GENESIS_SPEC.md (federation main, status "DRAFT for owner decisions due 2026-10-30") and the betanet plan.
Checks (run locally)
node scripts/truth-lint.mjs: OK.node scripts/content-lint.mjs: OK (0 em-dashes, 0 vocabulary warnings).node scripts/build-content.mjson the PR head produces no diff, socontent/_generated/content.tsmatches the sources.- No investment, yield, APY, price, "dogfood" or HITL wording in the changed text. Nothing describes finality as running.
- CI (REST check-runs at 937e0ac): ci, build, check, guardrail, chain-sync, secret-scan, CodeQL (rust, js/ts, actions) all succeeded.
- Stale-date sweep: no other
content/page still says Q1 or Q2 2027.
Findings
-
Blocking.
content/start/roadmap.md:42-45makes the same carry-over promise as row 3, but the claim table marks it "no counsel". "Betanet state does carry into mainnet, because mainnet is the same chain…" is token-balance wording, just like row 3 (roadmap.md:38), which you marked needs counsel. Please gate claim #6 on counsel together with #3, or reword the sentence so it doesn't promise anything. -
Blocking until D3 is decided and §5.6 is re-issued. The carry-over copy conflicts with the UI truth contract that is in force. Contract v1 §5.6 (UI_TRUTH_CONTRACT.md:167 on chain main) says: "don't promise that SALT carries over to mainnet. Until the C2 genesis spec decides, say: 'Betanet. What carries over to mainnet is set in the genesis spec.'" D3 is still only a recommendation in C2_GENESIS_SPEC.md §D3 (decisions are due 2026-10-30), and this PR doesn't touch §5.6. The PR body says "C1 §5.6 update", but that change lives in citrate-chain. Suggested order: owner decides D3, the chain team re-issues the contract with §5.6 changed, counsel clears it, then this PR. The other option is to ship the date changes now and use the §5.6 interim sentence for carry-over at roadmap.md:38 and :42-45.
-
Blocking (copy ahead of the chain). Two sentences state the betanet date as fact. roadmap.md:15-16 says "Betanet launches on 1 December 2026 from the genesis block that mainnet keeps", and what-is-citrate.md:96 says "betanet launches on 1 December 2026". The date is a target: it depends on go or no-go on 2026-11-30 (plan C6), and the page itself calls every phase Specified. Suggest "Betanet is targeted for 1 December 2026" in both places. "The genesis block that mainnet keeps" depends on D3 as well (see finding 2).
-
Non-blocking. Chain-id permanence (roadmap.md:38, :42 "does not change between testnet, betanet, and mainnet"). The page already said 40204 is permanent, and that matches the owner rule. But fed#331 still lists the chain id as an open C2 question, because of the K6 replay concern (fed#343). If C2 changes it, these lines and the row 38 wording need to change in the same pass.
-
Non-blocking, already noted in the body. The "School pilots · Specified, summer 2026" row (roadmap.md:37) is now in the past. It needs the owner to restate it before this leaves draft.
Rows 1, 2, 4, 5, 7 and 8 look right against the plan timeline (2026-12-01 / 2027-01-25 / 2027-02-01) and D4 option A (1.0 is an upgrade on the same chain, and there is no liquidity wording).
Standard: not applicable to code tests, since this PR is docs only and no test references these pages. The lints and the regenerated-content check are green. Gap: truth-lint has no rule for carry-over or reset wording, or for launch dates stated as fact. A rule tied to the §5.6 wording would catch this class of mistake next time. That would be a follow-up, not a blocker.
Verification cleared: no. This is public token wording, and it waits on D3, the §5.6 re-issue and counsel.
Board item: G6: Public copy aligned with D3/D4 (landing, legal, docs roadmap) + C1 §5.6 update
Draft. Hold until counsel signs off on the row marked "needs counsel". Companion to CitrateNetwork/citrate-landing#127.
The roadmap now gives the betanet timeline in place of "mainnet Q2 2027". Every phase stays Specified: these are targets, not recorded facts.
Every changed claim
content/start/roadmap.mdintrocontent/start/open-source.mdcontent/start/what-is-citrate.mdcontent/_generated/content.tsis regenerated (node scripts/build-content.mjs).Not changed (noted)
chain/lvm.md,chain/consensus.md,start/primer.md,operators/run-a-node.md) already matchesverification/claims.json: ~750 TPS derived on testnet, 5,000–10,000 as a mainnet target, and checkpoint finality specified, not running, with no finality time published.chain/genesis.mddescribesmainnet.tomland chain id 1 as they are in the code at the audited SHA. The genesis work that retires that profile lands in citrate-chain first. This page follows it then.Checks
node scripts/truth-lint.mjs: OK.node scripts/content-lint.mjs: OK (em-dash gate green).🤖 Generated with Claude Code
https://claude.ai/code/session_01Bg756tPRfuEgYHzJQsWDCV