@windyroad/retrospective 0.21.2 → 0.21.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
|
@@ -44,10 +44,20 @@
|
|
|
44
44
|
# The lazy-count line is the only required field; without it the file
|
|
45
45
|
# is skipped silently.
|
|
46
46
|
#
|
|
47
|
+
# ADR-074 exclusion: a substance-confirm-before-build ask (confirming the
|
|
48
|
+
# SUBSTANTIVE chosen option of a genuine >=2-option decision before dependent
|
|
49
|
+
# work is built on it) is classified `Direction` (cat-1) by run-retro Step 2d,
|
|
50
|
+
# NOT `Lazy`. The framework deliberately does not resolve such a decision, so
|
|
51
|
+
# the ask is legitimate. This script is category-agnostic — it tallies whatever
|
|
52
|
+
# the trail file records — so the exclusion is realised by the Step 2d rubric
|
|
53
|
+
# tagging the ask as Direction; this script then keeps it out of the lazy count
|
|
54
|
+
# by construction.
|
|
55
|
+
#
|
|
47
56
|
# Read-only — does NOT mutate any retro file.
|
|
48
57
|
#
|
|
49
58
|
# @problem P135 (Phase 5 measurement)
|
|
50
59
|
# @adr ADR-044 (Decision-Delegation Contract — framework-resolution boundary; lazy-count metric is the regression signal)
|
|
60
|
+
# @adr ADR-074 (Confirm-substance-before-build — substance-confirm asks are Direction/cat-1, excluded from the lazy count)
|
|
51
61
|
# @adr ADR-040 (Tier 3 advisory-not-fail-closed — declarative-first precedent)
|
|
52
62
|
# @adr ADR-038 (Progressive disclosure — per-row byte budget)
|
|
53
63
|
# @adr ADR-026 (Cost-source grounding — trail entries cite specific tool invocations per retro)
|
|
@@ -80,6 +80,20 @@ TRAIL
|
|
|
80
80
|
[ -z "$output" ]
|
|
81
81
|
}
|
|
82
82
|
|
|
83
|
+
@test "ADR-074 substance-confirm ask counts as direction, never inflates lazy" {
|
|
84
|
+
# A retro where the only AskUserQuestion was a substance-confirm-before-build
|
|
85
|
+
# ask: run-retro Step 2d tags it `direction` (cat-1, ADR-074), so the trail
|
|
86
|
+
# records direction=1 lazy=0. The script must report it under direction and
|
|
87
|
+
# leave lazy at 0 — the exclusion holds by construction (category-agnostic tally).
|
|
88
|
+
cat > "$TEST_DIR/2026-05-27-ask-hygiene.md" <<'TRAIL'
|
|
89
|
+
**Lazy count: 0**
|
|
90
|
+
**Direction count: 1**
|
|
91
|
+
TRAIL
|
|
92
|
+
run bash "$SCRIPT" "$TEST_DIR"
|
|
93
|
+
[ "$status" -eq 0 ]
|
|
94
|
+
[[ "$output" == *"RETRO 2026-05-27 lazy=0 direction=1"* ]]
|
|
95
|
+
}
|
|
96
|
+
|
|
83
97
|
# ── Multi-entry behaviour ───────────────────────────────────────────────────
|
|
84
98
|
|
|
85
99
|
@test "multiple trail entries emit RETRO lines sorted oldest-first by date" {
|
|
@@ -242,7 +242,7 @@ Per **ADR-044** (Decision-Delegation Contract — framework-resolution boundary)
|
|
|
242
242
|
|
|
243
243
|
| Classification | Definition | Lazy? |
|
|
244
244
|
|---|---|---|
|
|
245
|
-
| **direction** | New tickets / new ADRs / new SKILLs / additions to suite that were not derivable from existing framework | NO |
|
|
245
|
+
| **direction** | New tickets / new ADRs / new SKILLs / additions to suite that were not derivable from existing framework — **including confirming the SUBSTANCE of a genuine ≥2-option decision before dependent work is built on it (ADR-074 (Confirm a decision's substance before building dependent work))** | NO |
|
|
246
246
|
| **deviation-approval** | Existing decision found wrong under current evidence; user approves amend / supersede | NO |
|
|
247
247
|
| **override** | One-time exception to a still-valid rule (not a rule-change) | NO |
|
|
248
248
|
| **silent-framework** | No ADR / JTBD / policy / WSJF / risk-score / SKILL applies; genuine new territory | NO |
|
|
@@ -252,6 +252,8 @@ Per **ADR-044** (Decision-Delegation Contract — framework-resolution boundary)
|
|
|
252
252
|
|
|
253
253
|
Classification ownership is silent agent judgement (per ADR-044 mechanical-stage discipline — no AskUserQuestion-about-AskUserQuestion meta-loop). The agent applies the framework-resolution heuristic: for each call, can the framework (ADR / JTBD / policy / WSJF / SKILL contract) resolve the decision? If yes → lazy. If no AND the call falls into one of the 5 non-lazy categories → that category. Borderline cases default to lazy (conservative — prefer false-positive lazy classification over silently underreporting friction).
|
|
254
254
|
|
|
255
|
+
**ADR-074 exclusion (substance-confirm-before-build).** A `substance-confirm-before-build` ask — surfacing the SUBSTANTIVE chosen option of a genuine ≥2-option decision the framework cannot resolve, before any dependent work is built on it — classifies as **direction** (cat-1), NOT lazy. The framework deliberately does NOT resolve such a decision (it is the user's to own); the ask is the correct behaviour ADR-074 mandates, not sub-contracting. Grounding: `Gap: genuine ≥2-option decision, framework cannot resolve, about to be built on (ADR-074)`. Do not let the conservative "borderline → lazy" default mis-score it — the trigger is narrow (a decision about to be BUILT ON), so it is unambiguously direction, never lazy. Counting it as lazy would pressure the agent back toward the P315 under-ask failure.
|
|
256
|
+
|
|
255
257
|
3. **Per-call grounding (ADR-026)**: each classification MUST cite the framework artefact that resolves the decision (for lazy) OR the framework gap (for non-lazy). Bare classifications are forbidden. Citation format: `Framework: <ADR / SKILL.md path / policy reference>` for lazy; `Gap: <one-line rationale>` for non-lazy.
|
|
256
258
|
|
|
257
259
|
4. **Emit the in-session table** as a `## Ask Hygiene` section in the Step 5 retro summary (see Step 5 template). Columns: `Call # | Header | Classification | Citation`. Plus a `**Lazy count: <N>**` line for cheap-script parsing, plus per-category count lines (`**Direction count: <N>**`, etc.).
|