KeiSeiKit-1.0/docs
Parfii-bot 95e2feae0a feat(outcome-hook): PostToolUse:Agent backfills outcome + stubs in ledger
Phase 4 follow-up: the outcome-backfill hook the kei-model-router
needs to learn from. Without an outcome signal the Beta posterior
sees 205 NULL rows and can never converge → router falls back to
top-tier on every spawn. This hook closes that loop.

Spawned by orchestrator as a code-implementer agent (Sonnet 4.6 by
default after the manifest refactor in 50c9e76 — first dogfood proof
that the tier system works end-to-end). Agent returned cleanly with
STATUS-TRUTH MARKER `shipped: functional, stubs: 0`.

Files (3):
- `~/.claude/hooks/agent-outcome-backfill.sh` (73 LOC, /bin/sh) —
  reads PostToolUse:Agent stdin JSON, parses STATUS-TRUTH MARKER from
  `tool_response`, runs `UPDATE agents SET outcome = ?, stubs_count = ?
  WHERE id = ?` via sqlite3 CLI. Defensive on every step (never blocks,
  exits 0 on missing jq / sqlite3 / DB / marker). Bypass:
  `OUTCOME_BACKFILL_BYPASS=1`. Lives outside the kit (system-level).
- `tests/hook-outcome-backfill-test.sh` (79 LOC, /bin/sh) — 8 assertions
  cover: 4 valid outcomes, idempotent re-run, missing marker, bypass
  env, missing sqlite3 (PATH stripped). Run via
  `sh tests/hook-outcome-backfill-test.sh` → "Passed: 8 Failed: 0".
- `_blocks/path-user-hooks.md` — third path-atom following
  user-memory / user-rules convention. Resolves to `~/.claude/hooks/`.
  Lets future manifests reference hook files via
  `path:user-hooks/<file>.sh` opaquely. Registered in registry as
  `atom::md::331b9a34::023e5a08`.

Wiring:
- `~/.claude/settings.json` PostToolUse:Agent matcher chain — appended
  the hook idempotently (jq update preserves existing
  `agent-stub-scan.sh`, `task-timer.sh`, `agent-fork-done.sh`).
- DNA-INDEX regenerated; new path-atom appears in `## Atom (120)`
  section.

Effect: every Agent tool call from now on writes outcome + stubs to
ledger. After ~10-20 invocations the Beta posterior has a usable
prior; after ~50 the router stops defaulting Sonnet to Opus on
unfamiliar tasks. The advisor hook (`model-router-advisor.sh`)
already prints stderr when current model > recommended — orchestrator
needs to actually pass `model:` parameter on next spawn (behavioural,
not a code change).

=== STATUS-TRUTH MARKER ===
shipped: functional
stubs: 0
cargo-check: NOT-RUN
behaviour-verified: yes
follow-up-required:
  - PR feat/substrate-path-atoms-2026-05-01 → main when ready

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-01 23:24:02 +08:00
..
AGENT-ROLES.md KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
AGENT-SCHEMA-LOCKED.md KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
AGENT-SUBSTRATE-SCHEMA.md KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
ARCHITECTURE.md KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
CONVERGENCE-PLAN.md KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
DNA-INDEX.md feat(outcome-hook): PostToolUse:Agent backfills outcome + stubs in ledger 2026-05-01 23:24:02 +08:00
HANDOFF-WAKE.md KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
IMPORT-RUNTIME.md KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
INSTALL.md KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
PHILOSOPHY.md KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
PUBLISHING.md KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
QUICKSTART.md KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
REFERENCE.md KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
RULES-AS-BLOCKS.md KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
SCHEMA-LOCKED.md KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
SCHEMA-UNLOCKED.md KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
SECURITY.md KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
SLEEP-LAYER.md KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
SUBSTRATE-SCHEMA.md KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
TAXONOMY.md KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
USB-BRAIN-GUIDE-linux.md KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
USB-BRAIN-GUIDE-macos.md KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
USB-BRAIN-GUIDE-windows.md KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
USB-BRAIN-GUIDE.md KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00
WHY.md KeiSeiKit-public — clean state 2026-05-01 12:09:03 +08:00