Skip to content

v2.3.0

Latest

Choose a tag to compare

@tieubao tieubao released this 09 Oct 19:36
· 49 commits to master since this release

dwarves-kit v2.3.0: design review as a diagram delta

Minor release. New commands and behaviour, no breaking change to a public surface. Full entry list: docs/CHANGELOG.md under [2.3.0].

Highlights

  • Design review as a diagram delta. /kit:design now reviews a feature as a delta against docs/SYSTEM-DESIGN.md, rendered as a UML drawing set with new, changed and removed elements marked. /kit:spec stops on an unapproved L1 or L2 change and keeps terms and quality requirements as living docs. (#961, #962)
  • Lighter, data-driven lanes. Lanes are data in kit.toml, the default lane is light, and a fail-closed diff floor applies full-lane gates to hard paths. Small specs skip the 7-reviewer round, and /kit:execute uses one builder per spec. (#840, #849, #860, #847, #843)
  • Safer gates and hooks. A hardened safety-gate normalizer and permission-auto-approve, every hook anchored to the repo root, a board-row gate, and the hard-path exemptions listed under Security-relevant config. (#804, #801, #802, #703)
  • Wrap and landing grow up. wrap land, start, rebase, adopt and deploy-wait land hand-made worktrees end to end, with merge proofs that cannot delete unlanded work, conflict recovery, CI-label waits, and a linted report. (#674, #718, #954, #947, #861, #794, #817)
  • Board and fleet visibility. board work shows who is on what, board brief and board health post a daily digest per cluster, board hermes links kit skills into Hermes, and a Board pane mod brings it into Claude Code. (#834, #944, #941, #945, #874)
  • Scheduled harvest and the decision API. The harvest sweep stages learnings from transcripts on a schedule, and bin/flick answers "pick one of N" through a decision API behind an egress guard. (#814, #829, #864, #895)
  • Cost and context observability. session observe entry-fee, burn and timing, session recall --tail, and a percent-of-window context-budget warning show where tokens and time go. (#657, #563, #880, #753, #759)
  • Faster tests. bin/test-affected and run-all.sh --changed run only what a diff touches, suites run in parallel, and negctl --parallel runs controls side by side. (#815, #664, #916, #930)

Headline: system design review (#961, #962)

/kit:design now reviews a feature design as a delta against the repo's docs/SYSTEM-DESIGN.md. The system-design skill renders the model as a UML drawing set and marks every element new, changed or removed against a base ref. The reviewer reads sheets, not prose. The approved delta then feeds two downstream steps: a draft test plan (E1, commands/design.md Step 5b) and a stop in /kit:spec when a feature touches L1 or L2 without an approved design (E5, commands/spec.md Step 3).

The sheets below come from the installed skill, bash ~/.claude/skills/system-design/build, on the marketplace example (with its base file) and on the design-process model. Screenshots are real renders, one element per sheet.

Delta sheet (marketplace). 14 new, 2 changed, 5 removed against SYSTEM-DESIGN.base.md.

Delta sheet, marketplace

Order state machine with new and changed marks (marketplace). cancelling and refunding are new states, the old direct paid -> cancelled and refund edges are shown dashed as removed.

Order states, marketplace

Architecture components (marketplace). The L1 sheet that E5 guards.

Architecture, marketplace

Component sheet (design-process). The same renderer on a second, unrelated model, no base file.

Component design, design-process

E1: test plan drafted from the delta

After the user approves the diagram delta, Step 5b appends this section to the brief. One row per changed element, mapped by element kind, proof left TBD.

## Test plan (draft from design)

| # | Changed element | Diagram id | Element key | Test kind | Proof |
|---|---|---|---|---|---|
| 1 | State transition | sm-order | transition paid -> cancelling (cancel, before shipping) | Transition case, plus one illegal sample for `cancelling` | TBD |
| 2 | State transition | sm-order | transition cancelling -> cancelled (charge.refunded) | Transition case | TBD |
| 3 | State transition | sm-quote | transition sent -> paying (owner pays) | Transition case, plus one illegal sample for `paying` | TBD |
| 4 | ERD constraint or key | schema | table variants (+col stock_on_hand, +col stock_reserved) | Constraint-violation case: reserved stock above on-hand stock is rejected | TBD |
| 5 | Component edge | architecture | edge core -> stripe (PaymentGateway) | Contract test | TBD |

Row 4 cites the changed columns because the example model declares no named constraint. Row 5 cites an edge that exists in both the base and the current model, so the delta sheet does not list it; it is a contract row on the new paying path, shown for the component-edge kind.

E5: the L1/L2 stop in /kit:spec

When the feature adds or changes an L1 or L2 element and the brief has no approved design for it, /kit:spec stops before it writes anything and routes back. The rule is in commands/spec.md Step 3. The message below shows its shape with an illustrative element.

STOP: L1/L2 change without an approved design.
Feature: refund worker
Changes: architecture (L1/L2): new component `refund-worker`, new edge core -> refund-worker
Brief: docs/briefs/DECISION-BRIEF-refund-worker.md has no approved design for it.
Next: run /kit:design to record an ADR and the L1/L2 delta, then re-run /kit:spec.
Specs may add L3/L4 detail on their own; this change is above that line.

Also in this release

  • wrap land --no-pull never writes the main checkout; wrap land holds up to 300 s for late pull_request checks (#954, #947).
  • wrap refuses to remove a worktree a live process still holds (#948).
  • board health, board brief, board hermes link|check: a periodic board digest per cluster and a Hermes skill link with a stale-skill check (#941, #945, #946).
  • tests/run-all.sh --failed and a no-weaken rule for the fix agent (#959).

Deprecated

bin/learn forwards to bin/reflect for this one release (ADR-0036) and is removed from 2.4.0. Repoint any external caller to bin/reflect now.

Upgrade

No migration. Re-run install.sh to pick up the new hooks and verbs.