Skip to content

docs(roadmap): betanet 2026-12-01, 1.0 2027-01-25, mainnet 2027-02-01 — DRAFT, needs counsel - #37

Draft
SaulBuilds wants to merge 1 commit into
mainfrom
betanet/g6-public-copy
Draft

SaulBuilds wants to merge 1 commit into
mainfrom
betanet/g6-public-copy

Conversation

@SaulBuilds

Copy link
Copy Markdown
Contributor

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

# Where Old New Source Counsel
1 content/start/roadmap.md intro "mainnet is targeted for the second quarter of 2027" "Betanet launches on 1 December 2026 from the genesis block that mainnet keeps, and mainnet is targeted for 1 February 2027, when the 1.0 soft fork activates on that same chain." Betanet plan timeline no
2 roadmap table, testnet row (no reset note) adds "It may be reset before betanet." Genesis decision D3 no
3 roadmap table, new row — "Betanet genesis + Citrate Core 0.5.2 · Specified, 2026-12-01 · … no reset is planned after it, and betanet state (balances, SBTs, bonds, contracts) carries into mainnet." D3; timeline needs counsel (balance carry-over is token wording)
4 roadmap table, new row — "Citrate 1.0 release · Specified, 2027-01-25 · The release that carries the 1.0 soft fork: hardening, plus anything that was not ready at genesis." Timeline; D4 (1.0 is an upgrade, not a switch) no
5 roadmap table, mainnet row "Mainnet · Specified, Q2 2027 · The production network." "Mainnet (1.0 soft fork activates) · Specified, 2027-02-01 · the same chain as betanet, after the 1.0 soft fork activates at a set block height." Timeline; D4 no
6 roadmap, chain-id paragraph "between testnet and mainnet … carry over" adds betanet. Testnet state does not necessarily carry into betanet (new genesis); betanet state does carry into mainnet (same chain) D3 no
7 roadmap, Access and canon "states the mainnet target (Q2 2027)" lists 2026-12-01, 2027-01-25 and 2027-02-01 Timeline no
8 content/start/open-source.md "ahead of the Q2 2027 mainnet" "ahead of mainnet, targeted for February 2027" Timeline no
9 content/start/what-is-citrate.md "mainnet is targeted for Q2 2027, with school pilots the prior summer" "betanet launches on 1 December 2026 and mainnet is targeted for February 2027". The relative "prior summer" no longer reads correctly. The pilot row on the roadmap still says summer 2026; its status is an owner question Timeline no

content/_generated/content.ts is regenerated (node scripts/build-content.mjs).

Not changed (noted)

  • TPS and finality copy (chain/lvm.md, chain/consensus.md, start/primer.md, operators/run-a-node.md) already matches verification/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.md describes mainnet.toml and 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.
  • The roadmap's "School pilots: Specified, summer 2026" row is now in the past. I left it for the owner to restate, because I can't verify its status.

Checks

  • node scripts/truth-lint.mjs: OK.
  • node scripts/content-lint.mjs: OK (em-dash gate green).
  • No test references these pages.

🤖 Generated with Claude Code

https://claude.ai/code/session_01Bg756tPRfuEgYHzJQsWDCV

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 SaulBuilds left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

[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.mjs on the PR head produces no diff, so content/_generated/content.ts matches 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

  1. Blocking. content/start/roadmap.md:42-45 makes 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.

  2. 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.

  3. 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).

  4. 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.

  5. 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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

betanet Betanet → mainnet program (board #5)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant