Repository navigation
fix: name a NetBox job's accounts in the job line and require each in the schema - #222
Merged
Merged
Conversation
…n the schema The schema a NetBox job's recipe carried asked for one verdict per account but required one item, so Goose accepted an output that left an account out and the verification gate stopped on the missing line (#221). The dispatch step now mounts the job's checks' verdicts, the comparison step's item, reads the account names through the comparison's own reader, and sends them in the job line. The job program builds the schema for each job: a verdict under each name, no other name, and proposals limited to the same names. A NetBox job with no verdicts fails at the dispatch step before it runs, with the stop the comparison would have given after it. The task text names the shape.
The record states the options and the decision behind #221's fix. ADRs 0049 and 0030 point to it, the agent job page describes the per-job schema and the dispatch step's new refusal, W.12 names both readers of the verdicts, and the evidence collection runbook says where a job without verdicts now fails.
sindredg
added a commit
that referenced
this pull request
Oct 28, 2026
* feat: run the dispatch image that names the job's accounts The template's three steps move to the image the pipeline pushed from main at b9de301, the first push after #222 merged. Its dispatch step reads a NetBox job's accounts from the checks' verdicts and names them in the job line, which the job program needs to build the job's schema (ADR 0051). * docs: record the live run of the accounts in the job line Four jobs on 2026-10-28 as a run set: two NetBox jobs that matched with a verdict under each account's name from one accepted call, a job with no collection that failed at the dispatch step before it ran, and a synthetic job. A lessons row, the run set's bar on the milestone 5 chart with a category for a job that failed before it ran, the worklog section, and the validation README's last run: 425 of 426, U.7 on a newer mesh agent release upstream (#225).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Change
The schema a NetBox job's recipe carried asked for one verdict per account but required only one item, so Goose accepted an output that left an account out and the verification gate stopped on the missing line (#221). Now the trusted side names the accounts, and the schema requires each (ADR 0051).
platform/dispatch/dispatch.py,platform/argo/workflow-template.yaml): mounts the job's checks' verdicts, the comparison step's optional item, reads the account names through the comparison's own reader, and sends them sorted in the job line asaccounts. A NetBox job with no item, another job's, or one out of shape fails here, before the job runs, with the stop the comparison step would have given after it.worker/agent-runtime/job/agent_job.py): requiresaccountsfor a NetBox job (1 to 20 names in the comparison's pattern, no repeat) and refuses the field for any other job. The schema is built per job:verdictsis an object with a required property per account and no other, and a proposal's account is one of the same names. The lines written for the comparison keep their form.collectors/netbox/task.txt): the last paragraph asks for the verdict under each account's name as the schema lists them.W.12's reason, and the evidence collection runbook's note on a deleted config map.Validation
All local, with the suites' stubs and fakes. Nothing ran on the live system.
/usr/bin/python3 -I -S -m unittest discover -s testsinworker/agent-runtime/jobpython3.15 -I -m unittest discover -s testsinplatform/dispatchruff checkandruff format --checkon both programspython3 -I validation/evidence/render.py --checkverdictsvolume and its mountNot verified:
/etc/aisec, where the tool certificate is mounted.final_output_tool.rsvalidates each call with thejsonschemacrate over the whole schema.Risks and follow-up
main; a pull request pins its digest in the template; the template, the image, and the job program go live in one step; then two NetBox jobs and the synthetic job, every check, and the records within 24 hours. That follow-up closes The NetBox answer schema accepts an answer that leaves out an account #221.