ADR-081: Problem Admission and the Skeleton Intake Pipeline

Field Value
Decision ID ADR-081
Initiative unsorry — turning an admissible problem into pipeline-consumable work
Proposed By unsorry maintainers; operational companion to ADR-080 and ADR-078
Date 2026-06-20
Status Accepted

Ratified (2026-06-24, #5643) by Chris Barlow (founder). ADR-080 says which problems are admissible (policy); this says how an admissible problem becomes work the swarm can consume (mechanism). It is part of a four-ADR set reconciled with Leo’s (#3232/#3246): 078 (Leo) = how contribution earns credit · 079 (Leo) = deterministic sympy solver · 080 = what’s admissible (gating invariant) · 081 = how it’s consumed (this). skeleton-validate (SPEC-081-A) is the registration-time validator ADR-078 asks for; the credit function stays ADR-078’s.

Context

The pipeline consumes exactly one kind of thing — an open Lean goal — yet there is no defined contract for getting a real-world target into that form. A mathematician with a half-formalised theorem, or the Lion team with a kernel proof, has no checklist for “what must I hand over for the swarm to start discharging my obligations?” Today that scoping is ad-hoc. This ADR defines the intake contract and the admissibility validator so onboarding a target is a repeatable procedure, not tribal knowledge.

The fixed end of the funnel (what the swarm already eats) is concrete. An open goal is:

Everything upstream of that is “scoping.” This ADR specifies that upstream.

WH(Y) Decision Statement

In the context of a domain-neutral engine (ADR-080) that consumes only open Lean goals, with no defined way to turn a real target into them, facing the choice between leaving intake ad-hoc and defining an explicit intake contract + validator, we decided for a skeleton intake contract: a target is admitted as a curated package only when its supplier provides (1) a type-checking formal top statement, (2) an architected skeleton — the decomposition into sorry obligations with dependency edges, (3) the emitted goal records for each open obligation, and (4) a resolvable pinned verifier context; validated by a skeleton-validate check before any obligation enters the queue, and neglected ad-hoc intake (unrepeatable, lets ill-formed or unverifiable targets in, and undermines ADR-078’s credit accounting because edges may be unsound), to achieve a repeatable on-ramp a mathematician or the Lion team can follow, that guarantees every queued obligation is individually checkable and every package is a real architected tree (so ADR-078’s credited-obligation accounting is meaningful and ADR-080’s gating invariant is enforced at intake), accepting that steps 1–2 (formalise + architect) are human/curation work — the least automatable part — and that the supplier, not the swarm, authors the skeleton.

Admissibility test (ADR-080, made checkable)

A candidate problem is admissible iff all three hold:

  1. Formally statable with a kernel-grade verifier (Lean preferred). The verifier is the gate (ADR-080 clause 1).
  2. Decomposable into independent, claimable obligations.
  3. Each obligation is checkable in isolation (so each merge re-verifies).

Three admissible shapes: theorem formalisation · formal software/hardware verification (spec→impl refinement, e.g. Lion) · construction + exact certificate (validity, not optimality, is kernel-checkable).

The intake funnel

raw target
 → 1. FORMALISE the top statement   — Lean, type-checks under pinned context   [human]
 → 2. ARCHITECT the skeleton        — decompose into `sorry` obligations +     [supplier]
        dependency edges (the curated tree; NOT swarm-minted)
 → 3. EMIT goal records             — each open `sorry` → goals/<id>.aisp +    [mechanical]
        goals/<id>.lean, deps wired
 → 4. PIN verifier context          — toolchain + library (+ spec/refinement   [mechanical]
        framework for software targets)
 → 5. swarm CONSUMES                — claim → prove → Gate A re-verify → merge; [existing]
        unproved → decompose → re-queue

Steps 1–2 are the human front door; 3–5 are existing machinery. Onboarding a target = doing 1–2 and producing the artifacts of 3–4.

skeleton-validate — the intake gate (new)

A submitted package is admitted only if it passes, deterministically:

A package failing any check is rejected at intake — never partially queued.

Consequences

Open questions — status at ratification (#5643)

  1. Spec + refinement-framework attachment for software targets (step 4) — deferred; the first math/benchmark packages don’t need it, and Lion will define it in practice.
  2. skeleton-validate — gate or tool? Resolved: both — an intake tool run by the onboarding operator and a blocking CI check on the targets/** package PR (SPEC-081-A).
  3. Autoformalisation assist for step 1 — deferred; suppliers hand over a type-checking top statement for now.

Status History

Status Approver Date
Draft unsorry maintainers 2026-06-20
Accepted Chris Barlow (founder, #5643) 2026-06-24