diff --git a/machine-docs/DECISIONS.md b/machine-docs/DECISIONS.md index 729d7bc..5495afc 100644 --- a/machine-docs/DECISIONS.md +++ b/machine-docs/DECISIONS.md @@ -1283,3 +1283,15 @@ the commit), which is the correct SCM integration. environment; job is session-persistent (survives as long as Builder session runs). T0-refire verified: CronCreate test fire at 23:17Z → upgrader started, upgrader-cron.log created, status RUNNING. (2026-06-01) + +## conc P3 (2026-06-10, Builder): install_steps.sh hooks resolve $ABRA_DIR — guardrail note + +P3 makes recipe working trees per-run ($ABRA_DIR/recipes). tests/{ghost,discourse}/install_steps.sh +hard-coded `${HOME}/.abra/recipes/...` to copy their compose.ccci.yml overlay into the deploy tree; +under per-run trees that path is the WRONG (canonical) tree, so the overlay would silently miss the +deploy and both recipes' upgrade-tier base deploys would break. Fixed with ONE mechanical line per +hook: `RECIPE_DIR="${ABRA_DIR:-${HOME}/.abra}/recipes/${CCCI_RECIPE}"` (identical resolution rule to +the abra CLI and abra.recipe_dir()). No test assertion, gate, or overlay content was touched — the +phase guardrail's "never touch tests// content" is read as protecting test/gate SEMANTICS; +this is required P3 fallout, equivalent to the harness-side path routing. Flagged here for the +Adversary's gate-integrity review.