@pmelab/gtd 55.0.0 → 57.0.0
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/.claude-plugin/plugin.json +1 -1
- package/README.md +72 -80
- package/dist/chunks/{reserved-DHafcW7t.mjs → reserved-X2RkNHin.mjs} +110 -318
- package/dist/chunks/{review-BJGKwlYv.mjs → review-v7sh5GF4.mjs} +30 -125
- package/dist/chunks/{steering-CLhu8C7q.mjs → steering-CCNvngSH.mjs} +256 -65
- package/dist/chunks/{tail-B9Hw2AFB.mjs → tail-S04KEewi.mjs} +144 -56
- package/dist/gtd.bundle.mjs +259 -22
- package/dist/steering.mjs +2 -2
- package/dist/testkit.mjs +6 -6
- package/dist/web/main.css +1 -1
- package/dist/web/main.js +551 -66
- package/dist/workflow-kit.mjs +1 -1
- package/dist/workflows/cleanup.mjs +2 -2
- package/dist/workflows/feature.mjs +63 -175
- package/dist/workflows/fix.mjs +3 -3
- package/dist/workflows/review.mjs +3 -3
- package/dist/workflows/rollout.mjs +1 -1
- package/dist/workflows.mjs +603 -727
- package/package.json +1 -1
- package/skills/authoring/SKILL.md +3 -3
- package/src/cli/Cli.ts +5 -5
- package/src/edge/Edge.test.ts +1 -1
- package/src/steering/FORMATS.md +5 -1
- package/src/steering/SteeringFormats.test.ts +2 -2
- package/src/steering/contract.test.ts +1 -0
- package/src/steering/findings.test.ts +47 -0
- package/src/steering/findings.ts +350 -0
- package/src/steering/fixtures/findings/gate.md +34 -0
- package/src/steering/fixtures/findings/gate.read.json +87 -0
- package/src/steering/index.test.ts +2 -2
- package/src/steering/index.ts +4 -3
- package/src/steering/review.test.ts +1 -75
- package/src/steering/review.ts +1 -74
- package/src/workflow/compile.test.ts +1 -0
- package/src/workflows/feature/criteria-coverage.feature +1 -7
- package/src/workflows/feature/criteria.test.ts +1 -41
- package/src/workflows/feature/criteria.ts +2 -14
- package/src/workflows/feature/fast-path.feature +0 -1
- package/src/workflows/feature/feature.test.ts +1 -1
- package/src/workflows/feature/feature.ts +16 -25
- package/src/workflows/feature/flag-mode.feature +1 -1
- package/src/workflows/feature/lens-models.feature +0 -1
- package/src/workflows/feature/lens-review.feature +323 -172
- package/src/workflows/feature/naive-test.feature +258 -0
- package/src/workflows/feature/one-step-land.feature +0 -1
- package/src/workflows/feature/refactor-absorbs.feature +1 -8
- package/src/workflows/feature/refactor-first.feature +2 -11
- package/src/workflows/feature/refactor-rebuild.feature +4 -25
- package/src/workflows/feature/refactor-review.feature +33 -118
- package/src/workflows/feature/refactor.test.ts +0 -2
- package/src/workflows/feature/refactor.ts +0 -1
- package/src/workflows/feature/review-gate.feature +7 -24
- package/src/workflows/feature/reviewer-walkthrough.feature +16 -104
- package/src/workflows/feature/seam-rejection.feature +0 -1
- package/src/workflows/feature/seam.feature +0 -1
- package/src/workflows/feature/seam.test.ts +1 -2
- package/src/workflows/feature/seam.ts +56 -10
- package/src/workflows/feature/standards.feature +75 -35
- package/src/workflows/fix/fix-lens-origin.feature +20 -7
- package/src/workflows/fix/fix-quality.feature +102 -23
- package/src/workflows/review/review-door.feature +62 -59
- package/src/workflows/shared/learn.test.ts +0 -14
- package/src/workflows/shared/learn.ts +1 -6
- package/src/workflows/shared/lenses.ts +149 -43
- package/src/workflows/shared/options.ts +9 -1
- package/src/workflows/shared/prose.ts +0 -6
- package/src/workflows/shared/review.test.ts +27 -26
- package/src/workflows/shared/review.ts +29 -196
- package/src/workflows/shared/skills.test.ts +0 -4
- package/src/workflows/shared/skills.ts +0 -5
- package/src/workflows/shared/steps.ts +1 -1
- package/src/workflows/shared/tail.ts +18 -9
- package/src/workflows/shared/text.test.ts +125 -329
- package/src/workflows/shared/text.ts +173 -471
- package/src/workflows/shared/vars.ts +2 -3
- package/src/workflows/feature/hands-on-skip.feature +0 -316
- package/src/workflows/feature/prototype-rounds.feature +0 -156
- package/src/workflows/feature/prototype.feature +0 -428
- package/src/workflows/feature/prototype.test.ts +0 -43
- package/src/workflows/feature/prototype.ts +0 -198
- package/src/workflows/feature/review-answers.feature +0 -324
- package/src/workflows/feature/severity-budget.feature +0 -116
- package/src/workflows/feature/severity-sorted-review.feature +0 -198
package/README.md
CHANGED
|
@@ -490,12 +490,21 @@ noted in steps 3 and 4 below.
|
|
|
490
490
|
fixed by the fix turn (`build.fix.quality.fixing`, up to three turns),
|
|
491
491
|
`noise` is dropped with its `p` recorded as
|
|
492
492
|
`Gtd-Mark: noise=<id> p=<p> <title>`, and `design` ones (questioning a
|
|
493
|
-
criterion or the approach) become notes
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
493
|
+
criterion or the approach) become notes. An unsure verdict (below
|
|
494
|
+
`qualityTriageMinP`, `0.7`) is `design`; mechanical findings the fix turns
|
|
495
|
+
leave become notes too. **The finding gate** (`build.quality.gate`) then
|
|
496
|
+
stops for you: `.gtd/QUALITY.md` lists the notes, then the noise under
|
|
497
|
+
`# Dropped as noise` so you can overrule the judge, each with one `- [ ] fix`
|
|
498
|
+
box. Tick a finding to have it fixed, optionally with a line of guidance
|
|
499
|
+
below its box; leave it unticked to drop it — landing the file untouched
|
|
500
|
+
drops them all, and guidance under an unticked box is refused. The ticked
|
|
501
|
+
ones go to the same fix turns (up to three), then the suite is kept green;
|
|
502
|
+
what they leave is listed as unresolved, with no second gate. A ticked
|
|
503
|
+
finding is fixed, never re-planned: raise anything bigger in your review. A
|
|
504
|
+
lap with no notes and no noise has no gate. This lap is where code quality is
|
|
505
|
+
looked at, and every round pays for it. It never replaces step 4 — your
|
|
506
|
+
review stays the final gate, and nothing here skips it. The `fix` and
|
|
507
|
+
`cleanup` doors run the same lap and gate before their own review.
|
|
499
508
|
|
|
500
509
|
A red suite that keeps failing past a few fix attempts escalates instead of
|
|
501
510
|
retrying forever: an agent turn reads the failing output and writes
|
|
@@ -513,46 +522,37 @@ noted in steps 3 and 4 below.
|
|
|
513
522
|
4. **You review.** After the quality lap a reviewer turn
|
|
514
523
|
(`build.review.reviewing`) walks you through the whole change: `## ` chunks
|
|
515
524
|
grouped by concern, **every chunk pointing at its code**
|
|
516
|
-
(`./path#start-end`), so the phone shows the diff beside each one.
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
**
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
note
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
naive pass or seam judge, the hands-on test runs again, the quality lap runs,
|
|
548
|
-
and you review again. At the refactor review an `edit` re-derives the
|
|
549
|
-
refactor instead. A `question` is answered inline under your note and the
|
|
550
|
-
process stops at the review again — no new plan. A `nit` is fixed in one
|
|
551
|
-
batch, the suite must go green (a red one gets fix turns first), then a fresh
|
|
552
|
-
review of the change stops at the review again. `praise` is dropped; a round
|
|
553
|
-
of only praise signs off. When a round mixes them, questions are answered and
|
|
554
|
-
nits fixed first, then the edits are planned — risk: the planning lap may
|
|
555
|
-
redo nit fixes it touches.
|
|
525
|
+
(`./path#start-end`), so the phone shows the diff beside each one. gtd
|
|
526
|
+
appends one `## Quality lap` chunk (`build.review.carrying`) listing, for
|
|
527
|
+
reference, what the quality lap did with every finding: **fixed
|
|
528
|
+
automatically** and **fixed at the finding gate** (each with its fixing
|
|
529
|
+
commit), **dropped at the finding gate**, **dropped as noise**, and
|
|
530
|
+
**unresolved after the finding gate**. To reopen one, write a note under its
|
|
531
|
+
line. A review with a chunk pointing at no code is refused
|
|
532
|
+
(`review-pointers`). A pointer note the reviewer opens with `Risk:` is fixed
|
|
533
|
+
before you see the review (`build.review.fix.risks.fixing`), then the review
|
|
534
|
+
is written again over the reviewer's own draft. On `refactor-first` the
|
|
535
|
+
refactor gets a walkthrough of its own first, covering the whole refactor on
|
|
536
|
+
every round, before the feature is built; see
|
|
537
|
+
[the naive pass](#the-naive-pass). Land with nothing changed to approve, or
|
|
538
|
+
write what is wrong. A note added with its own `Tick exactly one:` boxes (as
|
|
539
|
+
`/gtd pr` imports a thread) is answered by its tick instead of judged: fix as
|
|
540
|
+
suggested joins the nit batch below, won't fix drops it and records
|
|
541
|
+
`Gtd-Mark: wontfix=<title>`, your own answer is judged like a note. Approving
|
|
542
|
+
ends the process (at the refactor review, it moves on to the feature);
|
|
543
|
+
feedback is judged note by note, each as `edit`, `question`, `nit` or
|
|
544
|
+
`praise`. An `edit` sends the process back to step 2 for re-derived
|
|
545
|
+
requirements — the built criteria keep their IDs (reworded in place when
|
|
546
|
+
their behaviour changes) and new behaviour gets new ones — then the
|
|
547
|
+
implementation is amended to meet them, with no new naive pass or seam judge,
|
|
548
|
+
the quality lap runs, and you review again. At the refactor review an `edit`
|
|
549
|
+
re-derives the refactor instead. A `question` is answered inline under your
|
|
550
|
+
note and the process stops at the review again — no new plan. A `nit` is
|
|
551
|
+
fixed in one batch, the suite must go green (a red one gets fix turns first),
|
|
552
|
+
then a fresh review of the change stops at the review again. `praise` is
|
|
553
|
+
dropped; a round of only praise signs off. When a round mixes them, questions
|
|
554
|
+
are answered and nits fixed first, then the edits are planned — risk: the
|
|
555
|
+
planning lap may redo nit fixes it touches.
|
|
556
556
|
|
|
557
557
|
Each `edit` note also gets a severity tier from four judge questions
|
|
558
558
|
(security, reversibility, blast radius, new concept). Every tier is
|
|
@@ -600,9 +600,10 @@ conversation under their block, question, chunk, or hunk, and one the agent
|
|
|
600
600
|
answered last carries a "waiting on you" badge. Tap it to reply — your reply is
|
|
601
601
|
added as a new `H:` entry; while the agent has yet to answer, reopening it edits
|
|
602
602
|
your last entry instead. Tap an already-answered question to leave a note on it;
|
|
603
|
-
the agent may overturn the answer.
|
|
604
|
-
|
|
605
|
-
|
|
603
|
+
the agent may overturn the answer. At the finding gate the phone lists the open
|
|
604
|
+
findings, then those dropped as noise, each with a fix checkbox and, once
|
|
605
|
+
ticked, an optional line of guidance; Done stays disabled while the file holds
|
|
606
|
+
anything the gate would refuse. See
|
|
606
607
|
[Configuration](https://github.com/pmelab/gtd/blob/main/docs/configuration.md)
|
|
607
608
|
for its `ui:` settings.
|
|
608
609
|
|
|
@@ -616,17 +617,15 @@ gtd door review <commitish>
|
|
|
616
617
|
|
|
617
618
|
starts a review of everything from `<commitish>` to HEAD — the same review a
|
|
618
619
|
`feature` process ends with, minus planning and building. A green gate, then the
|
|
619
|
-
quality lenses: mechanical findings are fixed,
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
start one. `gtd door fix` repairs a red baseline as its own reviewed commit; a
|
|
629
|
-
note at its review is left in `.gtd/REVIEW.md` (beside the reviewer's original,
|
|
620
|
+
quality lenses: mechanical findings are fixed, the rest wait at the finding
|
|
621
|
+
gate, then a reviewer walks you through the change in `.gtd/REVIEW.md`, with the
|
|
622
|
+
lap's summary. A nit note is fixed in place; a note asking for a change is
|
|
623
|
+
collected into `.gtd/REQUIREMENTS.md` and built by one `feedback.fixing` turn,
|
|
624
|
+
with no design phase and no criteria — under the health loop, then it asks for
|
|
625
|
+
your review again. Sign off and it closes; nothing is left behind. A note asking
|
|
626
|
+
for new behaviour belongs in a `feature` process: sign off and start one.
|
|
627
|
+
`gtd door fix` repairs a red baseline as its own reviewed commit; a note at its
|
|
628
|
+
review is left in `.gtd/REVIEW.md` (beside the reviewer's original,
|
|
630
629
|
`.gtd/REVIEW.orig.md`) for the next `gtd door fix`, and until that runs,
|
|
631
630
|
starting `feature` or `review` is refused — remove both files to abandon the
|
|
632
631
|
hand-off. `gtd doors` lists the doors of the workflows your `gtd.config.ts`
|
|
@@ -674,25 +673,18 @@ be green; whether each criterion is still tested is the `criteria-coverage`
|
|
|
674
673
|
lens's call in the quality lap. A wrong approach is retried twice, then rests
|
|
675
674
|
for you to steer or overrule it. A refactor that already carried the whole
|
|
676
675
|
feature leaves the rebuild only the carried-over tests, and the feature's
|
|
677
|
-
quality lap and review cover the whole change.
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
blocked items, or with no way to test found, it rests for you. See
|
|
690
|
-
[The hands-on test](docs/configuration.md#the-hands-on-test). Feedback at the
|
|
691
|
-
feature review re-runs design and the implementation, never the naive pass;
|
|
692
|
-
feedback at the refactor review re-runs the refactor, never design; a
|
|
693
|
-
refactor-review change the refactor cannot build is refused, and the only way
|
|
694
|
-
out is `gtd abandon`. A process from 27.5.0 or later whose judge ruled
|
|
695
|
-
`refactor-first` must `gtd abandon` too. Details in
|
|
676
|
+
quality lap and review cover the whole change. With `naiveTest` on (off by
|
|
677
|
+
default), you try every green naive pass by hand first, applied to the working
|
|
678
|
+
tree at `seam.try`, before the seam judge or anything builds on it: a clean
|
|
679
|
+
`gtd land` signs it off; notes in `.gtd/NAIVE-TEST.md`, code edits or a
|
|
680
|
+
requirements edit send it back to a new naive pass, which gets them, until you
|
|
681
|
+
sign off. See [The naive test](docs/configuration.md#the-naive-test). Nothing
|
|
682
|
+
else tries the change by hand: the suite, the quality lap and the review check
|
|
683
|
+
the criteria. Feedback at the feature review re-runs design and the
|
|
684
|
+
implementation, never the naive pass; feedback at the refactor review re-runs
|
|
685
|
+
the refactor, never design; a refactor-review change the refactor cannot build
|
|
686
|
+
is refused, and the only way out is `gtd abandon`. A process from 27.5.0 or
|
|
687
|
+
later whose judge ruled `refactor-first` must `gtd abandon` too. Details in
|
|
696
688
|
[the naive-pass path](docs/configuration.md#the-naive-pass-path).
|
|
697
689
|
|
|
698
690
|
**One process, one build.** A change is built in one pass — one naive pass, one
|
|
@@ -884,7 +876,7 @@ gtd is one package, `@pmelab/gtd`, and every entrypoint shares its version and
|
|
|
884
876
|
| -------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
885
877
|
| `@pmelab/gtd/flows` | The flow API a workflow is written in: the steps (`agent`, `human`, `run`, …), `scope`, workflow factories, `defineConfig` and `FLOWS_PROTOCOL`. |
|
|
886
878
|
| `@pmelab/gtd/wire` | The driver protocol: `WIRE_SCHEMA`, the exit codes and the types of every `--json` document. |
|
|
887
|
-
| `@pmelab/gtd/steering` | The steering-file formats (`qa`, `review`) and the review-note readers.
|
|
879
|
+
| `@pmelab/gtd/steering` | The steering-file formats (`qa`, `review`, `findings`) and the review-note readers. |
|
|
888
880
|
| `@pmelab/gtd/workflow-kit` | Policy-free building blocks to compose a workflow from: health checks, quality laps, scenario freezing, review tails. |
|
|
889
881
|
| `@pmelab/gtd/workflows` | Every shipped workflow and all its parts in one module; also resolvable as `@pmelab/gtd/workflow`. |
|
|
890
882
|
| `@pmelab/gtd/workflows/feature`, `@pmelab/gtd/workflows/review`, `@pmelab/gtd/workflows/fix`, `@pmelab/gtd/workflows/rollout`, `@pmelab/gtd/workflows/cleanup` | One shipped workflow each: its factory as the default export, its parts, and the reserved exports (`defaults`, `envDefaults`, `summary`, `steering`, `skills`, `access`). `gtd install` imports these. |
|