@nurix/etna 0.20.14 → 0.20.16
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/data/catalog/rules/frontend.md +7 -3
- package/data/harness-index.json +1 -1
- package/data/harnesses/code/CLAUDE.md +8 -2
- package/data/harnesses/code/agents/bookkeeper.md +1 -0
- package/data/harnesses/code/agents/polygraph-finder.md +4 -0
- package/data/harnesses/code/harness.json +2 -2
- package/data/harnesses/code/hooks/awareness.mjs +15 -2
- package/data/harnesses/code/hooks/lib/state.mjs +1 -0
- package/data/harnesses/code/hooks/lib/sweep.mjs +20 -2
- package/data/harnesses/code/rules/frontend.md +7 -3
- package/data/harnesses/code/skills/design/SKILL.md +2 -2
- package/data/harnesses/code/skills/design/references/compose.md +18 -0
- package/data/harnesses/code/skills/design/references/emission.md +34 -8
- package/data/harnesses/code/skills/design/references/existing-apps.md +2 -2
- package/data/harnesses/code/skills/design/references/foundations.md +3 -3
- package/data/harnesses/code/skills/design/references/intake.md +5 -4
- package/data/harnesses/code/skills/design/references/ship-gate.md +9 -3
- package/data/harnesses/code/skills/design/scripts/validate-design-md.mjs +293 -14
- package/data/harnesses/code/skills/documentation/SKILL.md +28 -0
- package/data/harnesses/code/skills/documentation/scripts/comment-strip.mjs +339 -0
- package/data/harnesses/code/skills/documentation/scripts/doc-lint.mjs +41 -10
- package/data/harnesses/code/skills/documentation/scripts/source-lint.mjs +225 -0
- package/data/harnesses/code/skills/documentation/templates/behavioral-checklist.md +1 -2
- package/data/harnesses/code/skills/documentation/templates/bookkeeping.md +1 -1
- package/data/harnesses/code/skills/polygraph/SKILL.md +1 -1
- package/data/harnesses/code/skills/testing/SKILL.md +1 -1
- package/data/harnesses/delivery/harness.json +2 -2
- package/data/harnesses/delivery/skills/documentation/SKILL.md +28 -0
- package/data/harnesses/delivery/skills/documentation/scripts/comment-strip.mjs +339 -0
- package/data/harnesses/delivery/skills/documentation/scripts/doc-lint.mjs +41 -10
- package/data/harnesses/delivery/skills/documentation/scripts/source-lint.mjs +225 -0
- package/data/harnesses/delivery/skills/documentation/templates/behavioral-checklist.md +1 -2
- package/data/harnesses/delivery/skills/documentation/templates/bookkeeping.md +1 -1
- package/data/harnesses/etna/harness.json +2 -2
- package/data/harnesses/etna/skills/documentation/SKILL.md +28 -0
- package/data/harnesses/etna/skills/documentation/scripts/comment-strip.mjs +339 -0
- package/data/harnesses/etna/skills/documentation/scripts/doc-lint.mjs +41 -10
- package/data/harnesses/etna/skills/documentation/scripts/source-lint.mjs +225 -0
- package/data/harnesses/etna/skills/documentation/templates/behavioral-checklist.md +1 -2
- package/data/harnesses/etna/skills/documentation/templates/bookkeeping.md +1 -1
- package/package.json +2 -2
|
@@ -35,7 +35,7 @@ Required: **Conventions**, at least one numbered behavior section, **Failure Rep
|
|
|
35
35
|
- **State each section's trace.** `Pinned:` names the suite test that now guards it, or says `driven only` **with the reason** — an unmarked section is indistinguishable from an unexamined one.
|
|
36
36
|
- **State each section's `AC:` keys.** Where the repo carries a keyed acceptance-criteria source, each section names the keys it proves, so the chain from criterion to checklist to suite test survives the last hop; the gate reports coverage and backlogs uncovered keys. `none — not AC-mapped` is the honest line where no keyed source exists.
|
|
37
37
|
- **A known-failing assertion stays written as the contract.** A checklist states what the feature promises; the *run* records the failure and the backlog carries the defect. Never soften an assertion to make a run go green.
|
|
38
|
-
- **
|
|
38
|
+
- **No section carries a date.** This file is a truth document: it states what must be true and what guards it, and the *event* of driving — the date, the environment, the evidence the assertion turned on, a `FAIL` and the backlog item it raised — is recorded in the changelog entry of the unit that drove it, where a dated line belongs. What separates a promise somebody verified from a promise somebody typed is the `Pinned:` trace, and it is stronger than a stamp because it re-checks itself on every suite run. A section a drive could not reach says `not reachable — {what blocks it}` on its trace line, in the present tense, and keeps saying it until the blocker is gone.
|
|
39
39
|
- **The file is maintained by whoever drives it.** Nothing else watches it — a checklist owns no code, so no ownership glob implicates it and no hook fires when the surface underneath it changes. Retiring dead sections and repairing traces is part of running the gate, not a separate cleanup someone schedules.
|
|
40
40
|
|
|
41
41
|
```
|
|
@@ -63,7 +63,6 @@ Each step is an action; each **Assert** is the observable it must produce.
|
|
|
63
63
|
- [ ] **Assert**: {the observable, with exact literals}
|
|
64
64
|
- [ ] **Assert**: {the persistence claim, where the behavior writes something}
|
|
65
65
|
|
|
66
|
-
> Driven {YYYY-MM-DD} · PASS ({environment}). {the evidence — the literal observed, the row that moved}
|
|
67
66
|
> Pinned: `{tests/path/to/file.test.ts}` — or `driven only — {why no durable test is bought}` — or `none yet — {the test this section owes}`
|
|
68
67
|
> AC: {the acceptance-criteria keys this section proves} — or `none — not AC-mapped`
|
|
69
68
|
|
|
@@ -21,4 +21,4 @@ The shared work queue keeping documentation and code in sync — a queue, never
|
|
|
21
21
|
|
|
22
22
|
**A waiver covers a finding only when it names the finding's kind and its subject in backticks** — the matcher (`waiverCovers`) tests the backticked subject exactly, so a waiver written without them silences nothing and the wall stands. A `waived:` row's `expires=` date is enforced: CI honors the waiver until the date, then fails. `dead-glob` waivers double as the dead-glob allowlist; `ownership-overlap` waivers cover the CI ownership check the same way.
|
|
23
23
|
|
|
24
|
-
Finding kinds for `auto:`: `dead-glob` · `doc-implicated` · `doc-lint` · `header-missing` · `index-row-missing` · `package-rejected` · `frozen-record-edited`. The CI ownership check additionally accepts `waived:` rows of kind `ownership-overlap`.
|
|
24
|
+
Finding kinds for `auto:`: `dead-glob` · `doc-implicated` · `doc-lint` · `header-missing` · `index-row-missing` · `package-rejected` · `frozen-record-edited` · `source-lint`. The CI ownership check additionally accepts `waived:` rows of kind `ownership-overlap`.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nurix/etna",
|
|
3
|
-
"version": "0.20.
|
|
3
|
+
"version": "0.20.16",
|
|
4
4
|
"description": "Bootstrap a project with a Nurix harness — copies the harness's CLAUDE.md, skills, agents, rules, and hooks directly into the project from a bundled payload (no marketplace fetch, no network).",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -42,5 +42,5 @@
|
|
|
42
42
|
"agent",
|
|
43
43
|
"plugin"
|
|
44
44
|
],
|
|
45
|
-
"etnaFingerprint": "
|
|
45
|
+
"etnaFingerprint": "6b7b8d3d3e8f"
|
|
46
46
|
}
|