fact-store-runner · git:20260927.f7675ec · 2026-09-27 · sha256 8f4e78aa914f91c8

fact-store-runner git:20260927.f7675ecA

Immutable. This exact content never changes and is served at /api/v1/blob/8f4e78aa914f91c8.

---
name: fact-store-runner
description: >-
  Compose fact store tool skill. Permit-gated fact mutations for G2/G3:
  propose an exact preview, obtain human ACK, then consume it. Declared by G2/G3;
  Inductive store channel (propose/ack/consume); not wired to deductive this wave.
---

# fact-store-runner

Use when a compose caller **declares** this skill for writing `_facts.json`
(conclusion batch or open settlement). Does not own Topic Loop dialogue.

**Must:** `propose` → display the exact preview → obtain user ACK → `ack` → `consume`.  
**Must not:** silently write; use Formal arc paths; invent product semantics.

## Script Macros

| Macro | Command |
|-------|---------|
| `$FACT_STORE_CTL` | `python3 "$SKILL_ROOT/compose/fact-store-runner/scripts/fact_production_control.py" --project-root "$PROJECT_ROOT"` |

Subcommands: `--help` · `propose` · `ack` · `consume` · `revoke` · `reconcile` · `recover`.

## DONE / failure

- **DONE (consume):** exit 0; stdout JSON includes `facts_total` and the written fact ids.
- **DONE (revoke):** exit 0; no facts written.
- **Failure:** non-zero; message on stderr (unacknowledged/stale permit, digest mismatch, bad payload, open not open).