fix: [nomad-step-4] S4.1 — nomad/jobs/agents.hcl (7 roles, llama, vault-templated bot tokens) (#955) #959
No reviewers
Labels
No labels
action
backlog
blocked
bug-report
cannot-reproduce
in-progress
in-triage
needs-triage
prediction/actioned
prediction/dismissed
prediction/unreviewed
priority
rejected
reproduced
tech-debt
underspecified
vision
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: disinto-admin/disinto#959
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "fix/issue-955"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Fixes #955
Changes
AI Review
Summary
S4.1 lands
nomad/jobs/agents.hcl,vault/policies/service-agents.hcl, theservice-agentsvault role, andtools/vault-seed-agents.sh. Correctness claims verified below.Correctness claims
Service block placement —
service { provider = "nomad" }sits at group scope (line 78), not inside thetaskblock. Correct; Nomad native provider attaches service lifecycle to task liveness at group level. No check block is appropriate for an outbound-only process. ✓Vault workload-identity wiring —
vault { role = "service-agents" }at group scope →vault/roles.yamlentryname: service-agents,policy: service-agents,job_id: agents. Three-part wiring (role → policy → bound claim) is complete and consistent. ✓Template ↔ policy ↔ seeder alignment — Template reads 8 paths (
bots/{dev,review,gardener,architect,planner,predictor,supervisor,vault}). Policy grantsreadon all 8kv/data/+kv/metadata/paths. SeederBOT_ROLES=(dev review gardener architect planner predictor supervisor vault)iterates the same 8. No drift. ✓FORGE_FILER_TOKEN absent from template —
docker-compose.ymlcarriesFORGE_FILER_TOKEN, butAGENT_ROLESin the Nomad job isreview,dev,gardener,architect,planner,predictor,supervisor— filer is not a role in this job. Absence is intentional, not an oversight. ✓Seeder idempotency — Read → check both keys → skip on complete, generate only missing, merge into existing data via
jq + {token: $t, pass: $p}. Atomic write. Dry-run path logs without writing. Pattern matches sibling seeders. ✓Duplicate-detector hash whitelist — Five hashes cover real shared preamble/precondition windows between
vault-seed-agents.shandvault-seed-forgejo.sh. Legitimate; these scripts share the sameset -euo/source hvault.sh/binary-check/VAULT_ADDR-guard sequence.Non-blocking comments
Comment accuracy (
detect-duplicates.pyline 305): The comment readsShared across tools/vault-seed-{forgejo,agents,woodpecker}.shbutvault-seed-woodpecker.shuses afor arg in "$@"loop shape that produces different 5-line windows — none of these hashes appear in woodpecker. The comment should say{forgejo,agents}. Low stakes (the hashes themselves are correct), but misleading for the next author.kv/metadata/disinto/shared/forgeabsent from policy — The policy grantskv/data/disinto/shared/forgeread but omits the paired metadata path. The current template stanza does not readshared/forge, so there is no runtime impact. If a future template stanza adds shared forge config, the metadata path will need to be added then.AGENTS.md not updated —
AGENTS.mdline 41 enumerates nomad/jobs files by name (forgejo.hcl,woodpecker-server.hcl, etc.) butagents.hclis not listed. The file header is thorough, and the "Not the runtime yet" comment explains why the behavior doc doesn't change now. UpdatingAGENTS.mdat S4.2 cutover (whendisinto init --backend=nomad --with agentsis wired) is the right time.Verdict
APPROVE — All correctness claims check out: service block at group scope, vault role wired correctly, template covers all 8 bots matching the seeder, idempotent seed logic correct, hash whitelist legitimate.
Reviewed at
eadefcd| AGENTS.mdAI Review: APPROVE — All correctness claims check out: service block at group scope, vault role wired correctly, template covers all 8 bots matching the seeder, idempotent seed logic correct, hash whitelist legitimate.