disinto/docs
Claude ece5d9b6cc
All checks were successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/push/nomad-validate Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
ci/woodpecker/pr/nomad-validate Pipeline was successful
ci/woodpecker/pr/smoke-init Pipeline was successful
fix: [nomad-step-2] S2.5 review — gate policies/auth/import on --empty; reject --empty + --import-* (#883)
Addresses review #907 blocker: docs/nomad-migration.md claimed
--empty "skips policies/auth/import/deploy" but _disinto_init_nomad
had no $empty gate around those blocks — operators reaching the
"cluster-only escape hatch" would still invoke vault-apply-policies.sh
and vault-nomad-auth.sh, contradicting the runbook.

Changes:
- _disinto_init_nomad: exit 0 immediately after cluster-up when
  --empty is set, in both dry-run and real-run branches. Only the
  cluster-up plan appears; no policies, no auth, no import, no
  deploy. Matches the docs.
- disinto_init: reject --empty combined with any --import-* flag.
  --empty discards the import step, so the combination silently
  does nothing (worse failure mode than a clear error up front).
  Symmetric to the existing --empty vs --with check.
- Pre-flight existence check for policies/auth scripts now runs
  unconditionally on the non-empty path (previously gated on
  --import-*), matching the unconditional invocation. Import-script
  check stays gated on --import-*.

Non-blocking observation also addressed: the pre-flight guard
comment + actual predicate were inconsistent ("unconditionally
invoke policies+auth" but only checked on import). Now the
predicate matches: [ "$empty" != "true" ] gates policies/auth,
and an inner --import-* guard gates the import script.

Tests (+3):
- --empty --dry-run shows no S2.x sections (negative assertions)
- --empty --import-env rejected
- --empty --import-sops --age-key rejected

30/30 nomad tests pass; shellcheck clean.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-16 19:25:32 +00:00
..
AGENT-DESIGN.md fix: chore(26a): delete action-agent.sh, action-poll.sh, and action/AGENTS.md (#65) 2026-03-31 19:42:25 +00:00
agents-llama.md fix: Two parallel activation paths for llama agents (ENABLE_LLAMA_AGENT vs [agents.X] TOML) (#846) 2026-04-16 19:05:46 +00:00
BLAST-RADIUS.md fix: docs/BLAST-RADIUS.md + vault/SCHEMA.md: document blast-radius tier system (#440) 2026-04-08 19:59:51 +00:00
CLAUDE-AUTH-CONCURRENCY.md fix: docs/CLAUDE-AUTH-CONCURRENCY.md and smoke-init.sh reference credentials.json without leading dot (#680) 2026-04-11 22:41:34 +00:00
edge-routing-fallback.md fix: vision(#623): per-project subdomain fallback path (contingency) (#713) 2026-04-12 03:27:05 +00:00
EVAL-MCP-SERVER.md fix: tech-debt: sweep cron-isms from code comments, helpers, lib, and public site copy (#548) 2026-04-10 08:54:11 +00:00
EVIDENCE-ARCHITECTURE.md fix: {project}-ops repo — separate operations from code (#757) (#767) 2026-03-26 19:55:12 +01:00
investigation-685-reviewer-approved-destructive-compose.md fix: extend step 8 approval-bias carve-out to include infra files (step 3c), fix count 2026-04-11 19:50:59 +00:00
mirror-bootstrap.md fix: use FORGE_API_BASE for /repos/migrate endpoint, build payload with jq 2026-04-15 20:29:27 +00:00
nomad-migration.md fix: [nomad-step-2] S2.5 review — gate policies/auth/import on --empty; reject --empty + --import-* (#883) 2026-04-16 19:25:32 +00:00
OBSERVABLE-DEPLOY.md fix: feat: observable addressables — engagement measurement for deployed artifacts (#718) 2026-03-26 11:57:19 +00:00
PHASE-PROTOCOL.md fix: chore: remove dead tmux-based session code (agent-session.sh, phase-handler.sh) (#262) 2026-04-05 22:25:53 +00:00
updating-factory.md fix: fix: make _generate_compose_impl the canonical compose source — remove tracked docker-compose.yml + update docs (#603) 2026-04-10 16:40:44 +00:00
VAULT.md fix: [nomad-prep] P0 — rename lib/vault.sh + vault/ to action-vault namespace (#792) 2026-04-15 18:16:32 +00:00