Make kdl-specs discovery independent of member filenames and directory layout #182
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
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
coilyco-flight-deck/umbra#182
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?
Problem
kdl-specscurrently defines a generated binary as every*.guardfile.kdlfile in one directory that shares the selected member'swrapbinary name.Current
loadGroupbehavior inhttp/kdlspecs/kdlspecs.go:--guardfilefixes discovery tofilepath.Dir(selectedFile);filepath.Glob(dir, "*.guardfile.kdl");wrap <binary>identity.That makes these logically equivalent projects behave differently:
A policy member's filename and folder placement should be organization, not semantics. The KDL content and an explicit discovery root/selection should determine the generated binary.
Parent product direction: cli-guard#239.
Product contract
Implement project discovery with these properties:
wrapdeclaration, not from the literal*.guardfile.kdlsuffix. Existing suffixes remain accepted with no migration requirement.wrapbinary identity (Group[0]) matches. Selecting one member selects that binary group; multiple binary groups without a selector fail with an actionable list rather than merging accidentally.specverb.lock, generatedmain.go, and materialization cache remain per generated binary.*.guardfile.kdlconsumers work unchanged.--guardfileremains a valid selector; add a project-root flag or equivalent explicit boundary rather than inferring an unbounded filesystem walk.The exact CLI spelling for the discovery root is implementation judgment, but it must be visible in
--helpand documented. Avoid introducing a required manifest whose only purpose is to restate every member path; that would merely move filename/folder coupling into another file.Acceptance tests
.kdloperation member builds successfully.*.guardfile.kdldiscovery and all five driver verbs (gen,lock,skew,build,run) remain covered.Update
docs/kdl-specs.md,docs/kdl-specs-materialization.md, CLI help, anddocs/FEATURES.md; run the repository validation gates.Make KDL files 100% agnostic to file names and folder structuresto Make kdl-specs discovery independent of member filenames and directory layoutWARDED_WORKFLOW: coilyco-flight-deck/cli-guard#240
details
Review gate: intentionally skipped (temporary ward default pending brokered QA).
workflow: pull-request-and-merge; review summary: intentionally skipped (temporary ward default pending brokered QA)
Retrospective: the change was cohesive once discovery identity became root-relative; repository documentation caps required splitting the discovery contract.
Confidence: high — local gates and all PR checks passed.
Surprises: pre-commit enforces tight documentation and comment-size limits.
Follow-ups: none.
WARDED_WORKFLOW: reservation-released
release details
Run finished with
WARDED_WORKFLOW: https://forgejo.coilysiren.me/coilyco-flight-deck/cli-guard/pulls/240.ward container reapreleased containerengineer-codex-cli-guard-182(--harness codex): the terminal outcome supersedes the reservation, so a later redispatch no longer needs--override-reservation.Outcome summary: coilyco-flight-deck/cli-guard#240
— Codex, via
ward agent