derive_gaps
Turn gap analysis results into tracked artifacts: file feature gaps into the backlog and elevate uncovered objectives into hard goal gates.
Instructions
Record what a gap analysis found. Feature gaps land in the backlog at 'proposed' under one proposal, so derive_page/derive_review work on them unchanged. Goal gaps become HARD gates: creating a goal reshapes what every feature hangs off, and gate_reopen cannot unwind it once work routes in, so it stays the principal's however well the pair agrees. Call gap_scan first and check every candidate against the refusals it returns — a settled refusal is a decision, not an oversight. Finding nothing is a real outcome; record it as one rather than manufacturing candidates.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | No | Directory identifying the project and the tree. Defaults to this session's working directory, which in a git worktree is that worktree. | |
| note | No | ||
| actor | No | ||
| scope | No | What to record; defaults to all. Scope bounds what is FILED, never what was examined — both kinds of gap come out of one reading of the same frame, since you cannot tell a missing feature from a missing goal until you have decided whether an existing objective covers it, and that decision IS the analysis. Passing gaps outside the scope is refused rather than dropped: a finding already made must not be discarded to satisfy a filter. | |
| conferral | No | Required. ONE conferral for the whole analysis. Coverage is argued over the set — whether a seam between two objectives is real, whether something is genuinely uncovered or merely undocumented — and that argument does not decompose per candidate. | |
| goal_gaps | No | Work the project needs that NO existing objective covers. This is the finding nothing else in oz can produce, and the one that should be rarest — a non-goal is not a gap, it is the answer. | |
| feature_gaps | No |