@@ -32,52 +32,29 @@ once at session start and get summarized away by AutoCompact. This keeps
3232your curated facts * fresh in the recent attention window* , complementary to
3333them.
3434
35- ## Example
35+ ## Example — when your agent forgets what you told it
3636
37- After ` revive init ` + ` revive suggest ` on a repo with a handful of ADRs and
38- a detailed ` CLAUDE.md ` , Claude Code's ` UserPromptSubmit ` hook receives a
39- block like this on every 5th prompt (generic illustration — your content
40- and numbers will differ):
37+ 30 prompts in. AutoCompact fires. You ask the agent to rewrite the hot
38+ path in Python because parsing JSON in bash is painful. It says yes —
39+ forgetting you spent 20 prompts deciding * bash-only, single file* .
4140
42- ```
43- <revive refresh="7">
44- # STATIC (from .revive/static.md — human-curated, stable across refreshes)
45- PURPOSE: Background-job scheduler for small Go services. Success metric is
46- zero surprise job failures after a deploy — goal: replace ops-managed cron
47- with code-defined schedules that survive rollouts. Constraint: job state
48- lives in the app's own Postgres; no new infrastructure.
49-
50- DIFFERENTIATORS:
51- - Traditional cron → schedules defined in code, survive deploys
52- - Managed SaaS schedulers → zero new infrastructure; reuses app Postgres
53- - Temporal / DAG workflow engines → single-step jobs only; keep it small
41+ With revive, the ` PostCompact ` hook just refreshed this into the recent
42+ attention window (real ` .revive/static.md ` from this repo, trimmed):
5443
44+ ```
45+ PURPOSE: Bash CLI that injects a deterministic project brief into Claude
46+ Code on a cadence. Constraint: zero LLM calls, <100 ms hot path,
47+ single bash file — `git` required, `jq` optional.
5548INVARIANTS:
56- - Every schedule change ships with a migration; never edit rows in prod.
57- - Jobs must be idempotent — retries on deploy-overlap are expected.
58- - Worker binary must not grow past 30 MB (embedded-device deploy target).
59-
60- GOTCHAS:
61- - `make test` runs integration against a real Postgres — set TEST_DATABASE_URL.
62- - `bin/deploy` always runs `schedule:apply` last; reordering breaks overlap detection.
63-
64- # DYNAMIC (regenerated per refresh from git + fs)
65- STATE: branch=main
66- 9e8a1f2 fix(scheduler): handle DST transitions in cron parser
67- ↪ Cron parser was skipping jobs during spring-forward. Added unit tests for …
68- c4b2d30 feat: add schedule:diff command for deploy previews
69-
70- HOT_FILES: (last 20 commits, last change shown)
71- 12× internal/scheduler/parser.go ↪ "fix(scheduler): handle DST transitions in cron parser"
72- 8× cmd/worker/main.go ↪ "feat: add schedule:diff command for deploy previews"
73- 5× internal/db/schema.sql ↪ "chore: add index on next_run_at"
74- </revive>
49+ - Bash + git only on hot path. `jq` is the sole optional dep.
50+ Push back on anything new.
7551```
7652
77- Ask this Claude Code * "what's the success metric for this project?"* — the
78- agent answers * "zero surprise job failures after a deploy"* straight from
79- the brief, not by re-reading files. 30 prompts in, 100 prompts in, the
80- answer stays.
53+ So the agent pushes back: * "Python breaks the hot-path constraint —
54+ single bash file, ` jq ` is the only optional dep. Hard no unless we're
55+ rewriting the thesis."*
56+
57+ The decision you made 30 prompts ago is still load-bearing.
8158
8259## Quick start
8360
0 commit comments