Use CUE behind AOS-owned Ward profile validation and composition #523
Labels
No labels
burndown-2026-06
coherence-core
consult
headless
interactive
P0
P1
P2
P3
P4
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
coilyco-flight-deck/agentic-os#523
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
Decision
Go, from coilysiren/inbox#211.
Use CUE as the validation/composition engine behind AOS-owned Ward profile assets after Ward consumes typed profile data. This keeps YAML/operator-facing assets in AOS and explicitly does not create a ward-profile repo.
Scope
Non-goals
Parent: coilysiren/inbox#211.
Related: coilyco-flight-deck/agentic-os#516, coilyco-flight-deck/ward#1247.
WARDED_WORKFLOW: reservation-held
reservation details
Holder: launch intent for container
engineer-codex-agentic-os-523on hostkais-macbook-pro-2.local.Accepted by
ward agent --harness codex(reserved 2026-07-14T10:05:31Z). Concurrentward agentruns are blocked until this intent becomes visible or the intent is released. The stale-intent fallback is still TTL-bounded (3h TTL).--override-reservationoverrides.Do not comment on or edit this issue to steer the run while it is reserved. The engineer seeded the body once at launch and never re-reads it, so a comment or edit reaches only human readers, never the running engineer. A correction goes to a new issue, dispatched fresh. That is the only channel that reaches a run in flight. Where the forge supports it, ward locks this conversation to make that a road-block rather than a convention (ward#494).
run seed context — what this run is carrying (ward#609)
coilyco-flight-deck/agentic-os#523· branchissue-523· harnesscodex· workflowpull-request-and-mergeengineer-codex-agentic-os-523· wardv0.675.0· dispatched2026-07-14T10:05:28ZStatic container doctrine and seed boilerplate are identical every run and omitted here (they ride ward v0.675.0).
— Codex, via
ward agent🔎 ward agent advisor
ward agent advisor --harness codexran a one-shot standard research pass on this question:Recommendation
Proceed in AOS, but make this a build-time validation and rendering path, not a Ward runtime dependency. The first slice should add the profile asset structure, CUE schema/composition files, a validation command, and docs that say operators edit YAML. CUE should be described as the internal validator/compiler behind that YAML, not as the new hand-authored profile language.
Context read
ward#1247is closed and landed the internalProfileProviderseam. In the current Ward tree it returns typed smart defaults, fleet, topology, and agent role data, but the default provider still reads the existing KDL-backedconfigSource.agentic-os#516is closed and landeddocs/ward-profile-assets.md. AOS is now documented as the home for profile assets that survive the typed seam..ward/tree has guardfiles, roles, repos, workflow, and scripts. It does not yet have.ward/profiles/.ward#1265is open downstream and says the embedded profile/KDL fallback should live for one release train only after the typed profile path and AOS assets are available.ward-specs-<tag>.tar.gzonly includes top-level files under.ward/, not nested profile directories. Profile assets will need an explicit packaging decision.cuebinary, so toolchain plumbing is part of the work if validation becomes a normal gate.Decisions already made
ward-profilerepo.advanced.profile_refcontract.Preferred shape
.ward/profiles/as the source home described bydocs/ward-profile-assets.md..ward/profiles/<family>/*.yaml..ward/profiles/cue/or.ward/profiles/_cue/..ward/profiles/rendered/. Mark it generated and add a drift check.ward exec ward-profile-validateorward exec profile-assetsthat runscue vetand, when needed,cue export. CUE's own docs support this split:cue vetvalidates data andcue exportproduces concrete JSON/YAML for tools.docs/ward-profile-assets.mdto define the three layers: YAML is operator source, CUE is validation/composition machinery, rendered files are generated provider inputs..cuefiles at launch. Ward should consume typed data or pinned release artifacts, not import AOS source state live.Options considered
ward-profilerepo: reject. It is explicitly denied by the issue and parent roadmap.Open questions
ward-specsrelease tarball, or as a separateward-profiles-<tag>.tar.gzasset? The current tarball logic will miss nested.ward/profiles/files unless it is deliberately changed.go run cuelang.org/go/cmd/cue@<version>. If this becomes pre-commit or CI, dev-base should carry the binary.Risks
.cueor YAML directly from an AOS checkout. Avoid this by using pinned release artifacts or build-time renders.cuewill fail in current containers until the binary is installed or the hook runs through a pinned helper.Advisory close
The next engineering pass should stay in
coilyco-flight-deck/agentic-os: create the.ward/profiles/source layout, add CUE schema/validation scaffolding, add a ward-wrapped validation command, and update the profile-assets doc. It should not change Ward runtime behavior yet unless Ward already has a concrete typed file contract ready. If that contract is still absent, the AOS issue can still land as the validated source and documentation base, with the render target left as a named dependency on the Ward typed provider input.Researched and posted automatically by
ward agent advisor --harness codex(ward#179). This is one-shot research, not a carried change - verify before acting on it.— Codex, via
ward agentWARDED_WORKFLOW: #525
details
workflow: pull-request-and-merge; review summary: review gate skipped by ~/.ward/config.yaml default
felt: doc-led and narrow, with the CUE seam landing as a contract update instead of code churn
confidence: high
surprise: the merge gate waits for this authorization comment before it will proceed
follow-ups: none
WARDED_WORKFLOW: pass
details
workflow: pull-request-and-merge; review summary: review gate skipped by ~/.ward/config.yaml default
felt: doc-led and narrow, with the CUE seam landing as a contract update instead of code churn
confidence: high
surprise: the merge gate wanted a status-line QA verdict, not just the JSON block
follow-ups: none