disinto/.woodpecker
Claude 6e73c6dd1f
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/secret-scan Pipeline was successful
fix: [nomad-step-2] S2.6 — CI: vault policy fmt + validate + roles.yaml check (#884)
Extend .woodpecker/nomad-validate.yml with three new fail-closed steps
that guard every artifact under vault/policies/ and vault/roles.yaml
before it can land:

  4. vault-policy-fmt      — cp+fmt+diff idempotence check (vault 1.18.5
                             has no `policy fmt -check` flag, so we
                             build the non-destructive check out of
                             `vault policy fmt` on a /tmp copy + diff
                             against the original)
  5. vault-policy-validate — HCL syntax + capability validation via
                             `vault policy write` against an inline
                             dev-mode Vault server (no offline
                             `policy validate` subcommand exists;
                             dev-mode writes are ephemeral so this is
                             a validator, not a deploy)
  6. vault-roles-validate  — yamllint + PyYAML-based role→policy
                             reference check (every role's `policy:`
                             field must match a vault/policies/*.hcl
                             basename; also checks the four required
                             fields name/policy/namespace/job_id)

Secret-scan coverage for vault/policies/*.hcl is already provided by
the P11 gate (.woodpecker/secret-scan.yml) via its `vault/**/*` trigger
path — this pipeline intentionally does NOT duplicate that gate to
avoid the inline-heredoc / YAML-parse failure mode that sank the prior
attempt at this issue (PR #896).

Trigger paths extended: `vault/policies/**` and `vault/roles.yaml`.
`lib/init/nomad/vault-*.sh` is already covered by the existing
`lib/init/nomad/**` glob.

Docs: nomad/AGENTS.md and vault/policies/AGENTS.md updated with the
policy lifecycle, the CI enforcement table, and the common failure
modes authors will see.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-16 18:15:03 +00:00
..
agent-smoke.sh fix: bug: architect pitch prompt guardrail is prose-only — model bypasses "NEVER call Forgejo API" via Bash tool; fix via permission scoping + PR-driven sub-issue filing (#764) 2026-04-15 07:41:16 +00:00
ci.yml fix: fix: edge entrypoint clones disinto repo without auth — fails when Forgejo requires authentication (#353) 2026-04-07 17:11:59 +00:00
detect-duplicates.py fix: add allowlist entry for standard lib source block in duplicate detection 2026-04-15 07:18:42 +00:00
nomad-validate.yml fix: [nomad-step-2] S2.6 — CI: vault policy fmt + validate + roles.yaml check (#884) 2026-04-16 18:15:03 +00:00
publish-images.yml feat: publish versioned agent images — compose should use image: not build: (#429) 2026-04-15 09:24:05 +00:00
run-secret-scan.sh fix: add file package for binary detection, document shallow-clone tradeoff 2026-04-15 21:03:05 +00:00
secret-scan.yml fix: add file package for binary detection, document shallow-clone tradeoff 2026-04-15 21:03:05 +00:00
smoke-init.yml fix: refactor: extract compose/Dockerfile/Caddyfile generation from bin/disinto into lib/generators.sh (#301) 2026-04-06 19:29:05 +00:00