feat(compliance): cover three missing tasks - #6172
Conversation
| task: get_creative_features | ||
| schema_ref: "creative/get-creative-features-request.json" | ||
| response_schema_ref: "creative/get-creative-features-response.json" | ||
| doc_ref: "/creative/task-reference/get_creative_features" |
There was a problem hiding this comment.
Medium: doc_ref dangles. The get_creative_features doc lives at docs/governance/creative/get_creative_features.mdx → route /governance/creative/get_creative_features. There is no page at /creative/task-reference/get_creative_features — that directory has no get_creative_features.mdx, and no redirect covers it. doc_ref is not build-validated, so the green compliance build does not catch this. A reader following the link in the published compliance asset gets a 404.
| doc_ref: "/creative/task-reference/get_creative_features" | |
| doc_ref: "/governance/creative/get_creative_features" |
| task: search_brands | ||
| schema_ref: "brand/search-brands-request.json" | ||
| response_schema_ref: "brand/search-brands-response.json" | ||
| doc_ref: "/brand-protocol/tasks/search_brands" |
There was a problem hiding this comment.
Medium: doc_ref points to a page that does not exist. No search_brands.mdx under docs/brand-protocol/tasks/, and search_brands is not documented anywhere in docs/ (grep returns nothing). The other steps in this storyboard (get_brand_identity) resolve to real pages; this one dangles. Either ship the task doc alongside the storyboard step or point doc_ref at the page that actually documents search_brands. doc_ref is not build-validated, so the compliance build does not flag it.
There was a problem hiding this comment.
Ladon verdict: Approve
Approve — additive compliance coverage restoring three experimental-task storyboard steps (search_brands, get_creative_features, get_media_buy_artifacts).
Checked: sample requests conform to request-schema required fields; validation paths (brands, results, artifacts, media_buy_id) match the response schemas; controller_seeding placement (under prerequisites) and top-level fixtures.media_buys match the established media-buy scenario pattern; changeset is minor, appropriate for additive coverage. No wire-shape drift, no schema↔docs breaking mismatch, no oneOf regression, no released-artifact mutation.
Medium findings
- static/compliance/source/specialisms/content-standards/index.yaml:600 — get_creative_features doc_ref points to a non-existent route
- static/compliance/source/protocols/brand/index.yaml:175 — search_brands doc_ref dangles; task is undocumented
Two medium doc_ref findings, neither in data-loss/schema/infra category, no blocking findings, no gated paths satisfied issue (gated_paths: false), high_risk false, no team gate. Two mediums fall through the decision table to row 9 → approve. Worth a follow-up to wire up the dangling doc_ref links, but not blocking.
Medium findings
- static/compliance/source/specialisms/content-standards/index.yaml:600 — get_creative_features doc_ref points to a non-existent route
- static/compliance/source/protocols/brand/index.yaml:175 — search_brands doc_ref dangles; task is undocumented
Summary
Restores the bounded, reviewable slice from closed PR #4294 on a clean branch based on
main:search_brandson the existing brand protocol storyboardget_creative_featureson the existing content-standards storyboardget_media_buy_artifactson the existing content-standards storyboard, with controller-seeded buy stateEach task is gated with step-level
requires_tool, so agents that do not advertise an experimental task receivemissing_toolrather than failing the whole storyboard. None were added to storyboard-levelrequired_tools.Verification
server/src/training-agent/task-handlers.tswas not checked out; the compliance build executes the source-tree scoping lint successfullyPart of #4291. Remaining umbrella tracks will be split into focused follow-ups.