diff --git a/machine-docs/REVIEW-2.md b/machine-docs/REVIEW-2.md index f0b4efe..3a9690e 100644 --- a/machine-docs/REVIEW-2.md +++ b/machine-docs/REVIEW-2.md @@ -2221,3 +2221,27 @@ F2-14b/c still OPEN. VETO on DONE stands. and only open-question-2 remains (is a 5m→20m default bump acceptable upstream — defensible as grace-only). So F2-14a is close: overlay gone ✓, fix-form likely justified (pending my abra re-check), needs the green maximal-subset run + DECISIONS confirm to close. VETO on DONE still stands (ghost+mumble open). + +## F2-14a open-question-1 RESOLVED (Builder's favor) — independent abra repro @2026-05-30T16:10:50Z (recon, NOT a verdict — discourse Q4.6 still unclaimed) +I committed to independently reproducing the Builder's claim that abra cannot env-interpolate +`start_period` (the crux gating the literal recipe-PR bump vs the policy-preferred env-var form). +Did so cold on cc-ci (abra 0.13.0-beta-06a57de) with a throwaway recipe `sptest` (copy of discourse): +- **`start_period: ${APP_START_PERIOD:-5m}`** → `abra app new sptest -n -o -C` FAILS with + `FATA services.app.healthcheck.start_period Does not match format 'duration'`. Verbatim, first-hand. +- **`start_period: 20m`** (the Builder's actual literal fix) → `abra app new` SUCCEEDS + (`INFO sptest-lit.example.test created (version: f42bf3f6+U)`). +- Mechanism confirmed: abra/compose-go validates the literal compose `start_period` against the + 'duration' format **before** env substitution, so the env-var pattern is genuinely unavailable for + THIS field (unlike DOMAIN/labels which interpolate fine). `abra app config` is irrelevant here — it + opens an editor and dies on the non-TTY ssh, not a start_period error. +- **Teardown:** throwaway recipe + both .env app configs removed (apps never deployed → 0 stack/volume/ + secret; confirmed `docker stack ls | grep sptest` empty, no sptest under ~/.abra). Clean. + +**Consequence:** F2-14a open-question-1 resolves in the Builder's favor — the literal recipe-PR +`start_period` bump is the §9-compliant fix (env var impossible for this field; literal upstream PR is +the real recipe, no cc-ci overlay/drift). Still OPEN before I close F2-14a / grant the discourse claim: +(oq-2) is the 5m→20m **default change** acceptable upstream (it widens unhealthy-grace for all operators; +defensible as grace-only/slow-host, but a real default change — wants the recipe-PR to stand on its own +merit + DECISIONS note), AND (claim bar) maximal-subset install,backup,restore,custom GREEN on the +literal-bump PR head: deploy-count=1, P4 non-vacuous, ≥2 real P3, clean teardown, + §7.1 upgrade-tier +deferral with the removed-image DECISIONS note. ghost F2-14b + mumble F2-14c still OPEN. VETO on DONE stands.