Skip to main content

Project status

Where this stands

Canon 0.9.0 is a source release. Libraries b10x-canon and b10x-canon-expr, and command-line crate canon-cli, hold the implemented capabilities below.

data/status.json, generated by canon-docs from website/status.yaml and the AEP story statuses

Where this stands

The landing page's status strip reads the same file as this table. Each status is read from the planning store: shipped means the story that delivers it is implemented, decided means it is recorded in an accepted architecture decision and not built, planned means on the roadmap only.

CapabilityStatusDetail
Language
Typed catalog assertionsShippedcanon-expr/1 parsing, type checking, recipes, exact numbers, acquisition planning and pure replay over typed observations; available in source release 0.1.0.
protocol/1 source model and parserShippedArtifacts, evidence kinds, claims, obligations, actions, outcomes and invalidation rules, read strictly; unknown keys and explicit nulls are refused.
Deterministic validationShippedFormat, identifiers, duplicates, unresolved references and claim cycles, in a stable order.
canon-ir/1 compilationShippedCanonical ordering, explicit defaults, one serialization suitable for hashing.
ESS specification of the data modelShippedThe model is specified under ess/ and held to a hard gate; a test fails when the two differ.
Case inputs and applicable obligationsShippedA protocol declares case inputs with closed value lists; the input predicate and applicable_when let one compiled protocol serve several profiles; scenario CANON-INPUT-001.
Evidence from an independent producerShippedAn evidence match demands that its records' producer be independent on declared dimensions, which the case resolves for each producer; a record that fails the demand leaves the match UNKNOWN, never FALSE; scenario CANON-INDEPENDENCE-001.
Action argument schemasShippedAn action declares one argument schema in Canon's JSON Schema 2020-12 dialect, which a runner reads and validates calls against; absent, the action takes only {}. canon validate refuses a schema outside the dialect, canon compile carries it unchanged into canon-ir/1 and canon diff classifies its changes.
Cases compose at run timeShippedAn action declares the child case it opens, by protocol and subject (case_open); each child's outcome comes back as one case_outcome record, and the children predicate is TRUE when every child ended with an outcome it lists, FALSE once one ended outside them, UNKNOWN while one is open or none is recorded. A case has one commission; a second party works through a child case. canon validate refuses an opening under the protocol's own id, and a check over a set of protocols refuses openings that form a cycle; Atlas ADR 0081, scenario CANON-COMPOSE-001.
A record observed after the first of a kindShippedThe after order form tests whether a record of one kind with a given result was observed strictly after the first record of another kind, or of the same kind, read from the evidence history like first and before; scenario CANON-ORDER-002.
Order within a secondShippedAn observed_at may carry a fraction of one to nine digits, and first, before and after compare every instant of one evaluation at the coarsest precision written among its records, so records within one second are ordered when all are written finer and equal instants are not; expiry keeps whole seconds; scenario CANON-ORDER-003.
A record observed since the latest of a kindShippedThe since order form tests whether a record of one kind with a given result, at the subject revision of the latest record of another kind (or of the same kind), was observed after it, read from the evidence history like the other order forms; scenario CANON-ORDER-004.
Evaluation
Three-valued claim evaluationShippedcanon evaluate over a case snapshot and an evidence directory, writing a canon-decision/1 document; scenario CANON-CLAIM-001, also covering CANON-CLAIM-002.
Evaluation documentsShippedcanon-case/1, canon-evidence/1, canon-authority/1, canon-decisions/1 and canon-decision/1, and the canon-properties/1 document canon check reads.
canon conform runShippedRuns canon-conformance/1 scenarios that compile a fixture and evaluate a case, with authority decisions, explicit decisions and an evaluation instant when a step gives them.
Normative conformance suiteShippedThe canon-requirements/1 catalogue lists the CANON-* requirements Canon implements; canon conform run --requirements fails when an implemented one has no passing scenario, a scenario covers one the catalogue omits, or an evaluate step gives another decision when rerun or with its evidence, authority and decisions reversed.
Evidence bound to revisionsShippedEvidence applies only to the current revision of the artifact it names; a record bound to another revision is listed as excluded under each claim that reaches its kind, and one about an undeclared artifact is refused; scenario CANON-EVIDENCE-001.
Subject-bound evidence matchesShippedAn evidence match may name the artifact its record must be about; a record about another artifact does not match it; scenario CANON-EVIDENCE-003.
Evidence freshnessShippedEvidence older than its kind's max_age at the --at instant is excluded, so a match it alone decided is UNKNOWN rather than FALSE; scenario CANON-EVIDENCE-002.
Invalidation rulesShippedA rule names an upstream artifact and the claims its revision change invalidates; evidence observed against an earlier revision no longer supports them, and claims built on them follow their predicates; scenario CANON-INVALIDATION-001.
ObligationsShippedEach obligation is open or discharged by its discharge predicate; scenario CANON-OBLIGATION-001.
Action admissibilityShippedAdmissible, approval-required or blocked, from preconditions and authority decisions; scenario CANON-AUTHORITY-001.
OutcomesShippedLegitimate or blocked; no completion through an undeclared or blocked outcome; scenario CANON-OUTCOME-001.
Decision-based outcomesShippedAn outcome may require an explicit decision taken at the current case revision; scenario CANON-OUTCOME-002.
Structured explanationShippedEvery decision says what it was computed from and why each value is what it is, down to the evidence records that applied or were excluded; scenario CANON-EXPLAIN-001, also covering CANON-DETERMINISM-001.
Analysis
canon checkShippedEvery state of a protocol's finite state space; unreachable outcomes, unsatisfiable preconditions, unproduced evidence, authority bypasses with a witness state, and failing properties with a counterexample.
canon generateShippedOne minimal witness scenario per outcome and per blocked action, which canon conform run runs unchanged.
Semantic diffShippedClassify a protocol change as tightening, relaxation, breaking, expansion or no semantic change.
Design
Protocols express step orderShippedA predicate over evidence order, the first record of a kind and one kind before another; Atlas ADR 0084.

Generated by canon-docs from website/status.yaml; each status is read from the AEP story it names

Two lines of work fit none of those three states:

  • Normative conformance suite: started. The requirements below as runnable scenarios; scenarios cover CANON-CLAIM-001, CANON-CLAIM-002, CANON-EVIDENCE-001, CANON-EVIDENCE-002, CANON-EVIDENCE-003, CANON-OBLIGATION-001, CANON-AUTHORITY-001, CANON-OUTCOME-001, CANON-OUTCOME-002, CANON-EXPLAIN-001, CANON-DETERMINISM-001, CANON-INVALIDATION-001 and CANON-INDEPENDENCE-001, by their scenarios, among them CANON-REASONS-001, which covers CANON-EVIDENCE-003 in the actions and outcomes sections.
  • Protocol composition, a shared evidence envelope: open question. Listed as open in the design; no decision yet.

Commands that are not built​

The design proposes canon frontier, canon inspect and canon conform synthesize. None exists in the current binary, and their shape may change. The CLI reference lists only the commands that exist.

Normative requirements​

From the design document. Each is meant to become a conformance scenario. Today the scenarios in conformance/scenarios cover CANON-CLAIM-001, CANON-CLAIM-002, CANON-EVIDENCE-001, CANON-EVIDENCE-002, CANON-AUTHORITY-001, CANON-INDEPENDENCE-001, CANON-OUTCOME-001, CANON-INVALIDATION-001 and CANON-DETERMINISM-001. Five more scenarios hold what the design lists no requirement for: CANON-OBLIGATION-001, obligations, CANON-OUTCOME-002, outcomes that require an explicit decision, CANON-EVIDENCE-003, evidence matches bound to a subject, CANON-REASONS-001, the reasons such a match gives in the actions and outcomes sections, and CANON-EXPLAIN-001, the structured explanation, which also covers CANON-DETERMINISM-001.

RequirementStatement
CANON-CLAIM-001A required positive predicate evaluating to UNKNOWN must not be treated as satisfied.
CANON-CLAIM-002A required positive predicate evaluating to FALSE must not be treated as satisfied.
CANON-EVIDENCE-001Evidence bound to a subject revision must not establish a current-revision claim after the subject revision changes.
CANON-EVIDENCE-002Expired evidence must become inapplicable or UNKNOWN; expiration alone must not imply FALSE.
CANON-AUTHORITY-001An action or transition with an unsatisfied authority requirement must not be treated as admissible.
CANON-INDEPENDENCE-001Evidence failing a declared independence relation must not satisfy a requirement that demands such independence. Scenario CANON-INDEPENDENCE-001: an evidence match demands independence with independent_on, and the case says on which dimensions each producer is independent.
CANON-OUTCOME-001A case must terminate only through an outcome declared by its governing protocol.
CANON-INVALIDATION-001Changing a bound upstream artifact must invalidate dependent claims whose only support was bound to the previous revision.
CANON-DETERMINISM-001Equivalent normalized protocol, case, evidence, authority and evaluation-time inputs must produce equivalent normalized outputs.

The first milestone​

The design sets one goal for the first milestone: a protocol can deterministically derive a useful frontier and legitimate outcomes from a live case, evidence, authority and time, without owning execution or persistence. Parsing, validation, the compiled form, claim evaluation, revision binding, subject-bound evidence matches, freshness, obligations, action admissibility, outcomes, decision-based outcomes, invalidation rules, evidence that demands an independent producer and the structured explanation are done; the rest is the planned work above. A service, database, UI, scheduling and workflow execution are not part of it.

Read the full design proposal for the reasoning.