@erclx/canon 5.42.0 → 5.43.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/claude/.claude-plugin/plugin.json +1 -1
  2. package/claude/skills/auto-ship/SKILL.md +3 -3
  3. package/claude/skills/ci-workflow/REQUIREMENT.md +2 -1
  4. package/claude/skills/ci-workflow/SKILL.md +12 -2
  5. package/claude/skills/ci-workflow/references/workflows.md +12 -9
  6. package/claude/skills/create-rule/SKILL.md +1 -0
  7. package/claude/skills/decision-escalate/SKILL.md +1 -2
  8. package/claude/skills/document-health/references/axes.md +2 -1
  9. package/claude/skills/draft-doc/references/wiki-kind.md +1 -1
  10. package/claude/skills/draft-doc/references/wiki.md +1 -1
  11. package/claude/skills/git-commit/references/commit.md +1 -5
  12. package/claude/skills/git-pr/references/pr.md +1 -0
  13. package/claude/skills/plan-feature/SKILL.md +1 -1
  14. package/claude/skills/plan-feature/references/plan.md +1 -1
  15. package/claude/skills/pr-evidence/references/evidence.md +1 -1
  16. package/claude/skills/role-orchestrator/SKILL.md +2 -0
  17. package/claude/skills/role-orchestrator/references/orchestrator-output.md +4 -0
  18. package/claude/skills/role-planner/REQUIREMENT.md +1 -1
  19. package/claude/skills/role-planner/SKILL.md +3 -3
  20. package/claude/skills/role-worker/REQUIREMENT.md +2 -0
  21. package/claude/skills/role-worker/SKILL.md +26 -2
  22. package/claude/skills/search-craft/REQUIREMENT.md +1 -1
  23. package/claude/skills/search-craft/SKILL.md +2 -2
  24. package/docs/agents/audits.md +1 -0
  25. package/docs/agents/migrate.md +11 -8
  26. package/docs/target/migrations.md +11 -0
  27. package/governance/detect.toml +4 -0
  28. package/governance/rules/canon/context.md +2 -1
  29. package/governance/rules/canon/plan.md +3 -5
  30. package/governance/rules/canon/scratch.md +3 -1
  31. package/governance/rules/canon/task-scope.md +2 -1
  32. package/governance/rules/canon/tasks.md +2 -1
  33. package/governance/rules/canon/worktrees.md +5 -2
  34. package/governance/rules/claude/output.md +7 -4
  35. package/governance/rules/claude/skill.md +6 -4
  36. package/governance/rules/tooling/ci-workflow.md +6 -39
  37. package/governance/rules/ui/design-reference.md +37 -0
  38. package/governance/rules/writing/markdown.md +2 -1
  39. package/package.json +6 -6
  40. package/src/audits/catalog.ts +42 -0
  41. package/src/claude/settings.ts +8 -4
  42. package/src/commands/claude.ts +11 -1
  43. package/src/commands/gov.ts +198 -0
  44. package/src/commands/migrate.ts +121 -2
  45. package/src/commands/pr.ts +4 -77
  46. package/src/commands/tooling.ts +3 -3
  47. package/src/commands/worktrees.ts +49 -0
  48. package/src/gate/stages.ts +15 -0
  49. package/src/gov/audit.ts +440 -0
  50. package/src/listeners/belongs.ts +21 -0
  51. package/src/listeners/machine.ts +93 -0
  52. package/src/listeners/parse.ts +41 -0
  53. package/src/migrate/session-defaults.ts +138 -0
  54. package/src/pr/local.ts +4 -69
  55. package/src/sync/check.ts +15 -0
  56. package/src/tooling/stamp.ts +56 -12
  57. package/src/worktrees/stop.ts +92 -0
  58. package/tooling/base/configs/.github/workflows/phase-label-gate.yml +6 -2
  59. package/tooling/base/configs/commitlint.config.js +0 -20
  60. package/tooling/base/reference.md +1 -1
  61. package/tooling/base/seeds/.github/workflows/verify.yml +4 -1
  62. package/tooling/claude/reference.md +13 -7
  63. package/tooling/claude/seeds/.claude/settings.json +4 -0
  64. package/tooling/claude/user/settings.template.json +0 -4
  65. package/tooling/cloudflare/configs/.github/workflows/deploy.yml +5 -5
  66. package/tooling/public/configs/.github/dependabot.yml +12 -0
  67. package/tooling/public/configs/.github/workflows/release-please.yml +30 -0
  68. package/tooling/public/manifest.toml +8 -0
  69. package/tooling/public/reference.md +53 -0
  70. package/tooling/public/seeds/.github/ISSUE_TEMPLATE/bug.yml +48 -0
  71. package/tooling/public/seeds/.github/ISSUE_TEMPLATE/config.yml +5 -0
  72. package/tooling/public/seeds/.github/ISSUE_TEMPLATE/feature.yml +16 -0
  73. package/tooling/public/seeds/.release-please-manifest.json +3 -0
  74. package/tooling/public/seeds/CONTRIBUTING.md +50 -0
  75. package/tooling/public/seeds/LICENSE +21 -0
  76. package/tooling/public/seeds/SECURITY.md +13 -0
  77. package/tooling/public/seeds/release-please-config.json +12 -0
  78. package/tooling/shell/configs/.github/workflows/shell.yml +4 -1
  79. package/tooling/web/configs/.github/workflows/readme-screenshot.yml +6 -3
  80. package/tooling/web/configs/.github/workflows/verify.yml +15 -12
@@ -0,0 +1,8 @@
1
+ [stack]
2
+ name = "public"
3
+ extends = ""
4
+ runtime = "bun"
5
+ scaffold = ""
6
+
7
+ [sync]
8
+ source = "configs"
@@ -0,0 +1,53 @@
1
+ # Tooling public reference
2
+
3
+ ## Overview
4
+
5
+ The public stack is an add-on that ships the open-source files a public repository carries. It extends nothing and syncs beside any other stack at the same root with `canon tooling sync public . --write`.
6
+
7
+ ## Seeds
8
+
9
+ A seed is copied only when its path is absent, so a project's filled `LICENSE`, `SECURITY.md`, or `CONTRIBUTING.md` is never overwritten. Fill each `<placeholder>` after the first sync.
10
+
11
+ ### Policy files
12
+
13
+ These three name the project's owner and terms.
14
+
15
+ - Use MIT for `LICENSE`, which needs a year and a holder. Swap the text by hand for a different license.
16
+ - Point `SECURITY.md` and the issue chooser at GitHub private vulnerability reporting only, with no email.
17
+ - Switch private reporting on under the repository's Settings, Code security.
18
+ - Ship no `CODE_OF_CONDUCT.md`. Add one when outside contributors arrive.
19
+
20
+ ### Issue forms
21
+
22
+ `bug.yml`, `feature.yml`, and `config.yml` turn blank issues off.
23
+
24
+ - Add fields specific to the project, such as its CLI's version command, by hand.
25
+
26
+ ### Release files
27
+
28
+ These two start release-please at version zero.
29
+
30
+ - Start `release-please-config.json` on the `simple` release type, with `initial-version` `0.0.1` and `bump-minor-pre-major` on.
31
+ - Switch the type and add `extra-files` for a package that carries its version in a manifest.
32
+ - Start `.release-please-manifest.json` at `0.0.0`.
33
+
34
+ ## Release workflow
35
+
36
+ `release-please.yml` is a config, so each sync overwrites it and a fix reaches every public repository.
37
+
38
+ - Run it on every push to `main`. It keeps one release pull request open and tags the release when that pull request merges.
39
+ - Publish nothing. A project that publishes a package adds its own workflow keyed on the release, and never edits this one.
40
+ - Open the release pull request with `RELEASE_PLEASE_TOKEN` when the secret exists, and fall back to the default token otherwise.
41
+ - Set the secret to a personal token so CI runs on the release pull request, since the default token's author does not start it.
42
+ - Keep the token read-only at the top, with `contents: write` and `pull-requests: write` on the one job.
43
+
44
+ ## Dependabot
45
+
46
+ `dependabot.yml` is how an existing repository keeps its seeded workflows' action majors current, since a seed never updates after install.
47
+
48
+ - Update `github-actions` weekly with an `ci` commit prefix.
49
+ - Group minor and patch updates into one pull request per run, and leave majors ungrouped so each arrives alone.
50
+
51
+ ## Beside another stack
52
+
53
+ Run `canon tooling sync public . --write` on a repository that already carries a stack. The install stamp keeps the core chain and lists the add-on after it.
@@ -0,0 +1,48 @@
1
+ name: Bug report
2
+ description: Something does not work as expected
3
+ labels: [bug]
4
+ body:
5
+ - type: textarea
6
+ id: what-happened
7
+ attributes:
8
+ label: What happened
9
+ description: What you did, what you expected, and what happened instead.
10
+ validations:
11
+ required: true
12
+ - type: textarea
13
+ id: steps
14
+ attributes:
15
+ label: Steps to reproduce
16
+ placeholder: |
17
+ 1. Run `<command>`
18
+ 2. ...
19
+ validations:
20
+ required: true
21
+ - type: textarea
22
+ id: reproduction
23
+ attributes:
24
+ label: Minimal reproduction
25
+ description: The smallest input that shows the problem. Paste it, or link a repository or gist.
26
+ validations:
27
+ required: true
28
+ - type: input
29
+ id: version
30
+ attributes:
31
+ label: Version
32
+ description: The release or commit you ran.
33
+ validations:
34
+ required: true
35
+ - type: input
36
+ id: runtime
37
+ attributes:
38
+ label: Runtime and version
39
+ placeholder: Node 22.12.0, or Bun 1.3.0
40
+ validations:
41
+ required: true
42
+ - type: input
43
+ id: os
44
+ attributes:
45
+ label: Operating system
46
+ placeholder: macOS 26.1, Windows 11, Ubuntu 24.04
47
+ validations:
48
+ required: true
@@ -0,0 +1,5 @@
1
+ blank_issues_enabled: false
2
+ contact_links:
3
+ - name: Report a security vulnerability
4
+ url: https://github.com/<owner>/<repo>/security/advisories/new
5
+ about: Report it privately rather than in a public issue.
@@ -0,0 +1,16 @@
1
+ name: Feature request
2
+ description: Suggest something this project should do
3
+ labels: [enhancement]
4
+ body:
5
+ - type: textarea
6
+ id: job
7
+ attributes:
8
+ label: The job
9
+ description: What you were trying to get done when the project fell short, and how you work around it today.
10
+ validations:
11
+ required: true
12
+ - type: textarea
13
+ id: proposal
14
+ attributes:
15
+ label: What you would like
16
+ description: The behavior you have in mind, if you have one.
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.0.0"
3
+ }
@@ -0,0 +1,50 @@
1
+ # Contributing to <project>
2
+
3
+ This page covers getting a working checkout, how to test a change, and the commit and pull request rules the hooks enforce.
4
+
5
+ ## Setup
6
+
7
+ <Prerequisites, such as the runtime and its minimum version.>
8
+
9
+ ```bash
10
+ git clone https://github.com/<owner>/<repo>.git
11
+ cd <repo>
12
+ <install command>
13
+ <check command>
14
+ ```
15
+
16
+ <What the install step activates, such as git hooks, and what the check command runs.>
17
+
18
+ ## Layout
19
+
20
+ | Path | What it holds |
21
+ | -------- | ------------- |
22
+ | `<path>` | <role> |
23
+
24
+ ## Tests
25
+
26
+ <The commands that run the tests and what each one covers.>
27
+
28
+ ## Commit messages
29
+
30
+ Commits follow [Conventional Commits](https://www.conventionalcommits.org), and release-please reads them to cut each release.
31
+
32
+ - The header reads `<type>(<scope>): <subject>`, such as `fix(server): close the socket on shutdown`
33
+ - The header is at most 72 characters
34
+ - The first word of the subject is lowercase, and the subject ends with no period
35
+
36
+ The types are `feat`, `fix`, `refactor`, `docs`, `chore`, `perf`, `test`, `style`, `build`, `ci`, and `revert`.
37
+
38
+ ## Pull requests
39
+
40
+ Branch from `main` and open the pull request against it. Say what the change does and why, which files it touches, and how you tested it.
41
+
42
+ CI runs on every pull request, and a pull request merges once it passes. Keep each one to a single concern. A refactor that a feature needs reads better as its own pull request ahead of the feature.
43
+
44
+ ## Releases
45
+
46
+ release-please cuts every release from the conventional commits on `main`. Each push to `main` keeps one release pull request open, holding the next version and its `CHANGELOG.md` entry. Merging that pull request tags the release.
47
+
48
+ ## AI-assisted contributions
49
+
50
+ Contributions written with a coding agent are welcome. You are the author of what you submit, so read every line before you open the pull request and be ready to explain it.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) <year> <holder>
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,13 @@
1
+ # Security policy
2
+
3
+ <One sentence on what in this project is security-sensitive.>
4
+
5
+ ## Reporting a vulnerability
6
+
7
+ Report it privately through GitHub's [private vulnerability reporting](https://github.com/<owner>/<repo>/security/advisories/new). Do not open a public issue for it.
8
+
9
+ Include the version, your OS, and the steps that reproduce the problem. You get a reply in the advisory thread.
10
+
11
+ ## Supported versions
12
+
13
+ Only the latest release receives fixes.
@@ -0,0 +1,12 @@
1
+ {
2
+ "$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json",
3
+ "include-component-in-tag": false,
4
+ "packages": {
5
+ ".": {
6
+ "release-type": "simple",
7
+ "changelog-path": "CHANGELOG.md",
8
+ "initial-version": "0.0.1",
9
+ "bump-minor-pre-major": true
10
+ }
11
+ }
12
+ }
@@ -7,13 +7,16 @@ on:
7
7
  - main
8
8
  workflow_dispatch:
9
9
 
10
+ permissions:
11
+ contents: read
12
+
10
13
  jobs:
11
14
  shell-checks:
12
15
  name: 🐚 Shell Checks
13
16
  runs-on: ubuntu-latest
14
17
  steps:
15
18
  - name: Checkout
16
- uses: actions/checkout@v4
19
+ uses: actions/checkout@v7
17
20
 
18
21
  - name: Setup Bun
19
22
  uses: oven-sh/setup-bun@v2
@@ -20,6 +20,9 @@ concurrency:
20
20
  group: readme-screenshot-${{ github.ref }}
21
21
  cancel-in-progress: true
22
22
 
23
+ permissions:
24
+ contents: read
25
+
23
26
  jobs:
24
27
  capture:
25
28
  name: 🖼️ Refresh README Screenshot
@@ -32,7 +35,7 @@ jobs:
32
35
  contents: write
33
36
  steps:
34
37
  - name: Checkout
35
- uses: actions/checkout@v4
38
+ uses: actions/checkout@v7
36
39
  with:
37
40
  ref: ${{ github.head_ref }}
38
41
 
@@ -48,7 +51,7 @@ jobs:
48
51
  fi
49
52
 
50
53
  - name: Setup Node
51
- uses: actions/setup-node@v4
54
+ uses: actions/setup-node@v7
52
55
  with:
53
56
  node-version: '22'
54
57
 
@@ -62,7 +65,7 @@ jobs:
62
65
 
63
66
  - name: Cache Playwright Browser
64
67
  id: playwright-cache
65
- uses: actions/cache@v4
68
+ uses: actions/cache@v6
66
69
  with:
67
70
  path: ~/.cache/ms-playwright
68
71
  key: playwright-${{ runner.os }}-chromium-${{ hashFiles('**/package.json') }}
@@ -9,16 +9,19 @@ concurrency:
9
9
  group: verify-${{ github.ref }}
10
10
  cancel-in-progress: true
11
11
 
12
+ permissions:
13
+ contents: read
14
+
12
15
  jobs:
13
16
  static-checks:
14
17
  name: 🔍 Static Checks
15
18
  runs-on: ubuntu-latest
16
19
  steps:
17
20
  - name: Checkout
18
- uses: actions/checkout@v4
21
+ uses: actions/checkout@v7
19
22
 
20
23
  - name: Setup Node
21
- uses: actions/setup-node@v4
24
+ uses: actions/setup-node@v7
22
25
  with:
23
26
  node-version: '22'
24
27
 
@@ -44,10 +47,10 @@ jobs:
44
47
  runs-on: ubuntu-latest
45
48
  steps:
46
49
  - name: Checkout
47
- uses: actions/checkout@v4
50
+ uses: actions/checkout@v7
48
51
 
49
52
  - name: Setup Node
50
- uses: actions/setup-node@v4
53
+ uses: actions/setup-node@v7
51
54
  with:
52
55
  node-version: '22'
53
56
 
@@ -67,10 +70,10 @@ jobs:
67
70
  runs-on: ubuntu-latest
68
71
  steps:
69
72
  - name: Checkout
70
- uses: actions/checkout@v4
73
+ uses: actions/checkout@v7
71
74
 
72
75
  - name: Setup Node
73
- uses: actions/setup-node@v4
76
+ uses: actions/setup-node@v7
74
77
  with:
75
78
  node-version: '22'
76
79
 
@@ -86,7 +89,7 @@ jobs:
86
89
  run: bun run build
87
90
 
88
91
  - name: Upload Build Output
89
- uses: actions/upload-artifact@v4
92
+ uses: actions/upload-artifact@v7
90
93
  with:
91
94
  name: build-output
92
95
  path: dist/
@@ -98,10 +101,10 @@ jobs:
98
101
  needs: [static-checks, unit-tests, build-verify]
99
102
  steps:
100
103
  - name: Checkout
101
- uses: actions/checkout@v4
104
+ uses: actions/checkout@v7
102
105
 
103
106
  - name: Setup Node
104
- uses: actions/setup-node@v4
107
+ uses: actions/setup-node@v7
105
108
  with:
106
109
  node-version: '22'
107
110
 
@@ -114,7 +117,7 @@ jobs:
114
117
  run: bun install --frozen-lockfile
115
118
 
116
119
  - name: Download Build Output
117
- uses: actions/download-artifact@v4
120
+ uses: actions/download-artifact@v8
118
121
  with:
119
122
  name: build-output
120
123
  path: dist/
@@ -124,7 +127,7 @@ jobs:
124
127
 
125
128
  - name: Cache Playwright Browsers
126
129
  id: playwright-cache
127
- uses: actions/cache@v4
130
+ uses: actions/cache@v6
128
131
  with:
129
132
  path: ~/.cache/ms-playwright
130
133
  key: playwright-chromium-${{ runner.os }}-${{ hashFiles('**/package.json') }}
@@ -139,7 +142,7 @@ jobs:
139
142
  run: bun run test:e2e --project=chromium
140
143
 
141
144
  - name: Upload E2E Report
142
- uses: actions/upload-artifact@v4
145
+ uses: actions/upload-artifact@v7
143
146
  if: failure()
144
147
  with:
145
148
  name: playwright-report