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.
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.
| Capability | Status | Detail |
|---|---|---|
| Language | ||
| Typed catalog assertions | Shipped | canon-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 parser | Shipped | Artifacts, evidence kinds, claims, obligations, actions, outcomes and invalidation rules, read strictly; unknown keys and explicit nulls are refused. |
| Deterministic validation | Shipped | Format, identifiers, duplicates, unresolved references and claim cycles, in a stable order. |
| canon-ir/1 compilation | Shipped | Canonical ordering, explicit defaults, one serialization suitable for hashing. |
| ESS specification of the data model | Shipped | The model is specified under ess/ and held to a hard gate; a test fails when the two differ. |
| Case inputs and applicable obligations | Shipped | A 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 producer | Shipped | An 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 schemas | Shipped | An 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 time | Shipped | An 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 kind | Shipped | The 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 second | Shipped | An 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 kind | Shipped | The 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 evaluation | Shipped | canon 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 documents | Shipped | canon-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 run | Shipped | Runs 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 suite | Shipped | The 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 revisions | Shipped | Evidence 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 matches | Shipped | An 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 freshness | Shipped | Evidence 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 rules | Shipped | A 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. |
| Obligations | Shipped | Each obligation is open or discharged by its discharge predicate; scenario CANON-OBLIGATION-001. |
| Action admissibility | Shipped | Admissible, approval-required or blocked, from preconditions and authority decisions; scenario CANON-AUTHORITY-001. |
| Outcomes | Shipped | Legitimate or blocked; no completion through an undeclared or blocked outcome; scenario CANON-OUTCOME-001. |
| Decision-based outcomes | Shipped | An outcome may require an explicit decision taken at the current case revision; scenario CANON-OUTCOME-002. |
| Structured explanation | Shipped | Every 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 check | Shipped | Every 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 generate | Shipped | One minimal witness scenario per outcome and per blocked action, which canon conform run runs unchanged. |
| Semantic diff | Shipped | Classify a protocol change as tightening, relaxation, breaking, expansion or no semantic change. |
| Design | ||
| Protocols express step order | Shipped | A predicate over evidence order, the first record of a kind and one kind before another; Atlas ADR 0084. |
More columns: swipe horizontally, or focus the table and use the arrow keys.
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-001andCANON-INDEPENDENCE-001, by their scenarios, among themCANON-REASONS-001, which coversCANON-EVIDENCE-003in theactionsandoutcomessections. - 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.
| Requirement | Statement |
|---|---|
CANON-CLAIM-001 | A required positive predicate evaluating to UNKNOWN must not be treated as satisfied. |
CANON-CLAIM-002 | A required positive predicate evaluating to FALSE must not be treated as satisfied. |
CANON-EVIDENCE-001 | Evidence bound to a subject revision must not establish a current-revision claim after the subject revision changes. |
CANON-EVIDENCE-002 | Expired evidence must become inapplicable or UNKNOWN; expiration alone must not imply FALSE. |
CANON-AUTHORITY-001 | An action or transition with an unsatisfied authority requirement must not be treated as admissible. |
CANON-INDEPENDENCE-001 | Evidence 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-001 | A case must terminate only through an outcome declared by its governing protocol. |
CANON-INVALIDATION-001 | Changing a bound upstream artifact must invalidate dependent claims whose only support was bound to the previous revision. |
CANON-DETERMINISM-001 | Equivalent normalized protocol, case, evidence, authority and evaluation-time inputs must produce equivalent normalized outputs. |
More columns: swipe horizontally, or focus the table and use the arrow keys.
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.