@nurix/etna 0.20.35 → 0.20.37
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/changelog.md +1 -1
- package/data/catalog/skills/nustack/SKILL.md +2 -2
- package/data/catalog/skills/nustack/references/cli-design.md +35 -35
- package/data/catalog/skills/nustack/references/monorepo-master-list.md +6 -6
- package/data/catalog/skills/nustack/references/monorepo-setup.md +13 -13
- package/data/catalog/skills/nustack/references/publishing.md +40 -39
- package/data/harness-index.json +1 -1
- package/data/harnesses/code/CLAUDE.md +4 -4
- package/data/harnesses/code/agents/brainstorm.md +2 -2
- package/data/harnesses/code/agents/lld-mode.md +2 -2
- package/data/harnesses/code/agents/maintenance.md +17 -17
- package/data/harnesses/code/codex/agents/brainstorm.toml +6 -2
- package/data/harnesses/code/codex/agents/lld-mode.toml +2 -2
- package/data/harnesses/code/codex/agents/maintenance.toml +18 -17
- package/data/harnesses/code/docs/README.md +9 -17
- package/data/harnesses/code/docs/history/CHANGELOG.md +19 -18
- package/data/harnesses/code/docs/structure.md +60 -45
- package/data/harnesses/code/harness.json +2 -2
- package/data/harnesses/code/hooks/compliance.mjs +8 -2
- package/data/harnesses/code/hooks/lib/sweep.mjs +3 -2
- package/data/harnesses/code/rules/changelog.md +1 -1
- package/data/harnesses/code/skills/boundary/SKILL.md +33 -22
- package/data/harnesses/code/skills/boundary/references/index.md +2 -4
- package/data/harnesses/code/skills/boundary/references/mechanisms.md +3 -10
- package/data/harnesses/code/skills/boundary/references/packs/frontend.md +17 -17
- package/data/harnesses/code/skills/boundary/references/packs/generic-tail.md +1 -1
- package/data/harnesses/code/skills/brainstorm/README.md +11 -13
- package/data/harnesses/code/skills/brainstorm/SKILL.md +149 -130
- package/data/harnesses/code/skills/brainstorm/references/doctrine.md +48 -51
- package/data/harnesses/code/skills/brainstorm/references/harvest.md +51 -57
- package/data/harnesses/code/skills/brainstorm/references/session-schema.md +48 -42
- package/data/harnesses/code/skills/design/SKILL.md +31 -35
- package/data/harnesses/code/skills/design/data/iconography.md +2 -2
- package/data/harnesses/code/skills/design/references/compose.md +14 -16
- package/data/harnesses/code/skills/design/references/foundations.md +5 -5
- package/data/harnesses/code/skills/design/references/intake.md +6 -6
- package/data/harnesses/code/skills/design/references/object-pass.md +1 -1
- package/data/harnesses/code/skills/design/references/ship-gate.md +5 -5
- package/data/harnesses/code/skills/design/references/ux-patterns/Readme.md +4 -4
- package/data/harnesses/code/skills/design/references/ux-patterns/ai-layer.md +1 -1
- package/data/harnesses/code/skills/design/references/ux-patterns/container-choice.md +1 -1
- package/data/harnesses/code/skills/design/references/ux-patterns/dashboards.md +1 -1
- package/data/harnesses/code/skills/design/references/ux-patterns/modes.md +1 -1
- package/data/harnesses/code/skills/design/references/ux-patterns/object-model.md +2 -2
- package/data/harnesses/code/skills/design/references/ux-patterns/promotion-demotion.md +1 -1
- package/data/harnesses/code/skills/design/references/ux-patterns/settings.md +1 -1
- package/data/harnesses/code/skills/design/references/ux-patterns/standard-pages.md +1 -1
- package/data/harnesses/code/skills/documentation/SKILL.md +92 -143
- package/data/harnesses/code/skills/documentation/references/examples.md +45 -72
- package/data/harnesses/code/skills/documentation/references/frontmatter.md +8 -8
- package/data/harnesses/code/skills/documentation/references/instruction-style.md +3 -3
- package/data/harnesses/code/skills/documentation/references/source-comments.md +19 -0
- package/data/harnesses/code/skills/documentation/references/style-guide.md +25 -11
- package/data/harnesses/code/skills/documentation/references/untemplated.md +11 -10
- package/data/harnesses/code/skills/documentation/scripts/doc-lint.mjs +181 -40
- package/data/harnesses/code/skills/documentation/templates/Readme.md +68 -41
- package/data/harnesses/code/skills/documentation/templates/acceptance-criteria.md +11 -19
- package/data/harnesses/code/skills/documentation/templates/api-reference.md +8 -3
- package/data/harnesses/code/skills/documentation/templates/architecture-decision.md +8 -12
- package/data/harnesses/code/skills/documentation/templates/backlog.md +2 -2
- package/data/harnesses/code/skills/documentation/templates/behavioral-checklist.md +10 -17
- package/data/harnesses/code/skills/documentation/templates/bookkeeping.md +2 -2
- package/data/harnesses/code/skills/documentation/templates/changelog-entry.md +2 -2
- package/data/harnesses/code/skills/documentation/templates/changelog-index.md +21 -29
- package/data/harnesses/code/skills/documentation/templates/docs-readme.md +4 -4
- package/data/harnesses/code/skills/documentation/templates/doctrine.md +3 -3
- package/data/harnesses/code/skills/documentation/templates/domain-model.md +10 -5
- package/data/harnesses/code/skills/documentation/templates/environment-registry.md +7 -2
- package/data/harnesses/code/skills/documentation/templates/feature.md +6 -6
- package/data/harnesses/code/skills/documentation/templates/glossary.md +6 -1
- package/data/harnesses/code/skills/documentation/templates/handover.md +17 -17
- package/data/harnesses/code/skills/documentation/templates/implementation-map.md +10 -5
- package/data/harnesses/code/skills/documentation/templates/journal.md +2 -2
- package/data/harnesses/code/skills/documentation/templates/memory-main.md +2 -2
- package/data/harnesses/code/skills/documentation/templates/migration-runbook.md +1 -1
- package/data/harnesses/code/skills/documentation/templates/non-goals.md +8 -3
- package/data/harnesses/code/skills/documentation/templates/operations-procedure.md +8 -3
- package/data/harnesses/code/skills/documentation/templates/package.md +5 -9
- package/data/harnesses/code/skills/documentation/templates/plan.md +5 -11
- package/data/harnesses/code/skills/documentation/templates/protected-files.md +7 -2
- package/data/harnesses/code/skills/documentation/templates/root-readme.md +5 -5
- package/data/harnesses/code/skills/documentation/templates/security-overview.md +9 -4
- package/data/harnesses/code/skills/documentation/templates/setup.md +6 -6
- package/data/harnesses/code/skills/documentation/templates/system-overview.md +12 -7
- package/data/harnesses/code/skills/documentation/templates/system.md +2 -2
- package/data/harnesses/code/skills/documentation/templates/testing-strategy.md +10 -5
- package/data/harnesses/code/skills/documentation/templates/ux-behavior.md +14 -5
- package/data/harnesses/code/skills/issue-bridge/SKILL.md +51 -16
- package/data/harnesses/code/skills/issue-bridge/references/trackers/github.md +5 -5
- package/data/harnesses/code/skills/issue-bridge/references/trackers/jira.md +11 -8
- package/data/harnesses/code/skills/issue-bridge/references/trackers/linear.md +16 -11
- package/data/harnesses/code/skills/nustack-graph/SKILL.md +38 -29
- package/data/harnesses/code/skills/polygraph/references/dispatch.md +31 -18
- package/data/harnesses/code/skills/polygraph/references/rows.md +11 -6
- package/data/harnesses/code/skills/schema-design/SKILL.md +39 -41
- package/data/harnesses/code/skills/test/SKILL.md +38 -42
- package/data/harnesses/code/skills/testing/SKILL.md +83 -73
- package/data/harnesses/code/skills/workflow-mapper/SKILL.md +156 -193
- package/data/harnesses/code/skills/workflow-mapper/references/patterns.md +15 -15
- package/data/harnesses/delivery/CLAUDE.md +1 -1
- package/data/harnesses/delivery/agents/brainstorm.md +2 -2
- package/data/harnesses/delivery/agents/lld-mode.md +2 -2
- package/data/harnesses/delivery/agents/maintenance.md +17 -17
- package/data/harnesses/delivery/codex/agents/brainstorm.toml +6 -2
- package/data/harnesses/delivery/codex/agents/lld-mode.toml +2 -2
- package/data/harnesses/delivery/codex/agents/maintenance.toml +18 -17
- package/data/harnesses/delivery/harness.json +2 -2
- package/data/harnesses/delivery/rules/changelog.md +1 -1
- package/data/harnesses/delivery/skills/brainstorm/README.md +11 -13
- package/data/harnesses/delivery/skills/brainstorm/SKILL.md +149 -130
- package/data/harnesses/delivery/skills/brainstorm/references/doctrine.md +48 -51
- package/data/harnesses/delivery/skills/brainstorm/references/harvest.md +51 -57
- package/data/harnesses/delivery/skills/brainstorm/references/session-schema.md +48 -42
- package/data/harnesses/delivery/skills/cost-report/SKILL.md +10 -10
- package/data/harnesses/delivery/skills/documentation/SKILL.md +92 -143
- package/data/harnesses/delivery/skills/documentation/references/examples.md +45 -72
- package/data/harnesses/delivery/skills/documentation/references/frontmatter.md +8 -8
- package/data/harnesses/delivery/skills/documentation/references/instruction-style.md +3 -3
- package/data/harnesses/delivery/skills/documentation/references/source-comments.md +19 -0
- package/data/harnesses/delivery/skills/documentation/references/style-guide.md +25 -11
- package/data/harnesses/delivery/skills/documentation/references/untemplated.md +11 -10
- package/data/harnesses/delivery/skills/documentation/scripts/doc-lint.mjs +181 -40
- package/data/harnesses/delivery/skills/documentation/templates/Readme.md +68 -41
- package/data/harnesses/delivery/skills/documentation/templates/acceptance-criteria.md +11 -19
- package/data/harnesses/delivery/skills/documentation/templates/api-reference.md +8 -3
- package/data/harnesses/delivery/skills/documentation/templates/architecture-decision.md +8 -12
- package/data/harnesses/delivery/skills/documentation/templates/backlog.md +2 -2
- package/data/harnesses/delivery/skills/documentation/templates/behavioral-checklist.md +10 -17
- package/data/harnesses/delivery/skills/documentation/templates/bookkeeping.md +2 -2
- package/data/harnesses/delivery/skills/documentation/templates/changelog-entry.md +2 -2
- package/data/harnesses/delivery/skills/documentation/templates/changelog-index.md +21 -29
- package/data/harnesses/delivery/skills/documentation/templates/docs-readme.md +4 -4
- package/data/harnesses/delivery/skills/documentation/templates/doctrine.md +3 -3
- package/data/harnesses/delivery/skills/documentation/templates/domain-model.md +10 -5
- package/data/harnesses/delivery/skills/documentation/templates/environment-registry.md +7 -2
- package/data/harnesses/delivery/skills/documentation/templates/feature.md +6 -6
- package/data/harnesses/delivery/skills/documentation/templates/glossary.md +6 -1
- package/data/harnesses/delivery/skills/documentation/templates/handover.md +17 -17
- package/data/harnesses/delivery/skills/documentation/templates/implementation-map.md +10 -5
- package/data/harnesses/delivery/skills/documentation/templates/journal.md +2 -2
- package/data/harnesses/delivery/skills/documentation/templates/memory-main.md +2 -2
- package/data/harnesses/delivery/skills/documentation/templates/migration-runbook.md +1 -1
- package/data/harnesses/delivery/skills/documentation/templates/non-goals.md +8 -3
- package/data/harnesses/delivery/skills/documentation/templates/operations-procedure.md +8 -3
- package/data/harnesses/delivery/skills/documentation/templates/package.md +5 -9
- package/data/harnesses/delivery/skills/documentation/templates/plan.md +5 -11
- package/data/harnesses/delivery/skills/documentation/templates/protected-files.md +7 -2
- package/data/harnesses/delivery/skills/documentation/templates/root-readme.md +5 -5
- package/data/harnesses/delivery/skills/documentation/templates/security-overview.md +9 -4
- package/data/harnesses/delivery/skills/documentation/templates/setup.md +6 -6
- package/data/harnesses/delivery/skills/documentation/templates/system-overview.md +12 -7
- package/data/harnesses/delivery/skills/documentation/templates/system.md +2 -2
- package/data/harnesses/delivery/skills/documentation/templates/testing-strategy.md +10 -5
- package/data/harnesses/delivery/skills/documentation/templates/ux-behavior.md +14 -5
- package/data/harnesses/delivery/skills/escalate/SKILL.md +11 -11
- package/data/harnesses/delivery/skills/prompt-eval/SKILL.md +8 -8
- package/data/harnesses/delivery/skills/prompt-library/SKILL.md +30 -9
- package/data/harnesses/delivery/skills/route/SKILL.md +8 -8
- package/data/harnesses/etna/CLAUDE.md +2 -2
- package/data/harnesses/etna/agents/brainstorm.md +2 -2
- package/data/harnesses/etna/agents/lld-mode.md +2 -2
- package/data/harnesses/etna/agents/maintenance.md +17 -17
- package/data/harnesses/etna/codex/agents/brainstorm.toml +6 -2
- package/data/harnesses/etna/codex/agents/lld-mode.toml +2 -2
- package/data/harnesses/etna/codex/agents/maintenance.toml +18 -17
- package/data/harnesses/etna/harness.json +2 -2
- package/data/harnesses/etna/rules/changelog.md +1 -1
- package/data/harnesses/etna/skills/boundary/SKILL.md +33 -22
- package/data/harnesses/etna/skills/boundary/references/index.md +2 -4
- package/data/harnesses/etna/skills/boundary/references/mechanisms.md +3 -10
- package/data/harnesses/etna/skills/boundary/references/packs/frontend.md +17 -17
- package/data/harnesses/etna/skills/boundary/references/packs/generic-tail.md +1 -1
- package/data/harnesses/etna/skills/brainstorm/README.md +11 -13
- package/data/harnesses/etna/skills/brainstorm/SKILL.md +149 -130
- package/data/harnesses/etna/skills/brainstorm/references/doctrine.md +48 -51
- package/data/harnesses/etna/skills/brainstorm/references/harvest.md +51 -57
- package/data/harnesses/etna/skills/brainstorm/references/session-schema.md +48 -42
- package/data/harnesses/etna/skills/documentation/SKILL.md +92 -143
- package/data/harnesses/etna/skills/documentation/references/examples.md +45 -72
- package/data/harnesses/etna/skills/documentation/references/frontmatter.md +8 -8
- package/data/harnesses/etna/skills/documentation/references/instruction-style.md +3 -3
- package/data/harnesses/etna/skills/documentation/references/source-comments.md +19 -0
- package/data/harnesses/etna/skills/documentation/references/style-guide.md +25 -11
- package/data/harnesses/etna/skills/documentation/references/untemplated.md +11 -10
- package/data/harnesses/etna/skills/documentation/scripts/doc-lint.mjs +181 -40
- package/data/harnesses/etna/skills/documentation/templates/Readme.md +68 -41
- package/data/harnesses/etna/skills/documentation/templates/acceptance-criteria.md +11 -19
- package/data/harnesses/etna/skills/documentation/templates/api-reference.md +8 -3
- package/data/harnesses/etna/skills/documentation/templates/architecture-decision.md +8 -12
- package/data/harnesses/etna/skills/documentation/templates/backlog.md +2 -2
- package/data/harnesses/etna/skills/documentation/templates/behavioral-checklist.md +10 -17
- package/data/harnesses/etna/skills/documentation/templates/bookkeeping.md +2 -2
- package/data/harnesses/etna/skills/documentation/templates/changelog-entry.md +2 -2
- package/data/harnesses/etna/skills/documentation/templates/changelog-index.md +21 -29
- package/data/harnesses/etna/skills/documentation/templates/docs-readme.md +4 -4
- package/data/harnesses/etna/skills/documentation/templates/doctrine.md +3 -3
- package/data/harnesses/etna/skills/documentation/templates/domain-model.md +10 -5
- package/data/harnesses/etna/skills/documentation/templates/environment-registry.md +7 -2
- package/data/harnesses/etna/skills/documentation/templates/feature.md +6 -6
- package/data/harnesses/etna/skills/documentation/templates/glossary.md +6 -1
- package/data/harnesses/etna/skills/documentation/templates/handover.md +17 -17
- package/data/harnesses/etna/skills/documentation/templates/implementation-map.md +10 -5
- package/data/harnesses/etna/skills/documentation/templates/journal.md +2 -2
- package/data/harnesses/etna/skills/documentation/templates/memory-main.md +2 -2
- package/data/harnesses/etna/skills/documentation/templates/migration-runbook.md +1 -1
- package/data/harnesses/etna/skills/documentation/templates/non-goals.md +8 -3
- package/data/harnesses/etna/skills/documentation/templates/operations-procedure.md +8 -3
- package/data/harnesses/etna/skills/documentation/templates/package.md +5 -9
- package/data/harnesses/etna/skills/documentation/templates/plan.md +5 -11
- package/data/harnesses/etna/skills/documentation/templates/protected-files.md +7 -2
- package/data/harnesses/etna/skills/documentation/templates/root-readme.md +5 -5
- package/data/harnesses/etna/skills/documentation/templates/security-overview.md +9 -4
- package/data/harnesses/etna/skills/documentation/templates/setup.md +6 -6
- package/data/harnesses/etna/skills/documentation/templates/system-overview.md +12 -7
- package/data/harnesses/etna/skills/documentation/templates/system.md +2 -2
- package/data/harnesses/etna/skills/documentation/templates/testing-strategy.md +10 -5
- package/data/harnesses/etna/skills/documentation/templates/ux-behavior.md +14 -5
- package/data/harnesses/etna/skills/workflow-mapper/SKILL.md +156 -193
- package/data/harnesses/etna/skills/workflow-mapper/references/patterns.md +15 -15
- package/data/harnesses/hr/harness.json +1 -1
- package/data/harnesses/hr/skills/evaluator/SKILL.md +71 -73
- package/data/harnesses/hr/skills/evaluator/criteria/code-quality.md +28 -47
- package/data/harnesses/hr/skills/evaluator/criteria/deployment-readiness.md +33 -43
- package/data/harnesses/hr/skills/evaluator/criteria/maintainability.md +34 -46
- package/data/harnesses/hr/skills/evaluator/criteria/mechanical-ambition.md +13 -13
- package/data/harnesses/hr/skills/evaluator/criteria/problem-substantiveness.md +7 -7
- package/data/harnesses/hr/skills/evaluator/criteria/testing.md +36 -41
- package/data/harnesses/hr/skills/evaluator/criteria/ux-mechanics.md +25 -11
- package/data/harnesses/hr/skills/evaluator/criteria/value-articulation.md +7 -7
- package/data/harnesses/hr/skills/evaluator/preflight.md +27 -46
- package/data/harnesses/hr/skills/interview-eval/SKILL.md +37 -42
- package/data/harnesses/hr/skills/interview-eval/rubric.md +21 -23
- package/package.json +2 -2
|
@@ -1,11 +1,16 @@
|
|
|
1
|
-
# Non-
|
|
1
|
+
# Non-goals (docs/architecture/non-goals.md)
|
|
2
2
|
|
|
3
3
|
Truth document. Use for: what the system deliberately does **not** do. A non-goal is a decision, not an omission — each entry carries the why and what would reopen it. Readers (and agents) use this to stop re-proposing settled exclusions.
|
|
4
4
|
|
|
5
|
-
```
|
|
5
|
+
```markdown
|
|
6
|
+
---
|
|
7
|
+
type: non-goals
|
|
8
|
+
description: "{at most 300 characters: what this document settles and where its boundary sits}"
|
|
9
|
+
---
|
|
10
|
+
|
|
6
11
|
# Non-Goals
|
|
7
12
|
|
|
8
13
|
Things this system deliberately does not do. Each is a decision — don't re-propose one without new information of the kind its "revisit if" names.
|
|
9
14
|
|
|
10
|
-
- **{Non-goal}
|
|
15
|
+
- **{Non-goal}:** {why it's excluded}. Revisit if: {the trigger that would reopen it}.
|
|
11
16
|
```
|
|
@@ -1,14 +1,19 @@
|
|
|
1
|
-
# Operations
|
|
1
|
+
# Operations procedure (docs/operations/{procedure}.md)
|
|
2
2
|
|
|
3
3
|
Truth document. Use for: any **recurring** procedure — development, deployment, maintenance. The one-time first run (prerequisites, install, env files, first commands, the stack) is not one of these: it has its own template and a fixed name, `templates/setup.md` → `docs/operations/setup.md`, one per repo. A procedure is consulted mid-task, not read: exact commands, copy-paste runnable, no narrative. Updated in place whenever the workflow changes.
|
|
4
4
|
|
|
5
|
-
A **one-shot** procedure (a migration, an upgrade, an incident response executed once) is not an operations doc — it is a **
|
|
5
|
+
A **one-shot** procedure (a migration, an upgrade, an incident response executed once) is not an operations doc — it is a **migration runbook** (record, `templates/migration-runbook.md`). The test: will someone run this again next month? Yes → operations. No → runbook.
|
|
6
6
|
|
|
7
7
|
Required: **Goal**, **Steps**, **Verification**. Optional: Preconditions, Troubleshooting, Rollback — include only when they carry real content.
|
|
8
8
|
|
|
9
9
|
If a procedure is a deterministic command list run frequently, script it and have the doc point at the script — a doc should carry judgment (when, why, what to check), not replace automation.
|
|
10
10
|
|
|
11
|
-
```
|
|
11
|
+
```markdown
|
|
12
|
+
---
|
|
13
|
+
type: operations
|
|
14
|
+
description: "{at most 300 characters: what this document settles and where its boundary sits}"
|
|
15
|
+
---
|
|
16
|
+
|
|
12
17
|
# {Procedure Name}
|
|
13
18
|
|
|
14
19
|
**Goal:** What this procedure accomplishes, one line.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Package
|
|
1
|
+
# Package documentation (docs/architecture/packages/{package}.md)
|
|
2
2
|
|
|
3
3
|
Truth document. Use for: **one workspace package** — one unit of distribution: a manifest, a build, a binary, a bundle, a Worker. One file per package, named for its folder.
|
|
4
4
|
|
|
@@ -6,7 +6,7 @@ Truth document. Use for: **one workspace package** — one unit of distribution:
|
|
|
6
6
|
|
|
7
7
|
**A package document's deepest layer is its public contract** (`references/style-guide.md` § Shape — the model first, the detail after): the commands and flags a person types, the exports another package imports, what is installed and where. For a CLI the flags *are* the promise, so they belong in Usage. It stops before internal layout, build steps and which file holds what.
|
|
8
8
|
|
|
9
|
-
**A package document is the residual owner of its own tree.** Every file in the package whose header names no narrower document is its to speak for, so it loses to every system or feature document a header names. Until the ownership scan switches to header pointers, its transitional `owns:` is the whole package glob.
|
|
9
|
+
**A package document is the residual owner of its own tree.** Every file in the package whose header names no narrower document is its to speak for, so it loses to every system or feature document a header names. Until the ownership scan switches to header pointers, its transitional `owns:` is the whole package glob. Which subtrees narrower documents speak for is computed from their headers, never tabled here.
|
|
10
10
|
|
|
11
11
|
**Sharp, bulleted, labelled with noun phrases** (`references/style-guide.md` § Labels). Every section after the goal line is bullets under a noun-phrase heading, each bullet a bold noun-phrase label followed by one or two sentences.
|
|
12
12
|
|
|
@@ -15,7 +15,7 @@ Truth document. Use for: **one workspace package** — one unit of distribution:
|
|
|
15
15
|
| Section | When |
|
|
16
16
|
| --- | --- |
|
|
17
17
|
| `Scope` | required. Why the package is its own unit, who consumes it, and what it deliberately does not hold |
|
|
18
|
-
| `Ownership` | required, as one line
|
|
18
|
+
| `Ownership` | required, as one line |
|
|
19
19
|
| `Usage` | required |
|
|
20
20
|
| `Decisions` | once any choice was made that the code cannot explain |
|
|
21
21
|
| `Promises` | required |
|
|
@@ -49,11 +49,7 @@ owns: ["packages/{name}/**"] # transitional — the residual
|
|
|
49
49
|
|
|
50
50
|
## Ownership
|
|
51
51
|
|
|
52
|
-
This document is the residual owner of `packages/{name}
|
|
53
|
-
|
|
54
|
-
| Subtree | Stated and owned by |
|
|
55
|
-
| --- | --- |
|
|
56
|
-
| `src/{machine}/**` | [{system}](../systems/{system}.md) |
|
|
52
|
+
This document is the residual owner of `packages/{name}/**`; a subtree whose files' headers name a system or feature document is that document's.
|
|
57
53
|
|
|
58
54
|
## Usage
|
|
59
55
|
|
|
@@ -77,7 +73,7 @@ This document is the residual owner of `packages/{name}/**`. Claimed at higher s
|
|
|
77
73
|
- **Commands and exports:** {…} — the public contract
|
|
78
74
|
- **Code root:** `packages/{name}/`
|
|
79
75
|
- **Seams:** {…} by name
|
|
80
|
-
- **Checklist:** `tests/{package}.md`
|
|
76
|
+
- **Checklist:** `docs/tests/{package}.md`
|
|
81
77
|
- **See also:** {neighbour}: {why}
|
|
82
78
|
|
|
83
79
|
No file lists or symbol rosters — those are the graph's.
|
|
@@ -8,7 +8,7 @@ The `boundary` skill parses the **Proposed Changes** sections to check boundary
|
|
|
8
8
|
|
|
9
9
|
**Doc Obligations is the one ledger the plan's author writes.** Deriving tests from behavior is judgment, which is why `testing` owns that section and it is marked never-hand-author; resolving Proposed Changes' file paths to the feature docs that own them is a **lookup** against the ownership index already injected at session start. Different work, different rule — fill it yourself, while the touch list is fresh.
|
|
10
10
|
|
|
11
|
-
The **`Gates:`** line carries
|
|
11
|
+
The **`Gates:`** line carries one machine-read segment. The compliance hook greps **`Boundary:`** and blocks implementation edits inside the plan's scope until it reads `passed`: `Boundary: pending` has no verdict yet and `Boundary: blocked` is a verdict against coding, so both wall. The `boundary` skill rewrites it to `Boundary: passed YYYY-MM-DD` or `Boundary: blocked YYYY-MM-DD`; a blocked plan folds the amendments and re-runs the skill. The other two plan gates are enforced by **section presence**: a plan with no `## Test Obligations` or no `## Doc Obligations` section blocks the same edits — the sections are the artifacts, and the gate derives from them, not from a claim about them. A **`Polygraph:`** segment appears only when the user has the `polygraph` agent audit the plan's documents — it appends `Polygraph: passed YYYY-MM-DD (N docs · N claims · N corrected · N registered)`, or `Polygraph: pending` while an owner question is open. It is a trace for readers, never an obligation: a plan carries none by default, no hook or CI check reads it, and it is never hand-written. Never hand-edit the line to skip a gate.
|
|
12
12
|
|
|
13
13
|
```
|
|
14
14
|
# {Feature Name}
|
|
@@ -51,12 +51,11 @@ Why this work is happening *now*. Link to the spec for *what* we're building; th
|
|
|
51
51
|
## Doc Obligations
|
|
52
52
|
|
|
53
53
|
<!-- One row per feature doc whose `owns:` globs intersect the Proposed Changes above — resolve
|
|
54
|
-
them against the injected ownership index. Hand-authored: this is a lookup, not research.
|
|
55
|
-
Amendable while the plan is open; discharged at Completion. -->
|
|
54
|
+
them against the injected ownership index. Hand-authored: this is a lookup, not research. Amendable while the plan is open; discharged at Completion. -->
|
|
56
55
|
|
|
57
|
-
| Doc | Claim that changes |
|
|
56
|
+
| Doc | Claim that changes | Still the owning doc? | Outcome |
|
|
58
57
|
| --- | --- | --- | --- |
|
|
59
|
-
| `docs/features/{feature}.md` | what it says today that this plan makes false | yes / no —
|
|
58
|
+
| `docs/features/{feature}.md` | what it says today that this plan makes false | yes / no — the document the changed files' headers should name | written empty; discharged at Completion — **updated** / **owes nothing** (with the reason) / **blocked** (→ backlog) |
|
|
60
59
|
|
|
61
60
|
**"None" is valid** — a plan touching only unowned paths owes no doc update, and says so explicitly. It is not a free pass: `boundary` builds its own touch list from the same Proposed Changes and reports docs this table missed.
|
|
62
61
|
|
|
@@ -69,12 +68,7 @@ Why this work is happening *now*. Link to the spec for *what* we're building; th
|
|
|
69
68
|
## Test Obligations
|
|
70
69
|
|
|
71
70
|
<!-- Written by the `testing` skill (plan-gate mode) at the plan gate (after `boundary`). One row per
|
|
72
|
-
promised behavior: layer · target file · oracle · fixtures · an empty Outcome cell the
|
|
73
|
-
verification gate fills (satisfied / owes nothing / blocked → backlog). Amendable while the
|
|
74
|
-
plan is open. Do not hand-author. NEVER put a pipe in a ledger cell, escaped or not — the
|
|
75
|
-
compliance hook splits rows on `|` at a fixed column index with no unescaping, so a
|
|
76
|
-
markdown-legal `\|` shifts every later cell and the wall blocks a row that is in fact
|
|
77
|
-
discharged. Write "`install` or `update`", not "`install \| update`". -->
|
|
71
|
+
promised behavior: layer · target file · oracle · fixtures · an empty Outcome cell the verification gate fills (satisfied / owes nothing / blocked → backlog). Amendable while the plan is open. Do not hand-author. A literal pipe in a cell is written `\|`; an unescaped one adds a column and shifts every later cell. Prefer "`install` or `update`" to escaping. -->
|
|
78
72
|
|
|
79
73
|
## Open Questions
|
|
80
74
|
|
|
@@ -1,10 +1,15 @@
|
|
|
1
|
-
# Protected
|
|
1
|
+
# Protected files
|
|
2
2
|
|
|
3
3
|
Truth document. Use for: documenting critical files that need approval before modification.
|
|
4
4
|
|
|
5
5
|
This doc answers *what is protected and why breaking it hurts* — nothing more. Don't duplicate function-level detail here (signatures, inputs/outputs): it drifts from both the code and the owning feature doc. The owning feature doc is the canonical reference for how the code works; link to it.
|
|
6
6
|
|
|
7
|
-
```
|
|
7
|
+
```markdown
|
|
8
|
+
---
|
|
9
|
+
type: protected-files
|
|
10
|
+
description: "{at most 300 characters: what this document settles and where its boundary sits}"
|
|
11
|
+
---
|
|
12
|
+
|
|
8
13
|
# Protected Files
|
|
9
14
|
|
|
10
15
|
Critical files requiring approval before modification.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# Project
|
|
1
|
+
# Project root README (/README.md)
|
|
2
2
|
|
|
3
3
|
Truth document. Use for: the repository root `/README.md`. It opens outward — what the product does, for whom, and where it runs, in a user's terms — then turns inward for the team and coding agents: what state the repo is in, how it works, what its parts are and what must not break, then routes every other question into `docs/`. The outward part comes first because it is what a stranger reads; the inward part is longer because it is what the team uses. **It hosts nothing it can link to.** It is distinct from `docs/README.md`, which describes the folders of the docs tree, and from `CLAUDE.md` / `AGENTS.md`, the standing rules an agent loads. It points at both and restates neither.
|
|
4
4
|
|
|
@@ -13,7 +13,7 @@ Sections come in this order; 1 to 3 are the outward-facing first screen, 4 onwar
|
|
|
13
13
|
5. **State.** Optional: a one-line blockquote, present only while something repo-wide is true that a newcomer must know (frozen, mid-migration, mid-breaking-change on `dev`). It links the plan or runbook that owns the change. Say here which units publish and where, if any do.
|
|
14
14
|
6. **The main path.** Three to six short paragraphs, or numbered stages, along the main request or data path: who arrives, what is built, where state lives, how the result leaves. Name a technology only where it explains a stage. End with a link to the system overview.
|
|
15
15
|
7. **Repository map.** A sentence on how the tree is organised, then one table row per top-level unit (package, app, service), giving its path, what it is in one line, and its owning doc; the top folders that are not packages get a sentence each. This replaces the tree.
|
|
16
|
-
8. **
|
|
16
|
+
8. **Load-bearing rules.** Optional. At most five one-line invariants, public/internal boundaries, never-edit paths (generated, protected) or non-goals, each linked to the doc that argues it.
|
|
17
17
|
9. **Destinations.** An intent-to-destination table. Its last row is the one for agents.
|
|
18
18
|
10. **Everyday commands.** Optional. At most four commands run on every change, ending at the gate a push must pass. First-run commands are never here.
|
|
19
19
|
|
|
@@ -31,11 +31,11 @@ Sections come in this order; 1 to 3 are the outward-facing first screen, 4 onwar
|
|
|
31
31
|
|
|
32
32
|
### Writing rules
|
|
33
33
|
|
|
34
|
-
- **Budget: between 60 and 140 non-blank lines, the outward part under a third of it.** Prose is welcome — The main path and
|
|
34
|
+
- **Budget: between 60 and 140 non-blank lines, the outward part under a third of it.** Prose is welcome — The main path and Load-bearing rules read better as paragraphs than as rows — but past the ceiling a section is hosting content that belongs in a doc. Move it and leave the link.
|
|
35
35
|
- **Every section is either a fact the reader acts on or a link.** If a section needs a paragraph, it needs a doc.
|
|
36
36
|
- **One H1, then H2 sections, in plain Markdown.** Sentence-case headings, no emoji, no HTML layout, and no `#` comment lines inside code blocks (they parse as H1s).
|
|
37
37
|
- **Relative links into the repo only.** Never an absolute repo URL. Never an external site as the home of a canonical doc.
|
|
38
|
-
- **Link folders and mandated scaffolds, never rosters.** The allowed targets are folders, `docs/README.md`, `docs/structure.md`, `docs/operations/setup.md`, `docs/history/CHANGELOG.md`, `docs/history/backlog.md`, `CLAUDE.md` and the owning docs in the Map. A procedure is named only where a Destinations row needs it. Every heading and table header is a noun phrase (`../references/style-guide.md` § Labels). Never list individual feature docs: the ownership index finds them.
|
|
38
|
+
- **Link folders and mandated scaffolds, never rosters.** The allowed targets are folders, `docs/README.md`, `docs/structure.md`, `docs/operations/setup.md`, `docs/history/CHANGELOG.md`, `docs/history/backlog.md`, `CLAUDE.md`, `AGENTS.md` and the owning docs in the Map. A procedure is named only where a Destinations row needs it. Every heading and table header is a noun phrase (`../references/style-guide.md` § Labels). Never list individual feature docs: the ownership index finds them.
|
|
39
39
|
- **No tree.** The Map stops at top-level units and never lists files. Mark paths that look primary but are not, for example "`legacy/`: reference only, never edited".
|
|
40
40
|
- **The Map is a coarse view of the ownership index, not a rival to it.** The Owning doc column names the doc the index resolves for that path. When the two disagree the index wins, and the Map row is fixed in the same change.
|
|
41
41
|
- **No version numbers and no dates.** Name the file that pins a version (`.nvmrc`, `packageManager`, `rust-toolchain.toml`). Write in the present tense, with no "coming soon" and no "as of".
|
|
@@ -90,7 +90,7 @@ The rest of this page is for the team and for coding agents working in this repo
|
|
|
90
90
|
|
|
91
91
|
{One sentence each for the top folders that are not packages — `registry/`, `scripts/`, `docs/` — with their owning doc.} Where every doc lives: [docs/structure.md](docs/structure.md).
|
|
92
92
|
|
|
93
|
-
##
|
|
93
|
+
## Load-bearing rules
|
|
94
94
|
|
|
95
95
|
{One sentence saying these are stated here and argued in the documents they point at.}
|
|
96
96
|
|
|
@@ -1,10 +1,15 @@
|
|
|
1
|
-
# Security
|
|
1
|
+
# Security overview (docs/architecture/security.md)
|
|
2
2
|
|
|
3
3
|
Truth document. Use for: the single place the system's security posture is stated — assets, trust boundaries, controls, and accepted risks. Controls link to the code that implements them; this doc asserts, the code proves.
|
|
4
4
|
|
|
5
5
|
Required: **Trust boundaries**, **Controls**. Optional: Assets, Accepted risks.
|
|
6
6
|
|
|
7
|
-
```
|
|
7
|
+
```markdown
|
|
8
|
+
---
|
|
9
|
+
type: security-overview
|
|
10
|
+
description: "{at most 300 characters: what this document settles and where its boundary sits}"
|
|
11
|
+
---
|
|
12
|
+
|
|
8
13
|
# Security Overview
|
|
9
14
|
|
|
10
15
|
## Assets
|
|
@@ -13,7 +18,7 @@ Required: **Trust boundaries**, **Controls**. Optional: Assets, Accepted risks.
|
|
|
13
18
|
|
|
14
19
|
## Trust boundaries
|
|
15
20
|
|
|
16
|
-
- {Boundary}
|
|
21
|
+
- **{Boundary}:** {what crosses it, and what checks the crossing}
|
|
17
22
|
|
|
18
23
|
## Controls
|
|
19
24
|
|
|
@@ -23,5 +28,5 @@ Required: **Trust boundaries**, **Controls**. Optional: Assets, Accepted risks.
|
|
|
23
28
|
|
|
24
29
|
## Accepted risks
|
|
25
30
|
|
|
26
|
-
- {Risk knowingly carried}
|
|
31
|
+
- **{Risk knowingly carried}:** accepted because {reason}; owner: {who}. Revisit if: {trigger}.
|
|
27
32
|
```
|
|
@@ -4,7 +4,7 @@ Truth document, operations genre (`type: operations`). Use for: **the one-time p
|
|
|
4
4
|
|
|
5
5
|
It is distinct from `local-development.md`, the daily loop: watch modes, resetting state, per-package traps, the inner test cycle. Setup runs once per machine. Local development runs every session. Setup ends by handing off to it, and neither copies the other. Deploying is `deployment.md`.
|
|
6
6
|
|
|
7
|
-
Required: **Goal**, **Stack**, **Prerequisites**, **
|
|
7
|
+
Required: **Goal**, **Stack**, **Prerequisites**, **Installation**, **First run**, **Verification**. Optional, included only with real content: the audience fork, **Before cloning**, **Environment files**, **Local services**, **Reset**, **Common failures**.
|
|
8
8
|
|
|
9
9
|
### Writing rules
|
|
10
10
|
|
|
@@ -32,7 +32,7 @@ description: "{at most 300 characters: what this document settles and where its
|
|
|
32
32
|
|
|
33
33
|
**Goal:** take a fresh machine from clone to a verified first run of {what runs: e.g. "the product Worker on :{port} and the web shell on :{port}, signed in as the dev fixture"}. Done once per machine; the daily loop is [`local-development.md`]({local-development}.md).
|
|
34
34
|
|
|
35
|
-
{Optional audience fork: "Only running {the CLI / one package}? Stop after
|
|
35
|
+
{Optional audience fork: "Only running {the CLI / one package}? Stop after Installation and see [`{procedure}`]({path})."}
|
|
36
36
|
|
|
37
37
|
## Stack
|
|
38
38
|
|
|
@@ -59,7 +59,7 @@ Why these were chosen: [{system overview}](../architecture/{overview}.md).
|
|
|
59
59
|
|
|
60
60
|
- **{Trap}:** {what a fresh clone hits and the one command that clears it, e.g. `git lfs install`, `git submodule update --init`}.
|
|
61
61
|
|
|
62
|
-
##
|
|
62
|
+
## Installation
|
|
63
63
|
|
|
64
64
|
\`\`\`bash
|
|
65
65
|
git clone {url} && cd {repo}
|
|
@@ -103,7 +103,7 @@ The contract is [`{example file or typed Env}`](../../{path}). Read it before co
|
|
|
103
103
|
|
|
104
104
|
4. Open `{http://localhost:port}` and {sign in as `{seeded user}` / reach `{first screen}`}.
|
|
105
105
|
|
|
106
|
-
##
|
|
106
|
+
## Verification
|
|
107
107
|
|
|
108
108
|
- `{curl -fsS http://localhost:{port}/{health}}` returns `200` {and `{body}`}.
|
|
109
109
|
- `{doctor or status command}` reports {expected}. ← keep whichever exists
|
|
@@ -130,9 +130,9 @@ The baseline scaffolds `docs/operations/setup.md` when it is missing and the rep
|
|
|
130
130
|
|
|
131
131
|
- **Stack:** from the workspace manifests, one row per layer.
|
|
132
132
|
- **Prerequisites:** from the pinning files.
|
|
133
|
-
- **
|
|
133
|
+
- **Installation and First run:** from the root README's getting-started block (if one exists) and the root scripts.
|
|
134
134
|
- **Environment files:** from every `*.example` / `.dev.vars.example` in the workspace.
|
|
135
|
-
- **
|
|
135
|
+
- **Verification:** from a health route, a doctor command or the test script.
|
|
136
136
|
|
|
137
137
|
It leaves Common failures empty until a failure is root-caused, and it drops every section it cannot fill concretely.
|
|
138
138
|
|
|
@@ -1,13 +1,18 @@
|
|
|
1
|
-
# System
|
|
1
|
+
# System overview (docs/architecture/system-design.md)
|
|
2
2
|
|
|
3
3
|
Truth document. Use for: the bird's-eye view — what the system is, its subsystems, and how they connect. The first doc a new reader opens after the README; austere and short (two screens max). Depth lives in feature docs — this doc maps, it doesn't explain.
|
|
4
4
|
|
|
5
|
-
Required: **
|
|
5
|
+
Required: **Purpose**, **Subsystem map**. Optional: Key flows, Sources of truth.
|
|
6
|
+
|
|
7
|
+
```markdown
|
|
8
|
+
---
|
|
9
|
+
type: system-overview
|
|
10
|
+
description: "{at most 300 characters: what this document settles and where its boundary sits}"
|
|
11
|
+
---
|
|
6
12
|
|
|
7
|
-
```
|
|
8
13
|
# System Overview
|
|
9
14
|
|
|
10
|
-
##
|
|
15
|
+
## Purpose
|
|
11
16
|
|
|
12
17
|
{Two or three sentences: what the system does, for whom, in what environment it runs.}
|
|
13
18
|
|
|
@@ -18,13 +23,13 @@ Required: **What this is**, **Subsystem map**. Optional: Key flows, Where the tr
|
|
|
18
23
|
└──────────┘ └──────────┘ └──────────┘
|
|
19
24
|
{One box per subsystem; label the arrows with the contract that crosses them.}
|
|
20
25
|
|
|
21
|
-
- **{Subsystem}
|
|
26
|
+
- **{Subsystem}:** what it owns, in one line. → [owning doc](../features/{feature}.md)
|
|
22
27
|
|
|
23
28
|
## Key flows
|
|
24
29
|
|
|
25
|
-
{At most two or three
|
|
30
|
+
{At most two or three mermaid flow diagrams, at role level, for the flows everything else hangs off: request lifecycle, auth, the core domain operation.}
|
|
26
31
|
|
|
27
|
-
##
|
|
32
|
+
## Sources of truth
|
|
28
33
|
|
|
29
34
|
| Area | Canonical doc |
|
|
30
35
|
| ---- | ------------- |
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# System
|
|
1
|
+
# System documentation (docs/architecture/systems/{system}.md)
|
|
2
2
|
|
|
3
3
|
Truth document. Use for: **one machine that spans packages**, which a person cannot point at — the walk, the egress, the ingest, the settlement, a gate, a sweep, a door an agent calls. One file per machine, named for the machine. A thing a person navigates to is a feature document, even when it owns tables; a unit of distribution is a package document.
|
|
4
4
|
|
|
@@ -69,7 +69,7 @@ owns: # transitional — region globs
|
|
|
69
69
|
- **Objects:** {…}
|
|
70
70
|
- **Code roots:** {…} — directories, one per package the machine spans
|
|
71
71
|
- **Seams:** {…} by name
|
|
72
|
-
- **Checklist:** `tests/{system}.md`
|
|
72
|
+
- **Checklist:** `docs/tests/{system}.md`
|
|
73
73
|
- **See also:** {neighbour}: {why}
|
|
74
74
|
|
|
75
75
|
No tables, routes or symbol rosters — those are the graph's.
|
|
@@ -1,10 +1,15 @@
|
|
|
1
|
-
# Testing
|
|
1
|
+
# Testing strategy (docs/architecture/common/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
|
|
|
5
|
-
Required: **Levels**, **
|
|
5
|
+
Required: **Levels**, **Commands**. Optional: Deliberately untested, New tests.
|
|
6
|
+
|
|
7
|
+
```markdown
|
|
8
|
+
---
|
|
9
|
+
type: testing-strategy
|
|
10
|
+
description: "{at most 300 characters: what this document settles and where its boundary sits}"
|
|
11
|
+
---
|
|
6
12
|
|
|
7
|
-
```
|
|
8
13
|
# Testing Strategy
|
|
9
14
|
|
|
10
15
|
## Levels
|
|
@@ -14,7 +19,7 @@ Required: **Levels**, **Running**. Optional: Deliberately untested, Adding a tes
|
|
|
14
19
|
| Unit / integration | {runner} | `tests/` | {what} |
|
|
15
20
|
| E2E | {runner} | `e2e/` | {what} |
|
|
16
21
|
|
|
17
|
-
##
|
|
22
|
+
## Commands
|
|
18
23
|
|
|
19
24
|
- `{pm} test` — the whole unit suite (CI gate)
|
|
20
25
|
- `{pm} run test:e2e` — {when to run}
|
|
@@ -23,7 +28,7 @@ Required: **Levels**, **Running**. Optional: Deliberately untested, Adding a tes
|
|
|
23
28
|
|
|
24
29
|
- {Area} — {why, and what verifies it instead (typecheck, boot check, manual journey)}
|
|
25
30
|
|
|
26
|
-
##
|
|
31
|
+
## New tests
|
|
27
32
|
|
|
28
33
|
1. {Where the file goes, what it's named, where fixtures live}
|
|
29
34
|
```
|
|
@@ -1,9 +1,20 @@
|
|
|
1
|
-
# UX
|
|
1
|
+
# UX behavior (docs/features/{surface}-ux.md)
|
|
2
2
|
|
|
3
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.
|
|
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
|
|
|
7
|
+
```yaml
|
|
8
|
+
---
|
|
9
|
+
type: ux
|
|
10
|
+
description: "{at most 300 characters: what this document settles and where its boundary sits}"
|
|
11
|
+
status: active # draft until the surface it decides is built
|
|
12
|
+
objects: [workspace, run] # the objects the surface presents
|
|
13
|
+
owns: # transitional, only when this document speaks for the surface's components (references/frontmatter.md)
|
|
14
|
+
- packages/{pkg}/src/{surface}/**
|
|
15
|
+
---
|
|
16
|
+
```
|
|
17
|
+
|
|
7
18
|
**Why this genre exists.** A feature doc (LLD) states what a feature is, how its data flows, and which contracts it honours — all of which stay plausibly true through a rewrite of the surface. Nothing else in the repo states what a person *observes*. So a change to the wire lands, the interface absorbs it, and the absorption reads as maintenance: no test fails, no lint fires, no document is contradicted. This document is the thing a silent change contradicts.
|
|
8
19
|
|
|
9
20
|
**Not a test plan.** `docs/tests/{feature}.md` records that behavior was driven and holds `Pinned:` traces; this document *decides* the behavior it later verifies. Written after the code, it is a transcript. Write it first.
|
|
@@ -15,9 +26,7 @@
|
|
|
15
26
|
| One surface's — a panel, an editor, a dialog | `docs/features/{surface}-ux.md`; its component files' headers name it |
|
|
16
27
|
| Cross-cutting — routing, information architecture, the state vocabulary every surface obeys, presentation of streams | `docs/architecture/` — owns no code, like every architecture doc |
|
|
17
28
|
|
|
18
|
-
**Ownership: a component file names one document in its header.** A surface's components are frequently already spoken for — by the page's feature document, by the feature behind one panel — and a file's header names exactly one document. Where the header already names the feature document, this document is named in that feature document's **
|
|
19
|
-
|
|
20
|
-
That matters because a doc nothing implicates is a doc that rots, and a surface rewritten under an unimplicated document is the failure this genre exists to prevent. The coordinated-edit row is the weaker of the two bindings; prefer the header pointer wherever no document speaks for the component yet.
|
|
29
|
+
**Ownership: a component file names one document in its header.** A surface's components are frequently already spoken for — by the page's feature document, by the feature behind one panel — and a file's header names exactly one document. Where the header already names the feature document, this document is named in that feature document's **See also** line under For the agent instead, phrased as *different promises over the same files*, and the object closure links the two through the objects both name. Where no document speaks for the component, its header names this one; prefer that header pointer, because the See also line is the weaker binding. A document nothing implicates rots, and a surface rewritten under an unimplicated document is the failure this genre exists to prevent.
|
|
21
30
|
|
|
22
31
|
---
|
|
23
32
|
|
|
@@ -56,7 +65,7 @@ What moves the surface between states, and who causes each move — the person,
|
|
|
56
65
|
|
|
57
66
|
## Optional sections
|
|
58
67
|
|
|
59
|
-
**Copy** — the exact words, where the wording is load-bearing (a refusal, an irreversible confirmation). **Density and rhythm** — where a surface deliberately differs from the design system's default. **Open questions** — decisions deliberately
|
|
68
|
+
**Copy** — the exact words, where the wording is load-bearing (a refusal, an irreversible confirmation). **Density and rhythm** — where a surface deliberately differs from the design system's default. **Open questions** — decisions deliberately left open, so an implementer knows what to ask rather than guessing.
|
|
60
69
|
|
|
61
70
|
## Rules
|
|
62
71
|
|
|
@@ -5,7 +5,7 @@ description: The bridge between a traditional issue tracker (GitHub Issues, Jira
|
|
|
5
5
|
|
|
6
6
|
# issue-bridge — the tracker bridge method
|
|
7
7
|
|
|
8
|
-
**
|
|
8
|
+
> **No connector reachable** (no MCP server, no CLI, no API credentials — the pack for your tracker lists the probes): never stall. Accept pasted issue text, name the fields you are missing (labels, comments, linked items), and triage what you have, announced.
|
|
9
9
|
|
|
10
10
|
You bridge two systems of record. Neither is asked to change:
|
|
11
11
|
|
|
@@ -15,41 +15,76 @@ You bridge two systems of record. Neither is asked to change:
|
|
|
15
15
|
|
|
16
16
|
## Connectors
|
|
17
17
|
|
|
18
|
-
Tracker access is
|
|
18
|
+
Tracker access is this skill's own knowledge, never a harness-declared tool: a tracker is reached through an MCP entry, one of several unrelated CLIs, or an env var, varying per repo and per team, so you probe for it at the moment of use. Each tracker's pack under [`references/trackers/`](references/trackers/) lists its access options in preference order — an MCP server, a CLI, the raw API, in the order that pack sets — with the probe for each, auth setup, and the exact calls for read / search / create / comment.
|
|
19
|
+
|
|
20
|
+
- **Always read the pack for your tracker before the first tracker call.**
|
|
21
|
+
- More than one tracker in play → one pack each; the method below is identical across all of them.
|
|
19
22
|
|
|
20
23
|
## Tool tier
|
|
21
24
|
|
|
22
|
-
Read the `nustack` status from the session context (`Tool:` line)
|
|
25
|
+
Read the `nustack` status from the session context (`Tool:` line):
|
|
26
|
+
|
|
27
|
+
| Tier | Do |
|
|
28
|
+
| --- | --- |
|
|
29
|
+
| **Present-fresh** | Localize every question through `nustack graph` (`find`, `where-defined`, `who-calls`, `refs`, `impact`, `blame`, `tests-covering`) before reading source |
|
|
30
|
+
| **Present-stale** | Use it; note the gap |
|
|
31
|
+
| **Absent** | Glob/Grep/read, announced |
|
|
32
|
+
|
|
33
|
+
- **Never run an index step first** — the family re-indexes a stale store before it answers.
|
|
34
|
+
- **Syntax-level detail goes straight to source, whatever the tier** — decorator lists and their order, full function bodies, statement sequence are not in the index's query surface. Decorator *application* is indexed as a reference, attributed to the decorated declaration; what the decorator does is not.
|
|
23
35
|
|
|
24
36
|
## Mode selection
|
|
25
37
|
|
|
26
|
-
**Triage** when given issue references, a tracker query, or pasted issue text. **File** when given a harness finding to externalize — a backlog row, a drift or bookkeeping finding, an audit or critic result, a changelog discovery. Ambiguous → ask one question
|
|
38
|
+
**Triage** when given issue references, a tracker query, or pasted issue text. **File** when given a harness finding to externalize — a backlog row, a drift or bookkeeping finding, an audit or critic result, a changelog discovery. Ambiguous → ask one question; never guess.
|
|
27
39
|
|
|
28
40
|
## Triage — tracker item in, dossier out
|
|
29
41
|
|
|
30
42
|
1. **Fetch** through the connector (per the pack). No access → pasted-text mode, missing fields named.
|
|
31
|
-
2. **Classify.** Bug / feature request / question / docs-gap.
|
|
43
|
+
2. **Classify.** Bug / feature request / question / docs-gap. A question gets owning-doc pointers and a direct answer, not a dossier.
|
|
32
44
|
3. **Route.** Match the issue's vocabulary against the ownership index and feature docs' `keywords:`. Read the owning doc(s) **fully** — intent and invariants first, code second. No owning doc → say so; the absence is itself a finding.
|
|
33
|
-
4. **Localize.**
|
|
34
|
-
5. **Diagnose.**
|
|
35
|
-
6. **Dedup.** Search the tracker for siblings and priors (per the pack); check `nustack graph drift` for the same
|
|
45
|
+
4. **Localize.** Run names from the issue through `nustack graph` (per § Tool tier); every location claim carries `file:line`.
|
|
46
|
+
5. **Diagnose.** Write a root-cause hypothesis graded `certain` / `inferred` / `unresolved` — **never** present inferred as certain. Blast radius via `impact` / `coupling`; test surface via `tests-covering`.
|
|
47
|
+
6. **Dedup.** Search the tracker for siblings and priors (per the pack); check `nustack graph drift` for the same bug in a clone.
|
|
36
48
|
7. **Write the dossier** to `docs/operations/triage/YYYY-MM-DD-<tracker>-<id>-<slug>.md` and return the verdict summary.
|
|
37
|
-
8. **
|
|
49
|
+
8. **Post back** (comment, label, assign, transition) only under § Boundaries' approval gate: show exactly what would be posted, post only on an explicit yes in this session.
|
|
38
50
|
|
|
39
51
|
## The dossier
|
|
40
52
|
|
|
41
|
-
|
|
53
|
+
A dossier is a dated working artifact — it **never** claims `owns:` globs and never masquerades as a feature doc.
|
|
54
|
+
|
|
55
|
+
**Frontmatter:** `type: triage`, `tracker`, `date`, `confidence`, and the subject key:
|
|
56
|
+
|
|
57
|
+
| Subject | Key |
|
|
58
|
+
| --- | --- |
|
|
59
|
+
| A tracker item | `issue: {id: <n>, url: <url>}` — the id **numeric** |
|
|
60
|
+
| A locally-authored record | `issue: {id: local:<record-id>}` |
|
|
61
|
+
| A pull request the dossier resolves | `pr: {id: <n>}` |
|
|
62
|
+
|
|
63
|
+
**This key is machine-read:** the NuStack desktop's Issues panel joins dossiers to tracker rows on exactly this key, so a quoted number, a missing id, or a renamed key leaves the dossier orphaned — written but never surfaced beside its issue.
|
|
64
|
+
|
|
65
|
+
**Sections, in order:**
|
|
66
|
+
|
|
67
|
+
1. **Verdict** — 1–3 sentences.
|
|
68
|
+
2. Classification
|
|
69
|
+
3. Owning docs — paths.
|
|
70
|
+
4. Root cause — cited, graded.
|
|
71
|
+
5. Blast radius
|
|
72
|
+
6. Suggested fix plan — feeds the plan → PR loop; you never implement.
|
|
73
|
+
7. Test surface
|
|
74
|
+
8. Duplicates & related
|
|
75
|
+
9. **Prior-thread corrections** — claims already on the tracker thread (bot answers, maintainer comments) that your evidence shows to be wrong, each with the citation that refutes it.
|
|
76
|
+
10. Open questions
|
|
42
77
|
|
|
43
78
|
## File — harness finding in, tracker issue out
|
|
44
79
|
|
|
45
80
|
1. **Verify first.** Reproduce the finding against source before externalizing it. A claim that doesn't reproduce is reported back, never filed.
|
|
46
|
-
2. **Compose tracker-idiomatic** (per the pack): imperative title; body
|
|
47
|
-
3. **Show the draft(s).** Create only on explicit approval, through the connector.
|
|
81
|
+
2. **Compose tracker-idiomatic** (per the pack): imperative title; body of one plain-language context paragraph (no harness jargon), evidence (`file:line`, commit hashes), expected vs actual, acceptance criteria; link the owning feature doc by path.
|
|
82
|
+
3. **Show the draft(s).** Create only on explicit approval, through the connector. Many findings → one draft list, one approval, then individual creation; report every created ID.
|
|
48
83
|
4. **Close the loop.** Write the created issue's ID/URL back into the originating row — a backlog row gains the link, a bookkeeping row resolves.
|
|
49
84
|
|
|
50
85
|
## Boundaries
|
|
51
86
|
|
|
52
|
-
- Never edit source code
|
|
53
|
-
- Nothing is created, edited, or commented in the tracker without explicit approval in the current run.
|
|
54
|
-
- Repo writes are `docs/operations/triage/**` plus the loop-closing edits to `docs/history/backlog.md` / `docs/operations/bookkeeping.md`.
|
|
55
|
-
- Announce degraded
|
|
87
|
+
- **Never edit source code.** The dossier ends at the fix *plan*; implementation belongs to the plan → verification → PR loop.
|
|
88
|
+
- **Nothing is created, edited, or commented in the tracker without explicit approval in the current run.** A standing repo ruling (e.g. "never post to this upstream") overrides any approval.
|
|
89
|
+
- **Repo writes are only** `docs/operations/triage/**` plus the loop-closing edits to `docs/history/backlog.md` / `docs/operations/bookkeeping.md`.
|
|
90
|
+
- **Announce every degraded mode** — degraded output is acceptable; silently downgraded evidence quality is not.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# GitHub — connector pack
|
|
2
2
|
|
|
3
|
-
Access options in preference order. Probe each in order; use the first that answers.
|
|
3
|
+
Access options in preference order. Probe each in order; use the first that answers.
|
|
4
4
|
|
|
5
5
|
## Option 1 — the `gh` CLI (default)
|
|
6
6
|
|
|
@@ -26,12 +26,12 @@ Headers: `Authorization: Bearer <PAT>` · `Accept: application/vnd.github+json`.
|
|
|
26
26
|
- Read: `GET https://api.github.com/repos/OWNER/REPO/issues/N`
|
|
27
27
|
- Search: `GET https://api.github.com/search/issues?q=<query>` (q ≤256 chars, ≤5 boolean ops, ~10 req/min)
|
|
28
28
|
- Create: `POST /repos/OWNER/REPO/issues` `{"title","body","labels":[]}` · Comment: `POST .../issues/N/comments` `{"body"}`
|
|
29
|
-
- Labels: POST appends, PUT replaces — never PUT unless replacement is the stated intent.
|
|
29
|
+
- Labels: POST appends, PUT replaces — **never** PUT unless replacement is the stated intent.
|
|
30
30
|
|
|
31
31
|
## Composing for GitHub
|
|
32
32
|
|
|
33
|
-
Markdown body, native. Reference related issues/PRs by bare `#number` so GitHub auto-links. Labels from the owning doc's `module:` where the repo's label taxonomy allows — **read `gh label list` first; never invent labels** (real taxonomies differ: apache/superset uses `#bug:*`, not `bug`).
|
|
33
|
+
Markdown body, native. Reference related issues/PRs by bare `#number` so GitHub auto-links. Labels come from the owning doc's `module:` where the repo's label taxonomy allows — **read `gh label list` first; never invent labels** (real taxonomies differ: apache/superset uses `#bug:*`, not `bug`).
|
|
34
34
|
|
|
35
|
-
## Ecosystem notes
|
|
35
|
+
## Ecosystem notes
|
|
36
36
|
|
|
37
|
-
|
|
37
|
+
`anthropics/claude-code-action` runs the reverse direction — an @claude mention inside an issue triggers a CI session. Never confuse it with this pack.
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
# Jira — connector pack
|
|
2
2
|
|
|
3
|
-
Access options in preference order. Probe each in order; use the first that answers.
|
|
3
|
+
Access options in preference order. Probe each in order; use the first that answers.
|
|
4
4
|
|
|
5
5
|
## Option 1 — the official Atlassian Remote MCP Server (Cloud only)
|
|
6
6
|
|
|
7
7
|
Probe: an `atlassian` entry in `.mcp.json` / Atlassian MCP tools visible in-session.
|
|
8
8
|
Setup: `claude mcp add --transport http atlassian https://mcp.atlassian.com/v1/mcp/authv2`, then `/mcp` in-session for the OAuth 2.1 flow. **Cloud only — no Data Center.** Rate limits: 500–1,000 calls/hr by plan.
|
|
9
|
-
**
|
|
9
|
+
**Atlassian publishes no tool names** — introspect the live tool list from your session (ToolSearch / the MCP tool listing) before planning calls; expect find/create/update/comment/transition capabilities per Atlassian's own examples.
|
|
10
10
|
|
|
11
11
|
## Option 2 — community MCP: `sooperset/mcp-atlassian` (Cloud + Server/DC)
|
|
12
12
|
|
|
@@ -16,7 +16,7 @@ Confirmed tool names: `jira_get_issue` · `jira_search` (JQL) · `jira_create_is
|
|
|
16
16
|
|
|
17
17
|
## Option 3 — CLIs
|
|
18
18
|
|
|
19
|
-
**acli** (Atlassian-official). Probe: `acli --version` + an authenticated site. **
|
|
19
|
+
**acli** (Atlassian-official). Probe: `acli --version` + an authenticated site. **The namespace is `workitem`, not `issue`.**
|
|
20
20
|
`acli jira workitem view KEY-1 --json` · `workitem search --jql "..." --json [--paginate]` · `workitem create --summary --project --type` · `workitem comment create --key KEY-1 --body "..."`.
|
|
21
21
|
|
|
22
22
|
**jira-cli** (ankitpokhrel, 5.9k★, MIT). Probe: `jira me`. Setup: `jira init` (Cloud: email + `JIRA_API_TOKEN`; DC: PAT + `JIRA_AUTH_TYPE=bearer`).
|
|
@@ -26,15 +26,18 @@ Confirmed tool names: `jira_get_issue` · `jira_search` (JQL) · `jira_create_is
|
|
|
26
26
|
|
|
27
27
|
Basic auth `email:API_token`. Base `https://<domain>.atlassian.net/rest/api/3/`.
|
|
28
28
|
- Read: `GET /rest/api/3/issue/{KEY}`
|
|
29
|
-
- **JQL search: `GET /rest/api/3/search/jql`** —
|
|
29
|
+
- **JQL search: `GET /rest/api/3/search/jql`** — **never** `/rest/api/3/search`, which Atlassian has deprecated for removal.
|
|
30
30
|
- Create: `POST /rest/api/3/issue` — **`description` must be ADF** (`{"type":"doc","version":1,"content":[…]}`).
|
|
31
31
|
- Comment: `POST /rest/api/3/issue/{KEY}/comment` — body must be ADF.
|
|
32
|
-
- **ADF inconvenient → v2**: `/rest/api/2/issue` + `/rest/api/2/issue/{KEY}/comment` take plain-string bodies; v2 JQL endpoint is `/rest/api/2/search`.
|
|
32
|
+
- **ADF inconvenient → v2**: `/rest/api/2/issue` + `/rest/api/2/issue/{KEY}/comment` take plain-string bodies; the v2 JQL endpoint is `/rest/api/2/search`.
|
|
33
33
|
|
|
34
34
|
## Composing for Jira
|
|
35
35
|
|
|
36
|
-
Map to the project's real issue types (`Bug`/`Story`/`Task` — list them
|
|
36
|
+
- Map to the project's real issue types (`Bug`/`Story`/`Task`) — list them; never assume.
|
|
37
|
+
- Set `components` from the owning doc's `module:` where components exist.
|
|
38
|
+
- Atlassian's UI and `acli` say "work item" where the API says "issue" — expect both vocabularies.
|
|
39
|
+
- Leave estimates, sprints, and epic links to humans unless instructed.
|
|
37
40
|
|
|
38
|
-
## Ecosystem notes
|
|
41
|
+
## Ecosystem notes
|
|
39
42
|
|
|
40
|
-
No official Anthropic Jira skill
|
|
43
|
+
No official Anthropic Jira skill exists, and the community skills (JIRA-Assistant-Skills 42★, two atlassian-skills repos, an acli wrapper) are small-adoption — this pack defers to none of them.
|