git:20260831.54550bf to git:20260926.09b7c01

11 added, 0 removed. Audit A to A.

---
name: fact-cut-runner
description: >-
Compose fact-intake L1: whole-doc cut to _facts.json with seed and
upstream_ref; no disposition classify.
---
# fact-cut-runner
Read `$SOURCE_PATH` once; write focus-slice `_facts.json` atoms with non-empty
`derivation.upstream_ref` and `origin.type=seed`; **omit** disposition.
**Must:** `$FACT_CUT_BUILD context` then cut+write; pass structural validate.
**Must not:** disposition; confirm; Eval; `fact-store-runner`; edit source doc; write
`discovered` or non-empty disposition.
## Input
```text
REVISION_DIR: <abs revision root>
PROJECT_ROOT: <abs project root>
CYCLE_ID: <cycle id>
SOURCE_PATH: <abs intake SoT>
REQUIRE_SEED_ORIGIN: <true|false; default false>
```
+ ## Cognition
+
+ Output terms carry the meanings defined in these units.
+
+ | Term | Unit |
+ |---|---|
+ | fact atom, `anchors` | `../../references/cognition/fact.md` |
+ | `origin.type=seed`, `derivation.upstream_ref` | `../../references/cognition/producer/provenance.md` |
+
+ Cut sets lineage only: every atom is `seed` with `upstream_ref`; no verdict.
+
## Script Macros
| Macro | Command |
|-------|---------|
| `$FACT_CUT_BUILD` | `python3 "$SKILL_ROOT/compose/fact-intake-runner/fact-cut-runner/scripts/fact_cut_build_control.py"` |
| `$FACTS_CTL` | `python3 "$SKILL_ROOT/compose/scripts/facts/facts_control.py"` |
Build: `--help` · `context`.
Facts: `--help` · `write` · `validate`.
## Execution
1. Bind Input.
2. `$FACT_CUT_BUILD context --revision-dir … --project-root … --cycle-id …`
3. Whole-doc cut → `$FACTS_CTL write … --intake-structure` (omit
`derivation.disposition`; set seed + `upstream_ref`; add
`--require-seed-origin` when `$REQUIRE_SEED_ORIGIN=true`).
4. `$FACTS_CTL validate … --intake-structure` (same `--require-seed-origin` rule).
**Done:** validate exit 0.
## Summary
```text
Fact-cut complete.
Facts: <path>
Facts count: <N>
Status: ok
```