codex/skills/ledger/SKILL.md
Ensure a `ledger` command is available on PATH; materialize, validate, record, replay, and project requested Actuating artifacts without taking semantic or execution authority; coordinate the shared Learnings/Synesthesia/Negative Ledger lifecycle checkpoint and repo-local source-memory reconciliation; address Universalist plans and receipts; and perform pure artifact validation.
npx skillsauth add tkersey/dotfiles ledgerInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Own the shared Ledger bootstrap and lifecycle-coordination boundaries, coordinate repo-local source-memory stores through native source APIs, and materialize, validate, record, replay, or project requested artifacts without taking their semantic owners' authority.
Use $ledger for source-memory migration, cross-store doctor, harvest planning, and memory admission coordination. Do not use it to bypass source-specific authority.
Every procedural Ledger consumer must declare this prerequisite: before the
first native Ledger command in a workflow, load this skill and complete
$ledger ensure once. That readiness applies to every consumer in the workflow;
do not repeat the bootstrap per skill or per command. $ledger is skill syntax,
not a shell command.
Use scripts/ensure-ledger as the deterministic bootstrap handler:
codex/skills/ledger/scripts/ensure-ledger
After the handler emits ledger-bootstrap-ready/v1, invoke the native CLI
directly:
ledger <native-ledger-arguments...>
The bootstrap handler checks only that ledger resolves on PATH and,
when installation authority exists, can install the canonical Homebrew formula.
It does not inspect the CLI version, duplicate CLI integrity checks, or proxy
native commands. A source owner that depends on a minimum version must probe
ledger --version after readiness and before mutation; the bootstrap receipt
does not satisfy that compatibility check. Afterward, the native CLI owns
integrity, stdout, stderr, exit status, and failure reporting.
If ledger does not resolve on PATH:
--install to the bootstrap handler when that authority exists;curl | sh, an unpinned download, or an alternate Ledger
implementation.On supported Homebrew environments the canonical formula is
tkersey/tap/ledger. Bootstrap before Actuating requests its first Ledger
operation; do not install during an active repository effect.
ledger_bootstrap_ready:
schema: ledger-bootstrap-ready/v1
status: ready
path:
action: none | installed
Bootstrap readiness grants no source authority. The calling skill still owns the semantic operation and every requested write or effect.
Canonical source APIs:
ledger --source learningsledger --source negative-ledger for negative evidence; source-less commands
remain a compatibility surfaceledger --source synesthesia when presentledger --source actuationCurrent source-memory persistent-adapter locations, retained for path compatibility and explicit migration:
.ledger/learnings/events.jsonl.ledger/negative-ledger/events.jsonl.ledger/synesthesia/events.jsonl when presentOperational, non-memory stores:
.ledger/actuation/<safe-goal-id>/evidence.jsonl is the current per-goal
actuation persistent adapter, owned exclusively by
ledger --source actuation; do not harvest it into memory or route its
writes through source-memory coordination.Operational, non-memory artifacts:
.ledger/universalist/plan-{plan-id}.md, addressed exclusively by
ledger --source universalist; do not harvest these plans into memory.Actuating has four authoritative per-goal artifact families:
goal-contract/v3
counterexample-set/v1
construction-contract/v3
actuating-evidence-event/v1
Actuating workflows require Ledger 0.13.0 or newer for Construction v3. Construction v1 and v2 stores are unsupported and are not migrated; start a fresh goal-local store and ignore the legacy data.
Ledger may, when the semantic owner requests it:
Ledger may use a generated implementation table for command routing, accepted artifact and event shapes, structural validators, and CLI help. That table does not own or duplicate Actuating's lifecycle, review, or closure laws. The current canonical Review Contract is an Actuating-owned input: Ledger may recompute its digest and validate campaign tuple consistency, but it must not select or reconstruct the contract from hardcoded policy.
state and project emit disposable structural aids such as registered
artifact references, the Evidence head, recorded event shapes, and unresolved
structural custody. They do not emit semantic workflow state, review credit, a
next action, or a closure verdict.
Ledger never:
continue, ready-to-ship, complete, or blocked;actuating-closure-receipt/v1.Actuating owns correct-by-construction implementation, Counterexample
evaluation, Construction selection, orchestration, the next action, and the
semantic closure judgment. $review-fold owns Counterexample classification.
CAS owns its attempts and structured receipts. $ship alone owns public
effects.
Structural validation returns only named structural claims. It is not semantic truth, mutation authority, review credit, publication authority, or completion. A Ledger projection is supporting evidence until Actuating evaluates it with the current Goal, Construction, Counterexamples, owner receipts, and live subject.
At a decision-shaping validation transition, material strategy pivot, delivery boundary after implementation, pre-commit boundary, PR handoff, terminal implementation/review closeout, or explicit checkpoint request:
$ledger ensure once for the workflow and require Ledger 0.10.0 or
newer. Participants consume that readiness; they do not bootstrap again.source-memory-checkpoint-input/v1 packet
containing current subject identity, literal decision and validation
evidence, attempted routes, user-authority events, changed paths, and the
final handoff. Compute subject and evidence SHA-256 fingerprints.$learnings, $synesthesia, and $negative-ledger with
checkpoint_context=source-memory-checkpoint/v1. Each participant evaluates
only its source contract, returns exactly one canonical disposition plus one
admission disposition, and does not invoke Ledger as coordinator or call a
sibling source.source-memory-checkpoint/v1, validate it with
ledger validate source-memory-checkpoint --input FILE|-, and retain one
current receipt. Recompute both fingerprints before reuse; changed code,
evidence, route, or authority makes the prior receipt stale and requires a
fresh fan-out.Aggregate complete when every participant evaluated and neither a canonical
nor derived operation is blocked; use degraded when semantic evaluation and
canonical writes completed but a note or digest stage failed; use blocked for
a missing participant, stale/invalid evidence, or a required canonical failure.
This status proves source-memory closeout only. It does not grant delivery
authority, and the separate exact current Negative Ledger pre-route map remains
the only source-memory route gate.
Evaluation is mandatory; writes and admissions are conditional. Keep ordinary all-no-op receipts internal. Report source writes, actionable Synesthesia candidates, derived-stage degradation, and exact blockers. See source-memory-checkpoint.md for the packet, participant, receipt, freshness, idempotence, and reporting contracts.
Lifecycle checkpointing prevents new gaps; it does not scan or admit historical
rows. Run the read-only reconciliation workflow explicitly to compare canonical
records, immutable notes, derived digests, and compiled-memory mentions. The
report may identify admitted, eligible-unadmitted, not-eligible,
needs-source-review, incomplete-projection, stale-note, and
phase2-lag; it must not synthesize source eligibility or write notes.
uv run python \
codex/skills/ledger/scripts/source-memory-reconcile.py \
--repo "$(git rev-parse --show-toplevel)" \
--format text
When source owners have reviewed specific historical rows, pass an explicit
source-memory-eligibility/v1 JSON file via --eligibility. Each decision must
name one canonical ID, eligible|not-eligible, and a non-empty source-owned
reason. The reconciler uses that input only to distinguish a real admission gap
from an ineligible or unreviewed record; it remains read-only and non-authorizing.
After an owning source explicitly accepts a candidate, use its documented
adapter or native export plus memory-note. Keep backfill bounded and auditable;
never bulk-admit every learning or incomplete Negative Ledger projection.
$ledger;$ledger ensure;.ledger;ledger validate.$ledger may provision and verify the native CLI, then coordinate, inspect, and
recommend. It does not proxy ordinary native commands. Writes remain delegated
to source-specific skills and native source APIs:
$learnings / ledger --source learnings; the current compatibility adapter is .ledger/learnings/events.jsonl;$negative-ledger / ledger --source negative-ledger; source-less commands
remain compatible, and the current persistent adapter is
.ledger/negative-ledger/events.jsonl;$synesthesia / ledger --source synesthesia; the current compatibility adapter is .ledger/synesthesia/events.jsonl, and current Synesthesia notes remain transition evidence;$memory-source-notes / memory-note for immutable admission snapshots.$actuating owns Actuating semantics and orchestration;
ledger --source actuation records and projects requested supporting
artifacts and is not a memory-admission or execution source.$universalist owns decision policy, its SKDC-v1 contract, plan templates,
and ordinary Markdown field updates; ledger --source universalist owns plan
identity, atomic creation, address resolution, SDR-v1 receipt construction,
Seq validation, and single-receipt atomic append.Never write memory_summary.md, MEMORY.md, or memory-root skills/*.
ledger validate checks structure and invariants only. A pass verdict never
grants execution or mutation authority; the artifact's domain owner retains
that authority boundary.
Create a fresh plan from the Universalist-owned template:
ledger create --source universalist \
--repo PROJECT_ROOT \
--template /path/to/universalist/templates/universalist-plan.md
Retain the returned plan_id; resolve the exact run address with:
ledger path --source universalist --repo PROJECT_ROOT --id PLAN_ID
Recover the newest valid address only when the run id was lost:
ledger latest --source universalist --repo PROJECT_ROOT
Plan ids use YYYYMMDDTHHMMSSnnnnnnnnnZ-NNNN. Timestamp order makes the
newest address visible, while atomic ordinal retries prevent overwrite. Treat
latest as recovery, not identity: verify the plan's task fields before
resuming because another run may be newer.
New plans use .ledger/universalist/plan-{plan-id}.md. Exact-id and latest
lookup preserve read access to legacy .ledger/universalist-plan-{plan-id}.md
files without rewriting them; the namespaced path is canonical when both
layouts contain the same id.
Ledger 0.10.6 or newer, paired with Skills Seq 0.3.52 or newer, emits the consequential root receipt selected by Universalist:
ledger emit --source universalist \
--plan .ledger/universalist/plan-PLAN_ID.md \
--contract /path/to/universalist/references/decision-contract.yaml \
--question "Which construction owns this seam?" \
--selected-route UNI-ORDINARY \
--rejected-route UNI-CANONICAL \
--expected-outcome "One owner enforces the observable law." \
--disposition changed \
--construction "checked owner-boundary adapter" \
--law "required observations are preserved" \
--falsifier "a mismatched source is accepted" \
--advanced-mechanics none \
--evidence-ref "code:path" \
--write-plan
The native command preserves the Universalist contract as policy authority,
accepts YAML and JSON SKDC-v1, and consumes Seq's fingerprint, decision-capable
skill kind, parsed identities, and clause-route bindings from one validation of
one immutable contract snapshot. It validates the generated SDR-v1 with that
capability-compatible Skills Seq companion and fails before plan mutation on an
unknown reference, noncanonical write target, invalid receipt, concurrent
writer, or duplicate JSON or YAML receipt. Ledger checks a sibling seq before
searching PATH and skips same-name binaries that do not advertise the required
receipt-binding projection and receipt-validation capabilities. Without
--write-plan, receipt projection leaves the plan unchanged.
migrated, legacy-only, current, legacy-path, notes-only, missing, or invalid.legacy-only or invalid, or Synesthesia is
notes-only and import is requested, report the exact owning migration or
blocking command before any harvest or append recommendation. Never convert
an invalid learnings store with skip unless $learnings has established
that authority.See source-store-layout.md, migration-workflow.md, and harvest-workflow.md.
## Ledger status
- learnings: migrated | legacy-only | missing | invalid
- negative-ledger: current | legacy-path | missing | invalid
- synesthesia: notes-only | ledger-present | missing | invalid
## Harvest candidates
- learnings:
- negative-ledger:
- synesthesia:
## Recommended actions
1. ...
## Proof
- commands run:
- source stores read:
- writes attempted:
- memory-note admissions:
ledger directly and let the CLI own compatibility,
integrity, and failures.--source; sources own state, while
validate is a pure observation.tools
Invokes Apple's macOS 27 fm command-line tool from a local Mac to use the on-device system model or Private Cloud Compute, including instructions, image prompts, schema-constrained JSON, and noninteractive automation. Use when the user asks to run Apple Foundation Models through fm, compare system versus pcc, generate structured output, or automate fm without Swift or an app.
development
Compile historical Codex sessions into governed counterfactual evidence, evaluate an existing owner-applied candidate through blinded paired HCTP trials, and fold observable evidence into RUN, OBSERVE, or STOP. Use for `$hylo`, CRF extraction, counterfactual replay, source-governed direct or historical trials, sealed evidence, paired baseline/candidate evaluation, causal frontiers, or evidence-governed improvement.
testing
Classify and quotient review findings, failing tests, incidents, bug reports, migration failures, and other witnessed falsifiers against accepted intent and the current Construction. Author counterexample-set/v1 without selecting repairs, counting review credit, or granting mutation.
development
Render a concise human proof from Actuating's current complete closure receipt. Use after implementation or review closeout to bind the Goal, Construction, subject, Evidence Ledger head, Counterexample disposition, proof, retirements, applicable review convergence, publication, residual risk, and human review focus without deciding closure or publishing.