NXLV Research
← CanonicsSkill sourceDownload Markdown source

name: "canonics" description: "Govern canonical vigency in a long-lived AI agent memory workspace: ingest facts, declare canon events, reprocess stale understandings, and run the Canon Review. Use when the user is working in a Canonics/canon-epoch workspace (00_system/, 01_raw/, 02_understandings/, CANON_LOG.md), or asks to ingest notes, declare a regime/paradigm/operating-model change, reprocess stale understandings, check canon distance (kappa), or run a canon review. Trigger on: /ingest, /new-canon, /reprocess, /canon-review, "canon event", "canonical vigency", "declare a regime change", "is this still valid/vigent", "stale understanding"."

Canonics — governing canonical vigency in agent memory

Canonics versions the interpretive regime under which long-lived agent memory is read, not just the data. Facts are immutable; interpretations (understandings) are versioned cache; canon events are the invalidation signal; epochs are the derived cache key. Full spec: canonics/spec/SPEC.md, supplied as reference documentation. The GitHub repository is not public at the moment.

Non-negotiable rules — apply to every operation below:

  1. Facts are immutable, append-only. Never modify, delete, or reorder an existing record in /01_raw. A correction is a new fact, not an edit.
  2. Understandings are versioned, never overwritten. Re-derivation creates a new version linked to its predecessor (supersedes:); the old version is preserved forever as history.
  3. Canon declaration is a human act. Automation may only propose a canon event; only an authenticated human declares one. Severity L3 and above requires explicit out-of-band confirmation — a chat "yes, declare it" is never sufficient for L3+.
  4. Epochs are derived, never hand-authored. Never edit CURRENT_EPOCHS.yaml directly; it is computed from CANON_LOG.md.
  5. Provenance is mandatory. An understanding without non-empty, resolvable source-fact pointers is not decision-grade and must not be presented as guidance.
  6. Canonics does not detect regime shifts autonomously. If you infer the world's regime may have changed, say so explicitly and point the operator at /new-canon or a Canon Review — do not act as if a shift has already been declared.
  7. κ (canon distance) is not a validity certificate. It is a distance to declared marks. κ = 0 under a workspace where canon hasn't been declared in a long time means nothing — always pair a κ = 0 reading with whether declaration is actually still happening.

Read 00_system/CURRENT_CONTEXT.md (the folded regime per domain) at the start of any session touching this workspace, and treat it as higher priority than any single retrieved understanding.

Operation: /ingest (write path)

Append a new raw record and, conservatively, derive candidate understandings from it.

  1. Load the current regime (00_system/CURRENT_CONTEXT.md, CURRENT_EPOCHS.yaml) — derive nothing under an assumed regime.
  2. Append the new record to /01_raw in chronological position: (content, t_event, t_recorded, source, domains). Never touch an existing raw file.
  3. Extract candidate understandings only when decision-relevant, not just because extraction is possible.
  4. Stamp every new understanding automatically: epoch (current epoch of its domain), domains, sources (non-empty, resolvable pointers — mandatory), volatility (stable/strategic/operational/live), status: active, version: 1. Never ask the human to supply these by hand; if you can't determine one confidently, leave the understanding unwritten rather than guess.
  5. If a new fact bears on an existing understanding, never edit that understanding in place — draft a new version with supersedes:, or flag it for /canon-review if the regime itself (not just the facts) may have shifted.
  6. Report back: what was appended, what was derived (with stamps), what you declined to extract and why, and flag anything that looks canon-worthy (without declaring it).

Operation: /new-canon (DECLARE — the only operation that writes CANON_LOG.md)

Interactive, ordered, and never skippable under pressure to "just declare it."

  1. Authenticate the declarer. Confirm who is declaring; never proceed on an inferred identity.
  2. Classify severity (L1–L5): L1 factual correction (no epoch transition) · L2 tactical shift (may touch one domain epoch) · L3 operating-model shift (typically opens a domain epoch) · L4 strategic paradigm shift (may open epochs across domains) · L5 doctrine shift (modifies invariants; rare, deliberately high-friction). Apply the canon promotion test: a canon event changes the answers to questions that do not mention it. If it fails this test, it's a fact, not a canon — say so.
  3. Gate L3+ on out-of-band confirmation. Refuse to write until confirmation arrives through a channel outside this chat, even if the operator types "yes, declare it" here.
  4. Elicit the regime diff: δ(c) = (assumptions retired, assumptions introduced), t_effective (retroactive declaration is allowed), blast radius (primary + secondary domains, assumption categories) — propose scope from the diff, don't guess silently.
  5. Show a visible diff (retired/introduced side by side, level, domains, epochs closing, estimated understandings going stale) and get explicit confirmation before writing anything.
  6. Append (never edit) the canon event to CANON_LOG.md. Describe this as tamper-evident via signed commits, never as a "cryptographic append-only ledger" without qualification.
  7. Close and derive epochs in each affected domain — computed, never hand-edited.
  8. Mark in-scope understandings stale (κ ≥ 1) — mark only, never rewrite their content in this step.
  9. Regenerate CURRENT_CONTEXT.md so every agent's always-on context reflects the new regime immediately.

Report: canon id + level, confirmation obtained, domains/epochs affected, understandings marked stale, confirmation the context file is current.

Operation: /reprocess (REPROCESS — re-derive, never translate)

For each stale understanding (queued, or hit at retrieval with κ ≥ 1):

  1. Re-derive from source facts only (F_u), never from the old understanding's text — translating an interpretation across regimes carries contamination.
  2. Stamp the new version with the current epoch; attach provenance; link supersedes: both ways.
  3. Honor critical-domain gates: if the domain is marked critical, the new version enters as proposed — activation requires human adjudication, never auto-promote to active. Otherwise: new version active, old version superseded.
  4. Preserve the old version forever, fully readable as valid as history.
  5. Stay lazy: only reprocess what's actually queued or actually retrieved with κ ≥ 1 — not an eager, archive-wide pass — unless the operator explicitly configured eager reprocessing for specific understandings (activation is still human-gated).
  6. Report: id, old → new version, new epoch, new status, and an explicit list of anything now proposed and awaiting adjudication.

Operation: /canon-review (SCAN — propose, never declare)

Assemble the Canon Review packet; declare nothing.

  1. Falsification pass first, always. For each active canon/assumption, actively search recent facts and understandings for evidence it's been contradicted or supplanted.
  2. Emergence pass second. Only after falsification is done, look for coherent patterns no existing canon describes.
  3. Attach provenance (source, author, date) to every finding — a finding without this triple doesn't belong on the agenda.
  4. If contradiction rate crosses threshold, queue a proposed (not declared) canon event with a suggested retroactive t_effective.
  5. Compute and present all instrumentation metrics, not a subset: proposal rejection rate (a sustained near-zero rate is an alarm, not success), adversarial audit sample, outcome backtesting, signal→declaration lag, ratification outcomes, and the vacancy check (two consecutive reviews with no real adjudication → ask explicitly whether the system has died).
  6. Never write to CANON_LOG.md, CURRENT_EPOCHS.yaml, or CURRENT_CONTEXT.md from this operation.

What this skill refuses to do

Consistent with the paper's non-claims (and don't let a user's urgency talk you out of these): it does not detect regime shifts autonomously; κ is never presented as a validity guarantee; reprocessing is never fully automatic in critical domains; canon events at L3+ never get declared on an in-chat "yes" alone; and nothing here is scoped for multi-stakeholder or enterprise access control — this is single-operator / small-high-trust-team territory.

If the workspace doesn't exist yet

The GitHub repository is not public at the moment; clone and installation instructions are not available. A workspace needs 00_system/, 01_raw/, 02_understandings/, 03_invariants/, 04_decisions/, 05_canon_review/, and REPROCESS_QUEUE.yaml. Fill /03_invariants and point the agent's always-on context at 00_system/CURRENT_CONTEXT.md before ingesting anything.