P4: contrib/store — audit SQLite store (run history complete)
executus CI / test (pull_request) Successful in 1m41s

db.Audit() satisfies audit.Storage (all 17 methods) over SQLite: one indexed
row per run (+ a JSON inputs blob), one row per log event. Filter/list/walk
queries are indexed on the columns they filter (skill_id, caller_id,
parent_run_id, started_at); WalkParentChain follows parent_run_id with a
seen-set guard; LastRunBySkills is a grouped MAX.

Test covers run start/finish round-trip (inputs map + token roll-up), log
append + ordered read, parent/child + ancestor-chain walks, caller listing,
TopLevelOnly filter, and the last-run-per-skill map.

contrib/store now backs ALL four store seams — budget + persona + skill + audit
— so a host gets turnkey durable persistence (run history, budgets, agents,
skills) with zero store code. Core go.sum still has 0 sqlite refs.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-26 22:50:21 -04:00
parent 954efde474
commit b194a9621d
3 changed files with 428 additions and 4 deletions
+5 -4
View File
@@ -75,10 +75,11 @@ BATTERIES (opt-in siblings, each nil-safe + a default):
budget/ DBBudget rolling-7d + NoOp (run.Budget); [P4 ✓]
BudgetStorage iface + Memory default
contrib/store/ SECOND module (+ modernc.org/sqlite): [P4 ~]
pure-Go SQLite impls of the *Store seams. budget +
persona + skill ✓ (JSON-blob+indexed cols, round-trip
tested); audit pending.
contrib/store/ SECOND module (+ modernc.org/sqlite): [P4 ]
pure-Go SQLite impls of ALL store seams: budget +
persona + skill + audit ✓ (JSON-blob+indexed cols,
round-trip tested). CI proves the driver lands HERE,
not in the core go.sum.
CI proves the driver lands HERE, not in the core go.sum.
```