buildline 0.5.1 → 0.7.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.
@@ -24,16 +24,14 @@ State the type and the reason in one line. The person can override.
24
24
 
25
25
  ## 3. Create the feature
26
26
 
27
- Preferred: run `npx buildline new "<title>" --type <type>`. It creates `.buildline/features/<id>-<slug>/` with `feature.json`, `spec.md` and `progress.md`.
27
+ Run `node .buildline/bin/feature.mjs new "<title>" --type <type>` (add `--owner "<name>"` if the person told you who owns it). It creates `.buildline/features/<id>-<slug>/` with `feature.json`, `spec.md` and `progress.md`, and sets the starting status: `build` for a fix, `spec` otherwise.
28
28
 
29
- If the CLI isn't available, do it by hand: next id = highest existing id + 1, zero-padded to 3 digits; slug = kebab-case title (max 5 words); copy the files from `.buildline/templates/`.
30
-
31
- Then fill in `spec.md → ## Brief` (problem, who, outcome, open questions) and set `owner` in `feature.json` if the person told you who owns it.
29
+ Then fill in `spec.md → ## Brief` (problem, who, outcome, open questions).
32
30
 
33
31
  ## 4. Route
34
32
 
35
- - `fix` → set status to `build`. In `spec.md`, also fill `## Acceptance` with a single scenario that reproduces the bug (it must fail before the fix). Next: `/buildline-build <id>`.
36
- - `feature` → status `spec`. Next: `/buildline-spec <id>`.
37
- - `epic` → status `spec`. Next: `/buildline-spec <id>`, which will end by proposing the split into child features.
33
+ - `fix` → it starts at `build`. In `spec.md`, also fill `## Acceptance` with a single scenario that reproduces the bug (it must fail before the fix). Next: `/buildline-build <id>`.
34
+ - `feature` → it starts at `spec`. Next: `/buildline-spec <id>`.
35
+ - `epic` → it starts at `spec`. Next: `/buildline-spec <id>`, which will end by proposing the split into child features.
38
36
 
39
- Append a `history` entry to `feature.json`: `{ "at": "<ISO date>", "station": "new", "note": "<type and one-line reason>" }`.
37
+ Record why: `node .buildline/bin/feature.mjs log <id> "<type and one-line reason>"`.
@@ -6,19 +6,14 @@ Resolve the feature from `$ARGUMENTS`, or use the most recent feature with statu
6
6
 
7
7
  ## Write the tasks
8
8
 
9
- Write them into `feature.json → tasks` (replace the placeholder):
10
-
11
- ```json
12
- {
13
- "id": "T1",
14
- "title": "Add `saved_carts` table and model",
15
- "covers": ["R1", "A2"],
16
- "verify": "`npm test -- saved-cart.model` passes; migration runs up and down",
17
- "passes": false,
18
- "notes": ""
19
- }
9
+ Add them in order, one command per task (ids T1, T2, … are assigned for you):
10
+
11
+ ```bash
12
+ node .buildline/bin/feature.mjs task <id> add "Add saved_carts table and model" --covers R1,A2 --verify "npm test -- saved-cart.model passes; migration runs up and down"
20
13
  ```
21
14
 
15
+ Add `--parallel` to tasks that could run alongside the previous one.
16
+
22
17
  Rules:
23
18
 
24
19
  - **Small**: each task fits in one focused session and one commit, usually under ~200 changed lines.
@@ -26,7 +21,7 @@ Rules:
26
21
  - **Verifiable**: `verify` says exactly what to run or observe. "Works" is not a verification.
27
22
  - **Traceable**: `covers` lists the requirement and acceptance ids it moves forward. Every `A*` scenario must be covered by at least one task.
28
23
  - **Test-first where it's cheap**: when a task introduces logic, its first step is a failing test for the acceptance scenario.
29
- - **Ordered**: dependencies come first. Mark tasks that could run in parallel with `"parallel": true`.
24
+ - **Ordered**: dependencies come first. Mark tasks that could run in parallel with `--parallel`.
30
25
  - Include the boring tasks: migrations, feature flags, docs, analytics events, cleanup of temporary code.
31
26
 
32
27
  Then write a one-paragraph `## Plan` summary in `spec.md` (approach, order, risks) so humans don't have to read JSON.
@@ -39,6 +34,6 @@ Then write a one-paragraph `## Plan` summary in `spec.md` (approach, order, risk
39
34
 
40
35
  ## Handoff
41
36
 
42
- - Set status to `build`. Append a `history` entry.
43
- - **Approval:** at autonomy ≤ 2, ask the person to approve the plan and record `approvals.plan` only on an explicit yes. At L3+, continue without waiting.
37
+ - **Approval:** at autonomy ≤ 2, ask the person to approve the plan and record it only on an explicit yes: `node .buildline/bin/feature.mjs approve <id> plan --by "<their name>"`. Until then the feature stays at `plan`. At L3+, continue without waiting.
38
+ - Then `node .buildline/bin/feature.mjs move <id> build --note "<n> tasks"`.
44
39
  - Next: `/buildline-build <id>`, or `/buildline-autopilot <id>` to run build → verify → review unattended.
@@ -34,4 +34,4 @@ Write `## Review` in `spec.md`: a summary of what changed and why, risk areas to
34
34
 
35
35
  ## 5. Route
36
36
 
37
- When there are no open blockers or should-fix findings: status `ship`, history entry, next `/buildline-ship <id>`. A human still approves the merge at every autonomy level.
37
+ Blockers and should-fix findings become tasks (`node .buildline/bin/feature.mjs task <id> add "…"`) and the feature goes back with `node .buildline/bin/feature.mjs move <id> build --note "<n> findings"`. When there are none: `node .buildline/bin/feature.mjs move <id> ship --note "review clean"`, next `/buildline-ship <id>`. A human still approves the merge at every autonomy level.
@@ -27,6 +27,6 @@ Specs are written for one change; the context files carry what lasts. Update the
27
27
 
28
28
  ## 4. Close
29
29
 
30
- - Set status to `done`, fill `metrics.shippedAt`, append a `history` entry with the PR link.
30
+ - `node .buildline/bin/feature.mjs move <id> done --note "<PR link>"` (this records the ship date).
31
31
  - Append a final `progress.md` entry.
32
32
  - Suggest the next feature in the queue (`/buildline`).
@@ -41,6 +41,7 @@ If `type` is `epic`, end by proposing 2–6 child features, each a thin, shippab
41
41
 
42
42
  ## 6. Approval and handoff
43
43
 
44
- - Set status to `design` (or `plan` if the change has no UX or architecture decisions; say why).
45
- - **Approval:** the spec needs human approval when autonomy ≤ 3. Ask: "Approve this spec?" Only when the person explicitly approves, record `approvals.spec = { "by": "<name or role>", "at": "<ISO date>" }`. Never record an approval on someone's behalf. They can also approve from `npx buildline ui` or with `npx buildline approve <id> spec`.
46
- - Append a `history` entry and suggest the next command.
44
+ - **Approval:** the spec needs human approval when autonomy ≤ 3. Ask: "Approve this spec?" Only when the person explicitly approves, record it: `node .buildline/bin/feature.mjs approve <id> spec --by "<their name>"`. Never record an approval on someone's behalf. They can also approve in `npx buildline ui` or `npx buildline watch`. Until then the feature stays at `spec` and the board shows it waiting on them.
45
+ - Once approved (or at L4), move on: `node .buildline/bin/feature.mjs move <id> design --note "<one line>"`, or `plan` if the change has no UX or architecture decisions (say why). The script refuses the move while a required approval is missing.
46
+ - Record what happened: `node .buildline/bin/feature.mjs log <id> "spec drafted, waiting for approval"` (or what changed).
47
+ - Suggest the next command.
@@ -40,5 +40,5 @@ Save screenshots and logs to `.buildline/features/<id>-<slug>/evidence/`.
40
40
 
41
41
  ## 4. Route
42
42
 
43
- - All pass → status `review`, history entry, next `/buildline-review <id>`.
44
- - Any fail → status back to `build`. For each failure, add a new task to `feature.json` (`"title": "Fix A3: empty state copy"`, `"covers": ["A3"]`, `"passes": false`) and increment `metrics.reworks` in `feature.json`. Next: `/buildline-build <id>`.
43
+ - All pass → `node .buildline/bin/feature.mjs move <id> review --note "A1–A<n> pass"`. Next: `/buildline-review <id>`.
44
+ - Any fail → for each failure, `node .buildline/bin/feature.mjs task <id> add "Fix A3: empty state copy" --covers A3`, then `node .buildline/bin/feature.mjs move <id> build --note "<n> scenarios fail"` (this counts a rework). Next: `/buildline-build <id>`.