specverb-gen: merge multiple guardfiles per repo into one binary #133
Labels
No labels
burndown-2026-06
sunday-sprint
autonomy
async-consult
autonomy
epic
autonomy
headless
autonomy
live-collab
coherence-core
priority
P0
priority
P1
priority
P2
priority
P3
priority
P4
qa-fixture
role/ai
role/creator
role/design
role/director
role/engineer
role/exec
role/human
role/ops
role/qa
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
coilyco-flight-deck/umbra#133
Loading…
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?
Goal
Swap the kdl build process so the specverb-gen driver reads every
*.guardfile.kdlin a directory, groups them by binary name (wrap <binary> ..., i.e.Group[0]), and merges a group into one binary while keeping per-API artifacts separate.Concretely: define
ward.forgejo.guardfile.kdlandward.aws.guardfile.kdl, bothwrap ward ops <api>, and have them merge duringbuild/runinto a singlewardbinary exposingward ops forgejoandward ops aws.Decisions (confirmed with Kai)
Group[0]). Differentwrapnames build as separate binaries - that is the "separate output artifacts where possible".specverb.lockper binary (it is onego build; the module graph is the union, already identical today since the template always imports the aws sdk).forgejo.swagger.lock.json,aws.swagger.lock.json) and reference doc (ward.forgejo.guardfile.md, ...).Design
specverb.Mountalready find-or-creates the command path and appends, so mounting N guardfiles onto one root*cli.Commandalready coexists under a sharedopsparent. No mount-engine change.http/specgen: mergedmain.gotemplate embedding N (guardfile, spec lock) pairs, loopingMountonce per pair, hoisting the audit writer. Per-spec env override derived from the full group (WARD_OPS_FORGEJO_SPEC) to avoid collision on the shared binary name.http/specdrv: discover + group the dir's guardfiles;gen/lock/skewfan out per guardfile (each hits its own upstream + writes its own lock/doc),lockresolves one merged dep lock,build/runbuild one merged binary. Cache keyed by the sorted set of member paths; stamp hashes combined over all members.cmd/specverb-gen:--guardfileselects a group by its binary name; cwd discovery proceeds when exactly one binary is present, errors listing binaries otherwise.Consumer (ward)
ward-kdl.guardfile.kdl->ward.forgejo.guardfile.kdl, rewrap towrap ward ..., addward.aws.guardfile.kdl, update the Makefile to drop the per-guardfile flags.