How decisions get made
Capability discovery and synthesis
An organization knows what it needs. It doesn't know which of the thousands of things providers offer, alone or combined, would meet that need, whether it's allowed to use them that way, or whether the answer still holds next month. Discovery is the work of finding out, with evidence. Synthesis is composing what it finds into candidates. Both are ordinary organizational work, done by parties with bounded powers, and both stop at the edge of the providers' terms.
The need side
The compiler derives the requirement statement (IR-R) from the definitions: every hard and soft intent, and every norm that needs a mechanism, becomes a required capability traced to its source.
- A maintain intent yields an observe requirement with a freshness derived from how fast deviation must be detected, and an act requirement if the spec names one.
- A prohibition yields an observe requirement over its aim: you can't enforce what you can't see.
- A budget yields metering; an obligation to inform yields delivery; a power yields authorization; every external verb yields the external capability.
- Requirements inherit tradeability. A plan that leaves a non-tradeable requirement unmet is inadmissible, not merely penalized.
The Architect works from IR-R, not the source: required contracts, their current statuses and evidence expiry, non-tradeable constraints, the objective and budgets. It doesn't need to know who occupies which position.
The supply side is claims
A provider's catalog enters as offered capabilities, one per operation or bundle, and a claim per property, asserted by the provider at status N. A provider's category name ("backup archive", "edge cache") is kept as metadata and ignored by matching. What matters is the affordance vector: the evidenced properties of the primitive, whether or not the provider markets them.
Matching by contract
A candidate realizes a requirement when a refinement argument can be built for it, conjunct by conjunct:
| Conjunct | Question |
|---|---|
| Signature | Do inputs and outputs unify, under recorded vocabulary mappings? |
| Assumptions | Does the requirement's assumption imply the offer's? |
| Guarantee | Does the offer's guarantee, under those assumptions, imply the requirement's? |
| Properties | For each required property, is there evidence at T that meets the threshold? |
| Terms | Do the provider's terms permit this use, and do they conflict with any non-tradeable norm? |
Each conjunct has a status. The argument's status is their meet, so one N anywhere makes the candidate N.
Composition: finding things nobody sells
When no single offer refines a requirement, the search decomposes the contract (durable persistence → append + index + retention + jurisdiction pin, and so on) and binds each part to an offer, an offer plus an adapter, another provider's offer, or an existing organizational resource such as a bound realization's export operation or a human procedure. Adapters are offered capabilities with their own small contracts and costs. The composite's properties are derived by declared composition rules; a missing rule is U and leaves the composite at N.
Text description of this diagram
- Required capability kind DurableObjectStorage: durable, key-addressable, persistent, low-latency-get.
- Composite offer BlobVault + EdgeKV(front) via a read-through cache adapter, synthesized three days after EdgeKV appeared. It refines the requirement (
arch.Refines, status T, from 4 sandbox probes). - Part BlobVault (provider kind "backup archive", metadata only): durable T, key-addressable T, persistent T, low-latency-get T; the last two were unmarketed and found by probe.
- Part EdgeKV (provider kind "edge cache", new offer on day 90): conditional-write T, persistent T, both unmarketed.
- Claim pr.ContractPermitted (Counsel's finding on the terms): on day 155 a
pr.TermsForbidfinding attacked it and the composite became inadmissible.
Aggressive inside the terms, never outside
Admissibility is a conjunction with a hard unknown:
admissible(r) = permitted(r) ∧ lawful(r) ∧ no non-tradeable norm in force is violated by rIf contract permissibility is N, admissibility is N, and N is not permission. Provider intent is evidence, not a boundary: "the provider markets this for X" weakly supports permission for X but neither admits nor excludes Y. What excludes a use is a term the use would breach. What admits it is evidence that no term does: counsel's finding, an attestation, or the provider's own statement under a trust policy that gives providers standing on their own terms.
The provider-research organization makes this a constitutional line, and conditions the sandbox power itself on it, so an impermissible probe isn't forbidden and punished afterwards. It simply can't validly happen:
norm WithinTerms {
prohibition on any Party
aim occurred execute(pr.Probe(o, prop)) and not holds pr.ContractPermitted(o)
level constitutional not tradeable not defeasible
}
pattern Experiment(owner : Party, hypothesis : Entity, budget : Quantity, duration : Duration) {
scope Exp : org.Project in Research {
position ExpOwner { cardinality 1 }
requires capability Sandbox { operation probe(o : Entity) -> outcome : Claim for Tested }
norm SandboxProbe { power of ExpOwner to authorize execute about pr.Probe
when holds pr.ContractPermitted(hypothesis)
level operational }
use fin.Budget(scope = here, resource = econ.Money, limit = budget, reserve = 0 USD,
window = lifetime, orElse = gov.Freeze(except = { })) as ExpBudget
}
}Provider research as an organization
Discovery at fleet scale is itself an Endoskeletal organization, with ten scopes running a twelve-step lifecycle as obligations:
DISCOVER → DOCUMENT → DECOMPOSE → HYPOTHESIZE → CHECK TERMS → EXPERIMENT → CLASSIFY → MAP → TEST COMPOSITIONS → VERIFY → PUBLISH → REVERIFY
Model-based positions (Reader, Decomposer, Hypothesizer, SecurityAnalyst) produce claims at N. Counsel, a person, rules on the terms for every hypothesis before any probe. Programs experiment, verify and publish. An Economist program ranks research by fleet demand × importance × uncertainty × savings × reuse ÷ probe cost. Over 270 days against a fictional provider:
| Unmarketed affordances found by experiment | 8 of 9. The ninth (a scheduled-jobs service used as general execution) is the one the terms forbid testing; the organization doesn't know it, on purpose |
| First-order hypotheses | 24 proposed, 16 refuted in the sandbox |
| Compositions verified and published | BlobVault + EdgeKV(front) as DurableObjectStorage; EventRelay + StateStore(dedupe) as DurableQueue |
| Deliberate misfires | 2, both an experimenter pressing ahead while Counsel's finding was N. Nothing was executed |
| Reverifications as claims aged | 114, all confirmed |
| Cost | 344.07 USD of sandbox probes, 36.38 USD surrogate inference, 7,560 min of Counsel attention |
Knowledge bundles
Research is published as a bundle: content-addressed claims with their sources, validity and a verification policy. Importing a bundle doesn't make its claims true. They're asserted under the importer's trust policy, usually N until corroborated by the importer's own probe or a second publisher. Bundles never attack each other; corroboration and contradiction are derived claims.
{
"@type": "KnowledgeBundle",
"name": "endoskeletal/knowledge/aurelian/durableobjectstorage",
"version": "2027.04.09",
"valid_from": "2027-04-09", "valid_to": "2027-06-08",
"verification_policy": {
"reverify_after": "P60D",
"method": "sandbox re-probe",
"corroborate_with": ["an importer's own sandbox probe", "a second research organization's bundle"]
},
"claims": [{
"proposition": ["prop", "arch.Refines", "esk:entity/f97e033a98f5c8f0f58e682e", "DurableObjectStorage"],
"provenance": "derived",
"evidence": ["obs-9a9defab7a44", "obs-3bc26564368d", "obs-8237d1df775b", "obs-572941aae3fa"],
"confidence": { "p": 0.9 },
"derivedFrom": { "method": "refinement argument" }
}],
"content_hash": "sha256-88bf13f0315459318637345d178a924d5ad0a10d7f41063363ceee5b7f87557e"
}A bundle is never edited. When the terms changed, the publisher issued durableobjectstorage@2027.06.06-revised containing a pr.TermsForbid claim that attacks the earlier refinement and supersedes the earlier content hash.
The capability frontier
For each requirement, at any index, the frontier says where the organization stands. REALIZABLE splits by authority: the check runs the felicity function on a hypothetical bind and discards the verdict.
| State | Meaning |
|---|---|
| REALIZED | A bound, active realization with satisfaction T |
| REALIZABLE within authority | An evidenced, admissible candidate exists and some occupied position could validly bind it now |
| REALIZABLE after amendment | A candidate is admissible under every non-tradeable norm, but every bind power excludes it (allow-list, cost cap, level) — the answer names which envelope term, and the amendment level needed |
| UNSATISFIABLE | Every candidate over the current catalog fails a conjunct at F. Derived from catalog claims, so it lapses when the catalog changes |
| UNKNOWN | Otherwise, partitioned by why: no evidence, expired evidence, contract permissibility unknown, composition rule missing |
Real transitions from the Meridian run:
| When | Requirement | State |
|---|---|---|
| week 1 | InferenceEU | UNSATISFIABLE (no catalog offer in EU jurisdiction) |
| week 32 | TicketTriage | UNKNOWN (expired evidence) |
| 2028-03-05, new offer | Observability | REALIZABLE within authority |
| week 61 | InferenceEU | UNKNOWN (contract permissibility) |
| week 62 | InferenceEU | REALIZED |
| 2028-07-01, offer removed | Queue | UNKNOWN (contract permissibility) |
| week 100 | Queue · Analytics · Observability | UNKNOWN (contract permissibility) |
tools/frontier.py answers the eight standing questions from this projection: what can we do now; what can we make true with existing authority; what after governance approval; what is blocked by provider availability; what is impossible and what would have to change; what remains unknown and why; and the cheapest and fastest paths to a given capability.