@nurix/etna 0.20.8 → 0.20.9
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/harness-index.json +1 -1
- package/data/harnesses/code/harness.json +2 -2
- package/data/harnesses/code/skills/brainstorm/references/doctrine.md +27 -0
- package/data/harnesses/code/skills/brainstorm/references/harvest.md +28 -0
- package/data/harnesses/delivery/harness.json +2 -2
- package/data/harnesses/delivery/skills/brainstorm/references/doctrine.md +27 -0
- package/data/harnesses/delivery/skills/brainstorm/references/harvest.md +28 -0
- package/data/harnesses/etna/harness.json +2 -2
- package/data/harnesses/etna/skills/brainstorm/references/doctrine.md +27 -0
- package/data/harnesses/etna/skills/brainstorm/references/harvest.md +28 -0
- package/package.json +2 -2
package/data/harness-index.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"harness": "code",
|
|
3
3
|
"name": "code",
|
|
4
|
-
"version": "3.14.
|
|
4
|
+
"version": "3.14.7",
|
|
5
5
|
"files": [
|
|
6
6
|
".prettierignore",
|
|
7
7
|
".prettierrc.json",
|
|
@@ -25,5 +25,5 @@
|
|
|
25
25
|
}
|
|
26
26
|
],
|
|
27
27
|
"docsRoot": "docs",
|
|
28
|
-
"digest": "
|
|
28
|
+
"digest": "80ccc743454e"
|
|
29
29
|
}
|
|
@@ -118,3 +118,30 @@ Measured on live sessions; each is the rule, distilled.
|
|
|
118
118
|
- **When a ledger entry's `Why` contains "already", verify it before the manifest.** A commitment
|
|
119
119
|
that declines to build something because it already exists rests on a fact, not a judgment, and
|
|
120
120
|
the stop gate is the last place that fact is checkable — after the folder moves it is not.
|
|
121
|
+
- **Verify a doctrine claim against disk before building an argument on it.** Truth docs outrun
|
|
122
|
+
package rebuilds: a guardrail can assert a guard path that exists nowhere, inside a suppression
|
|
123
|
+
wrapper naming packages already deleted. When a session's centre is a recorded prohibition, `ls`
|
|
124
|
+
the guard path, read the owning package's config, and confirm the package is still in the tree.
|
|
125
|
+
- **Read the decision records before framing a session around a pillar contradiction.** An AD
|
|
126
|
+
accepted last week can already contradict the pillars; a session convened to *decide* a reversal
|
|
127
|
+
may be *ratifying* one that shipped — a materially different conversation.
|
|
128
|
+
- **Give the opening map at least one aspect organised by seam.** A map organised by system layer
|
|
129
|
+
owns none of the questions that land on the boundary between two planes or two phases, which is
|
|
130
|
+
where the real design questions sit.
|
|
131
|
+
- **Ledger only the user's half of a re-derivation turn.** When the user states a segregation and
|
|
132
|
+
the facilitator re-derives a whole architecture from it in the same entry, only the first half is
|
|
133
|
+
ledgerable; a re-derivation that re-reads an existing commitment into a new shape is a fork with a
|
|
134
|
+
named amendment, never an edit.
|
|
135
|
+
- **Check the ledger prefix against the product's vocabulary.** `D#` reads two ways in a product
|
|
136
|
+
whose state lives in a database called D1; add a disambiguation line to the ledger header and
|
|
137
|
+
write the colliding term in full inside entries.
|
|
138
|
+
- **The repo's rule files are a first-class blindspot source.** They carry platform facts a design
|
|
139
|
+
can contradict unnoticed — a registry answering `404`, not `401`, to a restricted read turned a
|
|
140
|
+
celebrated "containers hold no credentials" property into an open question. Read the rules that
|
|
141
|
+
touch the session's substrate against the new commitments, not only the basis.
|
|
142
|
+
- **Absence in this repo is not absence.** Evidence for a premise often lives in a sibling
|
|
143
|
+
repository; grep finding nothing proves only that this repo does not own the fact. Check the
|
|
144
|
+
owning repo before filing a fork as unevidenced, and when the fact is confirmed there, the
|
|
145
|
+
harvested record cites the external doc rather than restating it. A doc saying "this surface
|
|
146
|
+
reports, it does not enforce" does not contradict "the platform enforces" — different layers,
|
|
147
|
+
both true, neither edited.
|
|
@@ -118,3 +118,31 @@ Measured on live harvests; each is the rule, distilled.
|
|
|
118
118
|
and nothing else** — a claim stated in nine places and fixed in three leaves the doc worse; a
|
|
119
119
|
one-paragraph note saying what moved and what did not keeps the amendment legible to the doc's
|
|
120
120
|
author.
|
|
121
|
+
- **A suppression marker is a dated assertion about code, and it decays faster than the docs
|
|
122
|
+
around it.** A harvest that deletes doctrine rows corrects their wrappers first — a false wrapper
|
|
123
|
+
is a correction row in the manifest, never collateral of a delete. A phantom guard propagates by
|
|
124
|
+
citation: grep the guard *path*, not its name, and count live docs separately from frozen ones,
|
|
125
|
+
which record what was believed and are not edited.
|
|
126
|
+
- **Retiring a guardrail row edits three artifacts.** The row is cited by ID from feature docs and
|
|
127
|
+
frozen plans, wrapped in a marker asserting where its code lives, and restated in the
|
|
128
|
+
out-of-scope register at the foot of the same file: keep the ID and mark the row retired with a
|
|
129
|
+
pointer, correct the wrapper, and replace the register bullet with a pointer — otherwise the file
|
|
130
|
+
contradicts itself twenty lines apart.
|
|
131
|
+
- **Size the decision records to the repo's AD doctrine before writing them.** One decision per
|
|
132
|
+
subject argued feels natural and produces micro-ADs where the rule is one overarching AD per
|
|
133
|
+
architectural subject; the test at manifest time is whether a reader would ever need one record
|
|
134
|
+
without the others. The safe shape is one AD per plane with a section per settled subject — each
|
|
135
|
+
keeping its Decision, Why and Declined table — and a separate AD only for a genuinely different
|
|
136
|
+
subject. Link with section anchors where a bare pointer loses precision, and verify anchors by
|
|
137
|
+
hand: the link checker strips them before resolving.
|
|
138
|
+
- **At manifest time, read every existing AD's Decision and Open Questions against the new
|
|
139
|
+
commitments.** A harvest routes only through the docs its commitments name, and grep finds
|
|
140
|
+
nothing because the ledger never names the others; report the unimpacted verdicts with their
|
|
141
|
+
evidence too.
|
|
142
|
+
- **A manifest row names one site; the file you open holds more.** Fix the same-doctrine sites
|
|
143
|
+
inside a file the manifest already opens, but never wander into an unnamed file — that becomes a
|
|
144
|
+
backlog row, because a canonical doc is not rewritten outside an approved scope. Say which you did,
|
|
145
|
+
per row, in the application record.
|
|
146
|
+
- **The per-file lint hook reads intermediate states.** It appends queue rows from mid-edit files;
|
|
147
|
+
run the linter over the whole edited set before declaring the apply done, and leave the stale
|
|
148
|
+
rows for the facilitator rather than draining them.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"harness": "delivery",
|
|
3
3
|
"name": "delivery",
|
|
4
|
-
"version": "0.2.
|
|
4
|
+
"version": "0.2.28",
|
|
5
5
|
"files": [
|
|
6
6
|
".prettierignore",
|
|
7
7
|
".prettierrc.json",
|
|
@@ -10,5 +10,5 @@
|
|
|
10
10
|
"seeds": [],
|
|
11
11
|
"tools": [],
|
|
12
12
|
"docsRoot": "docs",
|
|
13
|
-
"digest": "
|
|
13
|
+
"digest": "432c8344e384"
|
|
14
14
|
}
|
|
@@ -118,3 +118,30 @@ Measured on live sessions; each is the rule, distilled.
|
|
|
118
118
|
- **When a ledger entry's `Why` contains "already", verify it before the manifest.** A commitment
|
|
119
119
|
that declines to build something because it already exists rests on a fact, not a judgment, and
|
|
120
120
|
the stop gate is the last place that fact is checkable — after the folder moves it is not.
|
|
121
|
+
- **Verify a doctrine claim against disk before building an argument on it.** Truth docs outrun
|
|
122
|
+
package rebuilds: a guardrail can assert a guard path that exists nowhere, inside a suppression
|
|
123
|
+
wrapper naming packages already deleted. When a session's centre is a recorded prohibition, `ls`
|
|
124
|
+
the guard path, read the owning package's config, and confirm the package is still in the tree.
|
|
125
|
+
- **Read the decision records before framing a session around a pillar contradiction.** An AD
|
|
126
|
+
accepted last week can already contradict the pillars; a session convened to *decide* a reversal
|
|
127
|
+
may be *ratifying* one that shipped — a materially different conversation.
|
|
128
|
+
- **Give the opening map at least one aspect organised by seam.** A map organised by system layer
|
|
129
|
+
owns none of the questions that land on the boundary between two planes or two phases, which is
|
|
130
|
+
where the real design questions sit.
|
|
131
|
+
- **Ledger only the user's half of a re-derivation turn.** When the user states a segregation and
|
|
132
|
+
the facilitator re-derives a whole architecture from it in the same entry, only the first half is
|
|
133
|
+
ledgerable; a re-derivation that re-reads an existing commitment into a new shape is a fork with a
|
|
134
|
+
named amendment, never an edit.
|
|
135
|
+
- **Check the ledger prefix against the product's vocabulary.** `D#` reads two ways in a product
|
|
136
|
+
whose state lives in a database called D1; add a disambiguation line to the ledger header and
|
|
137
|
+
write the colliding term in full inside entries.
|
|
138
|
+
- **The repo's rule files are a first-class blindspot source.** They carry platform facts a design
|
|
139
|
+
can contradict unnoticed — a registry answering `404`, not `401`, to a restricted read turned a
|
|
140
|
+
celebrated "containers hold no credentials" property into an open question. Read the rules that
|
|
141
|
+
touch the session's substrate against the new commitments, not only the basis.
|
|
142
|
+
- **Absence in this repo is not absence.** Evidence for a premise often lives in a sibling
|
|
143
|
+
repository; grep finding nothing proves only that this repo does not own the fact. Check the
|
|
144
|
+
owning repo before filing a fork as unevidenced, and when the fact is confirmed there, the
|
|
145
|
+
harvested record cites the external doc rather than restating it. A doc saying "this surface
|
|
146
|
+
reports, it does not enforce" does not contradict "the platform enforces" — different layers,
|
|
147
|
+
both true, neither edited.
|
|
@@ -118,3 +118,31 @@ Measured on live harvests; each is the rule, distilled.
|
|
|
118
118
|
and nothing else** — a claim stated in nine places and fixed in three leaves the doc worse; a
|
|
119
119
|
one-paragraph note saying what moved and what did not keeps the amendment legible to the doc's
|
|
120
120
|
author.
|
|
121
|
+
- **A suppression marker is a dated assertion about code, and it decays faster than the docs
|
|
122
|
+
around it.** A harvest that deletes doctrine rows corrects their wrappers first — a false wrapper
|
|
123
|
+
is a correction row in the manifest, never collateral of a delete. A phantom guard propagates by
|
|
124
|
+
citation: grep the guard *path*, not its name, and count live docs separately from frozen ones,
|
|
125
|
+
which record what was believed and are not edited.
|
|
126
|
+
- **Retiring a guardrail row edits three artifacts.** The row is cited by ID from feature docs and
|
|
127
|
+
frozen plans, wrapped in a marker asserting where its code lives, and restated in the
|
|
128
|
+
out-of-scope register at the foot of the same file: keep the ID and mark the row retired with a
|
|
129
|
+
pointer, correct the wrapper, and replace the register bullet with a pointer — otherwise the file
|
|
130
|
+
contradicts itself twenty lines apart.
|
|
131
|
+
- **Size the decision records to the repo's AD doctrine before writing them.** One decision per
|
|
132
|
+
subject argued feels natural and produces micro-ADs where the rule is one overarching AD per
|
|
133
|
+
architectural subject; the test at manifest time is whether a reader would ever need one record
|
|
134
|
+
without the others. The safe shape is one AD per plane with a section per settled subject — each
|
|
135
|
+
keeping its Decision, Why and Declined table — and a separate AD only for a genuinely different
|
|
136
|
+
subject. Link with section anchors where a bare pointer loses precision, and verify anchors by
|
|
137
|
+
hand: the link checker strips them before resolving.
|
|
138
|
+
- **At manifest time, read every existing AD's Decision and Open Questions against the new
|
|
139
|
+
commitments.** A harvest routes only through the docs its commitments name, and grep finds
|
|
140
|
+
nothing because the ledger never names the others; report the unimpacted verdicts with their
|
|
141
|
+
evidence too.
|
|
142
|
+
- **A manifest row names one site; the file you open holds more.** Fix the same-doctrine sites
|
|
143
|
+
inside a file the manifest already opens, but never wander into an unnamed file — that becomes a
|
|
144
|
+
backlog row, because a canonical doc is not rewritten outside an approved scope. Say which you did,
|
|
145
|
+
per row, in the application record.
|
|
146
|
+
- **The per-file lint hook reads intermediate states.** It appends queue rows from mid-edit files;
|
|
147
|
+
run the linter over the whole edited set before declaring the apply done, and leave the stale
|
|
148
|
+
rows for the facilitator rather than draining them.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"harness": "etna",
|
|
3
3
|
"name": "etna",
|
|
4
|
-
"version": "1.5.
|
|
4
|
+
"version": "1.5.17",
|
|
5
5
|
"files": [
|
|
6
6
|
".prettierignore",
|
|
7
7
|
".prettierrc.json",
|
|
@@ -10,5 +10,5 @@
|
|
|
10
10
|
"seeds": [],
|
|
11
11
|
"tools": [],
|
|
12
12
|
"docsRoot": "docs",
|
|
13
|
-
"digest": "
|
|
13
|
+
"digest": "24530584ce9d"
|
|
14
14
|
}
|
|
@@ -118,3 +118,30 @@ Measured on live sessions; each is the rule, distilled.
|
|
|
118
118
|
- **When a ledger entry's `Why` contains "already", verify it before the manifest.** A commitment
|
|
119
119
|
that declines to build something because it already exists rests on a fact, not a judgment, and
|
|
120
120
|
the stop gate is the last place that fact is checkable — after the folder moves it is not.
|
|
121
|
+
- **Verify a doctrine claim against disk before building an argument on it.** Truth docs outrun
|
|
122
|
+
package rebuilds: a guardrail can assert a guard path that exists nowhere, inside a suppression
|
|
123
|
+
wrapper naming packages already deleted. When a session's centre is a recorded prohibition, `ls`
|
|
124
|
+
the guard path, read the owning package's config, and confirm the package is still in the tree.
|
|
125
|
+
- **Read the decision records before framing a session around a pillar contradiction.** An AD
|
|
126
|
+
accepted last week can already contradict the pillars; a session convened to *decide* a reversal
|
|
127
|
+
may be *ratifying* one that shipped — a materially different conversation.
|
|
128
|
+
- **Give the opening map at least one aspect organised by seam.** A map organised by system layer
|
|
129
|
+
owns none of the questions that land on the boundary between two planes or two phases, which is
|
|
130
|
+
where the real design questions sit.
|
|
131
|
+
- **Ledger only the user's half of a re-derivation turn.** When the user states a segregation and
|
|
132
|
+
the facilitator re-derives a whole architecture from it in the same entry, only the first half is
|
|
133
|
+
ledgerable; a re-derivation that re-reads an existing commitment into a new shape is a fork with a
|
|
134
|
+
named amendment, never an edit.
|
|
135
|
+
- **Check the ledger prefix against the product's vocabulary.** `D#` reads two ways in a product
|
|
136
|
+
whose state lives in a database called D1; add a disambiguation line to the ledger header and
|
|
137
|
+
write the colliding term in full inside entries.
|
|
138
|
+
- **The repo's rule files are a first-class blindspot source.** They carry platform facts a design
|
|
139
|
+
can contradict unnoticed — a registry answering `404`, not `401`, to a restricted read turned a
|
|
140
|
+
celebrated "containers hold no credentials" property into an open question. Read the rules that
|
|
141
|
+
touch the session's substrate against the new commitments, not only the basis.
|
|
142
|
+
- **Absence in this repo is not absence.** Evidence for a premise often lives in a sibling
|
|
143
|
+
repository; grep finding nothing proves only that this repo does not own the fact. Check the
|
|
144
|
+
owning repo before filing a fork as unevidenced, and when the fact is confirmed there, the
|
|
145
|
+
harvested record cites the external doc rather than restating it. A doc saying "this surface
|
|
146
|
+
reports, it does not enforce" does not contradict "the platform enforces" — different layers,
|
|
147
|
+
both true, neither edited.
|
|
@@ -118,3 +118,31 @@ Measured on live harvests; each is the rule, distilled.
|
|
|
118
118
|
and nothing else** — a claim stated in nine places and fixed in three leaves the doc worse; a
|
|
119
119
|
one-paragraph note saying what moved and what did not keeps the amendment legible to the doc's
|
|
120
120
|
author.
|
|
121
|
+
- **A suppression marker is a dated assertion about code, and it decays faster than the docs
|
|
122
|
+
around it.** A harvest that deletes doctrine rows corrects their wrappers first — a false wrapper
|
|
123
|
+
is a correction row in the manifest, never collateral of a delete. A phantom guard propagates by
|
|
124
|
+
citation: grep the guard *path*, not its name, and count live docs separately from frozen ones,
|
|
125
|
+
which record what was believed and are not edited.
|
|
126
|
+
- **Retiring a guardrail row edits three artifacts.** The row is cited by ID from feature docs and
|
|
127
|
+
frozen plans, wrapped in a marker asserting where its code lives, and restated in the
|
|
128
|
+
out-of-scope register at the foot of the same file: keep the ID and mark the row retired with a
|
|
129
|
+
pointer, correct the wrapper, and replace the register bullet with a pointer — otherwise the file
|
|
130
|
+
contradicts itself twenty lines apart.
|
|
131
|
+
- **Size the decision records to the repo's AD doctrine before writing them.** One decision per
|
|
132
|
+
subject argued feels natural and produces micro-ADs where the rule is one overarching AD per
|
|
133
|
+
architectural subject; the test at manifest time is whether a reader would ever need one record
|
|
134
|
+
without the others. The safe shape is one AD per plane with a section per settled subject — each
|
|
135
|
+
keeping its Decision, Why and Declined table — and a separate AD only for a genuinely different
|
|
136
|
+
subject. Link with section anchors where a bare pointer loses precision, and verify anchors by
|
|
137
|
+
hand: the link checker strips them before resolving.
|
|
138
|
+
- **At manifest time, read every existing AD's Decision and Open Questions against the new
|
|
139
|
+
commitments.** A harvest routes only through the docs its commitments name, and grep finds
|
|
140
|
+
nothing because the ledger never names the others; report the unimpacted verdicts with their
|
|
141
|
+
evidence too.
|
|
142
|
+
- **A manifest row names one site; the file you open holds more.** Fix the same-doctrine sites
|
|
143
|
+
inside a file the manifest already opens, but never wander into an unnamed file — that becomes a
|
|
144
|
+
backlog row, because a canonical doc is not rewritten outside an approved scope. Say which you did,
|
|
145
|
+
per row, in the application record.
|
|
146
|
+
- **The per-file lint hook reads intermediate states.** It appends queue rows from mid-edit files;
|
|
147
|
+
run the linter over the whole edited set before declaring the apply done, and leave the stale
|
|
148
|
+
rows for the facilitator rather than draining them.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nurix/etna",
|
|
3
|
-
"version": "0.20.
|
|
3
|
+
"version": "0.20.9",
|
|
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": "7d1e7785bd0c"
|
|
46
46
|
}
|