From 245f0b975e0357509ce150af19f9314375b31e4f Mon Sep 17 00:00:00 2001 From: igneum-labs <337424239+igneum-labs@users.noreply.github.com> Date: Fri, 9 Oct 2026 08:01:02 +0000 Subject: [PATCH 01/11] The VR and TV suites of the acceptance registry from the token value rules and gates (40 rules PROPOSED requiring ratification, 32 gates NOT RUN with scope and inherited links), the decisions block D01 to D06 UNAPPROVED, the counting notes; generated by tools/ci/token-value-suite.mjs, regenerated at the merge, checked in the gate Co-Authored-By: Claude Fable 5.1 --- .../token-value/rules-and-gates.json | 1526 ++++++++++++++ docs/plans/igneum-2.0-test-harness-map.md | 36 +- docs/plans/igneum-2.0-test-registry.json | 1832 +++++++++++++++++ tools/ci/merge-to-master.sh | 6 +- tools/ci/notes/tv-counting-20261009.json | 4 + .../notes/tv-counting-registry-20261009.json | 4 + tools/ci/review-suite-check.sh | 1 + tools/ci/test-map.json | 34 +- tools/ci/token-value-suite.mjs | 97 + 9 files changed, 3536 insertions(+), 4 deletions(-) create mode 100644 docs/plans/igneum-2.0-master/token-value/rules-and-gates.json create mode 100644 tools/ci/notes/tv-counting-20261009.json create mode 100644 tools/ci/notes/tv-counting-registry-20261009.json create mode 100644 tools/ci/token-value-suite.mjs diff --git a/docs/plans/igneum-2.0-master/token-value/rules-and-gates.json b/docs/plans/igneum-2.0-master/token-value/rules-and-gates.json new file mode 100644 index 000000000..e775cb00e --- /dev/null +++ b/docs/plans/igneum-2.0-master/token-value/rules-and-gates.json @@ -0,0 +1,1526 @@ +{ + "document": "Igneum 2.0 - Token Value & Network Leadership", + "version": "1.0-proposed", + "snapshot": "2026-10-08", + "status": "PROPOSED; no gates executed", + "scope": "Supplement to original master and 128-case test standard; not a price/rank guarantee", + "rules": [ + { + "id": "VR-01", + "title": "One monetary contract", + "requirement": "Ratify one maximum-supply, subsidy and change-policy contract. No unexplained tail escape, automatic emergency mint or price-triggered issuance.", + "evidence": "D01 decision, normative spec, executable supply tests and consistent public text.", + "owner_role": "Protocol + governance", + "status": "PROPOSED - REQUIRES RATIFICATION" + }, + { + "id": "VR-02", + "title": "Independent supply accounting", + "requirement": "Make circulating, issued, burned, locked and maximum supply independently reproducible. Count bridges and wrappers without creating fictitious native supply.", + "evidence": "Two independent supply calculations with exact integer reconciliation.", + "owner_role": "Protocol + measurement", + "status": "PROPOSED - REQUIRES RATIFICATION" + }, + { + "id": "VR-03", + "title": "Equal opportunity at launch", + "requirement": "No premine or privileged devnet conversion under the stated fair-launch policy. Publish efficient software and launch conditions before activation.", + "evidence": "Genesis audit, launch rehearsal, insider disclosures and public release history.", + "owner_role": "Release + ecosystem", + "status": "PROPOSED - REQUIRES RATIFICATION" + }, + { + "id": "VR-04", + "title": "No artificial return promise", + "requirement": "Do not advertise guaranteed appreciation, passive returns without necessary work, a redemption floor or electricity-backed value.", + "evidence": "Product terms, source of rewards and public-claim review.", + "owner_role": "Governance + counsel", + "status": "PROPOSED - REQUIRES RATIFICATION" + }, + { + "id": "VR-05", + "title": "Fund necessary security", + "requirement": "Model miners, internal provers, minimum validators and maintenance separately through declining issuance. No assumption that an external sale automatically funds all roles.", + "evidence": "Role-by-role cash flow, adverse scenarios and committed initial resources.", + "owner_role": "Economics + protocol", + "status": "PROPOSED - REQUIRES RATIFICATION" + }, + { + "id": "VR-06", + "title": "Honest rule change", + "requirement": "Publish rationale, impact, adoption path and compatibility limits before a material monetary change. Do not pretend software can prevent all future voluntary forks.", + "evidence": "Versioned proposals, reviewer comments, adoption and dissent documentation.", + "owner_role": "Protocol + governance", + "status": "PROPOSED - REQUIRES RATIFICATION" + }, + { + "id": "VR-07", + "title": "Transparent fee routing", + "requirement": "Every fee, burn, operator payment and optional Labs charge has an explicit source and recipient. No new team tax hidden in a commercial label.", + "evidence": "Executable fee tests and reconciliation to invoices/receipts.", + "owner_role": "Economics + protocol", + "status": "PROPOSED - REQUIRES RATIFICATION" + }, + { + "id": "VR-08", + "title": "Separate value and money flows", + "requirement": "Distinguish job turnover, fees, operator income, Labs income, token holdings and market value. Do not count the same payment or saving twice.", + "evidence": "Reconciled flow diagram and reproducible metric definitions.", + "owner_role": "Economics + measurement", + "status": "PROPOSED - REQUIRES RATIFICATION" + }, + { + "id": "VR-09", + "title": "Accessible hardware economics", + "requirement": "Fix the reference cohort and scenarios in advance. Allow the strongest feasible programmable multi-epoch specialist, including sunk development and alternative memory.", + "evidence": "Approved original GPU/ADV/ROT/ECO profiles and independent review.", + "owner_role": "GPU + hardware reviewer", + "status": "PROPOSED - REQUIRES RATIFICATION" + }, + { + "id": "VR-10", + "title": "Mandatory correct proofs", + "requirement": "All activated proof decisions must bind their actual statement, kind and verifier independent of cache history. Missing trusted infrastructure must not disable enforcement.", + "evidence": "Native warm/cold/order/restart tests and positive/negative proof fixtures.", + "owner_role": "Protocol + proving", + "status": "PROPOSED - REQUIRES RATIFICATION" + }, + { + "id": "VR-11", + "title": "Literal finality", + "requirement": "Define fault assumptions, authority continuity and recovery. Never present a weaker recovery certificate as the stronger irreversible guarantee.", + "evidence": "Native multi-node boundary tests and consumer label checks.", + "owner_role": "Consensus + security", + "status": "PROPOSED - REQUIRES RATIFICATION" + }, + { + "id": "VR-12", + "title": "Retained operator authority", + "requirement": "Pooling variance or buying a service does not silently transfer keys, transaction selection or finality/governance control.", + "evidence": "Key/template substitution tests and explicit delegation contracts.", + "owner_role": "Protocol + pool", + "status": "PROPOSED - REQUIRES RATIFICATION" + }, + { + "id": "VR-13", + "title": "Safe custody and consent", + "requirement": "Private keys, spending limits, signing displays and recovery choices remain under explicit user authority. Defaults must not conceal broad powers.", + "evidence": "Wallet security review and independent user/recovery exercises.", + "owner_role": "Wallet + security", + "status": "PROPOSED - REQUIRES RATIFICATION" + }, + { + "id": "VR-14", + "title": "Portable verification", + "requirement": "Balances and receipts authenticate their roots, successful outcome and trust anchors. Necessary reconstruction data has a documented availability path.", + "evidence": "Independent receipt/client verification with hostile inputs.", + "owner_role": "Wallet + protocol", + "status": "PROPOSED - REQUIRES RATIFICATION" + }, + { + "id": "VR-15", + "title": "Price real resources", + "requirement": "Bound execution, verification and storage costs. Sponsored transactions have limits. No deliberate congestion solely to increase a token metric.", + "evidence": "Minimum-node tests and fee/sponsor-abuse scenarios.", + "owner_role": "Protocol + economics", + "status": "PROPOSED - REQUIRES RATIFICATION" + }, + { + "id": "VR-16", + "title": "No fragile stable-value promise", + "requirement": "Any stable-value product has explicit issuer, reserve/redemption rights, permissions and risks. No native-backed peg used merely to manufacture demand.", + "evidence": "Independent diligence, risk limits and legal assessment before release.", + "owner_role": "Application + counsel", + "status": "PROPOSED - REQUIRES RATIFICATION" + }, + { + "id": "VR-17", + "title": "Optional bounded bridges", + "requirement": "Bridge exposure is separate from core security. No bridge is mandatory for genesis or allowed to redefine base-chain finality after a loss.", + "evidence": "External security review, loss limits and failure/isolation tests.", + "owner_role": "Application + security", + "status": "PROPOSED - REQUIRES RATIFICATION" + }, + { + "id": "VR-18", + "title": "Open work settlement", + "requirement": "Jobs bind program, inputs, result, verifier, deadline and payment. Gateways are replaceable and Labs approval is not required for ordinary work.", + "evidence": "Independent request-to-paid-result test and state reconciliation.", + "owner_role": "Protocol + ecosystem", + "status": "PROPOSED - REQUIRES RATIFICATION" + }, + { + "id": "VR-19", + "title": "Obligation-based service bonds", + "requirement": "Deposits secure a specific obligation, not consensus influence. Size and failure conditions must preserve small-operator paths and handle collateral decline.", + "evidence": "Economic and adversarial reservation/default tests.", + "owner_role": "Economics + application", + "status": "PROPOSED - REQUIRES RATIFICATION" + }, + { + "id": "VR-20", + "title": "Independent developer access", + "requirement": "Publish complete standards, fixtures and tooling. Grants reward useful maintained deliverables rather than deployments or price effects.", + "evidence": "Unaffiliated integration and maintenance evidence.", + "owner_role": "Ecosystem", + "status": "PROPOSED - REQUIRES RATIFICATION" + }, + { + "id": "VR-21", + "title": "Committed maintenance", + "requirement": "Essential maintenance and audits need a funded runway with stress accounting, distinct from hoped-for appreciation or fundraising.", + "evidence": "At least approved P13 runway, commitments and role costs.", + "owner_role": "Maintainers + finance", + "status": "PROPOSED - REQUIRES RATIFICATION" + }, + { + "id": "VR-22", + "title": "Founder independence", + "requirement": "Routine block, job, payment and recovery paths must not require a founder credential or undocumented manual action.", + "evidence": "Real founder-absence exercises and intervention ledger.", + "owner_role": "Operations + independent reviewer", + "status": "PROPOSED - REQUIRES RATIFICATION" + }, + { + "id": "VR-23", + "title": "Measure effective control", + "requirement": "Report operator, pool, hosting, service and client dependencies with attribution limits. Keys and addresses are not people.", + "evidence": "Dependency/control map with uncertainty and removal experiments.", + "owner_role": "Measurement + operations", + "status": "PROPOSED - REQUIRES RATIFICATION" + }, + { + "id": "VR-24", + "title": "Reproducible secure release", + "requirement": "Pin source, binaries, rules, guests/keys and activation. Provenance is necessary but not sufficient for correctness.", + "evidence": "Independent builds, artifact verification and scoped review.", + "owner_role": "Release + security", + "status": "PROPOSED - REQUIRES RATIFICATION" + }, + { + "id": "VR-25", + "title": "Consent-preserving incident response", + "requirement": "Separate public/developer authority. Urgency must not silently override installation or grant arbitrary execution. Disclose material incidents and retest.", + "evidence": "Compromised-key, unsafe-update and recovery drills.", + "owner_role": "Release + operations", + "status": "PROPOSED - REQUIRES RATIFICATION" + }, + { + "id": "VR-26", + "title": "Honest access and liquidity", + "requirement": "Use functional deposits/withdrawals and executable depth, not ticker count or fabricated volume. Never restrict exit to simulate value.", + "evidence": "Independent access-route and two-sided liquidity observations.", + "owner_role": "Ecosystem + measurement", + "status": "PROPOSED - REQUIRES RATIFICATION" + }, + { + "id": "VR-27", + "title": "Transparent treasury relationships", + "requirement": "Disclose material grants, insider holdings, inventory and market-making mandates. No wash trades or hidden price-support promises.", + "evidence": "Mandate register, reconciled accounts and conflict policy.", + "owner_role": "Treasury + counsel", + "status": "PROPOSED - REQUIRES RATIFICATION" + }, + { + "id": "VR-28", + "title": "Auditable metrics", + "requirement": "Publish definitions, raw/adjusted views, sampling, attribution uncertainty and missing data. No subsidy-hidden demand or censored failed jobs.", + "evidence": "Data lineage, conservation checks and independent replay.", + "owner_role": "Measurement", + "status": "PROPOSED - REQUIRES RATIFICATION" + }, + { + "id": "VR-29", + "title": "Fair comparison universe", + "requirement": "Define eligible peers and exclusions before observing rankings. Include qualifying new entrants and preserve unknown values.", + "evidence": "Independent peer census and versioned comparison protocol.", + "owner_role": "Measurement + external panel", + "status": "PROPOSED - REQUIRES RATIFICATION" + }, + { + "id": "VR-30", + "title": "Scoped claims only", + "requirement": "Every leadership claim names its metric, universe, period and limits. A measured price rank does not certify overall safety or future leadership.", + "evidence": "Claim register with evidence, expiry and legal signoff.", + "owner_role": "Governance + counsel", + "status": "PROPOSED - REQUIRES RATIFICATION" + }, + { + "id": "VR-31", + "title": "Evidence before pass", + "requirement": "Pre-register thresholds; missing inputs block gates; corrections preserve failed results. No aggregate score can waive core safety or economic failure.", + "evidence": "Frozen test charter and versioned evidence packets.", + "owner_role": "Independent acceptance panel", + "status": "PROPOSED - REQUIRES RATIFICATION" + }, + { + "id": "VR-32", + "title": "Real adoption", + "requirement": "Measure unaffiliated retained users and useful repeat activity with incentives identified. Do not require buying IGN to participate in a study.", + "evidence": "Cohort definitions, attrition, usage and subsidy audit.", + "owner_role": "Product + ecosystem", + "status": "PROPOSED - REQUIRES RATIFICATION" + }, + { + "id": "VR-33", + "title": "AI earns admission", + "requirement": "AI is an optional workload category, not a guaranteed-margin network identity. Price full costs and adverse demand before expansion.", + "evidence": "Workload-specific benchmark, repeat demand and verification policy.", + "owner_role": "Compute + economics", + "status": "PROPOSED - REQUIRES RATIFICATION" + }, + { + "id": "VR-34", + "title": "Bound agent spending", + "requirement": "Automated buyers have scoped budgets, permissions, expiry, revocation and logs. Untrusted prompts never alter base permissions.", + "evidence": "Prompt/input adversarial tests and payment-loss caps.", + "owner_role": "Application + security", + "status": "PROPOSED - REQUIRES RATIFICATION" + }, + { + "id": "VR-35", + "title": "Cryptographic migration readiness", + "requirement": "Maintain a full algorithm inventory and reviewed transition plan. No quantum-proof claim from one component or speculative attack date.", + "evidence": "Expert review, downgrade/migration tests and annual refresh.", + "owner_role": "Cryptography + protocol", + "status": "PROPOSED - REQUIRES RATIFICATION" + }, + { + "id": "VR-36", + "title": "Separate proof, truth and privacy", + "requirement": "Execution validity does not establish real-world input truth, AI answer quality or confidentiality. State trust and data exposure for each service.", + "evidence": "Threat model and user-facing guarantee audit.", + "owner_role": "Security + product", + "status": "PROPOSED - REQUIRES RATIFICATION" + }, + { + "id": "VR-37", + "title": "Scale within verification budgets", + "requirement": "Throughput, data and state growth must preserve the declared minimum-node and reconstruction capabilities. Reprice security after fee compression.", + "evidence": "Cold-path capacity, bootstrap, pruning and provider-removal tests.", + "owner_role": "Protocol + operations", + "status": "PROPOSED - REQUIRES RATIFICATION" + }, + { + "id": "VR-38", + "title": "Honest energy accounting", + "requirement": "Report complete-system energy and role allocation. Avoid double-counting joint work or making unsupported carbon/marginal-transaction claims.", + "evidence": "Calibrated wall tests and documented environmental methodology.", + "owner_role": "GPU + measurement", + "status": "PROPOSED - REQUIRES RATIFICATION" + }, + { + "id": "VR-39", + "title": "Activity-specific legal approval", + "requirement": "Obtain counsel review for actual audiences and activities. No-presale, fair-launch or decentralised labels are not blanket legal exemptions.", + "evidence": "Jurisdiction/activity matrix and approved external communications.", + "owner_role": "Counsel", + "status": "PROPOSED - REQUIRES RATIFICATION" + }, + { + "id": "VR-40", + "title": "No indispensable administrator", + "requirement": "A useful company, token holder, pool, AI agent or funding body receives no hidden power over balances, issuance or canonical history.", + "evidence": "Authority inventory, isolation tests and independent operation.", + "owner_role": "Protocol + governance", + "status": "PROPOSED - REQUIRES RATIFICATION" + } + ], + "gates": [ + { + "id": "TV-01", + "title": "Resolve and freeze the monetary contract", + "setup": "Supply, tail, fee and recovery documents plus exact proposed release.", + "procedure": "Reconcile D01-D06 with protocol/economic/counsel review. Freeze thresholds and all interfaces before confirmatory tests.", + "pass_criterion": "No conflicting normative policy; every material choice has a signed rationale, version, adoption path and tests. Unresolved core choice is BLOCKED.", + "evidence": "Decision log, signed specification, release manifest, test charter.", + "owner_role": "Protocol + independent panel", + "inherited_links": [ + "GOV", + "P00", + "VR-01", + "VR-06" + ], + "scope": "CORE", + "status": "NOT RUN", + "threshold_status": "PROPOSED - FREEZE BEFORE TEST" + }, + { + "id": "TV-02", + "title": "Reproduce complete supply accounting", + "setup": "Two independent implementations; genesis and representative boundary/reorg fixtures.", + "procedure": "Recompute issued, paid, burned, locked and outstanding amounts through subsidy transitions, rollback/replay and duplicate records.", + "pass_criterion": "Exact integer agreement; no unaccounted creation, duplicate supply or cap breach under the ratified policy. Restricted wrappers are not extra native supply.", + "evidence": "Machine-readable ledgers, vectors, independent signoff.", + "owner_role": "Protocol + measurement", + "inherited_links": [ + "EVM", + "INC", + "GOV", + "VR-02" + ], + "scope": "CORE", + "status": "NOT RUN", + "threshold_status": "PROPOSED - FREEZE BEFORE TEST" + }, + { + "id": "TV-03", + "title": "Fair launch and early distribution", + "setup": "Public binaries, source, mining modes, launch notice and insider inventory.", + "procedure": "Rehearse from clean outsider machines; audit genesis allocations and devnet balances; simulate arrival times under alternative emission schedules.", + "pass_criterion": "Zero undisclosed allocation or privileged conversion; approved notice/support window and cohort pass; distribution analysis includes delayed entrants without guaranteeing equal ownership.", + "evidence": "Genesis report, dated releases, disclosure register, simulation inputs.", + "owner_role": "Release + ecosystem", + "inherited_links": [ + "GPU", + "OPS", + "GOV", + "VR-03" + ], + "scope": "CORE", + "status": "NOT RUN", + "threshold_status": "PROPOSED - FREEZE BEFORE TEST" + }, + { + "id": "TV-04", + "title": "Security budget without price rescue", + "setup": "Ratified reward/fee rules; role costs; horizons 1, 5, 10 and 20 years.", + "procedure": "Model falling issuance, fee volatility and .25x/1x/4x/10x revenue, zero external jobs and -90% price. Separate role receipts and funding.", + "pass_criterion": "Approved viable scenarios fund minimum required roles without hidden issuance or assumed appreciation; failure regions stated. Collapse scenarios need safe behaviour, not universal profit.", + "evidence": "Reproducible cash-flow model, assumptions, independent review.", + "owner_role": "Economics + protocol", + "inherited_links": [ + "ECO", + "INC", + "P12", + "P13", + "VR-05" + ], + "scope": "CORE", + "status": "NOT RUN", + "threshold_status": "PROPOSED - FREEZE BEFORE TEST" + }, + { + "id": "TV-05", + "title": "Strongest surviving specialist", + "setup": "Pinned candidate/cohort; cheapest supported physical designs including SRAM/hybrid.", + "procedure": "Apply original ADV/GPU/ECO profiles with multi-epoch survival and development sunk. Reprice alternative state and memory implementations.", + "pass_criterion": "All approved core energy and total-cost bounds pass with uncertainty; no unresolved feasible dominating design. Unknown feasibility blocks the broad claim.", + "evidence": "Design files, wall results, sensitivity model, two independent hardware opinions.", + "owner_role": "Hardware reviewer + economics", + "inherited_links": [ + "ADV", + "GPU", + "ECO", + "P04", + "P12", + "INT-18", + "VR-09" + ], + "scope": "CORE", + "status": "NOT RUN", + "threshold_status": "PROPOSED - FREEZE BEFORE TEST" + }, + { + "id": "TV-06", + "title": "Every fee and payment reconciles", + "setup": "Native rules, payer contract and optional Labs/service invoices.", + "procedure": "Execute gas, proof, developer, pool, burn, sponsor and refund paths, including rounding, abort, retry and zero-demand cases.", + "pass_criterion": "No unexplained recipient or double count; statements/invoices match exact contract outcomes. Network turnover never labelled Labs revenue or permanent holding demand.", + "evidence": "Flow ledger, fixtures, invoice examples, reviewed public fee table.", + "owner_role": "Economics + application", + "inherited_links": [ + "EVM", + "INC", + "COM", + "VR-07", + "VR-08" + ], + "scope": "CORE", + "status": "NOT RUN", + "threshold_status": "PROPOSED - FREEZE BEFORE TEST" + }, + { + "id": "TV-07", + "title": "Ownership-critical engineering closure", + "setup": "Original master findings mapped to current release with genuine proof fixtures.", + "procedure": "Run native cache-order, fail-closed activation, payout crash and finality tests; reproduce fixed cases in independent environments.", + "pass_criterion": "No unresolved critical/high finding or counterexample within the approved guarantee; all applicable original safety gates pass. Reproducing a defect is not closure.", + "evidence": "Native outputs, manifests, scoped audit, issue-by-issue closure.", + "owner_role": "Protocol + independent security", + "inherited_links": [ + "ZKP", + "FIN", + "OPS", + "R2:F01-F04", + "R2:F12", + "VR-10", + "VR-11" + ], + "scope": "CORE", + "status": "NOT RUN", + "threshold_status": "PROPOSED - FREEZE BEFORE TEST" + }, + { + "id": "TV-08", + "title": "Custody and recovery usability", + "setup": "Declared wallet/hardware combinations; 30 new participants, at least 15 non-miners.", + "procedure": "Perform receive, preview/sign, limit, recovery and revocation tasks with valueless funds; inject wrong network/address and malicious prompts.", + "pass_criterion": "Zero unauthorised transfer or secret disclosure; at least 90% complete the approved safe task without private help. Report confidence limitations and all failures.", + "evidence": "Task protocol, anonymised results, security review, recovery vectors.", + "owner_role": "Wallet + independent users", + "inherited_links": [ + "UX", + "VER", + "P10", + "VR-13" + ], + "scope": "CORE", + "status": "NOT RUN", + "threshold_status": "PROPOSED - FREEZE BEFORE TEST" + }, + { + "id": "TV-09", + "title": "Independently verifiable settlement", + "setup": "Proof/receipt client without Labs RPC; normal and recovery certificates.", + "procedure": "Verify successful/failed transfers, wrong asset/amount, stale roots, fake voter lists, invalid proofs and withheld data.", + "pass_criterion": "All invalid claims refused; valid ordinary transfers verify within approved resource limits; weaker recovery and unavailable data never shown as stronger finality.", + "evidence": "Offline fixtures, consumer traces and independent implementation.", + "owner_role": "Wallet + consensus", + "inherited_links": [ + "VER", + "FIN", + "P08", + "VR-11", + "VR-14" + ], + "scope": "CORE", + "status": "NOT RUN", + "threshold_status": "PROPOSED - FREEZE BEFORE TEST" + }, + { + "id": "TV-10", + "title": "Minimum-node and sponsored-use limits", + "setup": "Approved minimum validator and sponsor budgets under final workload.", + "procedure": "Run cold proof verification, expensive invalid inputs, state growth, paymaster drain attempts and overloaded bursts.", + "pass_criterion": "Original capacity/security profiles pass; budgets remain bounded; no proof skipped to catch up and no sponsor can spend outside authorised scope.", + "evidence": "Cold-path profiles, stress traces, sponsor negative tests.", + "owner_role": "Protocol + application", + "inherited_links": [ + "CAP", + "EVM", + "ZKP", + "P07", + "P09", + "VR-15", + "VR-37" + ], + "scope": "CORE", + "status": "NOT RUN", + "threshold_status": "PROPOSED - FREEZE BEFORE TEST" + }, + { + "id": "TV-11", + "title": "Pooled payments without authority loss", + "setup": "Independent pool/member clients and durable payment state.", + "procedure": "Inject key/template substitution, reauthorisation, crash/RPC ambiguity, receipt reorg and hostile bounded inputs.", + "pass_criterion": "No duplicate/lost liability or unauthorised authority change; member can verify delegated powers and change pools. Session resource limits hold.", + "evidence": "Ledger replay, signed work fixtures and pool removal test.", + "owner_role": "Pool + independent operators", + "inherited_links": [ + "INT-03", + "INT-04", + "INT-15", + "INT-16", + "R2:F12-F13", + "VR-12" + ], + "scope": "CORE", + "status": "NOT RUN", + "threshold_status": "PROPOSED - FREEZE BEFORE TEST" + }, + { + "id": "TV-12", + "title": "Reproducible and consented software", + "setup": "Release manifest, build dependencies, update keys and public installer.", + "procedure": "Two independent parties build/verify; simulate compromised key, stale package, rollback, urgency and missing fixtures.", + "pass_criterion": "No hidden consensus variation or arbitrary default remote control; update-off remains respected; mandatory unavailable fixtures block acceptance.", + "evidence": "Attestations, independent hashes, key drill, installer/ACL review.", + "owner_role": "Release + independent security", + "inherited_links": [ + "OPS", + "GOV", + "R2:F03", + "R2:F14", + "VR-24", + "VR-25" + ], + "scope": "CORE", + "status": "NOT RUN", + "threshold_status": "PROPOSED - FREEZE BEFORE TEST" + }, + { + "id": "TV-13", + "title": "Committed maintenance coverage", + "setup": "Costed roles, commitments and monthly cash dates.", + "procedure": "Audit at least 12 months of approved maintenance coverage; stress IGN-denominated resources and provider withdrawal.", + "pass_criterion": "Original P13 satisfied without counting future appreciation or unsigned pledges; essential functions have funded substitutes and explicit shortfall response.", + "evidence": "Contracts/grants or funding proof, stress cash flow, responsibility register.", + "owner_role": "Maintainers + independent finance", + "inherited_links": [ + "ECO", + "OPS", + "P13", + "VR-21" + ], + "scope": "CORE", + "status": "NOT RUN", + "threshold_status": "PROPOSED - FREEZE BEFORE TEST" + }, + { + "id": "TV-14", + "title": "Founder-absent operating exercise", + "setup": "Independent builds/operators; founder services, keys and manual help removed.", + "procedure": "Run 30 real days, then satisfy the original 90-day observation programme; cross boundaries, remove major providers and record all interventions.", + "pass_criterion": "Approved original independence/reliability gates pass; no unpublished founder action or privileged override. Simulated long partitions are labelled separately.", + "evidence": "Dependency map, availability logs, intervention and payer ledger.", + "owner_role": "Independent operations panel", + "inherited_links": [ + "OPS", + "FIN", + "LEAD", + "P11", + "P16", + "VR-22", + "VR-23" + ], + "scope": "CORE", + "status": "NOT RUN", + "threshold_status": "PROPOSED - FREEZE BEFORE TEST" + }, + { + "id": "TV-15", + "title": "Governance and authority boundaries", + "setup": "Every control/activation threshold, treasury power and application admin interface.", + "procedure": "Exercise hostile coalitions, absent voters, old clients and compromised non-consensus keys; test refusal and recovery.", + "pass_criterion": "No actor gains undeclared issuance/balance/history authority. Every activation follows the ratified safe procedure; ambiguous threshold or recovery remains BLOCKED.", + "evidence": "Authority model, scenarios, native outcomes and independent review.", + "owner_role": "Protocol + governance", + "inherited_links": [ + "GOV", + "FIN", + "ROT", + "VR-06", + "VR-40" + ], + "scope": "CORE", + "status": "NOT RUN", + "threshold_status": "PROPOSED - FREEZE BEFORE TEST" + }, + { + "id": "TV-16", + "title": "Two functional independent access routes", + "setup": "At least two unaffiliated custody/exchange/payment routes with disclosed shared infrastructure.", + "procedure": "Complete small controlled deposits, withdrawals, outage and reconciliation tests; identify actual custody and settlement dependencies.", + "pass_criterion": "Both settle correctly; neither is merely a front end to the same indispensable provider. Gaps and jurisdiction limits visible; no listing assumed from a logo.", + "evidence": "Settlement records, dependency map and third-party confirmation.", + "owner_role": "Ecosystem + independent reviewer", + "inherited_links": [ + "OPS", + "VER", + "VR-26" + ], + "scope": "CORE", + "status": "NOT RUN", + "threshold_status": "PROPOSED - FREEZE BEFORE TEST" + }, + { + "id": "TV-17", + "title": "Supply-price-liquidity measurement", + "setup": "Frozen sources, price filters, circulating/free-float definitions and order-size bands.", + "procedure": "Collect 90 real days; independently replay supply and prices; measure both buy/sell execution costs and withdrawal availability.", + "pass_criterion": "At least 95% daily coverage; exact supply reconciliation; no fabricated missing data. Sparse liquidity invalidates broad liquidity claims, not automatically the arithmetic cap.", + "evidence": "Raw snapshots, methodology/code, gap ledger, audit.", + "owner_role": "Measurement steward", + "inherited_links": [ + "LEAD", + "VR-02", + "VR-26", + "VR-28" + ], + "scope": "CORE", + "status": "NOT RUN", + "threshold_status": "PROPOSED - FREEZE BEFORE TEST" + }, + { + "id": "TV-18", + "title": "Real versus incentivised demand", + "setup": "Customer/job/transaction definitions with privacy-respecting attribution and subsidy data.", + "procedure": "Reconcile raw/adjusted activity, self-dealing controls and incentives; test whether circular activity earns more than its irrecoverable cost.", + "pass_criterion": "All subsidies and known related activity separated; useful demand not inferred from gross volume alone; abusive incentive loop closed before scaling rewards.", + "evidence": "Accounting model, filter logic, sensitivity and independent replay.", + "owner_role": "Economics + measurement", + "inherited_links": [ + "COM", + "INC", + "VR-08", + "VR-28", + "VR-32" + ], + "scope": "CORE", + "status": "NOT RUN", + "threshold_status": "PROPOSED - FREEZE BEFORE TEST" + }, + { + "id": "TV-19", + "title": "Independent developer adoption", + "setup": "Public kit and at least five unaffiliated developers with declared tasks.", + "procedure": "Build useful integrations without private dependencies; have two independent maintainers update the kit; record obstacles and adoption reason.", + "pass_criterion": "All declared core integration paths work; at least five usable integrations and two maintainer reproductions. Empty subsidised deployments do not qualify.", + "evidence": "Repos, task traces, user evidence and maintenance records.", + "owner_role": "Ecosystem + external developers", + "inherited_links": [ + "EVM", + "COM", + "P14", + "VR-20" + ], + "scope": "CORE", + "status": "NOT RUN", + "threshold_status": "PROPOSED - FREEZE BEFORE TEST" + }, + { + "id": "TV-20", + "title": "Programmable payment acceptance", + "setup": "Versioned library, independent application, user/sponsor limits and receipt path.", + "procedure": "Execute simple/conditional/recurring payments, revocations, expiry, failed outcome and duplicate invoice cases.", + "pass_criterion": "No unauthorised spend or double settlement; successful transfer independently evidenced; subjective conditions disclose adjudicator/trust.", + "evidence": "Contracts, negative vectors, user task record, security review.", + "owner_role": "Application + wallet", + "inherited_links": [ + "EVM", + "VER", + "UX", + "VR-13", + "VR-15" + ], + "scope": "PAYMENT CAPABILITY", + "status": "NOT RUN", + "threshold_status": "PROPOSED - FREEZE BEFORE TEST" + }, + { + "id": "TV-21", + "title": "Useful paid proof demand", + "setup": "Exact workload and final hardware path; three unrelated buyers and approved COM profile.", + "procedure": "Observe repeat purchases under original P14/P16 conditions, full job outcomes and operator/service costs.", + "pass_criterion": "All applicable COM targets met without hidden reimbursement. Queue expiry not counted as success. A monetary-only scope cannot claim this gate passed by exclusion.", + "evidence": "Buyer evidence, cost ledger, all-job traces and independent review.", + "owner_role": "Proving + independent customers", + "inherited_links": [ + "COM", + "CAP", + "P14", + "P16", + "R2:F08", + "VR-18" + ], + "scope": "PAID WORK CAPABILITY", + "status": "NOT RUN", + "threshold_status": "PROPOSED - FREEZE BEFORE TEST" + }, + { + "id": "TV-22", + "title": "Replaceable work-market gateway", + "setup": "Two independent gateway implementations and job/settlement specification.", + "procedure": "Create jobs, switch providers/gateways, fail one service and deliver the same objective result using public inputs.", + "pass_criterion": "Correct payment/result without Labs approval; no concealed central dispatcher or irreversible dependency. External-chain receipts labelled separately.", + "evidence": "Gateway traces, escrow reconciliation, dependency-removal run.", + "owner_role": "Application + independent operators", + "inherited_links": [ + "OPS", + "COM", + "VR-08", + "VR-18" + ], + "scope": "WORK MARKET CAPABILITY", + "status": "NOT RUN", + "threshold_status": "PROPOSED - FREEZE BEFORE TEST" + }, + { + "id": "TV-23", + "title": "Obligation-based deposits", + "setup": "Proposed bond/default contract and volatile-collateral scenarios.", + "procedure": "Test reservation abandonment, invalid inputs, network pause, -90% collateral value and malicious claims.", + "pass_criterion": "No consensus influence bought; default reason objective; compensation limits explicit; viable small-operator participation and approved risk bounds.", + "evidence": "Adversarial model, state tests, risk/legal review.", + "owner_role": "Economics + security", + "inherited_links": [ + "INC", + "ECO", + "VR-19" + ], + "scope": "SERVICE BONDS IF ENABLED", + "status": "NOT RUN", + "threshold_status": "PROPOSED - FREEZE BEFORE TEST" + }, + { + "id": "TV-24", + "title": "AI earns a separate commercial case", + "setup": "One bounded model/job, provider hardware, verification tier and licences.", + "procedure": "Benchmark full delivery vs actual alternatives; test 90% lower unit prices, demand collapse, private-data exposure and substituted models.", + "pass_criterion": "Approved service economics and buyer gates pass; correctness/truth/privacy distinguished. No native price or perpetual yield assumption.", + "evidence": "End-to-end costs, repeat demand, licence/threat review.", + "owner_role": "Compute + independent reviewer", + "inherited_links": [ + "COM", + "CAP", + "VR-33", + "VR-36" + ], + "scope": "AI IF ENABLED", + "status": "NOT RUN", + "threshold_status": "PROPOSED - FREEZE BEFORE TEST" + }, + { + "id": "TV-25", + "title": "Bounded machine purchasing", + "setup": "Approved account/paymaster permissions and chosen x402/agent interfaces.", + "procedure": "Inject hostile outputs/prompts, replayed requests, recursive spending, revoked permissions and gateway failure.", + "pass_criterion": "Spend never exceeds authorised destination/time/amount scope; no instruction changes authority. Draft standard support is described accurately.", + "evidence": "Property tests, loss-cap proof, revocation/audit logs.", + "owner_role": "Application + security", + "inherited_links": [ + "EVM", + "UX", + "VR-34", + "VR-40" + ], + "scope": "AGENTS IF ENABLED", + "status": "NOT RUN", + "threshold_status": "PROPOSED - FREEZE BEFORE TEST" + }, + { + "id": "TV-26", + "title": "Cryptographic migration readiness", + "setup": "Complete key/proof/transport/update inventory and external cryptographic review.", + "procedure": "Rehearse versioned signature/proof migration, downgrade/replay, mixed clients, inactive owners and minimum-node overhead.", + "pass_criterion": "No unreviewed assumption or automatic confiscation; migration can be explained and tested. No absolute quantum-proof claim or attack date inferred.", + "evidence": "Inventory, expert report, migration vectors, annual schedule.", + "owner_role": "Cryptography + protocol", + "inherited_links": [ + "ZKP", + "GOV", + "OPS", + "VR-35" + ], + "scope": "CORE", + "status": "NOT RUN", + "threshold_status": "PROPOSED - FREEZE BEFORE TEST" + }, + { + "id": "TV-27", + "title": "Private data and oracle assurance", + "setup": "Per-product claims, input trust sources, data-retention and execution model.", + "procedure": "Use forged data, hostile providers, telemetry leakage, unsupported attestation and false-but-correctly-executed AI outputs.", + "pass_criterion": "No claim exceeds tested guarantee; secrets/data protected to stated model; unauthenticated inputs not represented as objective truth.", + "evidence": "Threat model, exposure tests, labelled user flows.", + "owner_role": "Security + product", + "inherited_links": [ + "VER", + "ZKP", + "UX", + "VR-36" + ], + "scope": "CORE", + "status": "NOT RUN", + "threshold_status": "PROPOSED - FREEZE BEFORE TEST" + }, + { + "id": "TV-28", + "title": "Stable assets and bridge isolation", + "setup": "Only if enabled: issuer/bridge design, redemption rights, trust anchors and approved value caps.", + "procedure": "Test reserve/redemption failure, stale oracle, invalid/recovery certificates, contract compromise and emergency shutdown.", + "pass_criterion": "No hidden base-chain guarantee or forced reversal of final history; independent audit, conservative exposure and counsel approval.", + "evidence": "Risk dossier, scenarios, disclosure, independent tests.", + "owner_role": "Application + security + counsel", + "inherited_links": [ + "VER", + "FIN", + "VR-16", + "VR-17" + ], + "scope": "STABLE/BRIDGE IF ENABLED", + "status": "NOT RUN", + "threshold_status": "PROPOSED - FREEZE BEFORE TEST" + }, + { + "id": "TV-29", + "title": "Growth without inaccessible verification", + "setup": "Declared minimum node, projected data growth and alternative scaling design.", + "procedure": "Run cold/worst-case validation, state/pruning/bootstrap, censorship and aggregation withdrawal; model 10x/100x growth and fee compression.", + "pass_criterion": "Original minimum-node/security bounds hold; required data remains obtainable; security funding restated for changed fee routes.", + "evidence": "Capacity/availability results and revised economics.", + "owner_role": "Protocol + operations", + "inherited_links": [ + "CAP", + "ECO", + "VER", + "VR-37" + ], + "scope": "CORE", + "status": "NOT RUN", + "threshold_status": "PROPOSED - FREEZE BEFORE TEST" + }, + { + "id": "TV-30", + "title": "Energy and claims discipline", + "setup": "Calibrated whole-system metering and workload allocation protocol.", + "procedure": "Measure mining, proving, mixed/time-shared operation, setup/recovery and unsuccessful work; review environmental text.", + "pass_criterion": "No double-counted savings; original meter tolerances satisfied; no marginal-energy/carbon claim beyond method.", + "evidence": "Raw meter traces, job ledger, method and external review.", + "owner_role": "GPU + measurement", + "inherited_links": [ + "GPU", + "CAP", + "P02", + "VR-38" + ], + "scope": "CORE", + "status": "NOT RUN", + "threshold_status": "PROPOSED - FREEZE BEFORE TEST" + }, + { + "id": "TV-31", + "title": "Public-claim and activity review", + "setup": "Actual jurisdiction, audience, service, token-distribution and promotion plans.", + "procedure": "Counsel assesses applicable routes and reviews each value/rank/return/security assertion against evidence.", + "pass_criterion": "Written activity-specific clearance and approved wording; no future-value assertion in a covered MiCA white paper; no blanket exemption inferred from mining.", + "evidence": "Legal decision matrix, claim register, review dates.", + "owner_role": "Qualified counsel", + "inherited_links": [ + "GOV", + "LEAD", + "VR-30", + "VR-39" + ], + "scope": "CORE", + "status": "NOT RUN", + "threshold_status": "PROPOSED - FREEZE BEFORE TEST" + }, + { + "id": "TV-32", + "title": "Observed leadership, not a roadmap certificate", + "setup": "Approved peer universe; all applicable mandatory gates; stable release and 90-day observation.", + "procedure": "Run original P15/P16 comparisons and independently replay scoped rank data. Test changing peer/exclusion assumptions and missing data.", + "pass_criterion": "Contender requires original criteria; market-cap first requires highest 90-day median, 95% coverage; sustained daily-first convention also needs 80% of covered days. Never certify overall best from price alone.", + "evidence": "Independent panel report, full methods/data, scope and expiry of claim.", + "owner_role": "Independent acceptance panel", + "inherited_links": [ + "LEAD", + "P15", + "P16", + "VR-29", + "VR-30", + "VR-31" + ], + "scope": "LEADERSHIP CLAIM", + "status": "NOT RUN", + "threshold_status": "PROPOSED - FREEZE BEFORE TEST" + } + ], + "decisions": [ + { + "id": "D01", + "title": "Cap and tail", + "required_resolution": "Choose one supply policy and remove the contradictory escape language. A cap is the recommended identity, conditional on adequate security funding.", + "status": "UNAPPROVED" + }, + { + "id": "D02", + "title": "Emission horizon", + "required_resolution": "Compare the existing schedule with slower distribution before launch; include delayed ordinary entrants and dilution/security trade-offs.", + "status": "UNAPPROVED" + }, + { + "id": "D03", + "title": "Security funding", + "required_resolution": "Define each role's recurring payer, declining subsidy model, maintenance runway and safe contraction behaviour.", + "status": "UNAPPROVED" + }, + { + "id": "D04", + "title": "Fee/burn routing", + "required_resolution": "Freeze exact contract routes and distinguish resource fees, service charges and burn. Test pricing rather than maximise burn by slogan.", + "status": "UNAPPROVED" + }, + { + "id": "D05", + "title": "Finality/recovery", + "required_resolution": "Specify the stronger guarantee and any weaker recovery. Set dependent wallet/oracle behaviour consistently.", + "status": "UNAPPROVED" + }, + { + "id": "D06", + "title": "Leadership scope", + "required_resolution": "Separate monetary, GPU engineering, paid-work and market-rank claims; decide which capabilities are enabled and which gates apply.", + "status": "UNAPPROVED" + } + ], + "sources": [ + { + "id": "S01", + "title": "Igneum 2.0 - Complete Master", + "scope": "Supplied 292-page master; 8 October 2026. Strategy, 128-case standard and dated source reviews. It is not a later deployment audit.", + "url": "local:IGNEUM_2.0_Complete_Master.pdf", + "accessed": "supplied snapshot 2026-10-08" + }, + { + "id": "S02", + "title": "Igneum 2.0 - Test Registry", + "scope": "Supplied JSON; 16 suites, 128 cases and profiles P00-P16. Existing thresholds remain proposed until ratified.", + "url": "local:IGNEUM_2.0_Test_Registry.json", + "accessed": "supplied snapshot 2026-10-08" + }, + { + "id": "S03", + "title": "Igneum Labs - Commercial Strategy", + "scope": "Supplied 26-page document. Company/service income is distinct from native-asset value; this edition changes strategic priority, not the archived text.", + "url": "local:IGNEUM_Labs_Commercial_Strategy.pdf", + "accessed": "supplied snapshot 2026-10-08" + }, + { + "id": "S04", + "title": "Updated-stack and full-system source reviews", + "scope": "Supplied Markdown reviews dated 8 October 2026. Selected source and model findings; native Rust/SP1/GPU integration was not run in those reviews.", + "url": "local:IGNEUM_Updated_Stack_Review.md", + "accessed": "supplied snapshot 2026-10-08" + }, + { + "id": "S05", + "title": "Original Igneum brand kit", + "scope": "Supplied original logos, Unbounded and IBM Plex type, obsidian/ember/bone palette. Used for presentation, not technical evidence.", + "url": "local:igneum-brand-kit(1).zip", + "accessed": "supplied snapshot 2026-10-08" + }, + { + "id": "R01", + "title": "Igneum litepaper v0.2", + "scope": "Project-published design. Rechecked for the cap/tail-policy tension and declared architecture. Publication is not evidence of activated consensus.", + "url": "https://igneum.network/litepaper", + "accessed": "2026-10-08" + }, + { + "id": "R02", + "title": "Igneum economics", + "scope": "Project-published fee, issuance and implementation descriptions. Reconcile with a pinned release; burns, operator receipts and company income differ.", + "url": "https://igneum.network/economics", + "accessed": "2026-10-08" + }, + { + "id": "R03", + "title": "Bitcoin FAQ", + "scope": "Community documentation on monetary properties, voluntary rule adoption and supply/demand. Not a forecast or complete valuation model.", + "url": "https://bitcoin.org/en/faq", + "accessed": "2026-10-08" + }, + { + "id": "R04", + "title": "Ethereum whitepaper", + "scope": "Historical primary design document, originally published in 2014. Used for the application-platform principle, not current implementation claims.", + "url": "https://ethereum.org/whitepaper/", + "accessed": "2026-10-08" + }, + { + "id": "R05", + "title": "What is Ether?", + "scope": "Ethereum documentation on ETH uses. Proof-of-stake demand cannot be assumed for a proof-of-work asset.", + "url": "https://ethereum.org/what-is-ether/", + "accessed": "2026-10-08" + }, + { + "id": "R06", + "title": "Ethereum governance", + "scope": "Primary ecosystem documentation on off-chain coordination and voluntary adoption. Governance does not eliminate human maintenance.", + "url": "https://ethereum.org/governance/", + "accessed": "2026-10-08" + }, + { + "id": "R07", + "title": "Monero tail emission", + "scope": "Official project documentation on the continuing subsidy. An alternative monetary design, not proof that Igneum must adopt it.", + "url": "https://www.getmonero.org/resources/moneropedia/tail-emission.html", + "accessed": "2026-10-08" + }, + { + "id": "R08", + "title": "RandomX design", + "scope": "Primary implementation/design documentation. Device binding and easy-program analysis inform the adversary model.", + "url": "https://github.com/tevador/RandomX/blob/master/doc/design.md", + "accessed": "2026-10-08" + }, + { + "id": "R09", + "title": "Kaspa developer platform", + "scope": "Official site distinguishes live Toccata capabilities from evolving vProgs. This is a project statement, not an independent benchmark.", + "url": "https://kaspa.org/build", + "accessed": "2026-10-08" + }, + { + "id": "R10", + "title": "Kaspa mining", + "scope": "Project wiki states ASIC dominance and treats GPU material as archival. Kaspa is a wider PoW benchmark, not an ordinary-GPU peer.", + "url": "https://wiki.kaspa.org/mining", + "accessed": "2026-10-08" + }, + { + "id": "R11", + "title": "Ravencoin design and objectives", + "scope": "Project description of fair launch and commodity-GPU competitiveness with possible future ASICs.", + "url": "https://ravencoin.org/about/", + "accessed": "2026-10-08" + }, + { + "id": "R12", + "title": "Ravencoin assets", + "scope": "Primary documentation for native asset creation and transfer. Functional utility does not establish market adoption.", + "url": "https://ravencoin.org/assets/", + "accessed": "2026-10-08" + }, + { + "id": "R13", + "title": "Ergo Autolykos", + "scope": "Project documentation for its GPU-oriented mining design. A live-system comparison must use pinned current versions.", + "url": "https://docs.ergoplatform.com/mining/autolykos/", + "accessed": "2026-10-08" + }, + { + "id": "R14", + "title": "Firo reference miner 1.4.0", + "scope": "18 September 2026 project announcement: open miner, NVIDIA/AMD and no developer fee; claimed performance is not independently reproduced here.", + "url": "https://firo.org/2026/09/18/firominer-140-release.html", + "accessed": "2026-10-08" + }, + { + "id": "R15", + "title": "Firo November 2025 upgrade", + "scope": "Project reports lower VRAM requirements that support 8 GB cards. Shows the accessibility cost of memory-policy decisions.", + "url": "https://firo.org/2025/11/19/hardfork-successful-nov-2025.html", + "accessed": "2026-10-08" + }, + { + "id": "R16", + "title": "Carlsten et al.: fee-only mining incentives", + "scope": "Princeton authors' primary summary of CCS 2016 research. Model-dependent fee variance and withholding results; not a theorem about Igneum.", + "url": "https://bcf.princeton.edu/working-papers/on-the-instability-of-bitcoin-without-the-block-reward/", + "accessed": "2026-10-08" + }, + { + "id": "R17", + "title": "Bahrani, Neuder, Weinberg: stochastic rewards", + "scope": "2025 research preprint broadens selfish-mining analysis to variable reward functions. Use as a stress-test motivation, not an Igneum attack result.", + "url": "https://arxiv.org/abs/2502.20360", + "accessed": "2026-10-08" + }, + { + "id": "R18", + "title": "Cong, Li, Wang: Tokenomics", + "scope": "NBER working paper 27222 (2020), published in Review of Financial Studies (2021). Transactional demand and adoption model; no calibrated IGN forecast.", + "url": "https://www.nber.org/papers/w27222", + "accessed": "2026-10-08" + }, + { + "id": "R19", + "title": "EIP-1559", + "scope": "Primary fee-market specification. Base-fee burning and priority fees are mechanism choices, not automatic value creation.", + "url": "https://eips.ethereum.org/EIPS/eip-1559", + "accessed": "2026-10-08" + }, + { + "id": "R20", + "title": "EIP-4844", + "scope": "Primary blob-transaction specification, including a separate fee market. Useful for analysing scaling and fee-capture trade-offs.", + "url": "https://eips.ethereum.org/EIPS/eip-4844", + "accessed": "2026-10-08" + }, + { + "id": "R21", + "title": "ERC-4337", + "scope": "Smart accounts and paymasters. Igneum compatibility and threat models require testing, not assumption.", + "url": "https://eips.ethereum.org/EIPS/eip-4337", + "accessed": "2026-10-08" + }, + { + "id": "R22", + "title": "ERC-8004", + "scope": "Draft agent discovery/reputation/validation proposal at access. Draft status is not a production security certificate.", + "url": "https://eips.ethereum.org/EIPS/eip-8004", + "accessed": "2026-10-08" + }, + { + "id": "R23", + "title": "x402", + "scope": "Open machine-payment protocol documentation. Network-neutral interfaces are not an exclusive Igneum advantage.", + "url": "https://x402.org/", + "accessed": "2026-10-08" + }, + { + "id": "R24", + "title": "Boundless proof lifecycle", + "scope": "Primary request, lock, proof and payment workflow. A market-design precedent, not interchangeable proof compatibility.", + "url": "https://docs.boundless.network/developers/proof-lifecycle", + "accessed": "2026-10-08" + }, + { + "id": "R25", + "title": "Ethereum data availability", + "scope": "Execution validity and the availability of reconstruction data are distinct. Used to specify proof/receipt boundaries.", + "url": "https://ethereum.org/developers/docs/data-availability/", + "accessed": "2026-10-08" + }, + { + "id": "R26", + "title": "Ethereum bridges", + "scope": "Primary educational risk taxonomy: contract, counterparty and wrapped-asset risks. No existing bridge is certified by this report.", + "url": "https://ethereum.org/developers/docs/bridges/", + "accessed": "2026-10-08" + }, + { + "id": "R27", + "title": "Ethereum MEV", + "scope": "Ordering, inclusion and exclusion can create extractable value and centralisation incentives. Proposed tests are Igneum-specific.", + "url": "https://ethereum.org/developers/docs/mev/", + "accessed": "2026-10-08" + }, + { + "id": "R28", + "title": "Ethereum stablecoins", + "scope": "Overview of stablecoin designs and risks. Stable-value assets are not automatically claims on IGN or Labs.", + "url": "https://ethereum.org/stablecoins/", + "accessed": "2026-10-08" + }, + { + "id": "R29", + "title": "Visa on-chain analytics", + "scope": "Primary methodology distinguishes gross activity from adjusted activity. Adjustments are estimates, not identity proofs.", + "url": "https://www.visaonchainanalytics.com/transactions", + "accessed": "2026-10-08" + }, + { + "id": "R30", + "title": "Coin Metrics free-float supply", + "scope": "Primary measurement methodology excluding certain closely held or inactive supply. This report proposes its own transparent sensitivity treatment.", + "url": "https://gitbook-docs.coinmetrics.io/network-data/network-data-overview/supply/free-float-supply", + "accessed": "2026-10-08" + }, + { + "id": "R31", + "title": "NIST FIPS 203, 204 and 205", + "scope": "Finalised in August 2024: key encapsulation and two signature standards. Does not imply a quantum-break date or a complete blockchain migration.", + "url": "https://www.nist.gov/news-events/news/2024/08/announcing-approval-three-federal-information-processing-standards-fips", + "accessed": "2026-10-08" + }, + { + "id": "R32", + "title": "Stanford AI Index 2026: economy", + "scope": "Survey-based adoption findings; organisational use is not the size of a profitable open GPU market.", + "url": "https://hai.stanford.edu/ai-index/2026-ai-index-report/economy", + "accessed": "2026-10-08" + }, + { + "id": "R33", + "title": "Stanford AI Index 2025: costs", + "scope": "Historical inference-cost declines for a defined capability. Future pricing is a scenario, not a continuation guaranteed by this observation.", + "url": "https://hai.stanford.edu/ai-index/2025-ai-index-report/research-and-development", + "accessed": "2026-10-08" + }, + { + "id": "R34", + "title": "FCA FG23/3", + "scope": "Official financial-promotion guidance; page updated February 2026. Fair, clear and not misleading communications are required where applicable.", + "url": "https://www.fca.org.uk/publications/fg23-3-finalised-non-handbook-guidance-cryptoasset-financial-promotions", + "accessed": "2026-10-08" + }, + { + "id": "R35", + "title": "FCA crypto-promotion regime", + "scope": "Official statement explains UK-targeted communications, including overseas firms. Applicability must be reviewed by counsel.", + "url": "https://www.fca.org.uk/news/statements/fca-issues-146-alerts-first-24-hours-new-crypto-marketing-regime", + "accessed": "2026-10-08" + }, + { + "id": "R36", + "title": "MiCA Article 4", + "scope": "ESMA rulebook text: offer exemptions include automatic mining rewards, but other provisions and trading-related conditions must be evaluated.", + "url": "https://www.esma.europa.eu/publications-and-data/interactive-single-rulebook/mica/article-4-offers-public-crypto-assets-other", + "accessed": "2026-10-08" + }, + { + "id": "R37", + "title": "MiCA Article 6", + "scope": "ESMA rulebook text: covered white papers must be fair/clear and may not assert future asset value as specified in paragraph 4.", + "url": "https://www.esma.europa.eu/publications-and-data/interactive-single-rulebook/mica/article-6-content-and-form-crypto-asset", + "accessed": "2026-10-08" + }, + { + "id": "R38", + "title": "DFSA crypto framework", + "scope": "Official overview of rules effective January 2026. Activity-specific authorisation/suitability matters; token use alone is not necessarily a financial service.", + "url": "https://www.dfsa.ae/crypto", + "accessed": "2026-10-08" + }, + { + "id": "R39", + "title": "NIST SSDF publication register", + "scope": "Lists final SSDF 1.1 and draft 1.2 at access. Apply a named version; do not present a draft as mandatory or final.", + "url": "https://csrc.nist.gov/projects/ssdf/publications", + "accessed": "2026-10-08" + }, + { + "id": "R40", + "title": "The Update Framework", + "scope": "Primary secure-update framework. Key compromise resilience must be integrated with explicit operator consent and reproducible builds.", + "url": "https://theupdateframework.io/", + "accessed": "2026-10-08" + }, + { + "id": "R41", + "title": "SLSA specification v1.2", + "scope": "Build/source provenance framework. Provenance and reproducibility do not by themselves establish runtime correctness.", + "url": "https://slsa.dev/spec/v1.2/", + "accessed": "2026-10-08" + }, + { + "id": "R42", + "title": "Ethereum Foundation: zkEVM security", + "scope": "Primary security programme, December 2025. Soundness and parameter review must accompany performance claims.", + "url": "https://blog.ethereum.org/2025/12/18/zkevm-security-foundations", + "accessed": "2026-10-08" + } + ], + "page_index": { + "cover": 1, + "contents": 2, + "contents-detail": 3, + "decision": 4, + "reading": 5, + "definition": 6, + "value": 7, + "history": 8, + "failure": 9, + "peers": 10, + "source": 11, + "constitution": 12, + "emission": 13, + "security-budget": 14, + "fees": 15, + "flows": 16, + "holder": 17, + "settlement": 18, + "miners": 19, + "ordering": 20, + "developer": 21, + "payments": 22, + "workmarket": 23, + "nativerouting": 24, + "stableassets": 25, + "access": 26, + "integrity": 27, + "adoption": 28, + "independence": 29, + "governance": 30, + "maintenance": 31, + "release": 32, + "ai": 33, + "agents": 34, + "scaling": 35, + "quantum": 36, + "privacy": 37, + "energy": 38, + "law": 39, + "stress": 40, + "metrics": 41, + "rank": 42, + "phase0": 43, + "phase1": 44, + "phase2": 45, + "phase3": 46, + "ownership": 47, + "stop": 48, + "acceptance-policy": 49, + "rules-1": 50, + "rules-2": 51, + "rules-3": 52, + "rules-4": 53, + "rules-5": 54, + "rules-6": 55, + "rules-7": 56, + "gates-1": 57, + "gates-2": 58, + "gates-3": 59, + "gates-4": 60, + "gates-5": 61, + "gates-6": 62, + "gates-7": 63, + "gates-8": 64, + "gates-9": 65, + "gates-10": 66, + "gates-11": 67, + "gates-12": 68, + "gates-13": 69, + "gates-14": 70, + "gates-15": 71, + "gates-16": 72, + "decision-register": 73, + "crosswalk": 74, + "sources-1": 75, + "sources-2": 76, + "sources-3": 77, + "sources-4": 78, + "sources-5": 79, + "sources-6": 80, + "sources-7": 81, + "sources-8": 82, + "closing": 83, + "VR-01": 50, + "VR-02": 50, + "VR-03": 50, + "VR-04": 50, + "VR-05": 50, + "VR-06": 50, + "VR-07": 51, + "VR-08": 51, + "VR-09": 51, + "VR-10": 51, + "VR-11": 51, + "VR-12": 51, + "VR-13": 52, + "VR-14": 52, + "VR-15": 52, + "VR-16": 52, + "VR-17": 52, + "VR-18": 52, + "VR-19": 53, + "VR-20": 53, + "VR-21": 53, + "VR-22": 53, + "VR-23": 53, + "VR-24": 53, + "VR-25": 54, + "VR-26": 54, + "VR-27": 54, + "VR-28": 54, + "VR-29": 54, + "VR-30": 54, + "VR-31": 55, + "VR-32": 55, + "VR-33": 55, + "VR-34": 55, + "VR-35": 55, + "VR-36": 55, + "VR-37": 56, + "VR-38": 56, + "VR-39": 56, + "VR-40": 56, + "TV-01": 57, + "TV-02": 57, + "TV-03": 58, + "TV-04": 58, + "TV-05": 59, + "TV-06": 59, + "TV-07": 60, + "TV-08": 60, + "TV-09": 61, + "TV-10": 61, + "TV-11": 62, + "TV-12": 62, + "TV-13": 63, + "TV-14": 63, + "TV-15": 64, + "TV-16": 64, + "TV-17": 65, + "TV-18": 65, + "TV-19": 66, + "TV-20": 66, + "TV-21": 67, + "TV-22": 67, + "TV-23": 68, + "TV-24": 68, + "TV-25": 69, + "TV-26": 69, + "TV-27": 70, + "TV-28": 70, + "TV-29": 71, + "TV-30": 71, + "TV-31": 72, + "TV-32": 72, + "src-S01": 75, + "src-S02": 75, + "src-S03": 75, + "src-S04": 75, + "src-S05": 75, + "src-R01": 75, + "src-R02": 76, + "src-R03": 76, + "src-R04": 76, + "src-R05": 76, + "src-R06": 76, + "src-R07": 76, + "src-R08": 77, + "src-R09": 77, + "src-R10": 77, + "src-R11": 77, + "src-R12": 77, + "src-R13": 77, + "src-R14": 78, + "src-R15": 78, + "src-R16": 78, + "src-R17": 78, + "src-R18": 78, + "src-R19": 78, + "src-R20": 79, + "src-R21": 79, + "src-R22": 79, + "src-R23": 79, + "src-R24": 79, + "src-R25": 79, + "src-R26": 80, + "src-R27": 80, + "src-R28": 80, + "src-R29": 80, + "src-R30": 80, + "src-R31": 80, + "src-R32": 81, + "src-R33": 81, + "src-R34": 81, + "src-R35": 81, + "src-R36": 81, + "src-R37": 81, + "src-R38": 82, + "src-R39": 82, + "src-R40": 82, + "src-R41": 82, + "src-R42": 82 + }, + "original_artifacts": [ + { + "name": "IGNEUM_2.0_Complete_Master.pdf", + "sha256": "c878ee4f80adf1da58fcc78fb91a8008de2e9fc44060bec143d020a780c5093e", + "bytes": 12013130 + }, + { + "name": "IGNEUM_2.0_Test_Registry.json", + "sha256": "573e0df9b4449d877eaf420279a53eef4497d3d9c67e12e62da7bd5e253a0417", + "bytes": 204778 + }, + { + "name": "IGNEUM_Labs_Commercial_Strategy.pdf", + "sha256": "9c879c6f8a1d008837f866e047ea520cca52f900fe31659b56aeb3bf51525896", + "bytes": 147217 + }, + { + "name": "IGNEUM_Updated_Stack_Review.md", + "sha256": "3734c1d09075421976e5872baee7c00abe00d1e0a062ad56dded4a05df002a87", + "bytes": 163364 + } + ] +} \ No newline at end of file diff --git a/docs/plans/igneum-2.0-test-harness-map.md b/docs/plans/igneum-2.0-test-harness-map.md index ae28e84c2..202caa9a0 100644 --- a/docs/plans/igneum-2.0-test-harness-map.md +++ b/docs/plans/igneum-2.0-test-harness-map.md @@ -1,6 +1,6 @@ # Igneum 2.0 test harness map -Generated from tools/ci/test-map.json by tools/ci/test-map-doc.mjs; edit the JSON, never this page. Registry: docs/plans/igneum-2.0-test-registry.json (190 cases). +Generated from tools/ci/test-map.json by tools/ci/test-map-doc.mjs; edit the JSON, never this page. Registry: docs/plans/igneum-2.0-test-registry.json (262 cases). Rule: a case maps to a cell only where the cell's tests visibly answer it; coverage names what the cell proves and what remains; a mapped cell's green writes RUNNING, PASS only when coverage is full and the evidence file exists; an automated case with no cell reads NOT RUN with its reason, never PASS by inference. @@ -573,7 +573,39 @@ Rule: a case maps to a cell only where the cell's tests visibly answer it; cover - R2-F14-R01 Public build has no default arbitrary remote execution and a documented least-privilege boundary.: R2-F14 (P1, the external review): the regression's harness is the owner lane's (app lane, relay lane); not yet named in the map - R2-F14-R02 Automatic updates off remains off for urgent manifests until explicit action.: R2-F14 (P1, the external review): the regression's harness is the owner lane's (app lane, relay lane); not yet named in the map - R2-F14-R03 A compromised fleet/update signing key cannot silently acquire wallet access or activate a consensus change.: R2-F14 (P1, the external review): the regression's harness is the owner lane's (app lane, relay lane); not yet named in the map +- TV-01 Resolve and freeze the monetary contract: TV-01 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Protocol + independent panel); a supplemental layer, never counted as independent evidence; not yet named in the map +- TV-02 Reproduce complete supply accounting: TV-02 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Protocol + measurement); a supplemental layer, never counted as independent evidence; not yet named in the map +- TV-03 Fair launch and early distribution: TV-03 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Release + ecosystem); a supplemental layer, never counted as independent evidence; not yet named in the map +- TV-04 Security budget without price rescue: TV-04 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Economics + protocol); a supplemental layer, never counted as independent evidence; not yet named in the map +- TV-05 Strongest surviving specialist: TV-05 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Hardware reviewer + economics); a supplemental layer, never counted as independent evidence; not yet named in the map +- TV-06 Every fee and payment reconciles: TV-06 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Economics + application); a supplemental layer, never counted as independent evidence; not yet named in the map +- TV-07 Ownership-critical engineering closure: TV-07 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Protocol + independent security); a supplemental layer, never counted as independent evidence; not yet named in the map +- TV-08 Custody and recovery usability: TV-08 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Wallet + independent users); a supplemental layer, never counted as independent evidence; not yet named in the map +- TV-09 Independently verifiable settlement: TV-09 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Wallet + consensus); a supplemental layer, never counted as independent evidence; not yet named in the map +- TV-10 Minimum-node and sponsored-use limits: TV-10 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Protocol + application); a supplemental layer, never counted as independent evidence; not yet named in the map +- TV-11 Pooled payments without authority loss: TV-11 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Pool + independent operators); a supplemental layer, never counted as independent evidence; not yet named in the map +- TV-12 Reproducible and consented software: TV-12 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Release + independent security); a supplemental layer, never counted as independent evidence; not yet named in the map +- TV-13 Committed maintenance coverage: TV-13 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Maintainers + independent finance); a supplemental layer, never counted as independent evidence; not yet named in the map +- TV-14 Founder-absent operating exercise: TV-14 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Independent operations panel); a supplemental layer, never counted as independent evidence; not yet named in the map +- TV-15 Governance and authority boundaries: TV-15 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Protocol + governance); a supplemental layer, never counted as independent evidence; not yet named in the map +- TV-16 Two functional independent access routes: TV-16 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Ecosystem + independent reviewer); a supplemental layer, never counted as independent evidence; not yet named in the map +- TV-17 Supply-price-liquidity measurement: TV-17 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Measurement steward); a supplemental layer, never counted as independent evidence; not yet named in the map +- TV-18 Real versus incentivised demand: TV-18 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Economics + measurement); a supplemental layer, never counted as independent evidence; not yet named in the map +- TV-19 Independent developer adoption: TV-19 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Ecosystem + external developers); a supplemental layer, never counted as independent evidence; not yet named in the map +- TV-20 Programmable payment acceptance: TV-20 (token value gate, scope PAYMENT CAPABILITY): no gate executed; the harness is the owner role's (Application + wallet); a supplemental layer, never counted as independent evidence; not yet named in the map +- TV-21 Useful paid proof demand: TV-21 (token value gate, scope PAID WORK CAPABILITY): no gate executed; the harness is the owner role's (Proving + independent customers); a supplemental layer, never counted as independent evidence; not yet named in the map +- TV-22 Replaceable work-market gateway: TV-22 (token value gate, scope WORK MARKET CAPABILITY): no gate executed; the harness is the owner role's (Application + independent operators); a supplemental layer, never counted as independent evidence; not yet named in the map +- TV-23 Obligation-based deposits: TV-23 (token value gate, scope SERVICE BONDS IF ENABLED): no gate executed; the harness is the owner role's (Economics + security); a supplemental layer, never counted as independent evidence; not yet named in the map +- TV-24 AI earns a separate commercial case: TV-24 (token value gate, scope AI IF ENABLED): no gate executed; the harness is the owner role's (Compute + independent reviewer); a supplemental layer, never counted as independent evidence; not yet named in the map +- TV-25 Bounded machine purchasing: TV-25 (token value gate, scope AGENTS IF ENABLED): no gate executed; the harness is the owner role's (Application + security); a supplemental layer, never counted as independent evidence; not yet named in the map +- TV-26 Cryptographic migration readiness: TV-26 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Cryptography + protocol); a supplemental layer, never counted as independent evidence; not yet named in the map +- TV-27 Private data and oracle assurance: TV-27 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Security + product); a supplemental layer, never counted as independent evidence; not yet named in the map +- TV-28 Stable assets and bridge isolation: TV-28 (token value gate, scope STABLE/BRIDGE IF ENABLED): no gate executed; the harness is the owner role's (Application + security + counsel); a supplemental layer, never counted as independent evidence; not yet named in the map +- TV-29 Growth without inaccessible verification: TV-29 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Protocol + operations); a supplemental layer, never counted as independent evidence; not yet named in the map +- TV-30 Energy and claims discipline: TV-30 (token value gate, scope CORE): no gate executed; the harness is the owner role's (GPU + measurement); a supplemental layer, never counted as independent evidence; not yet named in the map +- TV-31 Public-claim and activity review: TV-31 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Qualified counsel); a supplemental layer, never counted as independent evidence; not yet named in the map +- TV-32 Observed leadership, not a roadmap certificate: TV-32 (token value gate, scope LEADERSHIP CLAIM): no gate executed; the harness is the owner role's (Independent acceptance panel); a supplemental layer, never counted as independent evidence; not yet named in the map ## Count -171 automated cases: 88 mapped to a cell, 141 NOT RUN with a reason. +203 automated cases: 88 mapped to a cell, 173 NOT RUN with a reason. diff --git a/docs/plans/igneum-2.0-test-registry.json b/docs/plans/igneum-2.0-test-registry.json index b9dc25494..eccad2915 100644 --- a/docs/plans/igneum-2.0-test-registry.json +++ b/docs/plans/igneum-2.0-test-registry.json @@ -16343,6 +16343,1790 @@ "text": "REC-01 (the master edition's one unresolved interpretation, finality pause-only healing: R1's I03 stale predicate against R2's F04 backfill caveat): closure evidence as the finality and node lanes recorded it on 8 October 2026: rule v4 at release-2.0.0-node 12424341's line, mode recovery by the founder's 19:57 ruling (the lock labelled recovery, never final), both real-node lines PASS tonight by the 6.7 pause criterion, FIN-02 PASS at 0218d6bf1 on the simulator half; status RUNNING until the beyond-window healing case with and without historical data is run natively (the node lane's case tomorrow). Applies to INT-05 and INT-06." } ] + }, + { + "code": "VR", + "title": "VR: the token value and network leadership rules (normative, proposed, requiring ratification)", + "source": "docs/plans/igneum-2.0-master/token-value/rules-and-gates.json rules", + "gate": "Ratification by the founder and each rule's owner role", + "owner": "founder (ratification); the owner role per rule", + "fixtures": [ + "F0" + ], + "summary": "40 normative rules from Igneum 2.0 - Token Value & Network Leadership 1.0-proposed (snapshot 2026-10-08); Supplement to original master and 128-case test standard; not a price/rank guarantee", + "tests": [ + { + "id": "VR-01", + "title": "One monetary contract", + "requirement": "Ratify one maximum-supply, subsidy and change-policy contract. No unexplained tail escape, automatic emergency mint or price-triggered issuance.", + "accept": "Ratify one maximum-supply, subsidy and change-policy contract. No unexplained tail escape, automatic emergency mint or price-triggered issuance.", + "evidence": "D01 decision, normative spec, executable supply tests and consistent public text.", + "priority": "P0", + "profile": "P00", + "cadence": "Once, at ratification; again on any change of the rule", + "method": "Ratification", + "source": [ + "TV" + ], + "gate": "Ratified", + "owner": "Protocol + governance", + "owner_role": "Protocol + governance", + "manual_page": null, + "rule_status": "PROPOSED - REQUIRES RATIFICATION", + "run_status": "NOT RUN" + }, + { + "id": "VR-02", + "title": "Independent supply accounting", + "requirement": "Make circulating, issued, burned, locked and maximum supply independently reproducible. Count bridges and wrappers without creating fictitious native supply.", + "accept": "Make circulating, issued, burned, locked and maximum supply independently reproducible. Count bridges and wrappers without creating fictitious native supply.", + "evidence": "Two independent supply calculations with exact integer reconciliation.", + "priority": "P0", + "profile": "P00", + "cadence": "Once, at ratification; again on any change of the rule", + "method": "Ratification", + "source": [ + "TV" + ], + "gate": "Ratified", + "owner": "Protocol + measurement", + "owner_role": "Protocol + measurement", + "manual_page": null, + "rule_status": "PROPOSED - REQUIRES RATIFICATION", + "run_status": "NOT RUN" + }, + { + "id": "VR-03", + "title": "Equal opportunity at launch", + "requirement": "No premine or privileged devnet conversion under the stated fair-launch policy. Publish efficient software and launch conditions before activation.", + "accept": "No premine or privileged devnet conversion under the stated fair-launch policy. Publish efficient software and launch conditions before activation.", + "evidence": "Genesis audit, launch rehearsal, insider disclosures and public release history.", + "priority": "P0", + "profile": "P00", + "cadence": "Once, at ratification; again on any change of the rule", + "method": "Ratification", + "source": [ + "TV" + ], + "gate": "Ratified", + "owner": "Release + ecosystem", + "owner_role": "Release + ecosystem", + "manual_page": null, + "rule_status": "PROPOSED - REQUIRES RATIFICATION", + "run_status": "NOT RUN" + }, + { + "id": "VR-04", + "title": "No artificial return promise", + "requirement": "Do not advertise guaranteed appreciation, passive returns without necessary work, a redemption floor or electricity-backed value.", + "accept": "Do not advertise guaranteed appreciation, passive returns without necessary work, a redemption floor or electricity-backed value.", + "evidence": "Product terms, source of rewards and public-claim review.", + "priority": "P0", + "profile": "P00", + "cadence": "Once, at ratification; again on any change of the rule", + "method": "Ratification", + "source": [ + "TV" + ], + "gate": "Ratified", + "owner": "Governance + counsel", + "owner_role": "Governance + counsel", + "manual_page": null, + "rule_status": "PROPOSED - REQUIRES RATIFICATION", + "run_status": "NOT RUN" + }, + { + "id": "VR-05", + "title": "Fund necessary security", + "requirement": "Model miners, internal provers, minimum validators and maintenance separately through declining issuance. No assumption that an external sale automatically funds all roles.", + "accept": "Model miners, internal provers, minimum validators and maintenance separately through declining issuance. No assumption that an external sale automatically funds all roles.", + "evidence": "Role-by-role cash flow, adverse scenarios and committed initial resources.", + "priority": "P0", + "profile": "P00", + "cadence": "Once, at ratification; again on any change of the rule", + "method": "Ratification", + "source": [ + "TV" + ], + "gate": "Ratified", + "owner": "Economics + protocol", + "owner_role": "Economics + protocol", + "manual_page": null, + "rule_status": "PROPOSED - REQUIRES RATIFICATION", + "run_status": "NOT RUN" + }, + { + "id": "VR-06", + "title": "Honest rule change", + "requirement": "Publish rationale, impact, adoption path and compatibility limits before a material monetary change. Do not pretend software can prevent all future voluntary forks.", + "accept": "Publish rationale, impact, adoption path and compatibility limits before a material monetary change. Do not pretend software can prevent all future voluntary forks.", + "evidence": "Versioned proposals, reviewer comments, adoption and dissent documentation.", + "priority": "P0", + "profile": "P00", + "cadence": "Once, at ratification; again on any change of the rule", + "method": "Ratification", + "source": [ + "TV" + ], + "gate": "Ratified", + "owner": "Protocol + governance", + "owner_role": "Protocol + governance", + "manual_page": null, + "rule_status": "PROPOSED - REQUIRES RATIFICATION", + "run_status": "NOT RUN" + }, + { + "id": "VR-07", + "title": "Transparent fee routing", + "requirement": "Every fee, burn, operator payment and optional Labs charge has an explicit source and recipient. No new team tax hidden in a commercial label.", + "accept": "Every fee, burn, operator payment and optional Labs charge has an explicit source and recipient. No new team tax hidden in a commercial label.", + "evidence": "Executable fee tests and reconciliation to invoices/receipts.", + "priority": "P0", + "profile": "P00", + "cadence": "Once, at ratification; again on any change of the rule", + "method": "Ratification", + "source": [ + "TV" + ], + "gate": "Ratified", + "owner": "Economics + protocol", + "owner_role": "Economics + protocol", + "manual_page": null, + "rule_status": "PROPOSED - REQUIRES RATIFICATION", + "run_status": "NOT RUN" + }, + { + "id": "VR-08", + "title": "Separate value and money flows", + "requirement": "Distinguish job turnover, fees, operator income, Labs income, token holdings and market value. Do not count the same payment or saving twice.", + "accept": "Distinguish job turnover, fees, operator income, Labs income, token holdings and market value. Do not count the same payment or saving twice.", + "evidence": "Reconciled flow diagram and reproducible metric definitions.", + "priority": "P0", + "profile": "P00", + "cadence": "Once, at ratification; again on any change of the rule", + "method": "Ratification", + "source": [ + "TV" + ], + "gate": "Ratified", + "owner": "Economics + measurement", + "owner_role": "Economics + measurement", + "manual_page": null, + "rule_status": "PROPOSED - REQUIRES RATIFICATION", + "run_status": "NOT RUN" + }, + { + "id": "VR-09", + "title": "Accessible hardware economics", + "requirement": "Fix the reference cohort and scenarios in advance. Allow the strongest feasible programmable multi-epoch specialist, including sunk development and alternative memory.", + "accept": "Fix the reference cohort and scenarios in advance. Allow the strongest feasible programmable multi-epoch specialist, including sunk development and alternative memory.", + "evidence": "Approved original GPU/ADV/ROT/ECO profiles and independent review.", + "priority": "P0", + "profile": "P00", + "cadence": "Once, at ratification; again on any change of the rule", + "method": "Ratification", + "source": [ + "TV" + ], + "gate": "Ratified", + "owner": "GPU + hardware reviewer", + "owner_role": "GPU + hardware reviewer", + "manual_page": null, + "rule_status": "PROPOSED - REQUIRES RATIFICATION", + "run_status": "NOT RUN" + }, + { + "id": "VR-10", + "title": "Mandatory correct proofs", + "requirement": "All activated proof decisions must bind their actual statement, kind and verifier independent of cache history. Missing trusted infrastructure must not disable enforcement.", + "accept": "All activated proof decisions must bind their actual statement, kind and verifier independent of cache history. Missing trusted infrastructure must not disable enforcement.", + "evidence": "Native warm/cold/order/restart tests and positive/negative proof fixtures.", + "priority": "P0", + "profile": "P00", + "cadence": "Once, at ratification; again on any change of the rule", + "method": "Ratification", + "source": [ + "TV" + ], + "gate": "Ratified", + "owner": "Protocol + proving", + "owner_role": "Protocol + proving", + "manual_page": null, + "rule_status": "PROPOSED - REQUIRES RATIFICATION", + "run_status": "NOT RUN" + }, + { + "id": "VR-11", + "title": "Literal finality", + "requirement": "Define fault assumptions, authority continuity and recovery. Never present a weaker recovery certificate as the stronger irreversible guarantee.", + "accept": "Define fault assumptions, authority continuity and recovery. Never present a weaker recovery certificate as the stronger irreversible guarantee.", + "evidence": "Native multi-node boundary tests and consumer label checks.", + "priority": "P0", + "profile": "P00", + "cadence": "Once, at ratification; again on any change of the rule", + "method": "Ratification", + "source": [ + "TV" + ], + "gate": "Ratified", + "owner": "Consensus + security", + "owner_role": "Consensus + security", + "manual_page": null, + "rule_status": "PROPOSED - REQUIRES RATIFICATION", + "run_status": "NOT RUN" + }, + { + "id": "VR-12", + "title": "Retained operator authority", + "requirement": "Pooling variance or buying a service does not silently transfer keys, transaction selection or finality/governance control.", + "accept": "Pooling variance or buying a service does not silently transfer keys, transaction selection or finality/governance control.", + "evidence": "Key/template substitution tests and explicit delegation contracts.", + "priority": "P0", + "profile": "P00", + "cadence": "Once, at ratification; again on any change of the rule", + "method": "Ratification", + "source": [ + "TV" + ], + "gate": "Ratified", + "owner": "Protocol + pool", + "owner_role": "Protocol + pool", + "manual_page": null, + "rule_status": "PROPOSED - REQUIRES RATIFICATION", + "run_status": "NOT RUN" + }, + { + "id": "VR-13", + "title": "Safe custody and consent", + "requirement": "Private keys, spending limits, signing displays and recovery choices remain under explicit user authority. Defaults must not conceal broad powers.", + "accept": "Private keys, spending limits, signing displays and recovery choices remain under explicit user authority. Defaults must not conceal broad powers.", + "evidence": "Wallet security review and independent user/recovery exercises.", + "priority": "P0", + "profile": "P00", + "cadence": "Once, at ratification; again on any change of the rule", + "method": "Ratification", + "source": [ + "TV" + ], + "gate": "Ratified", + "owner": "Wallet + security", + "owner_role": "Wallet + security", + "manual_page": null, + "rule_status": "PROPOSED - REQUIRES RATIFICATION", + "run_status": "NOT RUN" + }, + { + "id": "VR-14", + "title": "Portable verification", + "requirement": "Balances and receipts authenticate their roots, successful outcome and trust anchors. Necessary reconstruction data has a documented availability path.", + "accept": "Balances and receipts authenticate their roots, successful outcome and trust anchors. Necessary reconstruction data has a documented availability path.", + "evidence": "Independent receipt/client verification with hostile inputs.", + "priority": "P0", + "profile": "P00", + "cadence": "Once, at ratification; again on any change of the rule", + "method": "Ratification", + "source": [ + "TV" + ], + "gate": "Ratified", + "owner": "Wallet + protocol", + "owner_role": "Wallet + protocol", + "manual_page": null, + "rule_status": "PROPOSED - REQUIRES RATIFICATION", + "run_status": "NOT RUN" + }, + { + "id": "VR-15", + "title": "Price real resources", + "requirement": "Bound execution, verification and storage costs. Sponsored transactions have limits. No deliberate congestion solely to increase a token metric.", + "accept": "Bound execution, verification and storage costs. Sponsored transactions have limits. No deliberate congestion solely to increase a token metric.", + "evidence": "Minimum-node tests and fee/sponsor-abuse scenarios.", + "priority": "P0", + "profile": "P00", + "cadence": "Once, at ratification; again on any change of the rule", + "method": "Ratification", + "source": [ + "TV" + ], + "gate": "Ratified", + "owner": "Protocol + economics", + "owner_role": "Protocol + economics", + "manual_page": null, + "rule_status": "PROPOSED - REQUIRES RATIFICATION", + "run_status": "NOT RUN" + }, + { + "id": "VR-16", + "title": "No fragile stable-value promise", + "requirement": "Any stable-value product has explicit issuer, reserve/redemption rights, permissions and risks. No native-backed peg used merely to manufacture demand.", + "accept": "Any stable-value product has explicit issuer, reserve/redemption rights, permissions and risks. No native-backed peg used merely to manufacture demand.", + "evidence": "Independent diligence, risk limits and legal assessment before release.", + "priority": "P0", + "profile": "P00", + "cadence": "Once, at ratification; again on any change of the rule", + "method": "Ratification", + "source": [ + "TV" + ], + "gate": "Ratified", + "owner": "Application + counsel", + "owner_role": "Application + counsel", + "manual_page": null, + "rule_status": "PROPOSED - REQUIRES RATIFICATION", + "run_status": "NOT RUN" + }, + { + "id": "VR-17", + "title": "Optional bounded bridges", + "requirement": "Bridge exposure is separate from core security. No bridge is mandatory for genesis or allowed to redefine base-chain finality after a loss.", + "accept": "Bridge exposure is separate from core security. No bridge is mandatory for genesis or allowed to redefine base-chain finality after a loss.", + "evidence": "External security review, loss limits and failure/isolation tests.", + "priority": "P0", + "profile": "P00", + "cadence": "Once, at ratification; again on any change of the rule", + "method": "Ratification", + "source": [ + "TV" + ], + "gate": "Ratified", + "owner": "Application + security", + "owner_role": "Application + security", + "manual_page": null, + "rule_status": "PROPOSED - REQUIRES RATIFICATION", + "run_status": "NOT RUN" + }, + { + "id": "VR-18", + "title": "Open work settlement", + "requirement": "Jobs bind program, inputs, result, verifier, deadline and payment. Gateways are replaceable and Labs approval is not required for ordinary work.", + "accept": "Jobs bind program, inputs, result, verifier, deadline and payment. Gateways are replaceable and Labs approval is not required for ordinary work.", + "evidence": "Independent request-to-paid-result test and state reconciliation.", + "priority": "P0", + "profile": "P00", + "cadence": "Once, at ratification; again on any change of the rule", + "method": "Ratification", + "source": [ + "TV" + ], + "gate": "Ratified", + "owner": "Protocol + ecosystem", + "owner_role": "Protocol + ecosystem", + "manual_page": null, + "rule_status": "PROPOSED - REQUIRES RATIFICATION", + "run_status": "NOT RUN" + }, + { + "id": "VR-19", + "title": "Obligation-based service bonds", + "requirement": "Deposits secure a specific obligation, not consensus influence. Size and failure conditions must preserve small-operator paths and handle collateral decline.", + "accept": "Deposits secure a specific obligation, not consensus influence. Size and failure conditions must preserve small-operator paths and handle collateral decline.", + "evidence": "Economic and adversarial reservation/default tests.", + "priority": "P0", + "profile": "P00", + "cadence": "Once, at ratification; again on any change of the rule", + "method": "Ratification", + "source": [ + "TV" + ], + "gate": "Ratified", + "owner": "Economics + application", + "owner_role": "Economics + application", + "manual_page": null, + "rule_status": "PROPOSED - REQUIRES RATIFICATION", + "run_status": "NOT RUN" + }, + { + "id": "VR-20", + "title": "Independent developer access", + "requirement": "Publish complete standards, fixtures and tooling. Grants reward useful maintained deliverables rather than deployments or price effects.", + "accept": "Publish complete standards, fixtures and tooling. Grants reward useful maintained deliverables rather than deployments or price effects.", + "evidence": "Unaffiliated integration and maintenance evidence.", + "priority": "P0", + "profile": "P00", + "cadence": "Once, at ratification; again on any change of the rule", + "method": "Ratification", + "source": [ + "TV" + ], + "gate": "Ratified", + "owner": "Ecosystem", + "owner_role": "Ecosystem", + "manual_page": null, + "rule_status": "PROPOSED - REQUIRES RATIFICATION", + "run_status": "NOT RUN" + }, + { + "id": "VR-21", + "title": "Committed maintenance", + "requirement": "Essential maintenance and audits need a funded runway with stress accounting, distinct from hoped-for appreciation or fundraising.", + "accept": "Essential maintenance and audits need a funded runway with stress accounting, distinct from hoped-for appreciation or fundraising.", + "evidence": "At least approved P13 runway, commitments and role costs.", + "priority": "P0", + "profile": "P00", + "cadence": "Once, at ratification; again on any change of the rule", + "method": "Ratification", + "source": [ + "TV" + ], + "gate": "Ratified", + "owner": "Maintainers + finance", + "owner_role": "Maintainers + finance", + "manual_page": null, + "rule_status": "PROPOSED - REQUIRES RATIFICATION", + "run_status": "NOT RUN" + }, + { + "id": "VR-22", + "title": "Founder independence", + "requirement": "Routine block, job, payment and recovery paths must not require a founder credential or undocumented manual action.", + "accept": "Routine block, job, payment and recovery paths must not require a founder credential or undocumented manual action.", + "evidence": "Real founder-absence exercises and intervention ledger.", + "priority": "P0", + "profile": "P00", + "cadence": "Once, at ratification; again on any change of the rule", + "method": "Ratification", + "source": [ + "TV" + ], + "gate": "Ratified", + "owner": "Operations + independent reviewer", + "owner_role": "Operations + independent reviewer", + "manual_page": null, + "rule_status": "PROPOSED - REQUIRES RATIFICATION", + "run_status": "NOT RUN" + }, + { + "id": "VR-23", + "title": "Measure effective control", + "requirement": "Report operator, pool, hosting, service and client dependencies with attribution limits. Keys and addresses are not people.", + "accept": "Report operator, pool, hosting, service and client dependencies with attribution limits. Keys and addresses are not people.", + "evidence": "Dependency/control map with uncertainty and removal experiments.", + "priority": "P0", + "profile": "P00", + "cadence": "Once, at ratification; again on any change of the rule", + "method": "Ratification", + "source": [ + "TV" + ], + "gate": "Ratified", + "owner": "Measurement + operations", + "owner_role": "Measurement + operations", + "manual_page": null, + "rule_status": "PROPOSED - REQUIRES RATIFICATION", + "run_status": "NOT RUN" + }, + { + "id": "VR-24", + "title": "Reproducible secure release", + "requirement": "Pin source, binaries, rules, guests/keys and activation. Provenance is necessary but not sufficient for correctness.", + "accept": "Pin source, binaries, rules, guests/keys and activation. Provenance is necessary but not sufficient for correctness.", + "evidence": "Independent builds, artifact verification and scoped review.", + "priority": "P0", + "profile": "P00", + "cadence": "Once, at ratification; again on any change of the rule", + "method": "Ratification", + "source": [ + "TV" + ], + "gate": "Ratified", + "owner": "Release + security", + "owner_role": "Release + security", + "manual_page": null, + "rule_status": "PROPOSED - REQUIRES RATIFICATION", + "run_status": "NOT RUN" + }, + { + "id": "VR-25", + "title": "Consent-preserving incident response", + "requirement": "Separate public/developer authority. Urgency must not silently override installation or grant arbitrary execution. Disclose material incidents and retest.", + "accept": "Separate public/developer authority. Urgency must not silently override installation or grant arbitrary execution. Disclose material incidents and retest.", + "evidence": "Compromised-key, unsafe-update and recovery drills.", + "priority": "P0", + "profile": "P00", + "cadence": "Once, at ratification; again on any change of the rule", + "method": "Ratification", + "source": [ + "TV" + ], + "gate": "Ratified", + "owner": "Release + operations", + "owner_role": "Release + operations", + "manual_page": null, + "rule_status": "PROPOSED - REQUIRES RATIFICATION", + "run_status": "NOT RUN" + }, + { + "id": "VR-26", + "title": "Honest access and liquidity", + "requirement": "Use functional deposits/withdrawals and executable depth, not ticker count or fabricated volume. Never restrict exit to simulate value.", + "accept": "Use functional deposits/withdrawals and executable depth, not ticker count or fabricated volume. Never restrict exit to simulate value.", + "evidence": "Independent access-route and two-sided liquidity observations.", + "priority": "P0", + "profile": "P00", + "cadence": "Once, at ratification; again on any change of the rule", + "method": "Ratification", + "source": [ + "TV" + ], + "gate": "Ratified", + "owner": "Ecosystem + measurement", + "owner_role": "Ecosystem + measurement", + "manual_page": null, + "rule_status": "PROPOSED - REQUIRES RATIFICATION", + "run_status": "NOT RUN" + }, + { + "id": "VR-27", + "title": "Transparent treasury relationships", + "requirement": "Disclose material grants, insider holdings, inventory and market-making mandates. No wash trades or hidden price-support promises.", + "accept": "Disclose material grants, insider holdings, inventory and market-making mandates. No wash trades or hidden price-support promises.", + "evidence": "Mandate register, reconciled accounts and conflict policy.", + "priority": "P0", + "profile": "P00", + "cadence": "Once, at ratification; again on any change of the rule", + "method": "Ratification", + "source": [ + "TV" + ], + "gate": "Ratified", + "owner": "Treasury + counsel", + "owner_role": "Treasury + counsel", + "manual_page": null, + "rule_status": "PROPOSED - REQUIRES RATIFICATION", + "run_status": "NOT RUN" + }, + { + "id": "VR-28", + "title": "Auditable metrics", + "requirement": "Publish definitions, raw/adjusted views, sampling, attribution uncertainty and missing data. No subsidy-hidden demand or censored failed jobs.", + "accept": "Publish definitions, raw/adjusted views, sampling, attribution uncertainty and missing data. No subsidy-hidden demand or censored failed jobs.", + "evidence": "Data lineage, conservation checks and independent replay.", + "priority": "P0", + "profile": "P00", + "cadence": "Once, at ratification; again on any change of the rule", + "method": "Ratification", + "source": [ + "TV" + ], + "gate": "Ratified", + "owner": "Measurement", + "owner_role": "Measurement", + "manual_page": null, + "rule_status": "PROPOSED - REQUIRES RATIFICATION", + "run_status": "NOT RUN" + }, + { + "id": "VR-29", + "title": "Fair comparison universe", + "requirement": "Define eligible peers and exclusions before observing rankings. Include qualifying new entrants and preserve unknown values.", + "accept": "Define eligible peers and exclusions before observing rankings. Include qualifying new entrants and preserve unknown values.", + "evidence": "Independent peer census and versioned comparison protocol.", + "priority": "P0", + "profile": "P00", + "cadence": "Once, at ratification; again on any change of the rule", + "method": "Ratification", + "source": [ + "TV" + ], + "gate": "Ratified", + "owner": "Measurement + external panel", + "owner_role": "Measurement + external panel", + "manual_page": null, + "rule_status": "PROPOSED - REQUIRES RATIFICATION", + "run_status": "NOT RUN" + }, + { + "id": "VR-30", + "title": "Scoped claims only", + "requirement": "Every leadership claim names its metric, universe, period and limits. A measured price rank does not certify overall safety or future leadership.", + "accept": "Every leadership claim names its metric, universe, period and limits. A measured price rank does not certify overall safety or future leadership.", + "evidence": "Claim register with evidence, expiry and legal signoff.", + "priority": "P0", + "profile": "P00", + "cadence": "Once, at ratification; again on any change of the rule", + "method": "Ratification", + "source": [ + "TV" + ], + "gate": "Ratified", + "owner": "Governance + counsel", + "owner_role": "Governance + counsel", + "manual_page": null, + "rule_status": "PROPOSED - REQUIRES RATIFICATION", + "run_status": "NOT RUN" + }, + { + "id": "VR-31", + "title": "Evidence before pass", + "requirement": "Pre-register thresholds; missing inputs block gates; corrections preserve failed results. No aggregate score can waive core safety or economic failure.", + "accept": "Pre-register thresholds; missing inputs block gates; corrections preserve failed results. No aggregate score can waive core safety or economic failure.", + "evidence": "Frozen test charter and versioned evidence packets.", + "priority": "P0", + "profile": "P00", + "cadence": "Once, at ratification; again on any change of the rule", + "method": "Ratification", + "source": [ + "TV" + ], + "gate": "Ratified", + "owner": "Independent acceptance panel", + "owner_role": "Independent acceptance panel", + "manual_page": null, + "rule_status": "PROPOSED - REQUIRES RATIFICATION", + "run_status": "NOT RUN" + }, + { + "id": "VR-32", + "title": "Real adoption", + "requirement": "Measure unaffiliated retained users and useful repeat activity with incentives identified. Do not require buying IGN to participate in a study.", + "accept": "Measure unaffiliated retained users and useful repeat activity with incentives identified. Do not require buying IGN to participate in a study.", + "evidence": "Cohort definitions, attrition, usage and subsidy audit.", + "priority": "P0", + "profile": "P00", + "cadence": "Once, at ratification; again on any change of the rule", + "method": "Ratification", + "source": [ + "TV" + ], + "gate": "Ratified", + "owner": "Product + ecosystem", + "owner_role": "Product + ecosystem", + "manual_page": null, + "rule_status": "PROPOSED - REQUIRES RATIFICATION", + "run_status": "NOT RUN" + }, + { + "id": "VR-33", + "title": "AI earns admission", + "requirement": "AI is an optional workload category, not a guaranteed-margin network identity. Price full costs and adverse demand before expansion.", + "accept": "AI is an optional workload category, not a guaranteed-margin network identity. Price full costs and adverse demand before expansion.", + "evidence": "Workload-specific benchmark, repeat demand and verification policy.", + "priority": "P0", + "profile": "P00", + "cadence": "Once, at ratification; again on any change of the rule", + "method": "Ratification", + "source": [ + "TV" + ], + "gate": "Ratified", + "owner": "Compute + economics", + "owner_role": "Compute + economics", + "manual_page": null, + "rule_status": "PROPOSED - REQUIRES RATIFICATION", + "run_status": "NOT RUN" + }, + { + "id": "VR-34", + "title": "Bound agent spending", + "requirement": "Automated buyers have scoped budgets, permissions, expiry, revocation and logs. Untrusted prompts never alter base permissions.", + "accept": "Automated buyers have scoped budgets, permissions, expiry, revocation and logs. Untrusted prompts never alter base permissions.", + "evidence": "Prompt/input adversarial tests and payment-loss caps.", + "priority": "P0", + "profile": "P00", + "cadence": "Once, at ratification; again on any change of the rule", + "method": "Ratification", + "source": [ + "TV" + ], + "gate": "Ratified", + "owner": "Application + security", + "owner_role": "Application + security", + "manual_page": null, + "rule_status": "PROPOSED - REQUIRES RATIFICATION", + "run_status": "NOT RUN" + }, + { + "id": "VR-35", + "title": "Cryptographic migration readiness", + "requirement": "Maintain a full algorithm inventory and reviewed transition plan. No quantum-proof claim from one component or speculative attack date.", + "accept": "Maintain a full algorithm inventory and reviewed transition plan. No quantum-proof claim from one component or speculative attack date.", + "evidence": "Expert review, downgrade/migration tests and annual refresh.", + "priority": "P0", + "profile": "P00", + "cadence": "Once, at ratification; again on any change of the rule", + "method": "Ratification", + "source": [ + "TV" + ], + "gate": "Ratified", + "owner": "Cryptography + protocol", + "owner_role": "Cryptography + protocol", + "manual_page": null, + "rule_status": "PROPOSED - REQUIRES RATIFICATION", + "run_status": "NOT RUN" + }, + { + "id": "VR-36", + "title": "Separate proof, truth and privacy", + "requirement": "Execution validity does not establish real-world input truth, AI answer quality or confidentiality. State trust and data exposure for each service.", + "accept": "Execution validity does not establish real-world input truth, AI answer quality or confidentiality. State trust and data exposure for each service.", + "evidence": "Threat model and user-facing guarantee audit.", + "priority": "P0", + "profile": "P00", + "cadence": "Once, at ratification; again on any change of the rule", + "method": "Ratification", + "source": [ + "TV" + ], + "gate": "Ratified", + "owner": "Security + product", + "owner_role": "Security + product", + "manual_page": null, + "rule_status": "PROPOSED - REQUIRES RATIFICATION", + "run_status": "NOT RUN" + }, + { + "id": "VR-37", + "title": "Scale within verification budgets", + "requirement": "Throughput, data and state growth must preserve the declared minimum-node and reconstruction capabilities. Reprice security after fee compression.", + "accept": "Throughput, data and state growth must preserve the declared minimum-node and reconstruction capabilities. Reprice security after fee compression.", + "evidence": "Cold-path capacity, bootstrap, pruning and provider-removal tests.", + "priority": "P0", + "profile": "P00", + "cadence": "Once, at ratification; again on any change of the rule", + "method": "Ratification", + "source": [ + "TV" + ], + "gate": "Ratified", + "owner": "Protocol + operations", + "owner_role": "Protocol + operations", + "manual_page": null, + "rule_status": "PROPOSED - REQUIRES RATIFICATION", + "run_status": "NOT RUN" + }, + { + "id": "VR-38", + "title": "Honest energy accounting", + "requirement": "Report complete-system energy and role allocation. Avoid double-counting joint work or making unsupported carbon/marginal-transaction claims.", + "accept": "Report complete-system energy and role allocation. Avoid double-counting joint work or making unsupported carbon/marginal-transaction claims.", + "evidence": "Calibrated wall tests and documented environmental methodology.", + "priority": "P0", + "profile": "P00", + "cadence": "Once, at ratification; again on any change of the rule", + "method": "Ratification", + "source": [ + "TV" + ], + "gate": "Ratified", + "owner": "GPU + measurement", + "owner_role": "GPU + measurement", + "manual_page": null, + "rule_status": "PROPOSED - REQUIRES RATIFICATION", + "run_status": "NOT RUN" + }, + { + "id": "VR-39", + "title": "Activity-specific legal approval", + "requirement": "Obtain counsel review for actual audiences and activities. No-presale, fair-launch or decentralised labels are not blanket legal exemptions.", + "accept": "Obtain counsel review for actual audiences and activities. No-presale, fair-launch or decentralised labels are not blanket legal exemptions.", + "evidence": "Jurisdiction/activity matrix and approved external communications.", + "priority": "P0", + "profile": "P00", + "cadence": "Once, at ratification; again on any change of the rule", + "method": "Ratification", + "source": [ + "TV" + ], + "gate": "Ratified", + "owner": "Counsel", + "owner_role": "Counsel", + "manual_page": null, + "rule_status": "PROPOSED - REQUIRES RATIFICATION", + "run_status": "NOT RUN" + }, + { + "id": "VR-40", + "title": "No indispensable administrator", + "requirement": "A useful company, token holder, pool, AI agent or funding body receives no hidden power over balances, issuance or canonical history.", + "accept": "A useful company, token holder, pool, AI agent or funding body receives no hidden power over balances, issuance or canonical history.", + "evidence": "Authority inventory, isolation tests and independent operation.", + "priority": "P0", + "profile": "P00", + "cadence": "Once, at ratification; again on any change of the rule", + "method": "Ratification", + "source": [ + "TV" + ], + "gate": "Ratified", + "owner": "Protocol + governance", + "owner_role": "Protocol + governance", + "manual_page": null, + "rule_status": "PROPOSED - REQUIRES RATIFICATION", + "run_status": "NOT RUN" + } + ] + }, + { + "code": "TV", + "title": "TV: the token value and network leadership gates (proposed; no gate executed)", + "source": "docs/plans/igneum-2.0-master/token-value/rules-and-gates.json gates", + "gate": "Token value gates closed", + "owner": "the owner role per gate", + "fixtures": [ + "F0" + ], + "summary": "32 gates from Igneum 2.0 - Token Value & Network Leadership 1.0-proposed (snapshot 2026-10-08); scope CORE, CAPABILITY IF ENABLED or LEADERSHIP CLAIM as the file gives it; Supplement to original master and 128-case test standard; not a price/rank guarantee", + "tests": [ + { + "id": "TV-01", + "title": "Resolve and freeze the monetary contract", + "setup": "Supply, tail, fee and recovery documents plus exact proposed release.", + "procedure": "Reconcile D01-D06 with protocol/economic/counsel review. Freeze thresholds and all interfaces before confirmatory tests.", + "accept": "No conflicting normative policy; every material choice has a signed rationale, version, adoption path and tests. Unresolved core choice is BLOCKED.", + "evidence": "Decision log, signed specification, release manifest, test charter.", + "priority": "P0", + "profile": "P00", + "cadence": "Every release candidate", + "method": "Automated + independent review", + "source": [ + "TV" + ], + "gate": "Token value gates closed", + "owner": "Protocol + independent panel", + "owner_role": "Protocol + independent panel", + "manual_page": null, + "scope": "CORE", + "inherited_links": [ + "GOV", + "P00", + "VR-01", + "VR-06" + ], + "threshold_status": "PROPOSED - FREEZE BEFORE TEST", + "run_status": "NOT RUN", + "master_status": "NOT RUN" + }, + { + "id": "TV-02", + "title": "Reproduce complete supply accounting", + "setup": "Two independent implementations; genesis and representative boundary/reorg fixtures.", + "procedure": "Recompute issued, paid, burned, locked and outstanding amounts through subsidy transitions, rollback/replay and duplicate records.", + "accept": "Exact integer agreement; no unaccounted creation, duplicate supply or cap breach under the ratified policy. Restricted wrappers are not extra native supply.", + "evidence": "Machine-readable ledgers, vectors, independent signoff.", + "priority": "P0", + "profile": "P00", + "cadence": "Every release candidate", + "method": "Automated + independent review", + "source": [ + "TV" + ], + "gate": "Token value gates closed", + "owner": "Protocol + measurement", + "owner_role": "Protocol + measurement", + "manual_page": null, + "scope": "CORE", + "inherited_links": [ + "EVM", + "INC", + "GOV", + "VR-02" + ], + "threshold_status": "PROPOSED - FREEZE BEFORE TEST", + "run_status": "NOT RUN", + "master_status": "NOT RUN" + }, + { + "id": "TV-03", + "title": "Fair launch and early distribution", + "setup": "Public binaries, source, mining modes, launch notice and insider inventory.", + "procedure": "Rehearse from clean outsider machines; audit genesis allocations and devnet balances; simulate arrival times under alternative emission schedules.", + "accept": "Zero undisclosed allocation or privileged conversion; approved notice/support window and cohort pass; distribution analysis includes delayed entrants without guaranteeing equal ownership.", + "evidence": "Genesis report, dated releases, disclosure register, simulation inputs.", + "priority": "P0", + "profile": "P00", + "cadence": "Every release candidate", + "method": "Automated + independent review", + "source": [ + "TV" + ], + "gate": "Token value gates closed", + "owner": "Release + ecosystem", + "owner_role": "Release + ecosystem", + "manual_page": null, + "scope": "CORE", + "inherited_links": [ + "GPU", + "OPS", + "GOV", + "VR-03" + ], + "threshold_status": "PROPOSED - FREEZE BEFORE TEST", + "run_status": "NOT RUN", + "master_status": "NOT RUN" + }, + { + "id": "TV-04", + "title": "Security budget without price rescue", + "setup": "Ratified reward/fee rules; role costs; horizons 1, 5, 10 and 20 years.", + "procedure": "Model falling issuance, fee volatility and .25x/1x/4x/10x revenue, zero external jobs and -90% price. Separate role receipts and funding.", + "accept": "Approved viable scenarios fund minimum required roles without hidden issuance or assumed appreciation; failure regions stated. Collapse scenarios need safe behaviour, not universal profit.", + "evidence": "Reproducible cash-flow model, assumptions, independent review.", + "priority": "P0", + "profile": "P00", + "cadence": "Every release candidate", + "method": "Automated + independent review", + "source": [ + "TV" + ], + "gate": "Token value gates closed", + "owner": "Economics + protocol", + "owner_role": "Economics + protocol", + "manual_page": null, + "scope": "CORE", + "inherited_links": [ + "ECO", + "INC", + "P12", + "P13", + "VR-05" + ], + "threshold_status": "PROPOSED - FREEZE BEFORE TEST", + "run_status": "NOT RUN", + "master_status": "NOT RUN" + }, + { + "id": "TV-05", + "title": "Strongest surviving specialist", + "setup": "Pinned candidate/cohort; cheapest supported physical designs including SRAM/hybrid.", + "procedure": "Apply original ADV/GPU/ECO profiles with multi-epoch survival and development sunk. Reprice alternative state and memory implementations.", + "accept": "All approved core energy and total-cost bounds pass with uncertainty; no unresolved feasible dominating design. Unknown feasibility blocks the broad claim.", + "evidence": "Design files, wall results, sensitivity model, two independent hardware opinions.", + "priority": "P0", + "profile": "P00", + "cadence": "Every release candidate", + "method": "Automated + independent review", + "source": [ + "TV" + ], + "gate": "Token value gates closed", + "owner": "Hardware reviewer + economics", + "owner_role": "Hardware reviewer + economics", + "manual_page": null, + "scope": "CORE", + "inherited_links": [ + "ADV", + "GPU", + "ECO", + "P04", + "P12", + "INT-18", + "VR-09" + ], + "threshold_status": "PROPOSED - FREEZE BEFORE TEST", + "run_status": "NOT RUN", + "master_status": "NOT RUN" + }, + { + "id": "TV-06", + "title": "Every fee and payment reconciles", + "setup": "Native rules, payer contract and optional Labs/service invoices.", + "procedure": "Execute gas, proof, developer, pool, burn, sponsor and refund paths, including rounding, abort, retry and zero-demand cases.", + "accept": "No unexplained recipient or double count; statements/invoices match exact contract outcomes. Network turnover never labelled Labs revenue or permanent holding demand.", + "evidence": "Flow ledger, fixtures, invoice examples, reviewed public fee table.", + "priority": "P0", + "profile": "P00", + "cadence": "Every release candidate", + "method": "Automated + independent review", + "source": [ + "TV" + ], + "gate": "Token value gates closed", + "owner": "Economics + application", + "owner_role": "Economics + application", + "manual_page": null, + "scope": "CORE", + "inherited_links": [ + "EVM", + "INC", + "COM", + "VR-07", + "VR-08" + ], + "threshold_status": "PROPOSED - FREEZE BEFORE TEST", + "run_status": "NOT RUN", + "master_status": "NOT RUN" + }, + { + "id": "TV-07", + "title": "Ownership-critical engineering closure", + "setup": "Original master findings mapped to current release with genuine proof fixtures.", + "procedure": "Run native cache-order, fail-closed activation, payout crash and finality tests; reproduce fixed cases in independent environments.", + "accept": "No unresolved critical/high finding or counterexample within the approved guarantee; all applicable original safety gates pass. Reproducing a defect is not closure.", + "evidence": "Native outputs, manifests, scoped audit, issue-by-issue closure.", + "priority": "P0", + "profile": "P00", + "cadence": "Every release candidate", + "method": "Automated + independent review", + "source": [ + "TV" + ], + "gate": "Token value gates closed", + "owner": "Protocol + independent security", + "owner_role": "Protocol + independent security", + "manual_page": null, + "scope": "CORE", + "inherited_links": [ + "ZKP", + "FIN", + "OPS", + "R2:F01-F04", + "R2:F12", + "VR-10", + "VR-11" + ], + "threshold_status": "PROPOSED - FREEZE BEFORE TEST", + "run_status": "NOT RUN", + "master_status": "NOT RUN" + }, + { + "id": "TV-08", + "title": "Custody and recovery usability", + "setup": "Declared wallet/hardware combinations; 30 new participants, at least 15 non-miners.", + "procedure": "Perform receive, preview/sign, limit, recovery and revocation tasks with valueless funds; inject wrong network/address and malicious prompts.", + "accept": "Zero unauthorised transfer or secret disclosure; at least 90% complete the approved safe task without private help. Report confidence limitations and all failures.", + "evidence": "Task protocol, anonymised results, security review, recovery vectors.", + "priority": "P0", + "profile": "P00", + "cadence": "Every release candidate", + "method": "Automated + independent review", + "source": [ + "TV" + ], + "gate": "Token value gates closed", + "owner": "Wallet + independent users", + "owner_role": "Wallet + independent users", + "manual_page": null, + "scope": "CORE", + "inherited_links": [ + "UX", + "VER", + "P10", + "VR-13" + ], + "threshold_status": "PROPOSED - FREEZE BEFORE TEST", + "run_status": "NOT RUN", + "master_status": "NOT RUN" + }, + { + "id": "TV-09", + "title": "Independently verifiable settlement", + "setup": "Proof/receipt client without Labs RPC; normal and recovery certificates.", + "procedure": "Verify successful/failed transfers, wrong asset/amount, stale roots, fake voter lists, invalid proofs and withheld data.", + "accept": "All invalid claims refused; valid ordinary transfers verify within approved resource limits; weaker recovery and unavailable data never shown as stronger finality.", + "evidence": "Offline fixtures, consumer traces and independent implementation.", + "priority": "P0", + "profile": "P00", + "cadence": "Every release candidate", + "method": "Automated + independent review", + "source": [ + "TV" + ], + "gate": "Token value gates closed", + "owner": "Wallet + consensus", + "owner_role": "Wallet + consensus", + "manual_page": null, + "scope": "CORE", + "inherited_links": [ + "VER", + "FIN", + "P08", + "VR-11", + "VR-14" + ], + "threshold_status": "PROPOSED - FREEZE BEFORE TEST", + "run_status": "NOT RUN", + "master_status": "NOT RUN" + }, + { + "id": "TV-10", + "title": "Minimum-node and sponsored-use limits", + "setup": "Approved minimum validator and sponsor budgets under final workload.", + "procedure": "Run cold proof verification, expensive invalid inputs, state growth, paymaster drain attempts and overloaded bursts.", + "accept": "Original capacity/security profiles pass; budgets remain bounded; no proof skipped to catch up and no sponsor can spend outside authorised scope.", + "evidence": "Cold-path profiles, stress traces, sponsor negative tests.", + "priority": "P0", + "profile": "P00", + "cadence": "Every release candidate", + "method": "Automated + independent review", + "source": [ + "TV" + ], + "gate": "Token value gates closed", + "owner": "Protocol + application", + "owner_role": "Protocol + application", + "manual_page": null, + "scope": "CORE", + "inherited_links": [ + "CAP", + "EVM", + "ZKP", + "P07", + "P09", + "VR-15", + "VR-37" + ], + "threshold_status": "PROPOSED - FREEZE BEFORE TEST", + "run_status": "NOT RUN", + "master_status": "NOT RUN" + }, + { + "id": "TV-11", + "title": "Pooled payments without authority loss", + "setup": "Independent pool/member clients and durable payment state.", + "procedure": "Inject key/template substitution, reauthorisation, crash/RPC ambiguity, receipt reorg and hostile bounded inputs.", + "accept": "No duplicate/lost liability or unauthorised authority change; member can verify delegated powers and change pools. Session resource limits hold.", + "evidence": "Ledger replay, signed work fixtures and pool removal test.", + "priority": "P0", + "profile": "P00", + "cadence": "Every release candidate", + "method": "Automated + independent review", + "source": [ + "TV" + ], + "gate": "Token value gates closed", + "owner": "Pool + independent operators", + "owner_role": "Pool + independent operators", + "manual_page": null, + "scope": "CORE", + "inherited_links": [ + "INT-03", + "INT-04", + "INT-15", + "INT-16", + "R2:F12-F13", + "VR-12" + ], + "threshold_status": "PROPOSED - FREEZE BEFORE TEST", + "run_status": "NOT RUN", + "master_status": "NOT RUN" + }, + { + "id": "TV-12", + "title": "Reproducible and consented software", + "setup": "Release manifest, build dependencies, update keys and public installer.", + "procedure": "Two independent parties build/verify; simulate compromised key, stale package, rollback, urgency and missing fixtures.", + "accept": "No hidden consensus variation or arbitrary default remote control; update-off remains respected; mandatory unavailable fixtures block acceptance.", + "evidence": "Attestations, independent hashes, key drill, installer/ACL review.", + "priority": "P0", + "profile": "P00", + "cadence": "Every release candidate", + "method": "Automated + independent review", + "source": [ + "TV" + ], + "gate": "Token value gates closed", + "owner": "Release + independent security", + "owner_role": "Release + independent security", + "manual_page": null, + "scope": "CORE", + "inherited_links": [ + "OPS", + "GOV", + "R2:F03", + "R2:F14", + "VR-24", + "VR-25" + ], + "threshold_status": "PROPOSED - FREEZE BEFORE TEST", + "run_status": "NOT RUN", + "master_status": "NOT RUN" + }, + { + "id": "TV-13", + "title": "Committed maintenance coverage", + "setup": "Costed roles, commitments and monthly cash dates.", + "procedure": "Audit at least 12 months of approved maintenance coverage; stress IGN-denominated resources and provider withdrawal.", + "accept": "Original P13 satisfied without counting future appreciation or unsigned pledges; essential functions have funded substitutes and explicit shortfall response.", + "evidence": "Contracts/grants or funding proof, stress cash flow, responsibility register.", + "priority": "P0", + "profile": "P00", + "cadence": "Every release candidate", + "method": "Automated + independent review", + "source": [ + "TV" + ], + "gate": "Token value gates closed", + "owner": "Maintainers + independent finance", + "owner_role": "Maintainers + independent finance", + "manual_page": null, + "scope": "CORE", + "inherited_links": [ + "ECO", + "OPS", + "P13", + "VR-21" + ], + "threshold_status": "PROPOSED - FREEZE BEFORE TEST", + "run_status": "NOT RUN", + "master_status": "NOT RUN" + }, + { + "id": "TV-14", + "title": "Founder-absent operating exercise", + "setup": "Independent builds/operators; founder services, keys and manual help removed.", + "procedure": "Run 30 real days, then satisfy the original 90-day observation programme; cross boundaries, remove major providers and record all interventions.", + "accept": "Approved original independence/reliability gates pass; no unpublished founder action or privileged override. Simulated long partitions are labelled separately.", + "evidence": "Dependency map, availability logs, intervention and payer ledger.", + "priority": "P0", + "profile": "P00", + "cadence": "Every release candidate", + "method": "Automated + independent review", + "source": [ + "TV" + ], + "gate": "Token value gates closed", + "owner": "Independent operations panel", + "owner_role": "Independent operations panel", + "manual_page": null, + "scope": "CORE", + "inherited_links": [ + "OPS", + "FIN", + "LEAD", + "P11", + "P16", + "VR-22", + "VR-23" + ], + "threshold_status": "PROPOSED - FREEZE BEFORE TEST", + "run_status": "NOT RUN", + "master_status": "NOT RUN" + }, + { + "id": "TV-15", + "title": "Governance and authority boundaries", + "setup": "Every control/activation threshold, treasury power and application admin interface.", + "procedure": "Exercise hostile coalitions, absent voters, old clients and compromised non-consensus keys; test refusal and recovery.", + "accept": "No actor gains undeclared issuance/balance/history authority. Every activation follows the ratified safe procedure; ambiguous threshold or recovery remains BLOCKED.", + "evidence": "Authority model, scenarios, native outcomes and independent review.", + "priority": "P0", + "profile": "P00", + "cadence": "Every release candidate", + "method": "Automated + independent review", + "source": [ + "TV" + ], + "gate": "Token value gates closed", + "owner": "Protocol + governance", + "owner_role": "Protocol + governance", + "manual_page": null, + "scope": "CORE", + "inherited_links": [ + "GOV", + "FIN", + "ROT", + "VR-06", + "VR-40" + ], + "threshold_status": "PROPOSED - FREEZE BEFORE TEST", + "run_status": "NOT RUN", + "master_status": "NOT RUN" + }, + { + "id": "TV-16", + "title": "Two functional independent access routes", + "setup": "At least two unaffiliated custody/exchange/payment routes with disclosed shared infrastructure.", + "procedure": "Complete small controlled deposits, withdrawals, outage and reconciliation tests; identify actual custody and settlement dependencies.", + "accept": "Both settle correctly; neither is merely a front end to the same indispensable provider. Gaps and jurisdiction limits visible; no listing assumed from a logo.", + "evidence": "Settlement records, dependency map and third-party confirmation.", + "priority": "P0", + "profile": "P00", + "cadence": "Every release candidate", + "method": "Automated + independent review", + "source": [ + "TV" + ], + "gate": "Token value gates closed", + "owner": "Ecosystem + independent reviewer", + "owner_role": "Ecosystem + independent reviewer", + "manual_page": null, + "scope": "CORE", + "inherited_links": [ + "OPS", + "VER", + "VR-26" + ], + "threshold_status": "PROPOSED - FREEZE BEFORE TEST", + "run_status": "NOT RUN", + "master_status": "NOT RUN" + }, + { + "id": "TV-17", + "title": "Supply-price-liquidity measurement", + "setup": "Frozen sources, price filters, circulating/free-float definitions and order-size bands.", + "procedure": "Collect 90 real days; independently replay supply and prices; measure both buy/sell execution costs and withdrawal availability.", + "accept": "At least 95% daily coverage; exact supply reconciliation; no fabricated missing data. Sparse liquidity invalidates broad liquidity claims, not automatically the arithmetic cap.", + "evidence": "Raw snapshots, methodology/code, gap ledger, audit.", + "priority": "P0", + "profile": "P00", + "cadence": "Every release candidate", + "method": "Automated + independent review", + "source": [ + "TV" + ], + "gate": "Token value gates closed", + "owner": "Measurement steward", + "owner_role": "Measurement steward", + "manual_page": null, + "scope": "CORE", + "inherited_links": [ + "LEAD", + "VR-02", + "VR-26", + "VR-28" + ], + "threshold_status": "PROPOSED - FREEZE BEFORE TEST", + "run_status": "NOT RUN", + "master_status": "NOT RUN" + }, + { + "id": "TV-18", + "title": "Real versus incentivised demand", + "setup": "Customer/job/transaction definitions with privacy-respecting attribution and subsidy data.", + "procedure": "Reconcile raw/adjusted activity, self-dealing controls and incentives; test whether circular activity earns more than its irrecoverable cost.", + "accept": "All subsidies and known related activity separated; useful demand not inferred from gross volume alone; abusive incentive loop closed before scaling rewards.", + "evidence": "Accounting model, filter logic, sensitivity and independent replay.", + "priority": "P0", + "profile": "P00", + "cadence": "Every release candidate", + "method": "Automated + independent review", + "source": [ + "TV" + ], + "gate": "Token value gates closed", + "owner": "Economics + measurement", + "owner_role": "Economics + measurement", + "manual_page": null, + "scope": "CORE", + "inherited_links": [ + "COM", + "INC", + "VR-08", + "VR-28", + "VR-32" + ], + "threshold_status": "PROPOSED - FREEZE BEFORE TEST", + "run_status": "NOT RUN", + "master_status": "NOT RUN" + }, + { + "id": "TV-19", + "title": "Independent developer adoption", + "setup": "Public kit and at least five unaffiliated developers with declared tasks.", + "procedure": "Build useful integrations without private dependencies; have two independent maintainers update the kit; record obstacles and adoption reason.", + "accept": "All declared core integration paths work; at least five usable integrations and two maintainer reproductions. Empty subsidised deployments do not qualify.", + "evidence": "Repos, task traces, user evidence and maintenance records.", + "priority": "P0", + "profile": "P00", + "cadence": "Every release candidate", + "method": "Automated + independent review", + "source": [ + "TV" + ], + "gate": "Token value gates closed", + "owner": "Ecosystem + external developers", + "owner_role": "Ecosystem + external developers", + "manual_page": null, + "scope": "CORE", + "inherited_links": [ + "EVM", + "COM", + "P14", + "VR-20" + ], + "threshold_status": "PROPOSED - FREEZE BEFORE TEST", + "run_status": "NOT RUN", + "master_status": "NOT RUN" + }, + { + "id": "TV-20", + "title": "Programmable payment acceptance", + "setup": "Versioned library, independent application, user/sponsor limits and receipt path.", + "procedure": "Execute simple/conditional/recurring payments, revocations, expiry, failed outcome and duplicate invoice cases.", + "accept": "No unauthorised spend or double settlement; successful transfer independently evidenced; subjective conditions disclose adjudicator/trust.", + "evidence": "Contracts, negative vectors, user task record, security review.", + "priority": "P1", + "profile": "P00", + "cadence": "Every release candidate", + "method": "Automated + independent review", + "source": [ + "TV" + ], + "gate": "Token value gates closed", + "owner": "Application + wallet", + "owner_role": "Application + wallet", + "manual_page": null, + "scope": "PAYMENT CAPABILITY", + "inherited_links": [ + "EVM", + "VER", + "UX", + "VR-13", + "VR-15" + ], + "threshold_status": "PROPOSED - FREEZE BEFORE TEST", + "run_status": "NOT RUN", + "master_status": "NOT RUN" + }, + { + "id": "TV-21", + "title": "Useful paid proof demand", + "setup": "Exact workload and final hardware path; three unrelated buyers and approved COM profile.", + "procedure": "Observe repeat purchases under original P14/P16 conditions, full job outcomes and operator/service costs.", + "accept": "All applicable COM targets met without hidden reimbursement. Queue expiry not counted as success. A monetary-only scope cannot claim this gate passed by exclusion.", + "evidence": "Buyer evidence, cost ledger, all-job traces and independent review.", + "priority": "P1", + "profile": "P00", + "cadence": "Every release candidate", + "method": "Automated + independent review", + "source": [ + "TV" + ], + "gate": "Token value gates closed", + "owner": "Proving + independent customers", + "owner_role": "Proving + independent customers", + "manual_page": null, + "scope": "PAID WORK CAPABILITY", + "inherited_links": [ + "COM", + "CAP", + "P14", + "P16", + "R2:F08", + "VR-18" + ], + "threshold_status": "PROPOSED - FREEZE BEFORE TEST", + "run_status": "NOT RUN", + "master_status": "NOT RUN" + }, + { + "id": "TV-22", + "title": "Replaceable work-market gateway", + "setup": "Two independent gateway implementations and job/settlement specification.", + "procedure": "Create jobs, switch providers/gateways, fail one service and deliver the same objective result using public inputs.", + "accept": "Correct payment/result without Labs approval; no concealed central dispatcher or irreversible dependency. External-chain receipts labelled separately.", + "evidence": "Gateway traces, escrow reconciliation, dependency-removal run.", + "priority": "P1", + "profile": "P00", + "cadence": "Every release candidate", + "method": "Automated + independent review", + "source": [ + "TV" + ], + "gate": "Token value gates closed", + "owner": "Application + independent operators", + "owner_role": "Application + independent operators", + "manual_page": null, + "scope": "WORK MARKET CAPABILITY", + "inherited_links": [ + "OPS", + "COM", + "VR-08", + "VR-18" + ], + "threshold_status": "PROPOSED - FREEZE BEFORE TEST", + "run_status": "NOT RUN", + "master_status": "NOT RUN" + }, + { + "id": "TV-23", + "title": "Obligation-based deposits", + "setup": "Proposed bond/default contract and volatile-collateral scenarios.", + "procedure": "Test reservation abandonment, invalid inputs, network pause, -90% collateral value and malicious claims.", + "accept": "No consensus influence bought; default reason objective; compensation limits explicit; viable small-operator participation and approved risk bounds.", + "evidence": "Adversarial model, state tests, risk/legal review.", + "priority": "P1", + "profile": "P00", + "cadence": "Every release candidate", + "method": "Automated + independent review", + "source": [ + "TV" + ], + "gate": "Token value gates closed", + "owner": "Economics + security", + "owner_role": "Economics + security", + "manual_page": null, + "scope": "SERVICE BONDS IF ENABLED", + "inherited_links": [ + "INC", + "ECO", + "VR-19" + ], + "threshold_status": "PROPOSED - FREEZE BEFORE TEST", + "run_status": "NOT RUN", + "master_status": "NOT RUN" + }, + { + "id": "TV-24", + "title": "AI earns a separate commercial case", + "setup": "One bounded model/job, provider hardware, verification tier and licences.", + "procedure": "Benchmark full delivery vs actual alternatives; test 90% lower unit prices, demand collapse, private-data exposure and substituted models.", + "accept": "Approved service economics and buyer gates pass; correctness/truth/privacy distinguished. No native price or perpetual yield assumption.", + "evidence": "End-to-end costs, repeat demand, licence/threat review.", + "priority": "P1", + "profile": "P00", + "cadence": "Every release candidate", + "method": "Automated + independent review", + "source": [ + "TV" + ], + "gate": "Token value gates closed", + "owner": "Compute + independent reviewer", + "owner_role": "Compute + independent reviewer", + "manual_page": null, + "scope": "AI IF ENABLED", + "inherited_links": [ + "COM", + "CAP", + "VR-33", + "VR-36" + ], + "threshold_status": "PROPOSED - FREEZE BEFORE TEST", + "run_status": "NOT RUN", + "master_status": "NOT RUN" + }, + { + "id": "TV-25", + "title": "Bounded machine purchasing", + "setup": "Approved account/paymaster permissions and chosen x402/agent interfaces.", + "procedure": "Inject hostile outputs/prompts, replayed requests, recursive spending, revoked permissions and gateway failure.", + "accept": "Spend never exceeds authorised destination/time/amount scope; no instruction changes authority. Draft standard support is described accurately.", + "evidence": "Property tests, loss-cap proof, revocation/audit logs.", + "priority": "P1", + "profile": "P00", + "cadence": "Every release candidate", + "method": "Automated + independent review", + "source": [ + "TV" + ], + "gate": "Token value gates closed", + "owner": "Application + security", + "owner_role": "Application + security", + "manual_page": null, + "scope": "AGENTS IF ENABLED", + "inherited_links": [ + "EVM", + "UX", + "VR-34", + "VR-40" + ], + "threshold_status": "PROPOSED - FREEZE BEFORE TEST", + "run_status": "NOT RUN", + "master_status": "NOT RUN" + }, + { + "id": "TV-26", + "title": "Cryptographic migration readiness", + "setup": "Complete key/proof/transport/update inventory and external cryptographic review.", + "procedure": "Rehearse versioned signature/proof migration, downgrade/replay, mixed clients, inactive owners and minimum-node overhead.", + "accept": "No unreviewed assumption or automatic confiscation; migration can be explained and tested. No absolute quantum-proof claim or attack date inferred.", + "evidence": "Inventory, expert report, migration vectors, annual schedule.", + "priority": "P0", + "profile": "P00", + "cadence": "Every release candidate", + "method": "Automated + independent review", + "source": [ + "TV" + ], + "gate": "Token value gates closed", + "owner": "Cryptography + protocol", + "owner_role": "Cryptography + protocol", + "manual_page": null, + "scope": "CORE", + "inherited_links": [ + "ZKP", + "GOV", + "OPS", + "VR-35" + ], + "threshold_status": "PROPOSED - FREEZE BEFORE TEST", + "run_status": "NOT RUN", + "master_status": "NOT RUN" + }, + { + "id": "TV-27", + "title": "Private data and oracle assurance", + "setup": "Per-product claims, input trust sources, data-retention and execution model.", + "procedure": "Use forged data, hostile providers, telemetry leakage, unsupported attestation and false-but-correctly-executed AI outputs.", + "accept": "No claim exceeds tested guarantee; secrets/data protected to stated model; unauthenticated inputs not represented as objective truth.", + "evidence": "Threat model, exposure tests, labelled user flows.", + "priority": "P0", + "profile": "P00", + "cadence": "Every release candidate", + "method": "Automated + independent review", + "source": [ + "TV" + ], + "gate": "Token value gates closed", + "owner": "Security + product", + "owner_role": "Security + product", + "manual_page": null, + "scope": "CORE", + "inherited_links": [ + "VER", + "ZKP", + "UX", + "VR-36" + ], + "threshold_status": "PROPOSED - FREEZE BEFORE TEST", + "run_status": "NOT RUN", + "master_status": "NOT RUN" + }, + { + "id": "TV-28", + "title": "Stable assets and bridge isolation", + "setup": "Only if enabled: issuer/bridge design, redemption rights, trust anchors and approved value caps.", + "procedure": "Test reserve/redemption failure, stale oracle, invalid/recovery certificates, contract compromise and emergency shutdown.", + "accept": "No hidden base-chain guarantee or forced reversal of final history; independent audit, conservative exposure and counsel approval.", + "evidence": "Risk dossier, scenarios, disclosure, independent tests.", + "priority": "P1", + "profile": "P00", + "cadence": "Every release candidate", + "method": "Automated + independent review", + "source": [ + "TV" + ], + "gate": "Token value gates closed", + "owner": "Application + security + counsel", + "owner_role": "Application + security + counsel", + "manual_page": null, + "scope": "STABLE/BRIDGE IF ENABLED", + "inherited_links": [ + "VER", + "FIN", + "VR-16", + "VR-17" + ], + "threshold_status": "PROPOSED - FREEZE BEFORE TEST", + "run_status": "NOT RUN", + "master_status": "NOT RUN" + }, + { + "id": "TV-29", + "title": "Growth without inaccessible verification", + "setup": "Declared minimum node, projected data growth and alternative scaling design.", + "procedure": "Run cold/worst-case validation, state/pruning/bootstrap, censorship and aggregation withdrawal; model 10x/100x growth and fee compression.", + "accept": "Original minimum-node/security bounds hold; required data remains obtainable; security funding restated for changed fee routes.", + "evidence": "Capacity/availability results and revised economics.", + "priority": "P0", + "profile": "P00", + "cadence": "Every release candidate", + "method": "Automated + independent review", + "source": [ + "TV" + ], + "gate": "Token value gates closed", + "owner": "Protocol + operations", + "owner_role": "Protocol + operations", + "manual_page": null, + "scope": "CORE", + "inherited_links": [ + "CAP", + "ECO", + "VER", + "VR-37" + ], + "threshold_status": "PROPOSED - FREEZE BEFORE TEST", + "run_status": "NOT RUN", + "master_status": "NOT RUN" + }, + { + "id": "TV-30", + "title": "Energy and claims discipline", + "setup": "Calibrated whole-system metering and workload allocation protocol.", + "procedure": "Measure mining, proving, mixed/time-shared operation, setup/recovery and unsuccessful work; review environmental text.", + "accept": "No double-counted savings; original meter tolerances satisfied; no marginal-energy/carbon claim beyond method.", + "evidence": "Raw meter traces, job ledger, method and external review.", + "priority": "P0", + "profile": "P00", + "cadence": "Every release candidate", + "method": "Automated + independent review", + "source": [ + "TV" + ], + "gate": "Token value gates closed", + "owner": "GPU + measurement", + "owner_role": "GPU + measurement", + "manual_page": null, + "scope": "CORE", + "inherited_links": [ + "GPU", + "CAP", + "P02", + "VR-38" + ], + "threshold_status": "PROPOSED - FREEZE BEFORE TEST", + "run_status": "NOT RUN", + "master_status": "NOT RUN" + }, + { + "id": "TV-31", + "title": "Public-claim and activity review", + "setup": "Actual jurisdiction, audience, service, token-distribution and promotion plans.", + "procedure": "Counsel assesses applicable routes and reviews each value/rank/return/security assertion against evidence.", + "accept": "Written activity-specific clearance and approved wording; no future-value assertion in a covered MiCA white paper; no blanket exemption inferred from mining.", + "evidence": "Legal decision matrix, claim register, review dates.", + "priority": "P0", + "profile": "P00", + "cadence": "Every release candidate", + "method": "Automated + independent review", + "source": [ + "TV" + ], + "gate": "Token value gates closed", + "owner": "Qualified counsel", + "owner_role": "Qualified counsel", + "manual_page": null, + "scope": "CORE", + "inherited_links": [ + "GOV", + "LEAD", + "VR-30", + "VR-39" + ], + "threshold_status": "PROPOSED - FREEZE BEFORE TEST", + "run_status": "NOT RUN", + "master_status": "NOT RUN" + }, + { + "id": "TV-32", + "title": "Observed leadership, not a roadmap certificate", + "setup": "Approved peer universe; all applicable mandatory gates; stable release and 90-day observation.", + "procedure": "Run original P15/P16 comparisons and independently replay scoped rank data. Test changing peer/exclusion assumptions and missing data.", + "accept": "Contender requires original criteria; market-cap first requires highest 90-day median, 95% coverage; sustained daily-first convention also needs 80% of covered days. Never certify overall best from price alone.", + "evidence": "Independent panel report, full methods/data, scope and expiry of claim.", + "priority": "P1", + "profile": "P00", + "cadence": "Every release candidate", + "method": "Automated + independent review", + "source": [ + "TV" + ], + "gate": "Token value gates closed", + "owner": "Independent acceptance panel", + "owner_role": "Independent acceptance panel", + "manual_page": null, + "scope": "LEADERSHIP CLAIM", + "inherited_links": [ + "LEAD", + "P15", + "P16", + "VR-29", + "VR-30", + "VR-31" + ], + "threshold_status": "PROPOSED - FREEZE BEFORE TEST", + "run_status": "NOT RUN", + "master_status": "NOT RUN" + } + ], + "notes": [ + { + "at": "2026-10-09T08:00:44.947Z", + "text": "Counting note (main's order, 9 October 2026, by 11:00 UK): the VR rules (40) and TV gates (32) are a supplemental layer over the master's 128 cases, the 18 integration gates and the 44 review regressions, never added to them as independent evidence; no TV gate has executed; every VR rule is PROPOSED and requires ratification by the founder and its owner role; the decisions D01 to D06 are UNAPPROVED, the founder's." + } + ] } ], "profiles": { @@ -16611,6 +18395,54 @@ { "at": "2026-10-08T20:10:24.748Z", "text": "128 original test cases, 18 additional integration gates, 44 updated-stack closure requirements. These sets overlap and are not 190 independent tests." + }, + { + "at": "2026-10-09T08:00:44.994Z", + "text": "Counting note (9 October 2026): the registry carries 128 master cases, 18 integration gates (INT), 44 review regressions (REV), and the token value layer (VR 40 rules, TV 32 gates) as a supplement that is never counted as independent evidence; the decisions block D01 to D06 is UNAPPROVED." + } + ], + "decisions": [ + { + "id": "D01", + "title": "Cap and tail", + "required_resolution": "Choose one supply policy and remove the contradictory escape language. A cap is the recommended identity, conditional on adequate security funding.", + "status": "UNAPPROVED", + "owner": "founder" + }, + { + "id": "D02", + "title": "Emission horizon", + "required_resolution": "Compare the existing schedule with slower distribution before launch; include delayed ordinary entrants and dilution/security trade-offs.", + "status": "UNAPPROVED", + "owner": "founder" + }, + { + "id": "D03", + "title": "Security funding", + "required_resolution": "Define each role's recurring payer, declining subsidy model, maintenance runway and safe contraction behaviour.", + "status": "UNAPPROVED", + "owner": "founder" + }, + { + "id": "D04", + "title": "Fee/burn routing", + "required_resolution": "Freeze exact contract routes and distinguish resource fees, service charges and burn. Test pricing rather than maximise burn by slogan.", + "status": "UNAPPROVED", + "owner": "founder" + }, + { + "id": "D05", + "title": "Finality/recovery", + "required_resolution": "Specify the stronger guarantee and any weaker recovery. Set dependent wallet/oracle behaviour consistently.", + "status": "UNAPPROVED", + "owner": "founder" + }, + { + "id": "D06", + "title": "Leadership scope", + "required_resolution": "Separate monetary, GPU engineering, paid-work and market-rank claims; decide which capabilities are enabled and which gates apply.", + "status": "UNAPPROVED", + "owner": "founder" } ] } diff --git a/tools/ci/merge-to-master.sh b/tools/ci/merge-to-master.sh index 669e196be..27218f4a4 100755 --- a/tools/ci/merge-to-master.sh +++ b/tools/ci/merge-to-master.sh @@ -173,6 +173,10 @@ merge_with_batches() { # [branch]: in a worktree at me node tools/ci/int-suite.mjs --traceability docs/plans/igneum-2.0-master/traceability.json --write >/dev/null || { echo "merge-to-master: the INT suite does not regenerate on the merged tree" >&2; git merge --abort 2>/dev/null; return 1; } echo "merge-to-master: regenerated the INT suite on master's registry" fi + if [ -f tools/ci/token-value-suite.mjs ] && [ -f docs/plans/igneum-2.0-master/token-value/rules-and-gates.json ]; then + node tools/ci/token-value-suite.mjs --write >/dev/null || { echo "merge-to-master: the VR and TV suites do not regenerate on the merged tree" >&2; git merge --abort 2>/dev/null; return 1; } + echo "merge-to-master: regenerated the VR and TV suites on master's registry" + fi for f in $BATCHES; do [ "$f" = . ] && continue git checkout -q "$( [ "$mode" = branch ] && echo "$tip" || echo "$sha" )" -- "$f" @@ -377,7 +381,7 @@ bash tools/ci/rule24-crate-gate.sh "$BASE" "$SHA" || { echo "merge-to-master: RE REGISTRY_PATH="${REGISTRY_PATH:-docs/plans/igneum-2.0-test-registry.json}" BATCHES=$(git diff --name-only --diff-filter=AM "$BASE" "$SHA" -- tools/ci/batches/ | grep -E '\.json$' || true) NOTES=$(git diff --name-only --diff-filter=AM "$BASE" "$SHA" -- tools/ci/notes/ | grep -E '\.json$' || true) # {suite, text}, replayed through test-record.mjs --note-file -REVGEN=0; git diff --quiet "$BASE" "$SHA" -- tools/ci/review-suite.mjs tools/ci/int-suite.mjs docs/analysis/review-2026-10-08-b/findings.json docs/analysis/review-2026-10-08-b/dispatch.md docs/plans/igneum-2.0-master/traceability.json 2>/dev/null || REVGEN=1 # the REV and INT suites regenerate on the merged tree +REVGEN=0; git diff --quiet "$BASE" "$SHA" -- tools/ci/review-suite.mjs tools/ci/int-suite.mjs tools/ci/token-value-suite.mjs docs/analysis/review-2026-10-08-b/findings.json docs/analysis/review-2026-10-08-b/dispatch.md docs/plans/igneum-2.0-master/traceability.json docs/plans/igneum-2.0-master/token-value/rules-and-gates.json 2>/dev/null || REVGEN=1 # the REV and INT suites regenerate on the merged tree [ -n "$NOTES" ] || [ "$REVGEN" = 1 ] && BATCHES="${BATCHES:-.}" # the registry is rebuilt from master's copy whenever any transform rides RULE26_SKIP_PATHS=""; [ -n "$BATCHES" ] && RULE26_SKIP_PATHS="$REGISTRY_PATH" # the harness map page is generated from tools/ci/test-map.json (test-map-doc.mjs); a branch that changed the map regenerated the diff --git a/tools/ci/notes/tv-counting-20261009.json b/tools/ci/notes/tv-counting-20261009.json new file mode 100644 index 000000000..da48ff1af --- /dev/null +++ b/tools/ci/notes/tv-counting-20261009.json @@ -0,0 +1,4 @@ +{ + "suite": "TV", + "text": "Counting note (main's order, 9 October 2026, by 11:00 UK): the VR rules (40) and TV gates (32) are a supplemental layer over the master's 128 cases, the 18 integration gates and the 44 review regressions, never added to them as independent evidence; no TV gate has executed; every VR rule is PROPOSED and requires ratification by the founder and its owner role; the decisions D01 to D06 are UNAPPROVED, the founder's." +} diff --git a/tools/ci/notes/tv-counting-registry-20261009.json b/tools/ci/notes/tv-counting-registry-20261009.json new file mode 100644 index 000000000..e66a01b99 --- /dev/null +++ b/tools/ci/notes/tv-counting-registry-20261009.json @@ -0,0 +1,4 @@ +{ + "suite": "registry", + "text": "Counting note (9 October 2026): the registry carries 128 master cases, 18 integration gates (INT), 44 review regressions (REV), and the token value layer (VR 40 rules, TV 32 gates) as a supplement that is never counted as independent evidence; the decisions block D01 to D06 is UNAPPROVED." +} diff --git a/tools/ci/review-suite-check.sh b/tools/ci/review-suite-check.sh index 25b0b92aa..af827616b 100755 --- a/tools/ci/review-suite-check.sh +++ b/tools/ci/review-suite-check.sh @@ -4,3 +4,4 @@ set -euo pipefail node tools/ci/review-suite.mjs --self-test | grep -v '^self-test passed' || true node tools/ci/review-suite.mjs --findings docs/analysis/review-2026-10-08-b/findings.json --dispatch docs/analysis/review-2026-10-08-b/dispatch.md --prefix REV --check if [ -f docs/plans/igneum-2.0-master/traceability.json ]; then node tools/ci/int-suite.mjs --self-test | grep -v '^self-test passed' || true; node tools/ci/int-suite.mjs --traceability docs/plans/igneum-2.0-master/traceability.json --check; fi +if [ -f docs/plans/igneum-2.0-master/token-value/rules-and-gates.json ]; then node tools/ci/token-value-suite.mjs --self-test | grep -v '^self-test passed' || true; node tools/ci/token-value-suite.mjs --check; fi diff --git a/tools/ci/test-map.json b/tools/ci/test-map.json index e850ad3c3..93ffa8e23 100644 --- a/tools/ci/test-map.json +++ b/tools/ci/test-map.json @@ -882,6 +882,38 @@ "R2-F13-R03": "R2-F13 (P1, the external review): the regression's harness is the owner lane's (pool lane (new)); not yet named in the map", "R2-F14-R01": "R2-F14 (P1, the external review): the regression's harness is the owner lane's (app lane, relay lane); not yet named in the map", "R2-F14-R02": "R2-F14 (P1, the external review): the regression's harness is the owner lane's (app lane, relay lane); not yet named in the map", - "R2-F14-R03": "R2-F14 (P1, the external review): the regression's harness is the owner lane's (app lane, relay lane); not yet named in the map" + "R2-F14-R03": "R2-F14 (P1, the external review): the regression's harness is the owner lane's (app lane, relay lane); not yet named in the map", + "TV-01": "TV-01 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Protocol + independent panel); a supplemental layer, never counted as independent evidence; not yet named in the map", + "TV-02": "TV-02 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Protocol + measurement); a supplemental layer, never counted as independent evidence; not yet named in the map", + "TV-03": "TV-03 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Release + ecosystem); a supplemental layer, never counted as independent evidence; not yet named in the map", + "TV-04": "TV-04 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Economics + protocol); a supplemental layer, never counted as independent evidence; not yet named in the map", + "TV-05": "TV-05 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Hardware reviewer + economics); a supplemental layer, never counted as independent evidence; not yet named in the map", + "TV-06": "TV-06 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Economics + application); a supplemental layer, never counted as independent evidence; not yet named in the map", + "TV-07": "TV-07 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Protocol + independent security); a supplemental layer, never counted as independent evidence; not yet named in the map", + "TV-08": "TV-08 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Wallet + independent users); a supplemental layer, never counted as independent evidence; not yet named in the map", + "TV-09": "TV-09 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Wallet + consensus); a supplemental layer, never counted as independent evidence; not yet named in the map", + "TV-10": "TV-10 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Protocol + application); a supplemental layer, never counted as independent evidence; not yet named in the map", + "TV-11": "TV-11 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Pool + independent operators); a supplemental layer, never counted as independent evidence; not yet named in the map", + "TV-12": "TV-12 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Release + independent security); a supplemental layer, never counted as independent evidence; not yet named in the map", + "TV-13": "TV-13 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Maintainers + independent finance); a supplemental layer, never counted as independent evidence; not yet named in the map", + "TV-14": "TV-14 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Independent operations panel); a supplemental layer, never counted as independent evidence; not yet named in the map", + "TV-15": "TV-15 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Protocol + governance); a supplemental layer, never counted as independent evidence; not yet named in the map", + "TV-16": "TV-16 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Ecosystem + independent reviewer); a supplemental layer, never counted as independent evidence; not yet named in the map", + "TV-17": "TV-17 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Measurement steward); a supplemental layer, never counted as independent evidence; not yet named in the map", + "TV-18": "TV-18 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Economics + measurement); a supplemental layer, never counted as independent evidence; not yet named in the map", + "TV-19": "TV-19 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Ecosystem + external developers); a supplemental layer, never counted as independent evidence; not yet named in the map", + "TV-20": "TV-20 (token value gate, scope PAYMENT CAPABILITY): no gate executed; the harness is the owner role's (Application + wallet); a supplemental layer, never counted as independent evidence; not yet named in the map", + "TV-21": "TV-21 (token value gate, scope PAID WORK CAPABILITY): no gate executed; the harness is the owner role's (Proving + independent customers); a supplemental layer, never counted as independent evidence; not yet named in the map", + "TV-22": "TV-22 (token value gate, scope WORK MARKET CAPABILITY): no gate executed; the harness is the owner role's (Application + independent operators); a supplemental layer, never counted as independent evidence; not yet named in the map", + "TV-23": "TV-23 (token value gate, scope SERVICE BONDS IF ENABLED): no gate executed; the harness is the owner role's (Economics + security); a supplemental layer, never counted as independent evidence; not yet named in the map", + "TV-24": "TV-24 (token value gate, scope AI IF ENABLED): no gate executed; the harness is the owner role's (Compute + independent reviewer); a supplemental layer, never counted as independent evidence; not yet named in the map", + "TV-25": "TV-25 (token value gate, scope AGENTS IF ENABLED): no gate executed; the harness is the owner role's (Application + security); a supplemental layer, never counted as independent evidence; not yet named in the map", + "TV-26": "TV-26 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Cryptography + protocol); a supplemental layer, never counted as independent evidence; not yet named in the map", + "TV-27": "TV-27 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Security + product); a supplemental layer, never counted as independent evidence; not yet named in the map", + "TV-28": "TV-28 (token value gate, scope STABLE/BRIDGE IF ENABLED): no gate executed; the harness is the owner role's (Application + security + counsel); a supplemental layer, never counted as independent evidence; not yet named in the map", + "TV-29": "TV-29 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Protocol + operations); a supplemental layer, never counted as independent evidence; not yet named in the map", + "TV-30": "TV-30 (token value gate, scope CORE): no gate executed; the harness is the owner role's (GPU + measurement); a supplemental layer, never counted as independent evidence; not yet named in the map", + "TV-31": "TV-31 (token value gate, scope CORE): no gate executed; the harness is the owner role's (Qualified counsel); a supplemental layer, never counted as independent evidence; not yet named in the map", + "TV-32": "TV-32 (token value gate, scope LEADERSHIP CLAIM): no gate executed; the harness is the owner role's (Independent acceptance panel); a supplemental layer, never counted as independent evidence; not yet named in the map" } } diff --git a/tools/ci/token-value-suite.mjs b/tools/ci/token-value-suite.mjs new file mode 100644 index 000000000..50737177e --- /dev/null +++ b/tools/ci/token-value-suite.mjs @@ -0,0 +1,97 @@ +#!/usr/bin/env node +// The VR and TV suites of the acceptance registry (main's order through the coordinator, 9 October 2026, by 11:00 UK): generated from +// docs/plans/igneum-2.0-master/token-value/rules-and-gates.json, never by hand; --check refuses drift. +// VR: the 40 normative rules, each a row whose rule_status is the file's (PROPOSED - REQUIRES RATIFICATION), run_status NOT RUN with the +// reason "requires ratification", method "Ratification" (not Automated: no harness exists for a rule; ratification is the founder's +// and the owner role's), the owner role, the requirement verbatim as title and accept, the file's evidence line as evidence. +// TV: the 32 gates, each a row NOT RUN, method "Automated + independent review", the scope as the file gives it (CORE, CAPABILITY IF +// ENABLED, LEADERSHIP CLAIM), inherited_links kept as cross-references to the master's suites and profiles, the pass criterion +// verbatim as accept, setup and procedure carried, the threshold_status carried. +// decisions: D01 to D06 as the registry's top-level `decisions` block, every one UNAPPROVED, the founder's. +// The counting note stays: these are a supplemental layer, never added to the 128 + 18 + 44 as independent evidence (tools/ci/notes). +// node tools/ci/token-value-suite.mjs --file [--write | --check] node tools/ci/token-value-suite.mjs --self-test +import fs from 'node:fs'; import path from 'node:path'; +const args = process.argv.slice(2); const arg = (n) => { const i = args.indexOf(n); return i >= 0 ? args[i + 1] : undefined; }; +const ROOT = process.env.TEST_RECORD_ROOT || path.resolve(path.dirname(new URL(import.meta.url).pathname), '..', '..'); +const REG = process.env.TEST_REGISTRY || path.join(ROOT, 'docs/plans/igneum-2.0-test-registry.json'); +const MAP = process.env.TEST_MAP || path.join(ROOT, 'tools/ci/test-map.json'); +const SRC = 'docs/plans/igneum-2.0-master/token-value/rules-and-gates.json'; + +export function suites(d) { + const vr = { code: 'VR', title: 'VR: the token value and network leadership rules (normative, proposed, requiring ratification)', source: `${SRC} rules`, + gate: 'Ratification by the founder and each rule\'s owner role', owner: 'founder (ratification); the owner role per rule', fixtures: ['F0'], + summary: `${(d.rules || []).length} normative rules from ${d.document} ${d.version} (snapshot ${d.snapshot}); ${d.scope}`, + tests: (d.rules || []).map((r) => ({ id: r.id, title: r.title, requirement: r.requirement, accept: r.requirement, evidence: r.evidence || '', + priority: 'P0', profile: 'P00', cadence: 'Once, at ratification; again on any change of the rule', method: 'Ratification', source: ['TV'], + gate: 'Ratified', owner: r.owner_role || 'unassigned', owner_role: r.owner_role || 'unassigned', manual_page: null, + rule_status: r.status || 'PROPOSED - REQUIRES RATIFICATION', run_status: 'NOT RUN' })) }; + const tv = { code: 'TV', title: 'TV: the token value and network leadership gates (proposed; no gate executed)', source: `${SRC} gates`, + gate: 'Token value gates closed', owner: 'the owner role per gate', fixtures: ['F0'], + summary: `${(d.gates || []).length} gates from ${d.document} ${d.version} (snapshot ${d.snapshot}); scope CORE, CAPABILITY IF ENABLED or LEADERSHIP CLAIM as the file gives it; ${d.scope}`, + tests: (d.gates || []).map((g) => ({ id: g.id, title: g.title, setup: g.setup || '', procedure: g.procedure || '', accept: g.pass_criterion || '', evidence: g.evidence || '', + priority: g.scope === 'CORE' ? 'P0' : 'P1', profile: 'P00', cadence: 'Every release candidate', method: 'Automated + independent review', source: ['TV'], + gate: 'Token value gates closed', owner: g.owner_role || 'unassigned', owner_role: g.owner_role || 'unassigned', manual_page: null, + scope: g.scope || '', inherited_links: Array.isArray(g.inherited_links) ? g.inherited_links.slice() : [], threshold_status: g.threshold_status || '', + run_status: 'NOT RUN', master_status: g.status || 'NOT RUN' })) }; + const decisions = (d.decisions || []).map((x) => ({ id: x.id, title: x.title, required_resolution: x.required_resolution, status: 'UNAPPROVED', owner: 'founder' })); + return { vr, tv, decisions }; +} +const LIVE = ['run_status', 'run_id', 'evidence_path', 'updated', 'evidence_record', 'evidence_records', 'blocked_on', 'method_recorded', 'in_progress_since', 'deferral_note', 'approvals', 'ratified_at', 'ratified_by']; +export function merge(reg, s) { + const old = (reg.suites || []).find((x) => x.code === s.code); const live = new Map((old?.tests || []).map((t) => [t.id, t])); + for (const t of s.tests) { const o = live.get(t.id); if (o) for (const k of LIVE) if (k in o) t[k] = o[k]; } + if (old?.notes) s.notes = old.notes; + reg.suites = [...(reg.suites || []).filter((x) => x.code !== s.code), s]; return reg; +} +export function mergeDecisions(reg, decisions) { + const old = new Map((reg.decisions || []).map((x) => [x.id, x])); + reg.decisions = decisions.map((x) => { const o = old.get(x.id); return o && o.status && o.status !== 'UNAPPROVED' ? { ...x, status: o.status, ...(o.approved_at ? { approved_at: o.approved_at } : {}), ...(o.approved_by ? { approved_by: o.approved_by } : {}) } : x; }); + return reg; +} +const canon = (o) => JSON.stringify(o, (k, v) => (v && typeof v === 'object' && !Array.isArray(v)) ? Object.fromEntries(Object.keys(v).sort().map((x) => [x, v[x]])) : v); +export function mapReasons(map, tv) { // a TV gate with no cell reads NOT RUN with its reason (the check's rule for Automated cases) + const mapped = new Set(Object.values(map.cells || {}).flatMap((c) => c.cases || [])); map.not_run = map.not_run || {}; let n = 0; + for (const t of tv.tests) { if (mapped.has(t.id)) { delete map.not_run[t.id]; continue; } map.not_run[t.id] = `${t.id} (token value gate, scope ${t.scope}): no gate executed; the harness is the owner role's (${t.owner_role}); a supplemental layer, never counted as independent evidence; not yet named in the map`; n++; } + return n; +} +function stripLive(s) { return { ...s, notes: undefined, tests: s.tests.map((t) => { const c = { ...t }; for (const k of LIVE) delete c[k]; return c; }) }; } + +if (args.includes('--self-test')) { + let fails = 0; + const d = { document: 'doc', version: '1.0-proposed', snapshot: '2026-10-08', scope: 'a supplement', status: 'PROPOSED', + rules: [{ id: 'VR-01', title: 'one', requirement: 'ratify one contract', evidence: 'e', owner_role: 'Protocol + governance', status: 'PROPOSED - REQUIRES RATIFICATION' }], + gates: [{ id: 'TV-01', title: 'freeze', setup: 's', procedure: 'p', pass_criterion: 'no conflict', evidence: 'e', owner_role: 'Protocol + independent panel', inherited_links: ['GOV', 'VR-01'], scope: 'CORE', status: 'NOT RUN', threshold_status: 'PROPOSED' }, + { id: 'TV-02', title: 'cap', setup: 's', procedure: 'p', pass_criterion: 'c', evidence: 'e', owner_role: 'x', inherited_links: [], scope: 'CAPABILITY IF ENABLED', status: 'NOT RUN', threshold_status: '' }], + decisions: [{ id: 'D01', title: 'cap', required_resolution: 'choose', status: 'UNAPPROVED' }] }; + const { vr, tv, decisions } = suites(d); + if (!(vr.code === 'VR' && vr.tests.length === 1 && vr.tests[0].method === 'Ratification' && vr.tests[0].run_status === 'NOT RUN' && vr.tests[0].rule_status === 'PROPOSED - REQUIRES RATIFICATION' && vr.tests[0].accept === 'ratify one contract' && vr.tests[0].owner_role === 'Protocol + governance')) { console.log('self-test failed: the VR row is not the rule verbatim, NOT RUN, Ratification, with its owner role and rule_status'); fails = 1; } + if (!(tv.code === 'TV' && tv.tests.length === 2 && tv.tests[0].scope === 'CORE' && tv.tests[0].priority === 'P0' && tv.tests[1].priority === 'P1' && tv.tests[0].inherited_links.join() === 'GOV,VR-01' && tv.tests[0].accept === 'no conflict' && tv.tests[0].run_status === 'NOT RUN')) { console.log('self-test failed: the TV row does not carry the scope, the links, the criterion and NOT RUN'); fails = 1; } + if (!(decisions.length === 1 && decisions[0].status === 'UNAPPROVED' && decisions[0].owner === 'founder')) { console.log('self-test failed: the decisions block is not UNAPPROVED and the founder\'s'); fails = 1; } + const reg = { suites: [{ code: 'TV', notes: [{ text: 'n' }], tests: [{ id: 'TV-01', run_status: 'NOT RUN', in_progress_since: 't', evidence_records: { 'c:x': { decision: 'PASS' } }, run_id: 'r' }] }], decisions: [{ id: 'D01', status: 'APPROVED', approved_by: 'founder' }] }; + merge(reg, tv); mergeDecisions(reg, decisions); const t = reg.suites[0]; + if (!(t.tests[0].in_progress_since === 't' && t.tests[0].evidence_records?.['c:x']?.decision === 'PASS' && t.tests[1].run_status === 'NOT RUN' && t.notes?.length === 1 && reg.decisions[0].status === 'APPROVED')) { console.log('self-test failed: regenerating lost live fields, notes or an approved decision'); fails = 1; } + const map = { cells: { c: { cases: ['TV-01'] } }, not_run: {} }; if (!(mapReasons(map, tv) === 1 && !map.not_run['TV-01'] && /CAPABILITY IF ENABLED/.test(map.not_run['TV-02']))) { console.log('self-test failed: the map reasons for unmapped gates'); fails = 1; } + const s2 = suites(d); if (canon(stripLive(s2.tv)) !== canon(stripLive(tv))) { console.log('self-test failed: the generator is not deterministic'); fails = 1; } + if (!fails) console.log('self-test passed: one VR row per rule (the requirement verbatim, Ratification, NOT RUN, the rule_status and owner role), one TV row per gate (the scope, the links, the criterion, NOT RUN), the decisions block UNAPPROVED and the founder\'s; regenerating keeps live fields, notes and an approved decision; unmapped gates get their map reasons; the output is deterministic'); + process.exit(fails); +} +const file = arg('--file') ? path.resolve(arg('--file')) : path.join(ROOT, SRC); +if (!fs.existsSync(file)) { console.error(`token-value-suite: no ${file}`); process.exit(2); } +const d = JSON.parse(fs.readFileSync(file, 'utf8')); const { vr, tv, decisions } = suites(d); +const reg = JSON.parse(fs.readFileSync(REG, 'utf8')); const map = fs.existsSync(MAP) ? JSON.parse(fs.readFileSync(MAP, 'utf8')) : { cells: {}, not_run: {} }; +if (args.includes('--check')) { + let bad = 0; + for (const s of [vr, tv]) { const cur = (reg.suites || []).find((x) => x.code === s.code); if (!cur) { console.error(`token-value-suite: the registry has no ${s.code} suite; run --write`); bad++; continue; } + if (canon(stripLive(cur)) !== canon(stripLive(s))) { console.error(`token-value-suite: the registry's ${s.code} suite differs from the generator's output; run --write and commit`); bad++; } } + const curD = (reg.decisions || []).map((x) => ({ id: x.id, title: x.title, required_resolution: x.required_resolution })); const wantD = decisions.map((x) => ({ id: x.id, title: x.title, required_resolution: x.required_resolution })); + if (canon(curD) !== canon(wantD)) { console.error('token-value-suite: the registry\'s decisions block differs from the file\'s D01 to D06; run --write'); bad++; } + if (!bad) console.log(`token-value-suite: the VR (${vr.tests.length}) and TV (${tv.tests.length}) suites and the decisions block (${decisions.length}) match ${SRC}`); + process.exit(bad ? 1 : 0); +} +if (args.includes('--write')) { + merge(reg, vr); merge(reg, tv); mergeDecisions(reg, decisions); const n = mapReasons(map, tv); + fs.writeFileSync(REG, JSON.stringify(reg, null, 2) + '\n'); fs.writeFileSync(MAP, JSON.stringify(map, null, 2) + '\n'); + console.log(`token-value-suite: VR written (${vr.tests.length} rules), TV written (${tv.tests.length} gates), decisions ${decisions.length} (UNAPPROVED); ${n} NOT RUN reasons in the map`); + process.exit(0); +} +console.error('usage: token-value-suite.mjs --file [--write | --check] | --self-test'); process.exit(2); From cf8b20f041a4ec570999cdc0dcafd1b32ef04038 Mon Sep 17 00:00:00 2001 From: igneum-labs <337424239+igneum-labs@users.noreply.github.com> Date: Fri, 9 Oct 2026 08:03:08 +0000 Subject: [PATCH 02/11] Token Value rule VR-30, scoped claims only: the ranking item on the litepaper, /claims, the ledger's C3 answer and the scorecard's leadership row carry "Designed to compete for leadership among GPU-first networks." until a ranking is measured; the miner levers raise the rate, not the fastest miner; the cap, the schedule, the tail and the fee routes read as the six pending monetary decisions D01 to D06 on the litepaper (header, emission, security after the subsidy: no tail coded beside the year-five vote, an unresolved tension) and the economics page Co-Authored-By: Claude Fable 5.1 --- docs/fud-ledger-2.0.md | 2 +- site/claims.html | 2 +- site/economics.html | 4 ++-- site/ledger.html | 2 +- site/litepaper.html | 12 ++++++------ site/scorecard.html | 2 +- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/docs/fud-ledger-2.0.md b/docs/fud-ledger-2.0.md index 9b23bde60..525994b7b 100644 --- a/docs/fud-ledger-2.0.md +++ b/docs/fud-ledger-2.0.md @@ -298,7 +298,7 @@ Pin: Leadership tests, first box (Ergo). Status: Conceded (8 October 2026): no "number one" claim before comparative results and adoption exist. -Answer: No present-tense rank is served. Published claims name the evaluated release, evidence and boundary conditions. An independently substantiated pass of the acceptance standard would support a serious case that Igneum is in contention for leadership among GPU-first networks and would not award a numerical rank; it would not guarantee adoption, perpetual GPU profitability, defeat of all future chips or a numerical number-one ranking. The tests that would earn it are miners staying through hard conditions, customers repeatedly paying for proofs, and the network running without the founding team (D5); none is met yet. +Answer: No present-tense rank is served. Published claims name the evaluated release, evidence and boundary conditions. Designed to compete for leadership among GPU-first networks. That is the scoped wording until a ranking is measured (the Token Value volume’s rule VR-30, scoped claims only, 9 October 2026): an independently substantiated pass of the acceptance standard would not award a numerical rank, nor guarantee adoption, perpetual GPU profitability or the defeat of every future chip. The tests that would earn it are miners staying through hard conditions, customers repeatedly paying for proofs, and the network running without the founding team (D5); none is met yet. Evidence: `docs/plans/igneum-2.0.md` (Leadership tests, second to fifth boxes). diff --git a/site/claims.html b/site/claims.html index b134bd3f5..5cc92523b 100644 --- a/site/claims.html +++ b/site/claims.html @@ -263,7 +263,7 @@
  • Proof verification in consensus. On the Igneum 2.0 devnet, yes, from block zero (verifier_in_consensus set, the node's own start line; running since its first block at 17:14 UK on 8 October 2026). It is the prerequisite of the no-rescue network exercise (Deliverable 5), which is still owed; an earlier devnet ran with the rule off.
  • Proving on every card. No. NVIDIA proves; AMD and Apple mine. The proving stack is judged on the full pipeline: inputs, proving, aggregation, verification, payment, memory and the mining income forgone.
  • What proofs do not give. Proven execution is not automatically finality. EVM compatibility is not Ethereum security. ZK technology does not automatically make transactions private.
  • -
  • A ranking. No. Igneum makes no leading or number-one claim. Published claims name the evaluated release, evidence and boundary conditions. An independently substantiated pass of the acceptance standard would support a serious case that Igneum is in contention for leadership among GPU-first networks and would not award a numerical rank; it would not guarantee adoption, perpetual GPU profitability, defeat of all future chips or a numerical number-one ranking. Benchmarks against Ravencoin’s KAWPOW, Ergo and Firo’s reference miner are owed work; no result exists yet.
  • +
  • A ranking. No. Igneum makes no leading or number-one claim. Published claims name the evaluated release, evidence and boundary conditions. Designed to compete for leadership among GPU-first networks. That is the scoped wording until a ranking is measured (the Token Value volume’s rule VR-30, scoped claims only): an independently substantiated pass of the acceptance standard would not award a numerical rank, nor guarantee adoption, perpetual GPU profitability or the defeat of every future chip. Benchmarks against Ravencoin’s KAWPOW, Ergo and Firo’s reference miner are owed work; no result exists yet.
  • A finished protocol. The sustained-mining finality rule is the newest piece and the one that external review will try hardest to break. The specification, the review and the benchmarks are published as they happen.
  • Everything in this document is subject to the gates on the roadmap. Nothing in it is an offer to sell anything. Found an error, or a criticism this document does not answer? Email hello@igneum.network, or open an issue on the public specification repository: git.igneum.network/igneum-network/spec/issues. Post reaches Igneum Labs LTD, Unit IH-00-01-01-OF-01, Level 01, Innovation One, Dubai International Financial Centre.

    diff --git a/site/economics.html b/site/economics.html index b15926199..8c797c123 100644 --- a/site/economics.html +++ b/site/economics.html @@ -226,7 +226,7 @@ Launch rate31,688,087,810,000,000,000 base units a DAA second at 18 decimals (the literal 3,168,808,781 of emission.rs 104, 109 IGN x 108 / 31,557,600 floored, widened by rescaled(DEVNET_DECIMALS, EVM_DECIMALS) at emission.rs 129 in the devnet4 parameters: one billion IGN in year one, the same rate as mainnet)emission.rs 85 to 123; igneum.rs 34 Ramp2,592,000 s (30 days) from 10 percentigneum.rs 76 launch_ramp Step63,115,200 s (two years), the rate halved each step (decay 231 of 232)emission.rs 85 to 123 - Tailnone: the curve runs to zero and the sum is the hard cap, 4,000,000,000 IGNemission.rs 69 to 71 + Tailnone in the code: the curve runs to zero and the sum is the hard cap, 4,000,000,000 IGN; the tail and the cap are pending decisions of the Token Value volume (D01 to D06)emission.rs 69 to 71 Where each runsThe Igneum 2.0 devnet (18 decimals, the rescaled schedule); mainnet (18)params.rs 2158, 1764 @@ -256,7 +256,7 @@

    The proving-fee market

    -

    A card’s second income is the proving pool: 20 percent of every block, paid per shard against a valid proof record, plus 90 percent of every block’s proving payment, which users pay at the congestion price of proving capacity (designed; on the devnet that payment is still burned in full). Nothing from the priority fee, which stays whole to the block. The reason the design routes the proving charge to the provers: the operator simulation reads a fixed internal pool as a subsidy, not a price, and only the congestion-priced user-funded fee restores service after a lasting proving spike (35 periods against never; modelled). The price a prover must charge an outside customer is the subsidy it forgoes while it proves, which falls as one over the network’s hash rate; the market itself is designed and not built. The hard cap and the absence of any development fund are unchanged.

    +

    A card’s second income is the proving pool: 20 percent of every block, paid per shard against a valid proof record, plus 90 percent of every block’s proving payment, which users pay at the congestion price of proving capacity (designed; on the devnet that payment is still burned in full). Nothing from the priority fee, which stays whole to the block. The reason the design routes the proving charge to the provers: the operator simulation reads a fixed internal pool as a subsidy, not a price, and only the congestion-priced user-funded fee restores service after a lasting proving spike (35 periods against never; modelled). The price a prover must charge an outside customer is the subsidy it forgoes while it proves, which falls as one over the network’s hash rate; the market itself is designed and not built. The hard cap and the absence of any development fund are unchanged in the code; both sit among the pending monetary decisions of the Token Value volume (D01 to D06).

    The client fee and the fund it fills

    diff --git a/site/ledger.html b/site/ledger.html index 0b89fcd42..d46084f95 100644 --- a/site/ledger.html +++ b/site/ledger.html @@ -446,7 +446,7 @@ blockquote{margin:10px 0;padding:10px 14px;border-left:3px solid var(--line-2);c
    You claim to be the best GPU network before anyone outside has checked anything.
    Conceded 8 October 2026): no "number one" claim before comparative results and adoption exist.
    Pin Leadership tests, fifth box (served ranking language); second to fourth boxes.
    -
    The answer as first written

    No present-tense rank is served. Published claims name the evaluated release, evidence and boundary conditions. An independently substantiated pass of the acceptance standard would support a serious case that Igneum is in contention for leadership among GPU-first networks and would not award a numerical rank; it would not guarantee adoption, perpetual GPU profitability, defeat of all future chips or a numerical number-one ranking. The tests that would earn it are miners staying through hard conditions, customers repeatedly paying for proofs, and the network running without the founding team (D5); none is met yet.

    +
    The answer as first written

    No present-tense rank is served. Published claims name the evaluated release, evidence and boundary conditions. Designed to compete for leadership among GPU-first networks. That is the scoped wording until a ranking is measured (the Token Value volume’s rule VR-30, scoped claims only, 9 October 2026): an independently substantiated pass of the acceptance standard would not award a numerical rank, nor guarantee adoption, perpetual GPU profitability or the defeat of every future chip. The tests that would earn it are miners staying through hard conditions, customers repeatedly paying for proofs, and the network running without the founding team (D5); none is met yet.

    Source: the project's Igneum 2.0 criticism ledger, a file in the repository, rendered to this page at build time. A criticism that is not here, or that shows an entry is wrong, is added with credit if wanted: hello@igneum.network or an issue on the specification repository.

    diff --git a/site/litepaper.html b/site/litepaper.html index db1b8bf7b..ad11eaf29 100644 --- a/site/litepaper.html +++ b/site/litepaper.html @@ -303,7 +303,7 @@ body.all .pager{display:none}
    Published 3 October 2026 · updated 8 October 2026 - Coin IGN · cap 4,000,000,000 + Coin IGN · cap 4,000,000,000 (a decision pending) Status The Igneum 2.0 devnet is live Method one founder with AI systems · external review before gate 3 This is not an offer to sell anything @@ -575,7 +575,7 @@ body.all .pager{display:none}

    Economics

    The coin is IGN. It is gas and the proving currency, and part of every payment on Igneum is burned. Outside customers pay in their own currency on their own chain at launch; settlement in IGN with a 10% burn follows when the proof bridge lets Igneum see the payment, in phase two.

    Supply

    -

    Fair launch. No premine, no pre-sale, no allocation to anyone. Hard cap of 4 billion IGN, approached and never reached, because emission starts at 1 billion a year and halves every two years for ever. Nearly a quarter of all supply is mined in the first year and half in the first two. Emission ramps from 10% to 100% over the first 30 days so that nobody takes the first month before the rest of the world hears about it.

    +

    Fair launch. No premine, no pre-sale, no allocation to anyone. The supply schedule, the cap, the tail and the fee routes are the six monetary decisions D01 to D06 of the Token Value volume, pending; what follows is the devnet’s code today, not a promise. Hard cap of 4 billion IGN, approached and never reached, because emission starts at 1 billion a year and halves every two years for ever. Nearly a quarter of all supply is mined in the first year and half in the first two. Emission ramps from 10% to 100% over the first 30 days so that nobody takes the first month before the rest of the world hears about it.

    Half of the 4 billion cap is mined in the first two years @@ -611,7 +611,7 @@ body.all .pager{display:none}

    Where fees go

    -

    The base fee of every transaction is burned in full, Ethereum's rule, so a miner cannot fill blocks with its own transactions for free. The priority fee splits two ways: 80% to the miner and provers of that block, 20% to the apps whose code ran, by gas consumed inside each. External proving fees, once they settle on Igneum, pay 90% to the provers who delivered and burn 10%. The hard cap fixes supply. Emission is untouched by any of this: every coin minted still goes to miners and provers.

    +

    The base fee of every transaction is burned in full, Ethereum's rule, so a miner cannot fill blocks with its own transactions for free. The priority fee splits two ways: 80% to the miner and provers of that block, 20% to the apps whose code ran, by gas consumed inside each. External proving fees, once they settle on Igneum, pay 90% to the provers who delivered and burn 10%. The hard cap in the devnet’s code fixes supply today (a decision pending). Emission is untouched by any of this: every coin minted still goes to miners and provers.

    Every payment route

    One row per route, so operator income and protocol income never blur. The protocol pays no address of its own, and a burn pays nobody. Rows 1 to 5 are the protocol. Row 6 is the project's software, outside the protocol, and is never added to the other five.

    @@ -627,7 +627,7 @@ body.all .pager{display:none}

    Sources: specification sections 2.5 and 5.1 to 5.4; the measurement record in the repository (docs/bench-log.md) for the earlier devnet's receipts and the dev-fee count.

    Security after the subsidy

    -

    The cap stays at 4 billion. There is no tail emission. The schedule is a bet, not a measurement: a halving halves emission income overnight if price and fees do nothing. Kaspa's steeper monthly reduction kept its hashrate while its price rose (approximate). Long term, security has to be paid by fees and, if it is built and bought, the proving market. The external market is Designed, not built, and is out of the numbers below. As designed, outside customers buy proofs as dollars-priced work settled in IGN, and 90% of every job goes to the provers who delivered it. The table shows the first year in which the block subsidy on its own pays miners less than the power of about 3,000 consumer cards, at three flat prices. The prices are inputs chosen to span two orders of magnitude. The model (modelled, 3 October 2026) runs a 300 W card at 124 MH/s on electricity at USD 0.12 per kWh. One rule sits beside the cap. If external proving revenue is under one fifth of the block subsidy over any 90-day window after year 5, the question of a tail reward goes to the miners' signalling vote. The protocol never changes emission by itself.

    +

    The cap stays at 4 billion in the code today, and no tail emission is coded; the year-five tail vote below is written beside that, an unresolved tension and a pending decision (D01 to D06), not a promise. The schedule is a bet, not a measurement: a halving halves emission income overnight if price and fees do nothing. Kaspa's steeper monthly reduction kept its hashrate while its price rose (approximate). Long term, security has to be paid by fees and, if it is built and bought, the proving market. The external market is Designed, not built, and is out of the numbers below. As designed, outside customers buy proofs as dollars-priced work settled in IGN, and 90% of every job goes to the provers who delivered it. The table shows the first year in which the block subsidy on its own pays miners less than the power of about 3,000 consumer cards, at three flat prices. The prices are inputs chosen to span two orders of magnitude. The model (modelled, 3 October 2026) runs a 300 W card at 124 MH/s on electricity at USD 0.12 per kWh. One rule sits beside the cap. If external proving revenue is under one fifth of the block subsidy over any 90-day window after year 5, the question of a tail reward goes to the miners' signalling vote. The protocol never changes emission by itself.

    @@ -686,7 +686,7 @@ body.all .pager{display:none}

    Ember, the miner

    Igneum Ember is the one-click miner. It runs the node, mines the hourly program, proves shards and keeps your key, on Windows, macOS and Linux.

    -

    Ember is a supervisor with a face. It starts a node, waits until it is synced, starts one miner per card, reads every line they print into the dashboard, and restarts what fails. It has run the devnet's cards since 4 October 2026. Everything in the first table is in the shipped app. The second table is the six levers set on 4 October 2026 to make it the fastest miner for this chain, each with its state and what has been measured.

    +

    Ember is a supervisor with a face. It starts a node, waits until it is synced, starts one miner per card, reads every line they print into the dashboard, and restarts what fails. It has run the devnet's cards since 4 October 2026. Everything in the first table is in the shipped app. The second table is the six levers set on 4 October 2026 to raise the miner’s rate on this chain, each with its state and what has been measured.

    What it does

    Price per IGNFirst year the subsidy alone pays under the power of 3,000 cardsSubsidy to miners that year
    @@ -868,7 +868,7 @@ body.all .pager{display:none}
  • Proof verification in consensus. On the Igneum 2.0 devnet, yes, from block zero (verifier_in_consensus set, the node's own start line; running since its first block at 17:14 UK on 8 October 2026). It is the prerequisite of the no-rescue network exercise (Deliverable 5), which is still owed; an earlier devnet ran with the rule off.
  • Proving on every card. No. NVIDIA proves; AMD and Apple mine. The proving stack is judged on the full pipeline: inputs, proving, aggregation, verification, payment, memory and the mining income forgone.
  • What proofs do not give. Proven execution is not automatically finality. EVM compatibility is not Ethereum security. ZK technology does not automatically make transactions private.
  • -
  • A ranking. No. Igneum makes no leading or number-one claim. Published claims name the evaluated release, evidence and boundary conditions. An independently substantiated pass of the acceptance standard would support a serious case that Igneum is in contention for leadership among GPU-first networks and would not award a numerical rank; it would not guarantee adoption, perpetual GPU profitability, defeat of all future chips or a numerical number-one ranking. Benchmarks against Ravencoin’s KAWPOW, Ergo and Firo’s reference miner are owed work; no result exists yet.
  • +
  • A ranking. No. Igneum makes no leading or number-one claim. Published claims name the evaluated release, evidence and boundary conditions. Designed to compete for leadership among GPU-first networks. That is the scoped wording until a ranking is measured (the Token Value volume’s rule VR-30, scoped claims only): an independently substantiated pass of the acceptance standard would not award a numerical rank, nor guarantee adoption, perpetual GPU profitability or the defeat of every future chip. Benchmarks against Ravencoin’s KAWPOW, Ergo and Firo’s reference miner are owed work; no result exists yet.
  • A finished protocol. The sustained-mining finality rule is the newest piece and the one that external review will try hardest to break. The specification, the review and the benchmarks are published as they happen.
  • Everything in this document is subject to the gates on the roadmap. Nothing in it is an offer to sell anything. Found an error, or a criticism this document does not answer? Email hello@igneum.network, or open an issue on the public specification repository: git.igneum.network/igneum-network/spec/issues. Post reaches Igneum Labs LTD, Unit IH-00-01-01-OF-01, Level 01, Innovation One, Dubai International Financial Centre.

    diff --git a/site/scorecard.html b/site/scorecard.html index 3a2511005..24bffcf4e 100644 --- a/site/scorecard.html +++ b/site/scorecard.html @@ -230,7 +230,7 @@ - +
    FeatureWhat happens
    Independent operation
    D5
    No-founder exercise on the real implementation.A centrally supported demo.PENDING: the no-rescue network exercise is owed; the devnet is the project’s own machines, its rented fleet and a few outside laptops.
    Commercial demand
    Architecture and product
    Repeat paid external jobs and workable operator margins.Devnet payouts or subsidised volume.EXCLUDED from every revenue figure today: the external proving market is designed, not built; no external job has been paid.
    Long-term funding
    D4
    Internal proving and security payments and maintenance runway.Burn accounting or assumed appreciation.MODELLED: the proving model on the economics page walks the halvings at today’s shard and key counts; the proving payment’s routing is designed behind its constant, burned in full today.
    Leadership
    Leadership tests
    Comparative results, adoption, retention and reliability over time.A roadmap or unsupported rank.EXCLUDED: no rank is claimed; the comparison set (Ravencoin KAWPOW, Ergo, Firo’s reference miner) is owed work, not a result.
    Leadership
    Leadership tests
    Comparative results, adoption, retention and reliability over time.A roadmap or unsupported rank.EXCLUDED: no rank is claimed; the served wording until a ranking is measured is “Designed to compete for leadership among GPU-first networks.” (VR-30); the comparison set (Ravencoin KAWPOW, Ergo, Firo’s reference miner) is owed work, not a result.

    Source: docs/plans/igneum-2.0-plan.txt, section 23 (the acceptance scorecard) and the pins in docs/plans/igneum-2.0.md; the Today column is the facts page’s label for the rows each gate cites, and moves only with those rows. The five labels: TEAM-REPORTED, MODELLED, PROPOSED, PENDING, EXCLUDED. The public mirror follows master; a link that answers 404 is a file not yet synced.

    From 168a2cf08938f1eeac1f996a6927a07af02a22be Mon Sep 17 00:00:00 2001 From: igneum-labs <337424239+igneum-labs@users.noreply.github.com> Date: Fri, 9 Oct 2026 08:07:06 +0000 Subject: [PATCH 03/11] The founder's ratification of the Token Value decisions (D01, D03, D05, D06 RATIFIED; D02, D04 RATIFIED WITH PARAMETER PENDING), each his word verbatim, through the recorder's decision form (a replayable note); the generator keeps a ratified decision at regeneration Co-Authored-By: Claude Fable 5.1 --- docs/plans/igneum-2.0-test-registry.json | 59 ++++++++++++++++++----- tools/ci/notes/decision-d01-20261009.json | 8 +++ tools/ci/notes/decision-d02-20261009.json | 8 +++ tools/ci/notes/decision-d03-20261009.json | 7 +++ tools/ci/notes/decision-d04-20261009.json | 8 +++ tools/ci/notes/decision-d05-20261009.json | 7 +++ tools/ci/notes/decision-d06-20261009.json | 7 +++ tools/ci/test-record.mjs | 22 ++++++++- tools/ci/token-value-suite.mjs | 7 +-- 9 files changed, 117 insertions(+), 16 deletions(-) create mode 100644 tools/ci/notes/decision-d01-20261009.json create mode 100644 tools/ci/notes/decision-d02-20261009.json create mode 100644 tools/ci/notes/decision-d03-20261009.json create mode 100644 tools/ci/notes/decision-d04-20261009.json create mode 100644 tools/ci/notes/decision-d05-20261009.json create mode 100644 tools/ci/notes/decision-d06-20261009.json diff --git a/docs/plans/igneum-2.0-test-registry.json b/docs/plans/igneum-2.0-test-registry.json index eccad2915..02637d12d 100644 --- a/docs/plans/igneum-2.0-test-registry.json +++ b/docs/plans/igneum-2.0-test-registry.json @@ -18125,6 +18125,10 @@ { "at": "2026-10-09T08:00:44.947Z", "text": "Counting note (main's order, 9 October 2026, by 11:00 UK): the VR rules (40) and TV gates (32) are a supplemental layer over the master's 128 cases, the 18 integration gates and the 44 review regressions, never added to them as independent evidence; no TV gate has executed; every VR rule is PROPOSED and requires ratification by the founder and its owner role; the decisions D01 to D06 are UNAPPROVED, the founder's." + }, + { + "at": "2026-10-09T08:07:06.087Z", + "text": "Counting note (main's order, 9 October 2026, by 11:00 UK): the VR rules (40) and TV gates (32) are a supplemental layer over the master's 128 cases, the 18 integration gates and the 44 review regressions, never added to them as independent evidence; no TV gate has executed; every VR rule is PROPOSED and requires ratification by the founder and its owner role; the decisions D01 to D06 are UNAPPROVED, the founder's." } ] } @@ -18399,6 +18403,10 @@ { "at": "2026-10-09T08:00:44.994Z", "text": "Counting note (9 October 2026): the registry carries 128 master cases, 18 integration gates (INT), 44 review regressions (REV), and the token value layer (VR 40 rules, TV 32 gates) as a supplement that is never counted as independent evidence; the decisions block D01 to D06 is UNAPPROVED." + }, + { + "at": "2026-10-09T08:07:06.133Z", + "text": "Counting note (9 October 2026): the registry carries 128 master cases, 18 integration gates (INT), 44 review regressions (REV), and the token value layer (VR 40 rules, TV 32 gates) as a supplement that is never counted as independent evidence; the decisions block D01 to D06 is UNAPPROVED." } ], "decisions": [ @@ -18406,43 +18414,70 @@ "id": "D01", "title": "Cap and tail", "required_resolution": "Choose one supply policy and remove the contradictory escape language. A cap is the recommended identity, conditional on adequate security funding.", - "status": "UNAPPROVED", - "owner": "founder" + "status": "RATIFIED", + "owner": "founder", + "word": "capped issuance, no tail escape clause, no forecast-triggered minting, no ordinary parameter vote that expands the cap; subject to the pre-launch security-funding gate TV-04 (a fail means delay or an open reconsideration, never an undisclosed rescue)", + "ratified_at": "2026-10-09T08:07:05.800Z", + "ratified_by": "founder", + "recorded_against": "its specification, release and acceptance tests before activation (the coordinator's relay of the founder's ratification, 9 October 2026, 09:2x UK)", + "condition": "subject to TV-04" }, { "id": "D02", "title": "Emission horizon", "required_resolution": "Compare the existing schedule with slower distribution before launch; include delayed ordinary entrants and dilution/security trade-offs.", - "status": "UNAPPROVED", - "owner": "founder" + "status": "RATIFIED WITH PARAMETER PENDING", + "owner": "founder", + "word": "the same-cap emission comparison is approved (current pacing vs a longer distribution; code-generated figures for years 1, 2, 5, 10, 20 with rounding and terminal behaviour; no founder reserve); the final schedule stays PENDING EVIDENCE, neither alternative frozen", + "ratified_at": "2026-10-09T08:07:05.847Z", + "ratified_by": "founder", + "recorded_against": "its specification, release and acceptance tests before activation (the coordinator's relay of the founder's ratification, 9 October 2026, 09:2x UK)", + "condition": "the final schedule PENDING EVIDENCE" }, { "id": "D03", "title": "Security funding", "required_resolution": "Define each role's recurring payer, declining subsidy model, maintenance runway and safe contraction behaviour.", - "status": "UNAPPROVED", - "owner": "founder" + "status": "RATIFIED", + "owner": "founder", + "word": "separate accountable budgets for hashing, internal proving, external work and maintenance, every payment counted once; external prover revenue never counted as miner security, maintenance and Labs profit at once", + "ratified_at": "2026-10-09T08:07:05.895Z", + "ratified_by": "founder", + "recorded_against": "its specification, release and acceptance tests before activation (the coordinator's relay of the founder's ratification, 9 October 2026, 09:2x UK)" }, { "id": "D04", "title": "Fee/burn routing", "required_resolution": "Freeze exact contract routes and distinguish resource fees, service charges and burn. Test pricing rather than maximise burn by slogan.", - "status": "UNAPPROVED", - "owner": "founder" + "status": "RATIFIED WITH PARAMETER PENDING", + "owner": "founder", + "word": "explicit auditable routing with no hidden company allocation; the 80/20 split is emission allocation only; the external-job fee or burn rate is NOT ratified, comparative pricing tests decide", + "ratified_at": "2026-10-09T08:07:05.943Z", + "ratified_by": "founder", + "recorded_against": "its specification, release and acceptance tests before activation (the coordinator's relay of the founder's ratification, 9 October 2026, 09:2x UK)", + "condition": "the external-job fee or burn rate not ratified; comparative pricing tests decide" }, { "id": "D05", "title": "Finality/recovery", "required_resolution": "Specify the stronger guarantee and any weaker recovery. Set dependent wallet/oracle behaviour consistently.", - "status": "UNAPPROVED", - "owner": "founder" + "status": "RATIFIED", + "owner": "founder", + "word": "a recovery certificate is never ordinary finality on any wallet, receipt, API or bridge; labels do not repair an unsafe recovery rule, which still needs its tests", + "ratified_at": "2026-10-09T08:07:05.992Z", + "ratified_by": "founder", + "recorded_against": "its specification, release and acceptance tests before activation (the coordinator's relay of the founder's ratification, 9 October 2026, 09:2x UK)" }, { "id": "D06", "title": "Leadership scope", "required_resolution": "Separate monetary, GPU engineering, paid-work and market-rank claims; decide which capabilities are enabled and which gates apply.", - "status": "UNAPPROVED", - "owner": "founder" + "status": "RATIFIED", + "owner": "founder", + "word": "separate claims; public wording \"Designed to compete for leadership among GPU-first networks.\"; after testing, the demonstrated advantage is named, never a blanket number one", + "ratified_at": "2026-10-09T08:07:06.040Z", + "ratified_by": "founder", + "recorded_against": "its specification, release and acceptance tests before activation (the coordinator's relay of the founder's ratification, 9 October 2026, 09:2x UK)" } ] } diff --git a/tools/ci/notes/decision-d01-20261009.json b/tools/ci/notes/decision-d01-20261009.json new file mode 100644 index 000000000..507e3b72a --- /dev/null +++ b/tools/ci/notes/decision-d01-20261009.json @@ -0,0 +1,8 @@ +{ + "decision": "D01", + "status": "RATIFIED", + "word": "capped issuance, no tail escape clause, no forecast-triggered minting, no ordinary parameter vote that expands the cap; subject to the pre-launch security-funding gate TV-04 (a fail means delay or an open reconsideration, never an undisclosed rescue)", + "by": "founder", + "recorded_against": "its specification, release and acceptance tests before activation (the coordinator's relay of the founder's ratification, 9 October 2026, 09:2x UK)", + "condition": "subject to TV-04" +} diff --git a/tools/ci/notes/decision-d02-20261009.json b/tools/ci/notes/decision-d02-20261009.json new file mode 100644 index 000000000..3a4a35de0 --- /dev/null +++ b/tools/ci/notes/decision-d02-20261009.json @@ -0,0 +1,8 @@ +{ + "decision": "D02", + "status": "RATIFIED WITH PARAMETER PENDING", + "word": "the same-cap emission comparison is approved (current pacing vs a longer distribution; code-generated figures for years 1, 2, 5, 10, 20 with rounding and terminal behaviour; no founder reserve); the final schedule stays PENDING EVIDENCE, neither alternative frozen", + "by": "founder", + "recorded_against": "its specification, release and acceptance tests before activation (the coordinator's relay of the founder's ratification, 9 October 2026, 09:2x UK)", + "condition": "the final schedule PENDING EVIDENCE" +} diff --git a/tools/ci/notes/decision-d03-20261009.json b/tools/ci/notes/decision-d03-20261009.json new file mode 100644 index 000000000..eb1ba9474 --- /dev/null +++ b/tools/ci/notes/decision-d03-20261009.json @@ -0,0 +1,7 @@ +{ + "decision": "D03", + "status": "RATIFIED", + "word": "separate accountable budgets for hashing, internal proving, external work and maintenance, every payment counted once; external prover revenue never counted as miner security, maintenance and Labs profit at once", + "by": "founder", + "recorded_against": "its specification, release and acceptance tests before activation (the coordinator's relay of the founder's ratification, 9 October 2026, 09:2x UK)" +} diff --git a/tools/ci/notes/decision-d04-20261009.json b/tools/ci/notes/decision-d04-20261009.json new file mode 100644 index 000000000..c7006af56 --- /dev/null +++ b/tools/ci/notes/decision-d04-20261009.json @@ -0,0 +1,8 @@ +{ + "decision": "D04", + "status": "RATIFIED WITH PARAMETER PENDING", + "word": "explicit auditable routing with no hidden company allocation; the 80/20 split is emission allocation only; the external-job fee or burn rate is NOT ratified, comparative pricing tests decide", + "by": "founder", + "recorded_against": "its specification, release and acceptance tests before activation (the coordinator's relay of the founder's ratification, 9 October 2026, 09:2x UK)", + "condition": "the external-job fee or burn rate not ratified; comparative pricing tests decide" +} diff --git a/tools/ci/notes/decision-d05-20261009.json b/tools/ci/notes/decision-d05-20261009.json new file mode 100644 index 000000000..68a16fdbd --- /dev/null +++ b/tools/ci/notes/decision-d05-20261009.json @@ -0,0 +1,7 @@ +{ + "decision": "D05", + "status": "RATIFIED", + "word": "a recovery certificate is never ordinary finality on any wallet, receipt, API or bridge; labels do not repair an unsafe recovery rule, which still needs its tests", + "by": "founder", + "recorded_against": "its specification, release and acceptance tests before activation (the coordinator's relay of the founder's ratification, 9 October 2026, 09:2x UK)" +} diff --git a/tools/ci/notes/decision-d06-20261009.json b/tools/ci/notes/decision-d06-20261009.json new file mode 100644 index 000000000..9bebc8a31 --- /dev/null +++ b/tools/ci/notes/decision-d06-20261009.json @@ -0,0 +1,7 @@ +{ + "decision": "D06", + "status": "RATIFIED", + "word": "separate claims; public wording \"Designed to compete for leadership among GPU-first networks.\"; after testing, the demonstrated advantage is named, never a blanket number one", + "by": "founder", + "recorded_against": "its specification, release and acceptance tests before activation (the coordinator's relay of the founder's ratification, 9 October 2026, 09:2x UK)" +} diff --git a/tools/ci/test-record.mjs b/tools/ci/test-record.mjs index e17e915b7..6ce4831fe 100644 --- a/tools/ci/test-record.mjs +++ b/tools/ci/test-record.mjs @@ -207,6 +207,14 @@ if (args.includes('--self-test')) { if (reg.cases[2].run_status) { console.log('self-test failed: a manual case was given a run status'); fails = 1; } const regS = { suites: [{ code: 'X', tests: [{ id: 'X-1', method: 'Automated', accept: 'a' }] }] }; if (casesOf(regS).length !== 1) { console.log('self-test failed: the suites/tests registry shape was not read'); fails = 1; } const regN = { suites: [{ code: 'FIN', tests: [{ id: 'F-1', method: 'Automated', accept: 'keep' }] }] }; fs.writeFileSync(`${d}/regn.json`, JSON.stringify(regN)); + const regD = { suites: [], decisions: [{ id: 'D01', title: 't', required_resolution: 'r', status: 'UNAPPROVED', owner: 'founder' }] }; fs.writeFileSync(`${d}/regd.json`, JSON.stringify(regD)); + fs.writeFileSync(`${d}/dn.json`, JSON.stringify({ decision: 'D01', status: 'RATIFIED', word: 'capped issuance', by: 'founder', recorded_against: 'spec' })); + const dr = child_process.spawnSync(process.execPath, [new URL(import.meta.url).pathname, '--note-file', `${d}/dn.json`], { env: { ...process.env, TEST_REGISTRY: `${d}/regd.json`, TEST_MAP: `${d}/map.json` }, encoding: 'utf8' }); + const regD2 = JSON.parse(fs.readFileSync(`${d}/regd.json`, 'utf8')); + if (!(dr.status === 0 && regD2.decisions[0].status === 'RATIFIED' && regD2.decisions[0].word === 'capped issuance' && regD2.decisions[0].ratified_by === 'founder' && regD2.decisions[0].ratified_at)) { console.log(`self-test failed: a decision note file did not ratify D01: ${dr.stdout} ${dr.stderr}`); fails = 1; } + fs.writeFileSync(`${d}/dnb.json`, JSON.stringify({ decision: 'D01', status: 'APPROVED-ISH', word: 'x', by: 'founder' })); + const drb = child_process.spawnSync(process.execPath, [new URL(import.meta.url).pathname, '--note-file', `${d}/dnb.json`], { env: { ...process.env, TEST_REGISTRY: `${d}/regd.json`, TEST_MAP: `${d}/map.json` }, encoding: 'utf8' }); + if (drb.status === 0) { console.log('self-test failed: a decision status outside the vocabulary was accepted'); fails = 1; } const nr = child_process.spawnSync(process.execPath, [new URL(import.meta.url).pathname, '--note', 'FIN', 'the ruling'], { env: { ...process.env, TEST_REGISTRY: `${d}/regn.json`, TEST_MAP: `${d}/map.json` }, encoding: 'utf8' }); const regN2 = JSON.parse(fs.readFileSync(`${d}/regn.json`, 'utf8')); if (!(nr.status === 0 && regN2.suites[0].notes?.length === 1 && regN2.suites[0].notes[0].text === 'the ruling' && regN2.suites[0].tests[0].accept === 'keep')) { console.log(`self-test failed: --note did not append a dated note to the suite and keep the accept text: ${nr.stdout} ${nr.stderr}`); fails = 1; } @@ -243,7 +251,19 @@ if (args.includes('--check')) { const r = check(reg, map); for (const l of r.lin if (args.includes('--label-islands')) { const n = labelIslands(reg); fs.writeFileSync(REG, JSON.stringify(reg, null, 2) + '\n'); console.log(`test-record: ${n} record(s) measured on the 2.0 devnet since ${ISLAND_SINCE} labelled "${ISLAND_LABEL}"`); process.exit(0); } if (args.includes('--normalize')) { const n = normalize(reg); fs.writeFileSync(REG, JSON.stringify(reg, null, 2) + '\n'); console.log(`test-record: normalized ${n} rows to the decision vocabulary and the record schema`); process.exit(0); } if (arg('--cases')) { console.log(((map.cells || {})[arg('--cases')]?.cases || []).join(',')); process.exit(0); } -if (arg('--note-file')) { const n = load(arg('--note-file')); args.push('--note', n.suite, n.text); } +if (arg('--note-file')) { const n = load(arg('--note-file')); + if (n.decision) { // the decision form (9 October 2026, 09:3x UK): the founder's ratification of a decision in the registry's decisions block, replayed at the merge like any note + const STATUSES = new Set(['UNAPPROVED', 'RATIFIED', 'RATIFIED WITH PARAMETER PENDING', 'PENDING EVIDENCE', 'REJECTED']); + if (!STATUSES.has(String(n.status))) { console.error(`test-record: decision ${n.decision}: status ${n.status} is not one of ${[...STATUSES].join(' | ')}`); process.exit(2); } + if (!n.word || !n.by) { console.error(`test-record: decision ${n.decision}: a ratification carries the founder's word verbatim (word) and who said it (by)`); process.exit(2); } + reg.decisions = reg.decisions || []; const dec = reg.decisions.find((x) => x.id === n.decision); + if (!dec) { console.error(`test-record: decision ${n.decision} is not in the registry's decisions block (the VR and TV suites bring D01 to D06)`); process.exit(2); } + const before = acceptSnapshot(reg); + dec.status = n.status; dec.word = n.word; dec.ratified_by = n.by; dec.ratified_at = n.at || new Date().toISOString(); if (n.recorded_against) dec.recorded_against = n.recorded_against; if (n.condition) dec.condition = n.condition; + if (acceptSnapshot(reg) !== before) { console.error('test-record: REFUSED: a decision changed an accept text'); process.exit(1); } + fs.writeFileSync(REG, JSON.stringify(reg, null, 2) + '\n'); console.log(`test-record: decision ${n.decision} ${n.status} (${n.by})`); process.exit(0); + } + args.push('--note', n.suite, n.text); } if (arg('--note')) { const code = arg('--note'); const text = args[args.indexOf('--note') + 2]; if (code === 'registry' && text) { const before = acceptSnapshot(reg); reg.notes = reg.notes || []; reg.notes.push({ at: new Date().toISOString(), text }); if (acceptSnapshot(reg) !== before) { console.error('test-record: REFUSED'); process.exit(1); } fs.writeFileSync(REG, JSON.stringify(reg, null, 2) + '\n'); console.log(`test-record: registry note ${reg.notes.length}: ${text.slice(0, 80)}`); process.exit(0); } diff --git a/tools/ci/token-value-suite.mjs b/tools/ci/token-value-suite.mjs index 50737177e..a661360bc 100644 --- a/tools/ci/token-value-suite.mjs +++ b/tools/ci/token-value-suite.mjs @@ -45,7 +45,8 @@ export function merge(reg, s) { } export function mergeDecisions(reg, decisions) { const old = new Map((reg.decisions || []).map((x) => [x.id, x])); - reg.decisions = decisions.map((x) => { const o = old.get(x.id); return o && o.status && o.status !== 'UNAPPROVED' ? { ...x, status: o.status, ...(o.approved_at ? { approved_at: o.approved_at } : {}), ...(o.approved_by ? { approved_by: o.approved_by } : {}) } : x; }); + const KEEP = ['status', 'word', 'ratified_at', 'ratified_by', 'recorded_against', 'condition', 'approved_at', 'approved_by']; + reg.decisions = decisions.map((x) => { const o = old.get(x.id); if (!(o && o.status && o.status !== 'UNAPPROVED')) return x; const k = { ...x }; for (const f of KEEP) if (f in o) k[f] = o[f]; return k; }); return reg; } const canon = (o) => JSON.stringify(o, (k, v) => (v && typeof v === 'object' && !Array.isArray(v)) ? Object.fromEntries(Object.keys(v).sort().map((x) => [x, v[x]])) : v); @@ -67,9 +68,9 @@ if (args.includes('--self-test')) { if (!(vr.code === 'VR' && vr.tests.length === 1 && vr.tests[0].method === 'Ratification' && vr.tests[0].run_status === 'NOT RUN' && vr.tests[0].rule_status === 'PROPOSED - REQUIRES RATIFICATION' && vr.tests[0].accept === 'ratify one contract' && vr.tests[0].owner_role === 'Protocol + governance')) { console.log('self-test failed: the VR row is not the rule verbatim, NOT RUN, Ratification, with its owner role and rule_status'); fails = 1; } if (!(tv.code === 'TV' && tv.tests.length === 2 && tv.tests[0].scope === 'CORE' && tv.tests[0].priority === 'P0' && tv.tests[1].priority === 'P1' && tv.tests[0].inherited_links.join() === 'GOV,VR-01' && tv.tests[0].accept === 'no conflict' && tv.tests[0].run_status === 'NOT RUN')) { console.log('self-test failed: the TV row does not carry the scope, the links, the criterion and NOT RUN'); fails = 1; } if (!(decisions.length === 1 && decisions[0].status === 'UNAPPROVED' && decisions[0].owner === 'founder')) { console.log('self-test failed: the decisions block is not UNAPPROVED and the founder\'s'); fails = 1; } - const reg = { suites: [{ code: 'TV', notes: [{ text: 'n' }], tests: [{ id: 'TV-01', run_status: 'NOT RUN', in_progress_since: 't', evidence_records: { 'c:x': { decision: 'PASS' } }, run_id: 'r' }] }], decisions: [{ id: 'D01', status: 'APPROVED', approved_by: 'founder' }] }; + const reg = { suites: [{ code: 'TV', notes: [{ text: 'n' }], tests: [{ id: 'TV-01', run_status: 'NOT RUN', in_progress_since: 't', evidence_records: { 'c:x': { decision: 'PASS' } }, run_id: 'r' }] }], decisions: [{ id: 'D01', status: 'RATIFIED', word: 'w', ratified_by: 'founder', ratified_at: 't' }] }; merge(reg, tv); mergeDecisions(reg, decisions); const t = reg.suites[0]; - if (!(t.tests[0].in_progress_since === 't' && t.tests[0].evidence_records?.['c:x']?.decision === 'PASS' && t.tests[1].run_status === 'NOT RUN' && t.notes?.length === 1 && reg.decisions[0].status === 'APPROVED')) { console.log('self-test failed: regenerating lost live fields, notes or an approved decision'); fails = 1; } + if (!(t.tests[0].in_progress_since === 't' && t.tests[0].evidence_records?.['c:x']?.decision === 'PASS' && t.tests[1].run_status === 'NOT RUN' && t.notes?.length === 1 && reg.decisions[0].status === 'RATIFIED' && reg.decisions[0].word === 'w' && reg.decisions[0].ratified_at === 't')) { console.log('self-test failed: regenerating lost live fields, notes or an approved decision'); fails = 1; } const map = { cells: { c: { cases: ['TV-01'] } }, not_run: {} }; if (!(mapReasons(map, tv) === 1 && !map.not_run['TV-01'] && /CAPABILITY IF ENABLED/.test(map.not_run['TV-02']))) { console.log('self-test failed: the map reasons for unmapped gates'); fails = 1; } const s2 = suites(d); if (canon(stripLive(s2.tv)) !== canon(stripLive(tv))) { console.log('self-test failed: the generator is not deterministic'); fails = 1; } if (!fails) console.log('self-test passed: one VR row per rule (the requirement verbatim, Ratification, NOT RUN, the rule_status and owner role), one TV row per gate (the scope, the links, the criterion, NOT RUN), the decisions block UNAPPROVED and the founder\'s; regenerating keeps live fields, notes and an approved decision; unmapped gates get their map reasons; the output is deterministic'); From bbe26ca92b2f0040e9eed0f49ac8ff2833730ec7 Mon Sep 17 00:00:00 2001 From: igneum-labs <337424239+igneum-labs@users.noreply.github.com> Date: Fri, 9 Oct 2026 08:10:15 +0000 Subject: [PATCH 04/11] Counter ASIC 3.0 status: the snapshot on build-1 and the recipe v3's hubs stage (lp-05/06 on the mini's chain, the miner-gate fault fixed), the bf60948a IBD read, the PCs' install, the founder's 09:15 orders and the nine-box read, the Token Value ratification and the four Phase 0 lanes, the mini's collector, the hands ended Co-Authored-By: Claude Fable 5.1 --- docs/plans/counter-asic-3-status.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/docs/plans/counter-asic-3-status.md b/docs/plans/counter-asic-3-status.md index 05668ff74..a2f2f2315 100644 --- a/docs/plans/counter-asic-3-status.md +++ b/docs/plans/counter-asic-3-status.md @@ -842,6 +842,19 @@ THE bf60948a EVIDENCE KIT (the cutter, 08:52 UK, run pid 10299): /srv/workers/fl THE hub-1 ARCHIVE ORDER (the fleet lane, 08:54 UK): the in-place compression pass stopped by its pid file (hub-1 free 5.2 GB; the aside 13,039 files, about 19 GB, partly compressed); the sha256 list of every file made on hub-1 (/root/fleet/dn3-aside.sha256, 13,039 lines) and copied to the Mac; the stream path hub-1 to the Mac to build-1 over two ssh pipes (hub-1 holds no key, by the rule). The block: build-1 has no /srv/archive and the build user cannot create it (root-owned /srv, no passwordless sudo), so the first attempt's tar had nowhere to land, its verify failed by construction and the guard held: nothing removed on hub-1 (the "NOT REMOVED" line in the decision file is that attempt); the build-server lane asked at 08:54 to create /srv/archive/hub-1-devnet-3 owned by build; the default if not there by 09:20 UK (the coordinator's silence as yes): the archive under build-1:/srv/artefacts/archive/hub-1-devnet-3/ (build-writable, 2.1 TB free) with the sha list beside it, the path in the done line for root to move later; the deletion on hub-1 only after every sha verifies equal, under the pid file, the free GB before and after in the decision file and one line for main; the clock: about 30 to 45 minutes at a 50 Mbit/s home link for about 10 GB compressed, done about 10:00 to 10:30 UK inside the 11:00 default; nothing else on hub-1 touched. THE RESET'S STATE AT 08:55 UK (read by the coordinator): founder-go.txt "go continue"; the mini's snapshot streaming to build-1:/srv/artefacts/mini-dn4-snapshot/mini-dn4-snapshot-20261009-074452Z.tgz (4,567,511,040 B at 08:55, the sidecar not yet written), the runner polling for the sidecar; the hubs' stage not started; the feed standing at 24,852 / 8c46c8a8 / DAA 46,800; master 7e019fde0; kit 2's record's top-level verdict FAIL; the hub-1 archive's second attempt started 07:54:39Z (the aside 13,039 files, 12,744 MB; hub-1 free 6,596 MB; the sha list on build-1; the stream hub-1 to the Mac to build-1). +THE SNAPSHOT ON BUILD-1 (the shipper, read back 08:57 UK): /srv/artefacts/mini-dn4-snapshot/mini-dn4-snapshot-20261009-074452Z.tgz, sha256 5790ee71380cd60561a9af4ef4e405799638a75213a7600af9f0486855d2779c, 5,057,533,265 B, sha256sum -c OK on the box from its sidecar (pushed 08:46:23 to 08:57:02, 639 s at about 7.9 MB/s); taken with the node stopped from 08:44:57 to 08:46:21 (89 s to tar 7.5 GB), the mini relaunched on the same kept datadir at 08:46:21 (2.0.2, DAA 46,800, behind on the standing tip, 8 peers; 91 s without its node); the recipe's SEED its default (the mini not reachable). The publish tool branch v2 (2f3af0a8: c7f43510 + the canary guard + master's dl split) ready for the HiveOS and Windows entries on their PASS blocks to a moving tip; the entry's full rule-33 canary from c7f43510 armed behind the reset's one-tip read. +THE FLEET LANE'S PREPARE AND THE WAVES (08:57 UK; its line misclocked 09:57): fleet-prepare.sh under pids/fleet-prepare.pid putting the 5d53a591 pair (igneumd fbf1d6e5, miner 66fded0f) to every reachable fleet box in the recipe's lists, 24 at a time with the shas read back, SEED the three hubs in each env-last, the nodes running on their islands until their wave; wave one dn3-g1, lp-4090-01, lp-4090-02/-03/-07/-08, the 24 miner boxes plus lp-4090-11, the 23 outage boxes plus dn2-2 (every 2.0.1 miner among them), about 54 boxes; wave two the 40 node boxes, then lp-4090-43 last; the ready and unreachable names in prepare-lists.txt and the decision file. The recipe rewritten for speed: HUBS lp-05 and lp-06 from the snapshot together, lp-04 the moment either hub reads a DAA past 46,800; wave one on the first hub block past 46,800 at 40 wide; wave two five minutes later, held with a line if the hubs' DAA stands for those five minutes or their logs show refusals; the within-ten tracker every five minutes with the count mining on the hubs' chain, each count relayed for main from the first hub block to one tip; the new sha with its read-back inside ten minutes; the coordinator's question whether the runner fired the old text mid-rewrite (the sidecar existing since 08:57:02). +ITEM (1)'S READ ON bf60948a (the node lane, 09:02 UK): a fresh bf60948a node on build-2 with --connect to lp-04 as its only peer (the shape in which c363ce90 sat at genesis for twelve minutes): "Sink probe: peer 213.173.98.75:21169 stands at 8c46c8a8 which this node does not hold; taking it as the inv the peer did not send" 5 s after the flows registered, "IBD started" at once, then the ordinary climb (1,943 at +30 s, 4,573 / DAA 10,796 at +3.5 min, 7,609 / 21,598 at +9.5 min, not-held 0, did-not-deliver 0, lp-04 the only peer throughout; the log /tmp/nl-lp04only-bf60948a.log on build-2); item (2)'s own read (the ESTAB count on a hub under the ban churn) needs a hub running bf60948a, which the reset provides. +THE PCs' INSTALL (the relay lane, 09:05 UK): the 2.0.2 public payload 6242bbe9 and the installer kit 34b77d28 off build-1's record and hosted (the first hosting 404 for ten minutes until tools/dl/publish-bin.sh pushed the two zips from build-1, served 09:01); the Setup build on PC 2 published 09:02 UK (job run-20261009-080157: downloads both, asserts the shas, builds Igneum-Miner-Setup-2.0.2.exe, posts it with its sha); the install scripts for both PCs (the relay agent under its pid file: the old install copied aside, the app stopped host-first by pid, the devnet-4 datadir kept aside, Setup per-user silent, the version read back from api/state, mining resumed, a two-minute node read) to PC 1 and PC 2 the moment the Setup posts, about 09:12; "installed" lines by 09:25 UK; mining from the first block past the cut; PC 1 with no hash-lane job running or queued. +THE FOUNDER'S 09:15 ORDERS (main's relay; the coordinator's dispatch at 09:1x): looking at build.igneum.network/workers.html he read eight of nine build boxes IDLE, the mini "no report yet", PC 1's last report 11 h 30 min old, and asked what the point of the machines is if they are not used. (1) By 09:45 UK a utilisation read of all nine boxes (load, running jobs by pid, suites, nodes, fuzzers, what each ran overnight), one line to main; then a standing work queue keeping every build box busy whenever the chain is not the bottleneck, under the kill and pid rules: the 2.0.3 flows items' suites and known-failed tests; the long fuzz and property suites across consensus, exec, p2p and pow on separate boxes; TV-02's two independent supply-replay implementations (CPU only); the chip model's 20 to 25 percent floorplan for the converged SPEF row; the board's rows needing only a box (ZKP, EVM, VER fixtures); 2.0.3 kit canaries as soon as a chain moves; an owner per box in the queue file, the queue read every 30 minutes, an idle box a reported fault (the build-server lane: the read, /srv/queue/build-queue.md and docs/ops/build-queue.md, the reader under a pid file). (2) The workers page by 10:30 UK, edge-read: node, suite and fuzz load by pid, not build slots only (the build-server lane from build-1 under rule 3); the mini's collector (the shipper) and the PCs' collectors (the relay lane) reporting every five minutes under pid files so no card reads "no report" or hours old. The default if either slips: what blocks it and the earliest clock. + +THE RESET'S HUBS STAGE STARTED (the fleet lane, by the pid files and the decision file; read by the coordinator at 09:0x): the runner fired the old text (fb746667) at 08:57:02 UK the second the sidecar appeared and was stopped by its pid file at 08:58:05 UK at its snapshot pull to the Mac, no hub or box touched (the decision file: "the first run (fb746667) stopped by its pid file at its snapshot pull, no box touched"). The new recipe v3 (sha256 77771990ca90fddf: the hubs together, the snapshot pushed by build-1 directly to each hub over an agent-forwarded scp with the sha verified on the box, lp-04 on the first block past the cut, the fleet in two waves on the prepared boxes at 40 wide, wave two held on strain, the tracker every five minutes) started 09:00:29 UK under pids/morning-reset.pid (pid 426): "GO read from founder-go.txt; islands before: distinct_tips=22 among 30 mining boxes" at 09:01:49; "SNAPSHOT: sha 5790ee71 taken 09:56:58 UTC" at 09:01:52; "STAGE SNAPSHOT lp-4090-05" and "STAGE SNAPSHOT lp-4090-06" at 09:01:52; both pushes landed, the sha verified on each box; lp-4090-05's node started 09:04:31 UK on the snapshot (the island aside as dn4.aside-roll-080401, 6,079 entries in the new dn4, node pid 524389, kit 2's igneumd fbf1d6e5), lp-06's in the same minute; the recipe in its 30-minute wait for a hub to read synced at or past 46,800, then lp-04 on the first DAA past 46,800. The prepare: v1 (the pair through the Mac) too slow, stopped by its pid file with one box ready; v2 (the kit tgz pushed from build-1 directly, 32 wide, untarred on the box, shas read back, SEED written) under pids/fleet-prepare.pid since 09:02:09 UK, 1 of 94 ready at 09:05; wave one needs it and starts on the first hub block past the cut, whichever is later. The archive stream paused by its pid file at 08:58 so the reset owned the Mac's link; it restarts after the hubs are up. +THE TOKEN VALUE VOLUME'S RATIFICATION AND PHASE 0 (the founder at 09:2x UK, relayed by main; the lanes opened by the coordinator at 09:3x): the six decisions ratified (D01 capped issuance subject to TV-04; D02 the same-cap emission comparison approved, the schedule pending evidence; D03 separate accountable budgets; D04 explicit routing, the external-job rate not ratified; D05 recovery never shown as finality; D06 separate claims, the scoped public wording), the steward recording them in the registry batch; the volume on master 6824d49cc (the two PDFs, rules-and-gates.json with 40 VR rules, 32 TV gates, D01 to D06, 47 sources; the landing hand's thirty-sixth landing). Phase 0 as lanes under the standing work queue, documents and tests only, nothing activating, every result NOT RUN until the independent panel reads it: (a) TV-01 (lane af39c35824e751a1f, build-9): the monetary contract as one machine-readable supply spec (cap, the schedule as code, activation clocks, terminal behaviour, the coinbase split) from the litepaper and the node's issuance code side by side, the 4-billion cap against the year-five tail vote resolved per D01, every disagreement a conflicts row, a first spec.json by 13:00 UK, the complete one by 18:00; (b) TV-02 (lane aad0fefd46698ac96, build-5 and build-6): two independent supply-replay implementations (Rust from the node's code; Python from the spec; no shared code) with exact integer agreement through every subsidy transition and a hand-written reorg fixture, by 18:00; (c) D02 (lane a7dddd39e84d2fd1c, build-3): the current pacing against the volume's longer same-cap distribution with code-generated figures for years 1, 2, 5, 10, 20 (issued share, yearly issuance, early security income in native units, concentration, late-miner participation, fee dependence as a parameter; no price), the schedule not picked, by 20:00; (d) TV-04 (lane a34090cd88da0a62e, build-9): the security budget per role under D03 and D04 at 0.25x, 1x, 4x, 10x revenue, zero external jobs and the minus-90-percent case as a 0.1x multiple, over 1, 5, 10, 20 years, by 20:00. The common brief at the coordinator's scratchpad tv-common-brief.txt (the STOP rules, the never-published list, the registry through test-record.mjs, the box-mirror landings). +THE NINE-BOX UTILISATION READ (the build-server lane, 09:06 UK, by pid; for the founder's 09:15 order): build-1 (96 threads, load 5.0, mem 88 of 125 GB) BUSY: the pow mixer fuzz suite restarting each pass (the capacity lane's slices), nine igneumd nodes (the hands observer node, node1, the dn4-roll pair at 25.6 and 23.2 GB, the light reader at 18.6 GB, the dn2 seed, the miner-reliability scratch node), three observer.mjs, gitea, caddy, sccache; the one FAULT: the three igneumd named wedged at 03:24 (the dn4-roll pair and the light reader, 67 GB RSS between them) still alive at 09:06, the node lane's end-by-pid owed; overnight 11 worktree builds, the cuts, dozens of node-lane gate pairs, the 202 records and canaries. build-2 (load 2.9): the site lane's Playwright gate only; overnight 12 builds. build-3 (32 threads, load 0.00): IDLE (reachable, the switch fault over). build-4 (load 8.8, 45 GB): BUSY on the chip model (OpenROAD detail_route on xbar 17 h 38; the LEC on core32 13 h; the adversary lane). build-5 (32 vCPU, load 0.00): IDLE, one stale slot line. build-6 (32 vCPU, load 0.00): IDLE; overnight 11 pool-lane builds. build-7 (load 6.7 rising): the dn4-roll igneumd, the HEAL harness, the node lane's suites from 09:05. build-8 (load 0.2): the dn4-roll igneumd and the heal-off harness pid only; near idle. build-9 (load 0.05): IDLE. Four of nine fully idle (3, 5, 6, 9), now the Phase 0 lanes' boxes; the queue file (/srv/queue/build-queue.md, docs/ops/build-queue.md) and its 30-minute reader by 09:45; the page by 10:30. +THE MINI'S COLLECTOR LIVE (the shipper, 09:08 UK): ~/mini-collector.sh on the mini under ~/mini-collector.pid (pid 6824, the mini's build-1 key, an atomic write), every 60 s to build-1:/srv/workers/sources/mini.json in the box shape merge-workers.mjs reads (name igneum-mini, macOS 27.0.1 Apple M6, 12 cores, uptime, load, cpu, mem, disk, slots, collected_at) plus a "miner" object (app_version 2.0.2, node_daa 46,800, node_state "behind", synced false, rate_mhs null while waiting, last_accepted_at 2026-10-09T04:24:37Z, node_pid 3796) and the same as one line in "recent"; the first report on build-1 at 09:06:58 UK, merged into workers.json at 09:07:46 with source ok and age 18.7 s; at the edge build.igneum.network/workers.json generated 09:08:07 UK carries the mini, the card rendering as a live section with "read N s ago"; the ask to the build-server lane (10:30): render mini.miner's five facts on the card. + +THE HUBS ON THE SNAPSHOT, ONE FAULT FIXED (the fleet lane, 09:09 UK, by the pid files and the decision file): the recipe v3 (77771990, pid 426) in its hubs' wait since 09:05:54; both snapshots pushed by build-1 directly, sha equal on both boxes, lp-05's node started 09:04:31 UK, lp-06's 09:04:37, kit 2's igneumd, the islands aside; both read blocks 46,800 = headers 46,800, DAA 46,800, 48 to 51 peers, synced=false, holding lp-04's cut block 8c46c8a8, and NOT mining: the fault found 09:08: box-dn3.sh's pack-id gate (main's rule through the shipper, 7 Oct) refused the kit-2 miner ("RESULT dn3_pack_gate UNREADABLE miner=66fded0f5ce15bde is not a paired miner", "dn3_miner_refused: node runs, miner off") because the kit-2 miner's sha was never added to the boxes' pair list (the prepare step did not write it; the fleet lane's miss, said once); the fix 09:08 to 09:09: 66fded0f written into /root/fleet/in/pair-miners.txt on both hubs and box-dn3.sh restarted on each by pid files on the SAME snapshot datadir (no datadir move), the miner passing the gate; the same line on every prepared box so wave one's miners start. No block past 46,800 at that minute; the first one's height and time to come. lp-04 untouched at 46,800 (its stage on the first hub block past the cut). The prepare ended 09:06:52 UK with 92 of 94 boxes ready (the kit pair on the box, SEED the three hubs); not ready dn3-q04 (the push failed) and p1-3080 (ssh closed, "exited" on Vast since the night). A recipe fact: its hubs' wait requires synced=true, which a hub at its own tip with no peer ahead may never raise even while it mines past 46,800; if the DAA moves and the flag does not, a resume at the wait taking the moving DAA as the pass is swapped in (no box touched) before the 30-minute bound at 09:35. BUILD-1's HANDS ENDED (the node lane, 09:08:56 UK): the three igneumd named wedged at 03:24 were not wedged (every last log line within the minute of the read; the evidence build-1:/srv/canary/1176efb9/wedge-read-0908.txt); pids 2016349 (/home/build/dn4seed, --listen 0.0.0.0:26631, 25.1 GB) and 2009930 (/srv/hands/node1-dn4, :26671, 22.7 GB) were build-1's two hand nodes, the record-holding peers main ruled up through 08:00, their DAAs standing on dead islands (10,799 and 14,474) since the night; both ended at 09:08:56 by kill -KILL on the pid number with no pid file matched (the build-server lane's default as written; the coordinator's note once: not the founder's "kills by pid file only"; from here a process without a pid file gets one written and read back first); build-1 memory after 43 GB used, 81 GB available; the hands gone from every dial list (the hubs run from the snapshot and need no early-band peer; the waves seed from the hubs). The third, pid 3770005 (the light-reader node, 18.1 GB, /home/build/light-reader/data, RPC 26880/26881), its executor unwinding live, HELD: it backs the live light API (the finality lane read certificate 270 from it tonight); the coordinator's ruling: it stays up on silence, ended only when the site lane names it not live-serving, by a pid file written first. + A SHARED-DEVNET FACT FROM THE FLEET (not this lane's, with the shipper and the infra lane): the Hetzner live seed 188.245.5.161:26611 is still on the old override object (digest eada4bda) 1 h 40 min after the 0.3.20 sweep (the fleet never touches Hetzner nodes, so it was outside the sweep); the 0.3.21 wipe canary c22-1 took five digest-mismatch rejects from it; an app with the packaged peers is refused at the seed and syncs through node1 and the hub only, a fresh joiner with only the seed cannot join, the 14 voters and the hub are unaffected; the owner puts the floor file ov16-floor-900000.json (sha 294f1f80) and the c4459193 pin on it. 0.3.21's STAGING (the node lane): the order dry-merges onto 55768f88 with nothing moving to 0.3.22; the late-join fix is 52e96c94 (70e4601e rebased onto 55768f88, exec suite 33 green with both new tests); f067f7c1, b0444f51 and 437f0438 merge clean in order; 2e32d5f6's one conflict (DST_ADDRESS beside pool-finish's DST_BINDING in consensus/core/src/finality.rs) kept both; the live-file digest eada4bda after each (every switch at never); the staging waits on the shipper's sweep-end word; the re-pin held. PC 2 DOWN AGAIN (main, 16:5x UK): the founder takes PC 2 down for cable work (PC 1 back but his desk); both PCs out of the sweep's waves, each updates on its poller on return; no PC job to PC 1; the Windows G1 completed before the outage, nothing reruns. 0.3.21's SECOND GATE LINE on 55768f88 (sha256 279b1b690e854fc9): the ten-minute mixed-version gate beside the 5899f603 pair, 13:37:40Z to 13:47:52Z, SUMMARY PASS (one digest b0afb2ee on five nodes; 223 new and 381 old blocks accepted by the old hub, 0 rejected; counts equal at 319, 486 and 604 through both clean joins and the restart step at 13:45:22Z; no panic); the node lane's two lines on 0.3.21's first candidate complete, in plan 6.9 on ca3-v4-node; the fleet's set on it (the bare-child 12 GB line, the wipe, the kept read, the cases) is the fleet's. 0.3.21's FIRST GATE LINE on 55768f88 (sha256 279b1b690e854fc9, the string read back; pairing igneum-pow 8c728ca3 at byte 5): the digest gate 13:35:41Z to 13:37:19Z SUMMARY PASS (a89be8a7 on both binaries with the peers; db9a85f9 refused, no peer; the live file's eada4bda unmoved); the ten-minute mixed-version gate from 13:37:40Z, line about 13:50Z. The 0.3.21 order as the shipper sent it: 55768f88; f067f7c1 and 70e4601e; b0444f51; 6eb21fc9; db28d331; then the re-pin from 8bdcbdd8 on the coordinator's word; suites between, the digest read after every one; the mirror's release-0.3.20-node back at the pin c4459193, release-0.3.21-node open at 55768f88. THE LATE-JOIN COMMIT (N9's second half, the node lane): 70e4601e on the box mirror as branch proof-hold-fix, from c4459193, two files (igneum/exec/src/proving.rs, protocol/flows/src/v10/proving.rs); the gap was the fetch side on the joiner (the served record ran the native check against the joiner's trailing exec state before anything was stored, the check refused it, the proof was never held, the body rule read "not held" for 20 s and failed the IBD); the fix holds the proof by hash before the checks (the pool entry still needs them) and the serve side says when it holds fewer than asked; the exec suite 32 passed at 13:26Z with the known-failed shape first, the flows check green 13:28Z, igneumd on build-1 at the 0321 worktree path built 13:32Z, sha256 17649eeb2f7d1290, string read back; with the testnet lane (the resume form, B alone); it joins the 0.3.21 staging as its own commit. THE WIPE CANARY ON c19-1, c4459193 (sha 45be9b02d1b002f5, string read back): FORM END rc 0 at 13:50:53Z. Wipe synced 13:35:50Z (57 minutes, inside the 98-minute class); mining 13:36:00Z to 13:47:07Z, 66 mined, 66 accepted, 0 rejected, isSynced true at the tip throughout; the hub holds 41 of its blocks in its last 700 with 0 rejects (13:47:09Z); the restart on its kept datadir at 13:47:15Z: the old process stopped at once (the new process's first lock line seven seconds after the marker; the watchdog held nothing, the b7cc37e7 fault closed), synced again at 13:48:39Z after 84 s, 109 templates read with max 3,432 ms and 0 timeouts; the kept read on pool-1's 0.3.17 copy on the same pod passed at 13:38Z (the rewrite line once, a clean second start). The pin's set on c4459193: the digest gate PASS, the mixed-version gate PASS, the wipe canary PASS, the kept read PASS, the restart PASS, the 12 GB line proves and verifies (paid is a race, not a gate); CASES END from c20-1 (about 14:50Z) is the last pin line. THE INTEROP FACT stands from the void run: the 5899f603 hub accepted 235 object-byte-5 blocks from the 8097d600 node with 0 rejected, one digest on all five nodes on the live sixteen-field file. The gates: the digest test and the kaspa-pow vector test (the amended devnet epoch-0 id 1a4230699a6b9c60 must equal, c120d7963abdcd96 must differ, the v3 control unchanged) on the box; the mixed-version Devnet 2 gate (the amended 0.3.20 node beside a 5899f603 node for ten minutes on the live file without the v4 fields) after the Mac build; the fresh-join canary the 0.3.20 cut's | | Main's rulings (7 October, morning) | no generator change to v4 on the live devnet; the record's null is the window model with numbers, sent by the hash lane to the attack-pass lane so AP-F8-1 re-gates against it; a fault beyond the model (a low-entropy source at site 15) stops at the coordinator with the two options priced (a 0.3.19 class amendment before the flip, or the flip held at the floor), nothing shipping without the founder's word; the tighter tail, an acceptance bound on the hot-set share, is a CLASS V5 item (sent to the v5 lane a6410f3b8abefb762 with the 64-seed census as its gate; the bound's number follows from the model) | From 53a4e844404e0cae0c7db240dac14aff01cc1b99 Mon Sep 17 00:00:00 2001 From: igneum-labs <337424239+igneum-labs@users.noreply.github.com> Date: Fri, 9 Oct 2026 08:13:33 +0000 Subject: [PATCH 05/11] workers page: load by pid per box (9 October 2026, the founder's order): collect.mjs lists every job from /proc beside the cargo builds (node, miner, prover, worker, suite, fuzz, harness, service, chip, archive; counts per kind, browsers counted only), the page renders the list on each box card and reads busy from it; the mini card carries its miner line (app version, node DAA and state, rate, last accepted block, node pid; "no miner report" when absent); the PC cards read their report age honestly (STALE over ten minutes) and show the intake report fields when a PC has posted one. Co-Authored-By: Claude Fable 5.1 --- tools/workers/collect.mjs | 49 +++++++++++++++++++++++++++++++++ tools/workers/page/workers.html | 45 ++++++++++++++++++++++++++++-- 2 files changed, 91 insertions(+), 3 deletions(-) diff --git a/tools/workers/collect.mjs b/tools/workers/collect.mjs index fad99beb4..78c37cc1d 100644 --- a/tools/workers/collect.mjs +++ b/tools/workers/collect.mjs @@ -66,6 +66,52 @@ function slots(now) { const files = safeList(LOCKS).map(n => ({ name: n, text: read(join(LOCKS, n)), held: /^(build-\d+|run-\d+|build|measure)$/.test(n) ? flockHeld(join(LOCKS, n)) : undefined })); return parseLockDir(files, { now, aliveFn: alive }); } +// ---- every job by pid, not only the cargo builds (the founder's order, 9 October 2026 09:15 UK: the page reads node, suite and +// fuzz load by pid per box). A process is listed when its command is one of the known binaries (igneumd, igneum-miner, the prover +// pair, the GPU workers, the chip tools), a test binary under a cargo target dir (a suite; "fuzz" in its arguments makes it a fuzz +// run), a script (bash, sh, node, python) whose path lies under /srv, /tmp or /home/build (a harness, a reader, a collector), or +// an archive stream into /srv/archive. Kernel threads, sshd, systemd and the shells of this collector are not jobs. Fields are read +// from /proc: the start time from stat, the resident set from statm, the CPU seconds from utime + stime. Capped at 48 by RSS. +const PROC_SKIP = new Set(['sshd', 'systemd', 'systemd-journal', 'systemd-logind', 'systemd-resolve', 'systemd-timesyn', 'systemd-network', 'systemd-udevd', 'cron', 'dbus-daemon', 'agetty', 'login', 'kthreadd', 'sleep', 'ps', 'awk', 'grep', 'sed', 'cut', 'sort', 'tail', 'head', 'cat', 'flock', 'sccache', 'caddy', 'gitea', 'docker-proxy', 'dockerd', 'containerd', 'containerd-shim', 'unattended-upgr', 'polkitd', 'rsyslogd', 'chronyd', 'multipathd', 'snapd', 'qemu-ga', 'irqbalance', 'packagekitd', 'fwupd', 'collect.mjs']); +function procKind(comm, args) { + const a0 = args[0] || '', line = args.join(' '); + if (comm === 'igneumd') return 'node'; + if (comm === 'igneum-miner') return 'miner'; + if (/^igneum-prove/.test(comm)) return 'prover'; + if (/^igneum-worker/.test(comm)) return 'worker'; + if (/^(openroad|kepler-formal|yosys|klayout|magic|ngspice)/.test(comm)) return 'chip'; + if (/\/target[^ ]*\/deps\//.test(a0) || /\/target\/[^ ]*\/(release|debug)\//.test(a0)) return /\bfuzz\b/i.test(line) ? 'fuzz' : 'suite'; + if (/^(rsync|tar|zstd|pigz|gzip|xz)$/.test(comm) && /\/srv\/archive/.test(line)) return 'archive'; + if (/^(headless_shell|chrome|chromium)/.test(comm)) return 'browser'; + if (/^(bash|sh|zsh|node|python3?|perl)$/.test(comm)) { + const script = args.find((x, i) => i > 0 && /^\/(srv|tmp|home\/build)\//.test(x) && !/^-/.test(x)) || (/^\/(srv|tmp|home\/build)\//.test(a0) ? a0 : null); + if (!script) return null; + if (/harness|canary|roll|heal|fuzz|suite|gate/.test(script)) return 'harness'; + if (/reader|collect|merge|observer|intake|keep-alive|serve/.test(script)) return 'service'; + return 'script'; + } + if (/^\/(srv|home\/build)\//.test(a0) && !/\/\.cargo\/|\/\.rustup\//.test(a0)) return 'other'; + return null; +} +function jobs(bootSec, clk, now, selfPid) { + const out = [], counts = {}; + for (const d of safeList('/proc')) { + if (!/^\d+$/.test(d)) continue; + const pid = Number(d); if (pid === selfPid) continue; + const comm = read(`/proc/${d}/comm`).trim(); if (!comm || PROC_SKIP.has(comm)) continue; + const args = read(`/proc/${d}/cmdline`).split('\0').filter(Boolean); if (!args.length) continue; // a kernel thread + const kind = procKind(comm, args); if (!kind) continue; + const stat = read(`/proc/${d}/stat`); const rest = stat.slice(stat.lastIndexOf(')') + 2).split(' '); + const utime = Number(rest[11]) || 0, stime = Number(rest[12]) || 0, startTicks = Number(rest[19]); + const started = Number.isFinite(startTicks) ? (bootSec + startTicks / clk) * 1000 : null; + const rssPages = Number((read(`/proc/${d}/statm`).split(' ')[1]) || 0); + counts[kind] = (counts[kind] || 0) + 1; + if (kind === 'browser') continue; // counted, not listed: a site gate spawns a dozen renderer processes + out.push({ pid, kind, comm, cmd: args.join(' ').slice(0, 160), started_at: started ? iso(started) : null, elapsed_s: started ? Math.max(0, Math.round((now - started) / 1000)) : null, rss_mb: Math.round(rssPages * 4096 / 1048576), cpu_s: Math.round((utime + stime) / clk) }); + } + out.sort((a, b) => b.rss_mb - a.rss_mb); + return { list: out.slice(0, 48), counts }; +} function procs(bootSec, clk, now) { const running = [], waiters = []; let compilers = 0; const flockParents = new Map(); // ppid -> since, from the flock -w processes the waiters run @@ -127,6 +173,7 @@ export function collect() { const bootSec = Math.round((now - m.uptime_s * 1000) / 1000); const s = slots(now); const p = procs(bootSec, m.clk, now); + const j = jobs(bootSec, m.clk, now, process.pid); // attach the slot holder to its build (the label names the worktree and crate the cargo runs in) for (const r of p.running) { const h = s.held.find(h => h.worktree === r.worktree && (!h.crate || h.crate === r.crate || !r.crate)); @@ -157,6 +204,8 @@ export function collect() { running: p.running, queue: p.waiters, compilers: p.compilers, + jobs: j.list, // every job by pid (node, miner, prover, worker, suite, fuzz, harness, service, chip, archive, other) + jobs_by_kind: j.counts, // counts per kind, browsers counted here only recent: recent.rows, log: { path: LOG, present: !!logText, bad_lines: recent.bad, total: recent.total, note: logText ? null : 'builds.jsonl is not written yet: the build-server agent adds the append to bs_remote_run; until then this lane fills from nothing' }, }, diff --git a/tools/workers/page/workers.html b/tools/workers/page/workers.html index abb2c5465..995f841fe 100644 --- a/tools/workers/page/workers.html +++ b/tools/workers/page/workers.html @@ -150,6 +150,11 @@ .sources b { color: var(--good); font-weight: 500; } .sources b.no { color: var(--bad); } .sources b.warn { color: var(--warn); } a:focus-visible, button:focus-visible { outline: 2px solid var(--ember-2); outline-offset: 2px; } @media (prefers-reduced-motion: reduce) { .live b, .server.hot::after, .job .pulse, .cores i.hot::after { animation: none !important; } .cores i::after, .g .arc { transition: none; } } + .jobs { margin: 8px 0 2px; font-size: 12px; line-height: 1.5; } + .jobshead { color: var(--ember, #f2541b); margin-bottom: 2px; } + .jobrow { display: flex; gap: 10px; flex-wrap: wrap; border-top: 1px solid rgba(255,255,255,.06); padding: 2px 0; } + .jobrow b { min-width: 56px; } + .muted { opacity: .7; }
    @@ -218,6 +223,26 @@ function boxState(b) { // live | down | provisioning, with the line the cards } const buildHeld = b => (b.slots && b.slots.held || []).filter(h => /^build-\d+$/.test(h.slot)).length; const boxesOf = d => (Array.isArray(d.boxes) && d.boxes.length ? d.boxes : d.box ? [{ ...d.box, source: d.sources && d.sources.box, headline: d.headline }] : []); +// load by pid (9 October 2026): every job the box's collector lists from /proc (node, miner, prover, worker, suite, fuzz, harness, +// service, chip, archive), not only the cargo builds; counts per kind, then the list with pid, age and resident set +const JOB_ORDER = ['node', 'fuzz', 'suite', 'harness', 'prover', 'miner', 'worker', 'chip', 'archive', 'service', 'script', 'other', 'browser']; +function jobsSummary(b) { + const c = (b && b.jobs_by_kind) || {}; const parts = JOB_ORDER.filter(k => c[k]).map(k => `${c[k]} ${k}${c[k] === 1 ? '' : (k === 'browser' ? 's' : k.endsWith('s') ? '' : 's')}`); + return parts.join(', '); +} +function jobsBlock(b) { + const jobs = (b && b.jobs) || []; const sum = jobsSummary(b); + if (!jobs.length && !sum) return `
    load by pid: nothing but the collector (no node, suite, fuzz or harness process on this box)
    `; + const rows = jobs.slice(0, 14).map(j => `
    ${esc(j.kind)} pid ${j.pid} ${esc(j.comm)} ${j.elapsed_s === null ? '' : esc(fmtDurShort(j.elapsed_s)) + ' up'} ${j.rss_mb} MB ${esc(j.cmd.slice(0, 96))}
    `).join(''); + return `
    load by pid: ${esc(sum || 'none')}${jobs.length > 14 ? ` (${jobs.length - 14} more in workers.json)` : ''}
    ${rows}
    `; +} +function miniMinerLine(m) { + const x = m && m.miner; if (!x) return 'no miner report'; + const daa = x.node_daa === null || x.node_daa === undefined ? '?' : Number(x.node_daa).toLocaleString('en-GB'); + const rate = x.rate_mhs === null || x.rate_mhs === undefined ? '0 MH/s' : `${Number(x.rate_mhs).toFixed(1)} MH/s`; + const last = x.last_accepted_at ? String(x.last_accepted_at).replace(/^\d{4}-\d{2}-\d{2}T/, '') : 'none'; + return `igneum-app ${esc(x.app_version || '?')} · node DAA ${daa} (${esc(x.node_state || (x.synced ? 'synced' : 'unknown'))}) · ${rate} ${esc(x.mining || '')} · last block ${esc(last)} · node pid ${x.node_pid ?? '?'}`; +} function serverSection(b, i) { const id = `srv${i}`; const st = boxState(b); @@ -232,6 +257,7 @@ function serverSection(b, i) {
    ${[...temps, b.net ? `net ↓${esc(fmtBps(b.net.rx_bps))} ↑${esc(fmtBps(b.net.tx_bps))}` : '', `${stale ? 'STALE, ' : ''}read ${esc(ago(b.collected_at))}`].filter(Boolean).map(x => `${x}`).join('')}
    ${Array.from({ length: n }, (_, i) => { const p = per[i] ?? 0; return ``; }).join('')}
    ${n} cores, ${b.cpu ? b.cpu.cores_busy : 0} busy${b.cpu ? `${b.cpu.busy_pct}% of the box over the last second, ${b.compilers || 0} compilers running` : ''}
    + ${jobsBlock(b)}
    ${arc(b.cpu ? b.cpu.busy_pct : 0)}
    CPU
    ${b.cpu ? b.cpu.busy_pct : 0}%
    load 1 min ${b.load ? Number(b.load[0]).toFixed(1) : '?'} of ${b.cores}
    ${arc(m.used_pct, tone(m.used_pct))}
    Memory
    ${m.used_pct ?? '?'}%
    ${esc(fmtBytes((m.used_kb || 0) * 1024))} of ${esc(fmtBytes((m.total_kb || 0) * 1024))}
    @@ -263,7 +289,7 @@ function renderCrew() { const st = boxState(bx); if (st.kind === 'down') { cards.push(`
    ${esc(bx.name)}
    build server
    ${pill('down', 'error')}
    ${esc(st.note)}
    `); continue; } if (st.kind === 'provisioning' && !st.live) { cards.push(`
    ${esc(bx && bx.name || 'build server')}
    build server
    ${pill('provisioning', 'queued')}
    ${esc(st.note)}
    `); continue; } - if (bx && bx.cores) cards.push(`
    ${esc(bx.name)}
    Hetzner, ${bx.cores} threads, ${esc(fmtBytes((bx.mem && bx.mem.total_kb || 0) * 1024))}, RAID 1 NVMe
    ${pill(bx.running && bx.running.length ? 'building' : 'idle', bx.running && bx.running.length ? 'running' : '')}
    ${bx.running && bx.running.length ? bx.running.map(r => esc(`${r.worktree || '?'}: ${kindLabel(r.kind)}`)).join('
    ') : (st.kind === 'provisioning' ? esc(st.note) : 'Slot free. The next build-remote.sh or cross-remote.sh routed here takes it.')}
    ${slotBar(bx.slots, bx.slots ? bx.slots.count : 1)}
    ${bx.recent ? bx.recent.length : 0} builds logged${esc(ago(bx.collected_at))}
    `); + if (bx && bx.cores) cards.push(`
    ${esc(bx.name)}
    Hetzner, ${bx.cores} threads, ${esc(fmtBytes((bx.mem && bx.mem.total_kb || 0) * 1024))}, RAID 1 NVMe
    ${pill(bx.running && bx.running.length ? 'building' : jobsSummary(bx) ? 'busy' : 'idle', bx.running && bx.running.length ? 'running' : '')}
    ${bx.running && bx.running.length ? bx.running.map(r => esc(`${r.worktree || '?'}: ${kindLabel(r.kind)}`)).join('
    ') : (st.kind === 'provisioning' ? esc(st.note) : 'Slot free. The next build-remote.sh or cross-remote.sh routed here takes it.')}
    ${slotBar(bx.slots, bx.slots ? bx.slots.count : 1)}
    ${bx.recent ? bx.recent.length : 0} builds logged${esc(ago(bx.collected_at))}
    `); else cards.push(`
    ${esc(bx && bx.name || 'build server')}
    build server
    ${pill('unreachable', 'error')}
    ${esc(bx && bx.source && bx.source.error || 'no facts from this box')}
    `); } if (mac) { @@ -272,10 +298,23 @@ function renderCrew() { cards.push(`
    ${esc(mac.name)}
    this MacBook, ${mac.build_slots} build slot${mac.build_slots === 1 ? '' : 's'}, 3 run slots
    ${pill(meas.length ? 'measuring' : builds.length ? 'building' : runs.length ? 'running' : 'idle', held.length ? 'running' : '')}
    ${doing}
    ${['build-0', 'build-1', 'build-2', 'run-0', 'run-1', 'run-2', 'measure'].map(nm => { const h = held.find(x => x.slot === nm); return ``; }).join('')}
    ${mac.queue.length ? mac.queue.length + ' waiting for a slot' : 'nobody waiting'}${esc(ago(mac.collected_at))}
    `); } else cards.push(`
    MacBook-Pro
    this MacBook
    ${pill('no push', 'error')}
    ${MAC_COPY}
    `); { const m = miniLive(); const held = m && m.slots && m.slots.held || []; - cards.push(`
    ${MINI.name}
    ${MINI.label}
    ${pill(!m ? 'no report' : held.length ? 'building' : 'idle', !m ? 'queued' : held.length ? 'running' : '')}
    ${!m ? 'no report yet' : held.length ? held.map(h => esc(`${h.slot}: ${h.worktree || h.label || ''}`)).join('
    ') : 'macOS binaries build here from tonight; slot free.'}
    ${m && m.slots ? slotBar(m.slots, m.slots.count || 1) : ''}
    ${m ? `${(m.recent || []).length} builds logged` : 'its collector pushes to build-1'}${m ? esc(ago(m.collected_at)) : ''}
    `); } + cards.push(`
    ${MINI.name}
    ${MINI.label}
    ${pill(!m ? 'no report' : held.length ? 'building' : 'idle', !m ? 'queued' : held.length ? 'running' : '')}
    ${!m ? 'no report yet' : (esc(miniMinerLine(m)) + '
    ') + (held.length ? held.map(h => esc(`${h.slot}: ${h.worktree || h.label || ''}`)).join('
    ') : 'macOS binaries build here from tonight; slot free.')}
    ${m && m.slots ? slotBar(m.slots, m.slots.count || 1) : ''}
    ${m ? `${(m.recent || []).length} builds logged` : 'its collector pushes to build-1'}${m ? esc(ago(m.collected_at)) : ''}
    `); } + const pcsAt = D.pcs && D.pcs.collected_at ? Date.parse(D.pcs.collected_at) : null; const pcsAge = pcsAt ? Math.round((Date.now() - pcsAt) / 1000) : null; + const pcsAgeText = pcsAge === null ? 'report age unknown' : `report ${fmtDurShort(pcsAge)} old${pcsAge > 600 ? ', STALE' : ''}`; + // a PC's five-minute report through the intake (9 October 2026): the known fields on one line, the rest of the report left in workers.json + const pcReportLine = pc => { const r = pc.report; if (!r || !Object.keys(r).length) return ''; const f = []; + if (r.app_version) f.push(`igneum-app ${esc(String(r.app_version))}`); + if (r.node_daa !== undefined && r.node_daa !== null) f.push(`node DAA ${Number(r.node_daa).toLocaleString('en-GB')}${r.node_state ? ' (' + esc(String(r.node_state)) + ')' : r.synced === false ? ' (behind)' : ''}`); + if (r.rate_mhs !== undefined && r.rate_mhs !== null) f.push(`${Number(r.rate_mhs).toFixed(1)} MH/s`); + if (Array.isArray(r.cards)) f.push(r.cards.map(c => `${esc(String(c.name || c.id || 'card'))} ${c.rate_mhs === undefined || c.rate_mhs === null ? '?' : Number(c.rate_mhs).toFixed(1)} MH/s`).join(', ')); + if (r.last_accepted_at) f.push(`last block ${esc(String(r.last_accepted_at).replace(/^\d{4}-\d{2}-\d{2}T/, ''))}`); + if (r.agent_pid || r.node_pid) f.push(`pids agent ${r.agent_pid ?? '?'} node ${r.node_pid ?? '?'}`); + return f.join(' · '); }; for (const pc of pcs) { const r = pc.running; - cards.push(`
    ${esc(pc.name)}
    ${esc(pc.machine || pc.id)} · ${esc(pc.role)}
    ${pill(r ? 'running' : pc.queue.length ? 'queued' : 'idle', r ? 'running' : pc.queue.length ? 'queued' : '')}
    ${r ? `${esc(r.kind)} ${esc(r.job)}${r.title ? '
    ' + esc(r.title) : ''}${r.stage ? `
    stage ${esc(r.stage)}` : ''}` : pc.queue.length ? `Next: ${esc(pc.queue[0].kind)} ${esc(pc.queue[0].job)}${pc.queue[0].title ? ', ' + esc(pc.queue[0].title) : ''}` : esc(pc.note || 'idle on jobs; the relay polls every 10 min')}
    ${pc.recent.length} reports kept${pc.last_report_at ? 'last report ' + esc(ago(pc.last_report_at)) : 'no report in 7 days'}
    `); + const pcAge = pc.report_age_s === undefined || pc.report_age_s === null ? pcsAge : pc.report_age_s; + const pcAgeText = pcAge === null ? 'report age unknown' : `report ${fmtDurShort(pcAge)} old${pcAge > 600 ? ', STALE' : ''}${pc.source === 'intake' ? ', from the PC' : ''}`; + cards.push(`
    ${esc(pc.name)}
    ${esc(pc.machine || pc.id)} · ${esc(pc.role)} · 600 ? 'style="color:var(--warn)"' : ''}>${esc(pcAgeText)}
    ${pill(r ? 'running' : pc.queue.length ? 'queued' : 'idle', r ? 'running' : pc.queue.length ? 'queued' : '')}
    ${pcReportLine(pc) ? pcReportLine(pc) + '
    ' : ''}${r ? `${esc(r.kind)} ${esc(r.job)}${r.title ? '
    ' + esc(r.title) : ''}${r.stage ? `
    stage ${esc(r.stage)}` : ''}` : pc.queue.length ? `Next: ${esc(pc.queue[0].kind)} ${esc(pc.queue[0].job)}${pc.queue[0].title ? ', ' + esc(pc.queue[0].title) : ''}` : esc(pc.note || 'idle on jobs; the relay polls every 10 min')}
    ${pc.recent.length} reports kept${pc.last_report_at ? 'last report ' + esc(ago(pc.last_report_at)) : 'no report in 7 days'}
    `); } if (!pcs.length) cards.push(`
    PC 1 and PC 2
    relay jobs
    ${pill('no data', 'error')}
    ${esc(D.sources && D.sources.pcs && D.sources.pcs.error || 'the Mac pusher reads the relay intake; nothing has arrived')}
    `); $('crew').innerHTML = cards.join(''); From 57dfdbac4876ba9dba50933e64e183c0696547ab Mon Sep 17 00:00:00 2001 From: igneum-labs <337424239+igneum-labs@users.noreply.github.com> Date: Fri, 9 Oct 2026 08:16:25 +0000 Subject: [PATCH 06/11] Token Value decisions ratified 9 October: the litepaper and economics page read the cap fixed with no tail emission and no vote that expands it under the pre-launch security-funding gate (D01), the schedule's pacing under comparison and not final (D02), every fee and burn route explicit with the 80/20 coinbase an emission allocation only and external-job charges not yet set (D04); the explorer pages' recovery lock never shown as final (D05); the leadership line cites D06; a ratified decision is a rule, not a promise of value Co-Authored-By: Claude Fable 5.1 --- docs/fud-ledger-2.0.md | 2 +- site/address.html | 2 +- site/block.html | 2 +- site/claims.html | 2 +- site/economics.html | 6 +++--- site/explorer.html | 2 +- site/ledger.html | 2 +- site/litepaper.html | 16 ++++++++-------- site/live.html | 2 +- site/proving.html | 2 +- site/scenes.html | 2 +- site/scorecard.html | 2 +- site/tx.html | 2 +- 13 files changed, 22 insertions(+), 22 deletions(-) diff --git a/docs/fud-ledger-2.0.md b/docs/fud-ledger-2.0.md index 525994b7b..003050294 100644 --- a/docs/fud-ledger-2.0.md +++ b/docs/fud-ledger-2.0.md @@ -298,7 +298,7 @@ Pin: Leadership tests, first box (Ergo). Status: Conceded (8 October 2026): no "number one" claim before comparative results and adoption exist. -Answer: No present-tense rank is served. Published claims name the evaluated release, evidence and boundary conditions. Designed to compete for leadership among GPU-first networks. That is the scoped wording until a ranking is measured (the Token Value volume’s rule VR-30, scoped claims only, 9 October 2026): an independently substantiated pass of the acceptance standard would not award a numerical rank, nor guarantee adoption, perpetual GPU profitability or the defeat of every future chip. The tests that would earn it are miners staying through hard conditions, customers repeatedly paying for proofs, and the network running without the founding team (D5); none is met yet. +Answer: No present-tense rank is served. Published claims name the evaluated release, evidence and boundary conditions. Designed to compete for leadership among GPU-first networks. That is the scoped wording until a ranking is measured (the Token Value volume’s rule VR-30 and decision D06, scoped claims only, ratified 9 October 2026): an independently substantiated pass of the acceptance standard would not award a numerical rank, nor guarantee adoption, perpetual GPU profitability or the defeat of every future chip. The tests that would earn it are miners staying through hard conditions, customers repeatedly paying for proofs, and the network running without the founding team (D5); none is met yet. Evidence: `docs/plans/igneum-2.0.md` (Leadership tests, second to fifth boxes). diff --git a/site/address.html b/site/address.html index 55a375f0d..fc17837fe 100644 --- a/site/address.html +++ b/site/address.html @@ -291,7 +291,7 @@ main{padding-bottom:100px}.card{background:var(--row);border:1px solid var(--lin
    BlockNumberDAABlue scoreColourSubsidyTxsTime
    -

    Four words, used exactly. Included: the block carries the transaction. Executed: the EVM ran it and the result is on the record. Proven: a valid proof record for its block was carried and paid. Finalised: the block sits under a certified checkpoint, two thirds of active and of total weight. A pause in finality is shown as a pause, never as a block losing its lock. Recovery lock: after a full weight window with no lock, a checkpoint signed by more than half of the anchored weight; shown as a recovery lock, never as finalised. On the devnet’s current node line the lock kind is reported by the forming node only: a node that received the certificate records an ordinary lock, so a recovery lock can read as final on a receiving node until the 2.0.3 node line lands. The definitions are the finality specification’s: section 9, the guarantees.

    +

    Four words, used exactly. Included: the block carries the transaction. Executed: the EVM ran it and the result is on the record. Proven: a valid proof record for its block was carried and paid. Finalised: the block sits under a certified checkpoint, two thirds of active and of total weight. A pause in finality is shown as a pause, never as a block losing its lock. Recovery lock: after a full weight window with no lock, a checkpoint signed by more than half of the anchored weight; shown as a recovery lock, never as final (the Token Value volume’s D05). On the devnet’s current node line the lock kind is reported by the forming node only: a node that received the certificate records an ordinary lock, so a recovery lock can read as final on a receiving node until the 2.0.3 node line lands. The definitions are the finality specification’s: section 9, the guarantees.