From cc84222216bffd9d565f5a06ab85e1426aed6707 Mon Sep 17 00:00:00 2001 From: ZdenekSrotyr Date: Mon, 4 May 2026 19:23:01 +0200 Subject: [PATCH] docs: clean-install manual protocol in release checklist --- docs/RELEASE_CHECKLIST.md | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 docs/RELEASE_CHECKLIST.md diff --git a/docs/RELEASE_CHECKLIST.md b/docs/RELEASE_CHECKLIST.md new file mode 100644 index 0000000..b7e8cf6 --- /dev/null +++ b/docs/RELEASE_CHECKLIST.md @@ -0,0 +1,31 @@ +# Release Checklist + +Pre-merge checks for changes that touch sensitive paths. Each section below +applies only when the PR diff intersects the listed files. + +## Bootstrap path changes (mandatory pre-merge) + +For any PR touching the analyst-bootstrap path (`agnes init`, `cli/lib/pull.py`, +`cli/lib/hooks.py`, `app/web/setup_instructions.py`, `/api/welcome`, +`config/agnes_workspace_template.txt`), run this protocol locally before +requesting review: + +1. `git clean -fdx` in the repo (no build artifacts). +2. Boot FastAPI locally against a clean test instance state. +3. Empty terminal in `/tmp/test-analyst-1`. From the web `/setup?role=analyst`, + click the analyst tile and copy the paste prompt. +4. Paste into Claude Code and let it run. `tree -a /tmp/test-analyst-1` and + compare with the expected tree from the design spec + (`docs/superpowers/specs/2026-05-04-clean-analyst-bootstrap-design.md` ยง5.2). +5. `claude` in that folder. Three queries: + - "What tables can I see?" + - "SELECT count(\*) FROM " (a table from the catalog) + - "Show me last 5 rows of " + All must work without further intervention. +6. `/exit`. Verify SessionEnd hook ran (server-side audit log shows `agnes push`; + `du -sh /tmp/test-analyst-1/user/sessions/` non-empty). +7. Second `claude` in same folder. Verify SessionStart hook fires + (`agnes pull` request in audit log). +8. Second workspace `/tmp/test-analyst-2` with the same PAT (within TTL). + Repeat steps 5-7. Verify global `~/.config/agnes/` is not duplicated; + the second workspace has its own DuckDB.