specverb driver: no-code CLI - retire consumer Makefile, materialize generated Go out-of-band #106

Closed
opened 2026-06-07 04:20:32 +00:00 by coilysiren · 0 comments
Owner

Direction (from Kai)

ward-kdl is a no-code CLI - the consumer writes only policy (the guardfile),
never Go or build glue. Two consequences that reshape how everything else
surfaces:

  1. Retire the consumer Makefile. The lock / skew / ward-kdl make
    targets are transitional scaffolding. They should migrate onto a real driver
    verb surface - the uv model (uv run / uv lock), not make. specverb-gen
    grows into a driver that owns gen / lock / skew / run.
  2. Materialize generated Go out-of-band. The generated main.go is the
    analog of a venv: it should live in a cache dir (uv-style), not inside
    cmd/ward-kdl/ in the repo tree. The repo holds only the source of truth
    (guardfile + lock); the generated Go and the built binary materialize out of
    band.

Also folds in

The deferred lock pruning belongs here: the committed lock is currently the
full 800KB spec (re-incurring ward#62's bloat objection); prune it to only the
granted operations plus their transitive $ref schemas once the driver owns
the lock step.

Reshapes

Chunks 2 and 3 should surface their commands (describe, skill) as driver
verbs, not make targets, consistent with this direction.

## Direction (from Kai) ward-kdl is a **no-code** CLI - the consumer writes only policy (the guardfile), never Go or build glue. Two consequences that reshape how everything else surfaces: 1. **Retire the consumer Makefile.** The `lock` / `skew` / `ward-kdl` make targets are transitional scaffolding. They should migrate onto a real driver verb surface - the uv model (`uv run` / `uv lock`), not `make`. specverb-gen grows into a driver that owns gen / lock / skew / run. 2. **Materialize generated Go out-of-band.** The generated `main.go` is the analog of a venv: it should live in a cache dir (uv-style), not inside `cmd/ward-kdl/` in the repo tree. The repo holds only the source of truth (guardfile + lock); the generated Go and the built binary materialize out of band. ## Also folds in The deferred **lock pruning** belongs here: the committed lock is currently the full 800KB spec (re-incurring ward#62's bloat objection); prune it to only the granted operations plus their transitive `$ref` schemas once the driver owns the lock step. ## Reshapes Chunks 2 and 3 should surface their commands (`describe`, `skill`) as driver verbs, not make targets, consistent with this direction.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
coilyco-flight-deck/cli-guard#106
No description provided.