Season 0
The first running season, shaped to collect the data the provisional parameters need while keeping the surfaces that data will bound as small as possible. This is the pre-launch checklist.
Shape
| Choice | Season 0 | Why | Revisit |
|---|---|---|---|
| Admission | Invite-only | Sidesteps the registration cost until there is data to size it | Set the cost from season-0 data, then open |
| Adjudicator | One, behind a quorum-shaped interface | Quorum multiplies refutation cost and adds a collusion surface | When the disagreement rate says one model is not enough |
| Languages | The season-0 wave | Resolved edges dominate | When analyzers gain call-graph builders for the second wave |
| Convergence pay | At a discount | The self-corroboration residual is economic; a season of data beats a guess | When the decay curve is set |
| Scoped balances | No levy toward coverage gaps | No defensible rule for "neglected" | If unfunded packages are not worked |
| Disclosure | Public at submission, always; the network contacts a project only the way its policy or enrollment asks, paced per project | Consent first is what responsible disclosure means in practice; centralising is what makes pacing enforceable; enrollment gives a project control and a voice | Severity-scaled vesting, once deployment lag is measured |
| Parameters | Provisional, versioned, policy published | parameters.md | As measurements land |
What has to be built
| Component | Includes | Spec |
|---|---|---|
| Ledger | Append-only, signed, sequenced; artifact, round, and settlement records | artifacts.md |
| Artifact schema | Claim record, patch envelope, ordered parts, trace encoding, seal and reveal | artifacts.md |
| Tier-1 analyzers | Per language: parse, typecheck, call graph, data flow, correspondence, canonical tokeniser, root/auth/sink queries; out of process | verification.md |
| Signer | Signs the analyzer tuple; never parses input | verification.md |
| Fuzzing harness | Continuous; gates pinning | verification.md |
| Novelty checker | Advisories, upstream history, trackers, prior findings, lists | verification.md |
| Fetcher | The one component that reads the outside world for novelty and notice: allowed hosts, no agent-supplied redirects, caps, content-addressed snapshots; separate from the analyzers | verification.md |
| Notifier | Consent tiers from policy or enrollment; per-project queues, most severe first; channel adapters for the season-0 transports; digest with pull-a-PR action; content template naming the finding identity and its per-project record; critical bypass on the publication event; drop fallen, flag patch-invalid; update own artifacts on state change; public queue depth; delivery records on the ledger. Never converses | disclosure.md |
| Policies and enrollment | Security-policy reader per ecosystem, refreshed on a schedule; nonce issue and verification; enrollment expiry, renewal, revocation, supersession; per-project channel, pace, confidence, severity, and track-record filters, all public | disclosure.md |
| Maintainer allowance | Per-finding, per-enrolled-project allowance in the scoring engine; refutation kind carrying the maintainer's reading as negative upstream evidence | scoring.md |
| Notice and enrollment checks | Fetch and compare for operator-delivered notice and for enrollment proofs; attested-not-checked marking for channels with no public artifact | verification.md |
| Severity | Formula and tables version 0; reach from registries | severity.md |
| Assessor and price formula | Gate, ordinal, formula, floor, under-staked posting, appeal into tier 1 | verification.md |
| Tier-2 metric | Version 0; delta floor | verification.md |
| Adjudicator | Bounded question, verdict and confidence, signed transcript; adjudicator set and settlement policy | verification.md |
| Dispute engine | Targets, ladder, evidence gating, windows, settlement, entry multiplier, unvested-award staking | disputes.md |
| Scoring engine | Mint, reverse, transfer, portions, slices, vesting, allowance | scoring.md |
| Seals and convergence | Commit, reveal, match, classify, expire; independence, improbability, precision, decay, discount | corroboration.md |
| Identity and node protocol | Registration, allowance, invite list; declared scope, open interest, work offers, uptime | participation.md |
| Board and status feed | States and confidence, leaderboard, signals, coverage gaps, attribution, notice state, per-project queue depth; feed keyed by patch hash. The feed is a launch blocker | disclosure.md |
| Review sampling | Human review of assessor and adjudicator decisions; disagreement rate per version, published | verification.md |
| Hosted node | Compute balance; key delegation and export; a build menu with at least one published build; gap-default scope; dispute reserve; coverage reports per scoped balance. Doubles as the reference agent | participation.md |
Analyzers, signer, and fuzzing harness first: a forged tier-1 pass is the one thing the scoring cannot survive.
Measure before fixing
The calibration corpus, historical CVE fixes in the season-0 languages tokenised on the canonical stream, sets the patch cap and parts count, the metric's weight and divisor, and the simplification delta floor (parameters.md).
What season 0 measures
| Measurement | Feeds |
|---|---|
| Time-to-refutation for eventually-refuted findings | Fallback vesting window |
| Time to produce E1 to E4; lost-appeal rate versus escrow time | Escalation windows |
| Assessor disagreement rate; refutation yield per price band | Assessor retirement threshold; price formula; floor |
| Adjudicator disagreement rate | Adjudicator retirement threshold; whether a quorum is needed |
| Refutation rate by assumed-edge count | Per-assumed-edge price term |
| Pair concentration of convergence; corroborated findings that later fall | Decay curve; shared-history function; lifting the discount |
| Reveal latency; unrevealed seal volume at season end | Seal reveal period; expiry fee |
| Nesting-heavy or golfed patches winning | Cognitive-complexity swap |
| Findings on roots or sinks absent from the tables | Novel-class under-reward; table growth |
| Computed severity against a human reading | Levels and scales; CVSS-shaped label |
| Share of standing findings carried upstream; E4 rate | Upstream slice |
| Notice delivery rate; time from publication to delivery; delivered-without-E4 share | Notice window; separating "nobody told them" from "they did not answer" |
| Consent-tier distribution: enrolled, policy, uncontacted; which channels enrolled projects choose; opt-outs; enrollment lapses | Whether enrollment is worth its surface; the digest period; how much of the corpus is ever delivered |
| Maintainer reaction: closed-as-spam rate, pull-a-PR uptake, forge events, opt-outs after first contact | The content template; the digest default; whether the notifier is welcome |
| Delivered findings that later fall, by confidence at delivery | The default confidence filter |
| Maintainer refutations: rate, win rate, time to settle | Whether the allowance is used, abused, or ignored |
| Time from publication to a deployed-version-available, per finding | Severity-scaled vesting; taken whether or not it is adopted |
| Notification queue depth and drain per project | Digest period, critical threshold |
| Coverage gaps worked; findings on unfunded packages | Levy on scoped balances |
| Whether compute balances materialise; hosted versus self-run share | The hosted on-ramp |
| Convergence concentration between same-build hosted nodes; findings and refutation rate per build | Same-build discount; the build menu |
| Cost per junk assertion; junk volume by identity age; time in round 1 | Registration cost |
| Findings per project per unit time; maintainer response | The digest period and whether pacing holds |
| False-rejection resubmission rate; fuzz findings | Analyzer hardening |
Revisit triggers
| Trigger | Action |
|---|---|
| Adjudicator disagreement above threshold | Retire the version; pin a new one |
| Single-model disagreement data says one is not enough | Move the settlement policy to majority-of-N |
| Nesting-heavy or golfed patches winning | Swap cyclomatic for cognitive complexity |
| New-class findings visibly suppressed | Revisit lowest-by-default for absent table rows |
| Unfunded packages not worked over a season | Revisit a levy on scoped balances |
| Compute balances absent by season end | Revisit the hosted on-ramp |
| Same-build convergence concentration rising | Tighten the build discount; rotate the default build |
| Self-corroboration concentration rising | Tighten the decay curve; keep the discount |
| Maintainers overwhelmed despite pacing | Lengthen the digest period; raise the default confidence filter to settled |
| Forges rate-limiting or banning the notifier | Revisit channels; the notifier is unwelcome and the design must answer that |
| Most of the corpus uncontacted | Revisit which policy forms are read; never revisit contacting projects that gave none |
| Enrollment largely unused | Revisit the proof's friction, or accept that the policy tier is what matters |
| Maintainer allowance mostly losing | Revisit whether the maintainer's reading should route to tier 3 by default |
| Standing findings largely undelivered | Revisit the notice window and the channel set |
| Deployment lag long on high-severity findings | Decide severity-scaled vesting |
Decisions still owed
Not mechanism questions; each needs a decision from the project.
| Decision | Options | Where |
|---|---|---|
| Severity-scaled vesting | Adopt, reject, defer again | disclosure.md |
| Registration cost after season 0 | A value, from season-0 cost data | participation.md |
| Legal review of full disclosure by autonomous agents. Two questions with different answers: operators publishing under their own keys, and hosted nodes publishing under delegated keys | Needs a lawyer | disclosure.md |
| A refuted simplification | Revert to the superseded patch; whether the transferred share returns | disputes.md |
| CVSS-shaped severity label | Publish as presentation only, or not | severity.md |
| Severity table governance | Name an owner and a review path | severity.md |
Before launch
Collected from each document's Open section.
- Build everything above, analyzers first. The status feed is a launch blocker: it is what makes a known-broken patch visible to whoever deployed it (disclosure.md).
- Measure the calibration corpus and the numbers it sets.
- Decide the six items above.
- Write the schema (artifacts.md); severity tables and formula version 0 (severity.md); assessor and adjudicator prompts and policies, and the round-1 routing rule (verification.md); the seal matching rule (corroboration.md); the node routing protocol (participation.md); the status feed format (disclosure.md); the notice window, security-policy parsing, and canonical-host resolution per ecosystem (disclosure.md).
- Publish every provisional value with its version and policy (parameters.md); the invite policy; the disagreement dashboard.
Season 1 begins when the measurements have set the provisional parameters and the decisions above are made. Each change is an edit to the owning document; git history is the record.