@nurix/etna 0.20.46 → 0.20.48

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.
Files changed (54) hide show
  1. package/data/harness-index.json +1 -1
  2. package/data/harnesses/code/CLAUDE.md +1 -1
  3. package/data/harnesses/code/agents/maintenance.md +5 -1
  4. package/data/harnesses/code/codex/agents/maintenance.toml +5 -1
  5. package/data/harnesses/code/docs/structure.md +13 -10
  6. package/data/harnesses/code/harness.json +2 -2
  7. package/data/harnesses/code/hooks/compliance.mjs +13 -672
  8. package/data/harnesses/code/hooks/hooks.json +1 -1
  9. package/data/harnesses/code/hooks/lib/backlog-detector.mjs +30 -10
  10. package/data/harnesses/code/hooks/lib/frozen.mjs +28 -11
  11. package/data/harnesses/code/hooks/lib/gates.mjs +633 -0
  12. package/data/harnesses/code/hooks/lib/ownership.mjs +4 -14
  13. package/data/harnesses/code/hooks/lib/protection-gate.mjs +208 -0
  14. package/data/harnesses/code/hooks/lib/records-door.mjs +12 -21
  15. package/data/harnesses/code/hooks/lib/repo.mjs +33 -7
  16. package/data/harnesses/code/hooks/lib/session-log.mjs +1 -2
  17. package/data/harnesses/code/hooks/lib/state.mjs +4 -10
  18. package/data/harnesses/code/hooks/lib/walls.mjs +2 -1
  19. package/data/harnesses/code/hooks/protection.mjs +53 -0
  20. package/data/harnesses/code/skills/documentation/SKILL.md +11 -1
  21. package/data/harnesses/code/skills/documentation/references/style-guide.md +2 -1
  22. package/data/harnesses/code/skills/documentation/scripts/doc-lint.mjs +3 -3
  23. package/data/harnesses/code/skills/documentation/templates/Readme.md +3 -2
  24. package/data/harnesses/code/skills/documentation/templates/doctrine.md +1 -1
  25. package/data/harnesses/code/skills/documentation/templates/playbook.md +63 -0
  26. package/data/harnesses/code/skills/documentation/templates/root-readme.md +1 -1
  27. package/data/harnesses/code/skills/documentation/templates/testing-strategy.md +1 -1
  28. package/data/harnesses/code/skills/documentation/templates/ux-behavior.md +1 -1
  29. package/data/harnesses/delivery/agents/maintenance.md +5 -1
  30. package/data/harnesses/delivery/codex/agents/maintenance.toml +5 -1
  31. package/data/harnesses/delivery/harness.json +2 -2
  32. package/data/harnesses/delivery/skills/documentation/SKILL.md +11 -1
  33. package/data/harnesses/delivery/skills/documentation/references/style-guide.md +2 -1
  34. package/data/harnesses/delivery/skills/documentation/scripts/doc-lint.mjs +3 -3
  35. package/data/harnesses/delivery/skills/documentation/templates/Readme.md +3 -2
  36. package/data/harnesses/delivery/skills/documentation/templates/doctrine.md +1 -1
  37. package/data/harnesses/delivery/skills/documentation/templates/playbook.md +63 -0
  38. package/data/harnesses/delivery/skills/documentation/templates/root-readme.md +1 -1
  39. package/data/harnesses/delivery/skills/documentation/templates/testing-strategy.md +1 -1
  40. package/data/harnesses/delivery/skills/documentation/templates/ux-behavior.md +1 -1
  41. package/data/harnesses/etna/agents/maintenance.md +5 -1
  42. package/data/harnesses/etna/codex/agents/maintenance.toml +5 -1
  43. package/data/harnesses/etna/harness.json +2 -2
  44. package/data/harnesses/etna/skills/documentation/SKILL.md +11 -1
  45. package/data/harnesses/etna/skills/documentation/references/style-guide.md +2 -1
  46. package/data/harnesses/etna/skills/documentation/scripts/doc-lint.mjs +3 -3
  47. package/data/harnesses/etna/skills/documentation/templates/Readme.md +3 -2
  48. package/data/harnesses/etna/skills/documentation/templates/doctrine.md +1 -1
  49. package/data/harnesses/etna/skills/documentation/templates/playbook.md +63 -0
  50. package/data/harnesses/etna/skills/documentation/templates/root-readme.md +1 -1
  51. package/data/harnesses/etna/skills/documentation/templates/testing-strategy.md +1 -1
  52. package/data/harnesses/etna/skills/documentation/templates/ux-behavior.md +1 -1
  53. package/lib/install/plan.mjs +3 -1
  54. package/package.json +2 -2
@@ -130,7 +130,7 @@ The rest of this page is for the team and for coding agents working in this repo
130
130
 
131
131
  The baseline **does** scaffold `/README.md` when it is missing, and it fills each section from the repo:
132
132
 
133
- - **Identity, Capabilities, Deployment:** from the product charter and vision documents under `docs/architecture/common/` (what the product is, the core loop, who it is for), the package manifests (what publishes where), and the deploy config (addresses). Written in a user's terms; where the charter is missing, the baseline writes Identity only and raises a `note:` row for the rest.
133
+ - **Identity, Capabilities, Deployment:** from the product charter and vision documents under `docs/architecture/doctrine/` (what the product is, the core loop, who it is for), the package manifests (what publishes where), and the deploy config (addresses). Written in a user's terms; where the charter is missing, the baseline writes Identity only and raises a `note:` row for the rest.
134
134
  - **The main path:** from the system overview.
135
135
  - **Map:** from the workspace globs and the ownership index.
136
136
  - **Rules:** from `docs/operations/protected-files.md` and the architecture doctrine.
@@ -1,4 +1,4 @@
1
- # Testing strategy (docs/architecture/common/testing.md)
1
+ # Testing strategy (docs/architecture/doctrine/testing.md)
2
2
 
3
3
  Truth document. Use for: the repo's test posture — what is tested at which level, how to run it, and what is deliberately untested. The framework choices come from the harness testing rule; this doc records how *this repo* applies them.
4
4
 
@@ -1,6 +1,6 @@
1
1
  # UX behavior (docs/features/{surface}-ux.md)
2
2
 
3
- **Truth document.** States what a person sees and can do on a surface, and what the surface promises never to do. Present tense, like every truth document.
3
+ **Truth document.** States what a person sees and can do on a surface, and what the surface promises never to do. Present tense, like every truth document. It is one product's surface; a shape every product's surfaces share, such as a settings area or an analytics page, is a playbook (`templates/playbook.md`), which the UX document names in its Purpose and fills with its own values.
4
4
 
5
5
  **`type: ux`**, plus `status:` and `objects:` — the objects the surface presents (`references/frontmatter.md`). The doctrine it answers to (the state vocabulary, the routing doctrine, the information architecture) is named in its Purpose for people and computed through shared objects for tooling.
6
6
 
@@ -128,6 +128,8 @@ function freshSettings(bundleDir) {
128
128
  // `.codex/hooks.json` — the Claude hooks.json filtered to type:"command", the only kind Codex
129
129
  // executes, with each command prefixed so `$CLAUDE_PROJECT_DIR` resolves under a runtime that does
130
130
  // not export it. The translation itself is `toCodexCommand`, imported rather than restated.
131
+ // `onFailure` is dropped from every handler: Codex's hook schema has no such field, and the
132
+ // fail-closed claim it carries holds on Claude Code only.
131
133
  function codexHooks(bundleDir) {
132
134
  const hooksJson = join(bundleDir, 'hooks', 'hooks.json');
133
135
  if (!existsSync(hooksJson)) return null;
@@ -143,7 +145,7 @@ function codexHooks(bundleDir) {
143
145
  for (const group of groups) {
144
146
  const hooks = (group.hooks || [])
145
147
  .filter((h) => h.type === 'command')
146
- .map((h) => ({ ...h, command: toCodexCommand(h.command) }));
148
+ .map(({ onFailure, ...h }) => ({ ...h, command: toCodexCommand(h.command) }));
147
149
  if (hooks.length) kept.push({ ...group, hooks });
148
150
  }
149
151
  if (kept.length) out[event] = kept;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nurix/etna",
3
- "version": "0.20.46",
3
+ "version": "0.20.48",
4
4
  "description": "Bootstrap a project with a Nurix harness — writes the committed contract (CLAUDE.md, AGENTS.md, .claude/harness.json, settings.json, the mount hook) and mounts the harness itself, gitignored, from a bundled payload; sessions keep it current from the CDN.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -46,5 +46,5 @@
46
46
  "agent",
47
47
  "plugin"
48
48
  ],
49
- "etnaFingerprint": "22ef866caf5b"
49
+ "etnaFingerprint": "7050b3489eda"
50
50
  }