@naswerks/engineering-loop 0.7.0 → 0.8.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/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/CHANGELOG.md +125 -0
- package/README.md +12 -7
- package/bin/verify-staged.mjs +136 -23
- package/bin/witness-acts.mjs +64 -0
- package/bin/witness-bodycheck.mjs +78 -0
- package/bin/witness-edits.mjs +60 -0
- package/bin/witness-extract-cmd.mjs +57 -0
- package/bin/witness-extract-seed.mjs +65 -0
- package/bin/witness-file-ledger.mjs +57 -0
- package/bin/witness-gaps.mjs +57 -0
- package/bin/witness-latency.mjs +55 -0
- package/bin/witness-lib.mjs +124 -0
- package/bin/witness-plane-window.mjs +57 -0
- package/bin/witness-procs.mjs +71 -0
- package/bin/witness-spawn-task.mjs +61 -0
- package/bin/witness-tx.mjs +60 -0
- package/bin/witness-watch.mjs +405 -0
- package/bin/witness-writes.mjs +64 -0
- package/package.json +1 -1
- package/references/docs-workflow.md +44 -24
- package/references/engineering-loop.md +41 -24
- package/skills/docs-audit-full/SKILL.md +2 -1
- package/skills/docs-process/SKILL.md +13 -7
- package/skills/docs-write/SKILL.md +1 -1
- package/skills/init/scripts/doctor.mjs +17 -5
- package/skills/init/scripts/owned.mjs +10 -0
- package/skills/spec-build/SKILL.md +8 -4
- package/skills/spec-coordinator/SKILL.md +125 -66
- package/skills/spec-ignite/SKILL.md +25 -21
- package/skills/spec-pipeline/SKILL.md +128 -80
- package/skills/spec-retro/SKILL.md +9 -4
- package/skills/spec-review/SKILL.md +22 -10
- package/skills/spec-seat/SKILL.md +63 -31
- package/skills/spec-witness/SKILL.md +267 -212
- package/templates/docs/readme-research.md +2 -2
|
@@ -29,21 +29,27 @@ quietly — say so in your PLAN TLDR and let the coordinator rule.
|
|
|
29
29
|
and holds the close — a different contract, and `spec-coordinator` carries it whole.
|
|
30
30
|
|
|
31
31
|
**Why this file exists:** a base contract that every seat kind shared, with the build job mixed in, sent
|
|
32
|
-
the review row into the
|
|
33
|
-
it must never run. One base class, three wrong instructions. The contract and the job are
|
|
34
|
-
files.
|
|
32
|
+
the review row into the coordinator's settled framing its own charter excluded and offered the docs-process
|
|
33
|
+
row a `docs-write` it must never run. One base class, three wrong instructions. The contract and the job are
|
|
34
|
+
therefore two files.
|
|
35
35
|
|
|
36
36
|
**Find the format first.** This repository writes its formats (the doc header and status words, where an effort is filed, its rails) in the sections `rg -n '^#+ .*\(repository-owned\)' docs/_meta/` lists; read the one a step names before that step writes. This skill names the section, never the format.
|
|
37
37
|
|
|
38
38
|
## What you hold (and what you never touch)
|
|
39
39
|
|
|
40
40
|
- **Yours:** your one assignment; the recon; the plan; the work; your artifacts; your own explicit-path
|
|
41
|
-
|
|
42
|
-
- **Never yours:** `project-status.md` (coordinator-owned tracker — READ-ONLY),
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
41
|
+
commits and your branch pushes once your plan is approved.
|
|
42
|
+
- **Never yours:** `project-status.md` (coordinator-owned tracker — READ-ONLY), `live-checks.md` (the
|
|
43
|
+
owner's — its rows are the ones the owner dictates), memory files, other slices' files (cross-slice changes
|
|
44
|
+
need explicit coordinator approval and get recorded as a departure), what the brief's § What this effort
|
|
45
|
+
does NOT do names, `docs-write` **on your own initiative** (it arrives as part of your close-out — the
|
|
46
|
+
relay's run-to-done order hand-cranked, the coordinator's close-out call hosted — and for a docs-process
|
|
47
|
+
seat it never arrives at all, because you are that skill's consumer), any commit or push before your plan
|
|
48
|
+
is approved, and any push to the base branch.
|
|
49
|
+
|
|
50
|
+
**Your charter is the brief.** `00-ignition-brief.md` is the coordinator's spec and the charter every seat
|
|
51
|
+
reads: its sections down to § Platform state bind you, and the owner's rulings in it are settled. Your own
|
|
52
|
+
spec is one numbered file in the same folder.
|
|
47
53
|
|
|
48
54
|
## Step 0 — orient NOW (before asking anything; no role or assignment needed)
|
|
49
55
|
|
|
@@ -101,11 +107,19 @@ FINAL TLDR — **append, never overwrite**) are FILES, not just chat text.
|
|
|
101
107
|
**ONE CEREMONY IN BOTH MODES: you write your file, then you poke; your coordinator appends its ruling to the
|
|
102
108
|
SAME file, then pokes you. Nobody pastes a document into a message.**
|
|
103
109
|
|
|
104
|
-
- **Hand-cranked
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
110
|
+
- **Hand-cranked — THE RELAY.** Post your PLAN TLDR and numbered questions **in the chat**, as plain text,
|
|
111
|
+
before any plan-approval presentation. The human relays them, and your coordinator's notes come back in
|
|
112
|
+
ONE message: the verdict, the answers, the riders, and the standing run-to-done order. Fold them in and
|
|
113
|
+
present your plan; the human approves it. Then create `plan.md` and `tldr.md` under
|
|
114
|
+
`docs/research/{topic}/sessions/{slug}/`, with the notes transcribed VERBATIM in `tldr.md` under
|
|
115
|
+
`## COORDINATOR RULING (plan — {verdict})`, and **RUN TO DONE WITHOUT A STOP**: build, suites,
|
|
116
|
+
`docs-write`, commits with `verify-staged`, your branch pushes (never the base branch; no merge, tag or
|
|
117
|
+
publish), and your FINAL TLDR in the chat. **The only stops:** a destructive act outside the effort's
|
|
118
|
+
branches, a credential exposure, a host restart, a `verify-staged` failure. A red you cannot fix takes
|
|
119
|
+
your spec's escape hatch, and you still close out. A mid-build question goes under
|
|
120
|
+
`## MID-BUILD QUESTION` in your `tldr.md`, and its ruling is appended there. After your last push your
|
|
121
|
+
coordinator reviews the FINAL against the tree and writes `## COORDINATOR ACCEPT (final — {slug})` into
|
|
122
|
+
your `tldr.md` itself. The full plan is PULL — never paste it into chat.
|
|
109
123
|
- **Hosted (a seat inside a pipeline):** the same two files are yours to edit with normal file tools. **Write,
|
|
110
124
|
then poke:** the first time, call `post_tldr` with `path` — the file's path inside your workspace, relative
|
|
111
125
|
to its root — and the control plane reads the file from your runner; after that, call `post_tldr` with
|
|
@@ -126,6 +140,11 @@ SAME file, then pokes you. Nobody pastes a document into a message.**
|
|
|
126
140
|
|
|
127
141
|
Either way, `tldr.md` read top-to-bottom is the session's whole conversation in message-flow order.
|
|
128
142
|
|
|
143
|
+
**Write the board with your file tools — Edit or Write — never through a shell heredoc.** A heredoc board
|
|
144
|
+
post has failed both ways a shell can fail it: on quoting ("unexpected EOF") and on length (the command
|
|
145
|
+
line is too long to spawn), and a heredoc collapses backslashes even when it runs. The file tools have
|
|
146
|
+
none of the three failures.
|
|
147
|
+
|
|
129
148
|
**Greppable turn anchors:** every append gets a stable heading carrying actor + identity —
|
|
130
149
|
`## [{seat}·{slug} · run {id}] {phase}` when your seat has a run identity, `## [{seat}·{slug}] {phase}`
|
|
131
150
|
hand-cranked. The coordinator's voice is always `## COORDINATOR RULING …` / `## COORDINATOR NOTE …`. The
|
|
@@ -272,6 +291,11 @@ Ask what the park is protecting:
|
|
|
272
291
|
force, reset, branch delete) in any `echo`, comment, `--description` or section label. For upstream
|
|
273
292
|
verification use `git log origin/<branch>..HEAD | wc -l` and `git status -sb`, which carry no colliding
|
|
274
293
|
noun.
|
|
294
|
+
**RESHAPE MEANS A DIFFERENT COMMAND, NEVER A DISGUISED ONE — NEVER ROUTE AROUND A REFUSAL.** Rewriting a
|
|
295
|
+
path with a glob or a quote so the scanner no longer sees the word it matched (a `?` in place of one
|
|
296
|
+
letter of a folder name) defeats every text-scanned rule at once, and the same disguise passes a real
|
|
297
|
+
boundary command. When the only way through is to hide the word, the park is a false one: disclose it,
|
|
298
|
+
with the verbatim command and park text, and ask.
|
|
275
299
|
- **A POLICY WALL is none of the three.** If the refusal says `walled-by-policy`, **an approval cannot
|
|
276
300
|
grant it** and re-requesting is walking through a known fail-open. The two routes are **reshape the work**
|
|
277
301
|
(do it by a path the policy allows — often: hand the text to a seat whose scope covers it) or
|
|
@@ -302,7 +326,8 @@ Plain text, BEFORE any plan-approval presentation:
|
|
|
302
326
|
```
|
|
303
327
|
PLAN TLDR ({your assignment}), recon done against HEAD {sha}, anchors {verified fresh / drift: …}:
|
|
304
328
|
BELIEFS: HEAD {sha}; dirty files I see: {list, whose}; tool versions: {the harness, the runtimes};
|
|
305
|
-
baseline suites: {
|
|
329
|
+
baseline suites: {cited from the brief's § Baselines, per lane: N (+known pre-existing reds); a lane it
|
|
330
|
+
does not name, measured before you edit}.
|
|
306
331
|
CONTROLS: for each probe or pin I will build — its positive control, and what would make it FAIL.
|
|
307
332
|
{one line each: "probe X — control: {the case that must go red}; fails when: {…}"}
|
|
308
333
|
{5-10 lines: what you will do, anchored to real files; the surfaces you will touch; departures flagged.}
|
|
@@ -318,7 +343,9 @@ coordinator with your question text and what the re-raise keys on (the two-headi
|
|
|
318
343
|
**BELIEFS sha — ONE line.** The build-go HEAD check scans for `HEAD` + a 40-hex token **on the same line**
|
|
319
344
|
(fenced or quoted is fine); a markdown break between them reads as a malformed sha and **refuses the
|
|
320
345
|
flip** (fail-closed by design). Paste the verbatim `git rev-parse HEAD` output, never hand-transcribe, no
|
|
321
|
-
wrapping.
|
|
346
|
+
wrapping. **Put the BELIEFS line near the top of BOTH `plan.md` and `tldr.md`**, and keep it current on
|
|
347
|
+
every revision: a checker that takes the first `HEAD <sha>` it meets reads an old line before a new one, and
|
|
348
|
+
quoted command output carrying another sha above it is read as your belief.
|
|
322
349
|
|
|
323
350
|
**Cite symbols, not line numbers.** In anything that outlives a commit — a TLDR, a working doc, a handover
|
|
324
351
|
— **name the symbol and use the line as a hint.** A line number is a comment, not an address; an anchor
|
|
@@ -417,7 +444,8 @@ doorbell with no follow-through**; if you receive one bare, retry anyway and say
|
|
|
417
444
|
Plain text — **this is the contract**, whatever your job:
|
|
418
445
|
|
|
419
446
|
```
|
|
420
|
-
FINAL TLDR — {your assignment}. Built on HEAD {sha}
|
|
447
|
+
FINAL TLDR — {your assignment}. Built on HEAD {sha}; {hand-cranked: committed and pushed — the hashes and
|
|
448
|
+
branches} {hosted: nothing committed (awaiting the acceptance's commit call)}.
|
|
421
449
|
(a) SHIPPED + VERIFICATION — per item: what + where + the receipt inline.
|
|
422
450
|
(b) VERBATIM RUNNER SUMMARIES — exact blocks, never prose, WITH the invocation command per block;
|
|
423
451
|
deltas vs baseline; any red run DISCLOSED with its rerun. A suite number quoted anywhere
|
|
@@ -428,21 +456,24 @@ FINAL TLDR — {your assignment}. Built on HEAD {sha}, nothing committed (awaiti
|
|
|
428
456
|
`docs/research/{topic}/project-status.md` § `## Deferred findings log`. Number them
|
|
429
457
|
LOCALLY to your tldr; the effort has ONE id sequence and the coordinator allocates from it.
|
|
430
458
|
Each line carries its receipt (file:line) so it can be transcribed without re-deriving.
|
|
431
|
-
(e)
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
459
|
+
(e) WHAT THE OWNER COULD TRY — in the chat, never a file: a few clicks, each with what passing
|
|
460
|
+
looks like, runnable cold. Live checks are the owner's; a row reaches `live-checks.md` only
|
|
461
|
+
when the owner dictates it, and you never write one.
|
|
462
|
+
(f) EXPLICIT STAGING LIST — the exact list `verify-staged` was (hand-cranked) or will be (hosted)
|
|
463
|
+
run over; a path not on this list is a path nobody will notice missing — + the STAGING
|
|
464
|
+
VERIFIED receipt, or hosted "commit HELD awaiting the commit call" + which dirty files are NOT
|
|
465
|
+
mine. SESSION ID + NAME.
|
|
438
466
|
```
|
|
439
467
|
|
|
440
468
|
## Close-out — the order is law
|
|
441
469
|
|
|
442
|
-
|
|
443
|
-
|
|
470
|
+
**Hand-cranked, the relay's run-to-done order IS the call:** run `docs-write` **if your job produces a
|
|
471
|
+
working doc**, commit with `verify-staged`, push your branch, and post the FINAL TLDR in the chat; your
|
|
472
|
+
coordinator reviews it against the tree and writes its acceptance into your `tldr.md` afterwards.
|
|
473
|
+
**Hosted, the call arrives** (FINAL TLDR ACCEPTED, maybe fix-first, `docs-write` with a carry list **if
|
|
474
|
+
your job produces a working doc**, COMMIT CALL with the message). Execute it exactly.
|
|
444
475
|
|
|
445
|
-
**
|
|
476
|
+
**Hosted, between the coordinator's FINAL acceptance and your push, do not post NEW CONTENT** — a re-posted report
|
|
446
477
|
makes the acceptance stale by design. Append your close-out receipt AFTER the push under this heading:
|
|
447
478
|
|
|
448
479
|
```
|
|
@@ -502,11 +533,12 @@ human driving the table files a defect against correct behaviour. Fixes invalida
|
|
|
502
533
|
what sweeps them.
|
|
503
534
|
|
|
504
535
|
**AND THE OWNERSHIP SPLIT IS PART OF THE RULE — without it the step is a dead end.** You may not write
|
|
505
|
-
`project-status.md` (coordinator-owned)
|
|
536
|
+
`project-status.md` (coordinator-owned), a row of `live-checks.md` (the owner's) or anything under
|
|
537
|
+
`sessions/**` (testimony, byte-untouched). So:
|
|
506
538
|
|
|
507
|
-
-
|
|
508
|
-
- **the tracker and `sessions/**`** — **REPORT the correction in your FINAL
|
|
509
|
-
it should say.** Your coordinator
|
|
539
|
+
- **your own working doc, code and comments** — correct them in the same commit.
|
|
540
|
+
- **the tracker, a dictated `live-checks.md` row and `sessions/**`** — **REPORT the correction in your FINAL
|
|
541
|
+
TLDR, quoting the line and what it should say.** Your coordinator applies it.
|
|
510
542
|
|
|
511
543
|
A partial the seat cannot execute is not an escape hatch, it is a dead end handed to it. Say which
|
|
512
544
|
corrections are yours and which you are handing back.
|