v0.31.0 — config test seam, schedule-independent decay, honest search disclosure
What's in it
V1 — config resolution has a test seam. bind_root / unbind_root / bound_root / active_root let a test point kindex at a temp root after import, and every resolution follows: data_dir, the config-file search, the project-root walk, the MCP store accessor. Previously the only lever was $HOME before first import, so an in-process test resolved to the developer's live graph. Containment covers reads and writes, survives symlinks (checked after resolution, not before), and blocks the scheduler/daemon installers, which otherwise rewrite the real crontab and ~/Library/LaunchAgents.
V2 — weight decay is schedule-independent. Weight depends only on elapsed time, not on how often the job ran. At the shipped 5-minute cron over 90 days the old behaviour drifted 5.8e-4 from the closed form, past its stated tolerance; it is now exact. Per-row accounting keeps sub-threshold intervals from being discarded, detects external weight changes so reinforcement is not overwritten, and the checkpoint is monotonic against a backwards clock.
V3 — the fence note names exactly what --include-archived reveals, derived from the actual withheld set rather than a fixed string.
V4 — the degraded ledger does not lose events. The lock is non-blocking, so an error path can never hang a hook or an MCP turn, and a size-cap that races an append recovers it.
V5 — the backfill bound is honest in both directions. The candidate-window disclosure appears when the window truncated the candidates and stays silent when the corpus was simply exhausted. In --json mode it goes to stderr, keeping stdout parseable.
V6 — the MCP failure surface is testable in isolation: a broken store yields the typed memory-unavailable result without touching a real graph.
Also fixed
--include-archivedsilently lost the FTS index — malformed SQL was swallowed by aLIKEfallback, so the flag returned fewer rows than the default, unranked.- Git-tracked
.kin/index.jsonand.kin/code-map.jsonno longer churn on every decay cycle.
No schema change; SCHEMA_VERSION stays 7.