Checkpoint
Close Day 1’s build work with your own repository green on master and a plan for Day 2. Day 1 built the general agent loop, the report and incident stores. Everything below you do in your own repository; your team is who you argue with about the tooling and who reviews what you merge.
Activity: Backpressure Engineering
To start with, add code quality checks that hold up under repeated AI edits. These run as a pre-commit hook, providing backpressure against drift in code quality. The tools vary by language; for Python the industry standards are:
ruff: the linter catches dead, inconsistent, or sloppy code,pyright(ormypy): a type checker catches whole classes of bugs that repeated AI edits accumulate.pytest: a testing framework.
Add these three (and behave) to your repo and configure them as a pre-commit hook.
Discuss with your team: what other tools would add useful backpressure here? Agree on a shared baseline and each person should wire it up into their own repo.
Some industry standards
- Test coverage thresholds (
pytest --cov --cov-fail-under), - cyclomatic complexity limits (ruff’s
C901), - dead-code detection (
vulture), - dependency vulnerability audits (
pip-audit), and - enforced formatting (
ruff format --check).
The behave gate
The scenarios in starter/features/ are written before the code, so your code will fail all of them. As we build the agent, these will turn green.
-
Add
uv run behaveas a pre-commit hook and run it now. Watch it fail: every unimplemented hole is red, and that red is your worklist. A pre-commit hook is local and overridable (git commit --no-verifybypasses it), so treat it as an advisory nudge, not a gate. -
The gate is GitHub CI, which runs on every pull request into your
masterand cannot be skipped. Gate only what is built by passing an explicit tag expression, so CI is honest-green on finished work while the rest stays visibly unbuilt:- run: uv run behave --tags="@warmup" # gate the store warm-up only -
Widen the gate as each stage lands. When Stage 1 goes green tomorrow, widen it to
--tags="@warmup or @stage1"; add@stage2once you have written the intake scenarios (none ship under that tag), and@stage3when reconcile lands. Each finished stage becomes a permanent gate that later changes cannot silently break - the backpressure ratchets up as you go. -
In your
CLAUDE.md, add a policy: revisit the CI tag expression every time the feature files change or a new stage is implemented, so the gate never drifts out of sync with what is actually built.
When you’re done
Post the list of pre-commit hooks you settled on to the Padlet, and steal anything from the other teams’ lists that you wish you had thought of.
Activity: Merging
-
Land everything still in flight on your own
master: the phase-1 and phase-2 loop branches, and the pull request the eval driver opened against your repository. Remember the rule - every one of them needs a teammate’s adversarial review before you merge it, so trade reviews now rather than queuing them all on one person. -
From a clean clone or worktree, run the deterministic checks (
uv run behave --tags=@warmupfor the stores,uv run behave features/agent_loop.featurefor the loop) and the--no-llmskeleton episode (uv run hadr-runner stage1-basic@londone --no-llm- needs an engine up:cd ../engine && uv run hadr-engine serve). The skeleton saves nobody; that zero is your baseline. -
Run the live loop on some examples (
uv run hadr-agent "what's the secret message?") and record theroundsand token total it prints. -
Check cache-friendliness on that live run: because
agent_loopfeeds each assistant turn back verbatim, the stable prefix (system prompt + tool defs + prior turns) stays cacheable across rounds. The kit already accumulates the provider’sprompt_tokens_details.cached_tokensintoresult.usage.cache_read; add it to the final print inmain()and confirm it is nonzero on a multi-round run.
When you’re done
- Post your run on the Padlet: the
rounds, total tokens, andcache_readfrom step 3. Acache_readof zero on a multi-round run means something is rewriting the assistant turn - compare against a teammate whose number is nonzero and find the difference. - Leave nothing open. No unmerged pull requests, CI green on your
master, and the pre-commit hook installed in the clone you will actually open tomorrow morning. Day 2 starts by building the dispatcher on top of this.
Leave with
- A reproducible setup command and test command.
- Backpressure to maintain code quality.
- A merged agent loop on your own
master: greenLOOP-*and store scenarios, plus a livehadr-agentrun. - The group’s intake fixtures merged into your repository, ready for tomorrow’s Stage 2: intake.