@cassiomc1/forgeloop 1.12.0 → 1.13.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.
- package/.github/copilot-instructions.md +1 -1
- package/AGENTS.md +1 -1
- package/CLAUDE.md +1 -1
- package/CONTRIBUTING.md +90 -0
- package/DOCS_INDEX.md +13 -11
- package/ENG/c-development-eng.md +112 -0
- package/ENG/cpp-development-eng.md +109 -0
- package/ENG/dotnet-aspnetcore-development-eng.md +401 -0
- package/ENG/go-development-eng.md +103 -0
- package/ENG/java-development-eng.md +125 -0
- package/ENG/nodejs-backend-development-eng.md +605 -0
- package/ENG/php-development-eng.md +104 -0
- package/ENG/rust-development-eng.md +422 -0
- package/ENG/sql-development-eng.md +108 -0
- package/ENG/swift-development-eng.md +111 -0
- package/ENG/typescript-development-eng.md +108 -0
- package/GUIDE_ROUTER.md +418 -9
- package/QUALITY_SCORECARD.md +1 -0
- package/README.md +44 -33
- package/THIRD_PARTY_NOTICES.md +19 -7
- package/completions/_forgeloop +3 -3
- package/completions/forgeloop.bash +3 -3
- package/completions/forgeloop.fish +7 -0
- package/docs/AGENT_PROTOCOL_SUMMARY.md +55 -2
- package/docs/CLI_REFERENCE.md +28 -6
- package/docs/DOCUMENTATION_GUIDE.md +2 -1
- package/docs/GETTING_STARTED.md +59 -0
- package/docs/PACKAGE_CONTENTS.md +28 -14
- package/docs/RECIPES.md +23 -0
- package/docs/RELEASE_CHECKLIST.md +30 -2
- package/docs/TROUBLESHOOTING.md +100 -2
- package/docs/documentation-manifest.json +652 -0
- package/docs/protocol-requirements.json +77 -0
- package/package.json +19 -4
- package/schemas/routing-input.schema.json +1 -1
- package/scripts/CI_VALIDATORS.md +84 -11
- package/scripts/generate-agent-protocol-summary.mjs +36 -0
- package/src/commands/next.js +19 -7
- package/src/commands/task-create.js +84 -25
- package/src/commands/task-list.js +22 -2
- package/src/config/guides.json +44 -0
- package/src/core/build-script.js +151 -0
- package/src/core/c-cpp-project.js +143 -0
- package/src/core/cli-command-definitions.js +8 -1
- package/src/core/command-executors.js +5 -3
- package/src/core/command-input.js +140 -102
- package/src/core/contract-presets.js +82 -0
- package/src/core/error-codes.js +3 -3
- package/src/core/filesystem.js +1 -10
- package/src/core/go-project.js +206 -0
- package/src/core/java-project.js +403 -0
- package/src/core/multi-language-project.js +117 -0
- package/src/core/next-explanation.js +63 -0
- package/src/core/php-project.js +85 -0
- package/src/core/project-detection.js +1760 -52
- package/src/core/reconcile-closure.js +4 -1
- package/src/core/router.js +156 -3
- package/src/core/rust-project.js +400 -0
- package/src/core/sql-project.js +141 -0
- package/src/core/swift-project.js +200 -0
- package/src/core/typescript-project.js +349 -0
- package/src/core/xml-structure.js +123 -0
package/THIRD_PARTY_NOTICES.md
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
# Third-Party Notices
|
|
2
2
|
|
|
3
3
|
This file records provenance and reuse boundaries for the external URLs cited
|
|
4
|
-
by the README and guides. A citation is a reference, not
|
|
5
|
-
resource is a dependency, bundled material, or available
|
|
4
|
+
by the README and guides. A citation is a reference, not by itself a
|
|
5
|
+
declaration that a resource is a dependency, bundled material, or available
|
|
6
|
+
for reuse.
|
|
6
7
|
|
|
7
8
|
## Collection license
|
|
8
9
|
|
|
@@ -100,11 +101,12 @@ dependencies, version, and distribution conditions before adoption.
|
|
|
100
101
|
### Runtime and validator boundary
|
|
101
102
|
|
|
102
103
|
The distributed CLI and repository validators use Node.js and Python standard
|
|
103
|
-
libraries plus the JSON Schema documents shipped in this repository.
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
network behavior, and distribution terms
|
|
104
|
+
libraries plus the JSON Schema documents shipped in this repository. The core
|
|
105
|
+
CLI has one approved runtime package, `smol-toml`, for structural Cargo
|
|
106
|
+
manifest parsing; it is not used as an agent, provider, plugin, remote trace
|
|
107
|
+
service, or model. Every future runtime capability must review its own license,
|
|
108
|
+
dependency tree, credentials, network behavior, and distribution terms
|
|
109
|
+
separately.
|
|
108
110
|
|
|
109
111
|
## Visual, gradient, and gallery references
|
|
110
112
|
|
|
@@ -213,6 +215,16 @@ or make its prescriptive examples universal.
|
|
|
213
215
|
|
|
214
216
|
## Runtime dependencies with upstream notices
|
|
215
217
|
|
|
218
|
+
### smol-toml 1.8.0
|
|
219
|
+
|
|
220
|
+
- Project/source: [squirrelchat/smol-toml](https://github.com/squirrelchat/smol-toml).
|
|
221
|
+
- License declared by the upstream package: BSD-3-Clause.
|
|
222
|
+
- Use in this collection: bounded structural parsing of Rust `Cargo.toml`
|
|
223
|
+
manifests without executing Cargo or evaluating project code.
|
|
224
|
+
- Boundary: the exact version is pinned in `package.json` and
|
|
225
|
+
`package-lock.json`; the dependency has no role in routing authority beyond
|
|
226
|
+
the parser result and is not exposed as a public ForgeLoop integration.
|
|
227
|
+
|
|
216
228
|
### Microsoft tgrep
|
|
217
229
|
|
|
218
230
|
- Project: [microsoft/tgrep](https://github.com/microsoft/tgrep).
|
package/completions/_forgeloop
CHANGED
|
@@ -42,7 +42,7 @@ case $words[2] in
|
|
|
42
42
|
inspect) _arguments '--contract-file[current JSON contract used for freshness comparison]' '--help[show this help]' '--json[emit structured output as JSON]' '--path[target project directory (default: current directory)]' '--task[task ID to operate on (when omitted, resolved from context or single active task)]' '--version[show the installed package version]' ;;
|
|
43
43
|
metrics) _arguments '--help[show this help]' '--json[emit trajectory metrics as JSON]' '--path[target project directory (default: current directory)]' '--task[task ID to operate on (when omitted, resolved from context or single active task)]' '--version[show the installed package version]' ;;
|
|
44
44
|
migrate-protocol) _arguments '--dry-run[show migration actions without writing or deleting artifacts]' '--help[show this help]' '--json[emit structured migration result as JSON]' '--path[target project directory (default: current directory)]' '--to[target supported protocol version]' '--version[show the installed package version]' ;;
|
|
45
|
-
next) _arguments '--compact[emit a bounded next-action projection]' '--help[show this help]' '--json[emit structured output as JSON]' '--path[target project directory (default: current directory)]' '--task[task ID to operate on (when omitted, resolved from context or single active task)]' '--version[show the installed package version]' ;;
|
|
45
|
+
next) _arguments '--compact[emit a bounded next-action projection]' '--explain[include bounded read-only blocker and recovery explanation]' '--help[show this help]' '--json[emit structured output as JSON]' '--path[target project directory (default: current directory)]' '--task[task ID to operate on (when omitted, resolved from context or single active task)]' '--version[show the installed package version]' ;;
|
|
46
46
|
policy) _arguments '--help[show this help]' '--json[emit structured output as JSON]' '--path[target project directory (default: current directory)]' '--task[task ID to operate on (when omitted, resolved from context or single active task)]' '--version[show the installed package version]' ;;
|
|
47
47
|
policy-diff) _arguments '--after[path to after policy JSON]' '--before[path to before policy JSON]' '--help[show this help]' '--json[emit structured output as JSON]' '--path[target project directory (default: current directory)]' '--task[task ID to operate on (when omitted, resolved from context or single active task)]' '--version[show the installed package version]' ;;
|
|
48
48
|
policy-discover) _arguments '--help[show this help]' '--json[emit structured output as JSON]' '--path[target project directory (default: current directory)]' '--version[show the installed package version]' '--write[persist discovered policy to .forgeloop/policy/discovery.json]' ;;
|
|
@@ -74,8 +74,8 @@ case $words[2] in
|
|
|
74
74
|
run-check) _arguments '--[exact command argv to classify, execute, and attest]' '--details[additional structured check details]' '--help[show this help]' '--id[stable check identifier]' '--json[emit structured output as JSON]' '--path[target project directory (default: current directory)]' '--requirement[completion requirement covered by the check]' '--scope-ref[current verification-scope.json to bind to execution evidence]' '--task[task ID to operate on (when omitted, resolved from context or single active task)]' '--timeout-ms[maximum command duration before termination]' '--version[show the installed package version]' ;;
|
|
75
75
|
search) _arguments '--after-context[lines of context after matches]' '--before-context[lines of context before matches]' '--context[lines of context before and after matches]' '--files-with-matches[return matching file paths only]' '--fixed-strings[treat the pattern as a literal string]' '--glob[include files matching a glob]' '--help[show this help]' '--ignore-case[search case-insensitively]' '--json[emit normalized provider-neutral search JSON]' '--max-count[maximum matches per file]' '--path[target project directory (default: current directory)]' '--smart-case[use case-insensitive search only for lowercase patterns]' '--stats[include observed native search statistics]' '--type[include files of a tgrep type]' '--version[show the installed package version]' '--word-regexp[match whole words only]' ;;
|
|
76
76
|
status) _arguments '--contract-file[current JSON contract used for freshness comparison]' '--help[show this help]' '--json[emit structured output as JSON]' '--path[target project directory (default: current directory)]' '--task[task ID to operate on (when omitted, resolved from context or single active task)]' '--version[show the installed package version]' ;;
|
|
77
|
-
task-create) _arguments '--claim[scoped file path or directory prefix claimed for mutation]' '--contract-file[path to initial contract file]' '--help[show this help]' '--json[emit structured output as JSON]' '--path[target project directory (default: current directory)]' '--task[task ID to operate on (when omitted, resolved from context or single active task)]' '--version[show the installed package version]' ;;
|
|
78
|
-
task-list) _arguments '--help[show this help]' '--json[emit structured output as JSON]' '--path[target project directory (default: current directory)]' '--version[show the installed package version]' ;;
|
|
77
|
+
task-create) _arguments '--claim[scoped file path or directory prefix claimed for mutation]' '--contract-file[path to initial contract file]' '--help[show this help]' '--json[emit structured output as JSON]' '--path[target project directory (default: current directory)]' '--preset[bounded contract preset: documentation, bug, feature, or release]' '--preview[preview the contract without creating lifecycle state]' '--task[task ID to operate on (when omitted, resolved from context or single active task)]' '--version[show the installed package version]' ;;
|
|
78
|
+
task-list) _arguments '--active[only return healthy tasks with active ownership and a non-terminal phase]' '--help[show this help]' '--json[emit structured output as JSON]' '--limit[maximum tasks to return]' '--offset[number of sorted tasks to skip]' '--path[target project directory (default: current directory)]' '--phase[only return tasks in this lifecycle phase]' '--version[show the installed package version]' ;;
|
|
79
79
|
task-lock-status) _arguments '--help[show this help]' '--json[emit structured output as JSON]' '--path[target project directory (default: current directory)]' '--task[task ID to operate on (when omitted, resolved from context or single active task)]' '--version[show the installed package version]' ;;
|
|
80
80
|
task-migrate) _arguments '--dry-run[show planned migration actions without moving files]' '--help[show this help]' '--json[emit structured output as JSON]' '--path[target project directory (default: current directory)]' '--version[show the installed package version]' ;;
|
|
81
81
|
task-recover) _arguments '--acknowledge-recovery[acknowledge release of claims for a STALE or ABANDONED task (required; not host attestation)]' '--help[show this help]' '--json[emit structured output as JSON]' '--operator-authorized[deprecated alias for --acknowledge-recovery; does not attest operator authority]' '--path[target project directory (default: current directory)]' '--task[task ID to operate on (when omitted, resolved from context or single active task)]' '--version[show the installed package version]' ;;
|
|
@@ -140,7 +140,7 @@ _forgeloop() {
|
|
|
140
140
|
inspect) COMPREPLY=( $(compgen -W '--contract-file --help --json --path --task --version' -- "$cur") );;
|
|
141
141
|
metrics) COMPREPLY=( $(compgen -W '--help --json --path --task --version' -- "$cur") );;
|
|
142
142
|
migrate-protocol) COMPREPLY=( $(compgen -W '--dry-run --help --json --path --to --version' -- "$cur") );;
|
|
143
|
-
next) COMPREPLY=( $(compgen -W '--compact --help --json --path --task --version' -- "$cur") );;
|
|
143
|
+
next) COMPREPLY=( $(compgen -W '--compact --explain --help --json --path --task --version' -- "$cur") );;
|
|
144
144
|
policy) COMPREPLY=( $(compgen -W '--help --json --path --task --version' -- "$cur") );;
|
|
145
145
|
policy-diff) COMPREPLY=( $(compgen -W '--after --before --help --json --path --task --version' -- "$cur") );;
|
|
146
146
|
policy-discover) COMPREPLY=( $(compgen -W '--help --json --path --version --write' -- "$cur") );;
|
|
@@ -172,8 +172,8 @@ _forgeloop() {
|
|
|
172
172
|
run-check) COMPREPLY=( $(compgen -W '-- --details --help --id --json --path --requirement --scope-ref --task --timeout-ms --version' -- "$cur") );;
|
|
173
173
|
search) COMPREPLY=( $(compgen -W '--after-context --before-context --context --files-with-matches --fixed-strings --glob --help --ignore-case --json --max-count --path --smart-case --stats --type --version --word-regexp' -- "$cur") );;
|
|
174
174
|
status) COMPREPLY=( $(compgen -W '--contract-file --help --json --path --task --version' -- "$cur") );;
|
|
175
|
-
task-create) COMPREPLY=( $(compgen -W '--claim --contract-file --help --json --path --task --version' -- "$cur") );;
|
|
176
|
-
task-list) COMPREPLY=( $(compgen -W '--help --json --path --version' -- "$cur") );;
|
|
175
|
+
task-create) COMPREPLY=( $(compgen -W '--claim --contract-file --help --json --path --preset --preview --task --version' -- "$cur") );;
|
|
176
|
+
task-list) COMPREPLY=( $(compgen -W '--active --help --json --limit --offset --path --phase --version' -- "$cur") );;
|
|
177
177
|
task-lock-status) COMPREPLY=( $(compgen -W '--help --json --path --task --version' -- "$cur") );;
|
|
178
178
|
task-migrate) COMPREPLY=( $(compgen -W '--dry-run --help --json --path --version' -- "$cur") );;
|
|
179
179
|
task-recover) COMPREPLY=( $(compgen -W '--acknowledge-recovery --help --json --operator-authorized --path --task --version' -- "$cur") );;
|
|
@@ -258,6 +258,7 @@ complete -c forgeloop -f -n '__fish_seen_subcommand_from migrate-protocol' -l 'p
|
|
|
258
258
|
complete -c forgeloop -f -n '__fish_seen_subcommand_from migrate-protocol' -l 'to' -d 'target supported protocol version'
|
|
259
259
|
complete -c forgeloop -f -n '__fish_seen_subcommand_from migrate-protocol' -l 'version' -d 'show the installed package version'
|
|
260
260
|
complete -c forgeloop -f -n '__fish_seen_subcommand_from next' -l 'compact' -d 'emit a bounded next-action projection'
|
|
261
|
+
complete -c forgeloop -f -n '__fish_seen_subcommand_from next' -l 'explain' -d 'include bounded read-only blocker and recovery explanation'
|
|
261
262
|
complete -c forgeloop -f -n '__fish_seen_subcommand_from next' -l 'help' -d 'show this help'
|
|
262
263
|
complete -c forgeloop -f -n '__fish_seen_subcommand_from next' -l 'json' -d 'emit structured output as JSON'
|
|
263
264
|
complete -c forgeloop -f -n '__fish_seen_subcommand_from next' -l 'path' -d 'target project directory (default: current directory)'
|
|
@@ -512,11 +513,17 @@ complete -c forgeloop -f -n '__fish_seen_subcommand_from task-create' -l 'contra
|
|
|
512
513
|
complete -c forgeloop -f -n '__fish_seen_subcommand_from task-create' -l 'help' -d 'show this help'
|
|
513
514
|
complete -c forgeloop -f -n '__fish_seen_subcommand_from task-create' -l 'json' -d 'emit structured output as JSON'
|
|
514
515
|
complete -c forgeloop -f -n '__fish_seen_subcommand_from task-create' -l 'path' -d 'target project directory (default: current directory)'
|
|
516
|
+
complete -c forgeloop -f -n '__fish_seen_subcommand_from task-create' -l 'preset' -d 'bounded contract preset: documentation, bug, feature, or release'
|
|
517
|
+
complete -c forgeloop -f -n '__fish_seen_subcommand_from task-create' -l 'preview' -d 'preview the contract without creating lifecycle state'
|
|
515
518
|
complete -c forgeloop -f -n '__fish_seen_subcommand_from task-create' -l 'task' -d 'task ID to operate on (when omitted, resolved from context or single active task)'
|
|
516
519
|
complete -c forgeloop -f -n '__fish_seen_subcommand_from task-create' -l 'version' -d 'show the installed package version'
|
|
520
|
+
complete -c forgeloop -f -n '__fish_seen_subcommand_from task-list' -l 'active' -d 'only return healthy tasks with active ownership and a non-terminal phase'
|
|
517
521
|
complete -c forgeloop -f -n '__fish_seen_subcommand_from task-list' -l 'help' -d 'show this help'
|
|
518
522
|
complete -c forgeloop -f -n '__fish_seen_subcommand_from task-list' -l 'json' -d 'emit structured output as JSON'
|
|
523
|
+
complete -c forgeloop -f -n '__fish_seen_subcommand_from task-list' -l 'limit' -d 'maximum tasks to return'
|
|
524
|
+
complete -c forgeloop -f -n '__fish_seen_subcommand_from task-list' -l 'offset' -d 'number of sorted tasks to skip'
|
|
519
525
|
complete -c forgeloop -f -n '__fish_seen_subcommand_from task-list' -l 'path' -d 'target project directory (default: current directory)'
|
|
526
|
+
complete -c forgeloop -f -n '__fish_seen_subcommand_from task-list' -l 'phase' -d 'only return tasks in this lifecycle phase'
|
|
520
527
|
complete -c forgeloop -f -n '__fish_seen_subcommand_from task-list' -l 'version' -d 'show the installed package version'
|
|
521
528
|
complete -c forgeloop -f -n '__fish_seen_subcommand_from task-lock-status' -l 'help' -d 'show this help'
|
|
522
529
|
complete -c forgeloop -f -n '__fish_seen_subcommand_from task-lock-status' -l 'json' -d 'emit structured output as JSON'
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
ForgeLoop is a portable protocol and support CLI for verifiable engineering workflows. It records and validates task state, contracts, routing, checks, evidence, continuity, and optional code attestations. It does not become an agent scheduler, delegation service, source-control authority, or secret manager.
|
|
8
8
|
|
|
9
9
|
Protocol version: 1
|
|
10
|
-
Package version: 1.
|
|
10
|
+
Package version: 1.13.0
|
|
11
11
|
|
|
12
12
|
## Canonical loop
|
|
13
13
|
|
|
@@ -19,6 +19,32 @@ Package version: 1.12.0
|
|
|
19
19
|
6. Run forgeloop complete; accept completion only when the validator returns VALID.
|
|
20
20
|
7. Run forgeloop next again and follow the returned lifecycle action to a terminal state or an explicit blocker.
|
|
21
21
|
|
|
22
|
+
## Project evidence and guide routing
|
|
23
|
+
|
|
24
|
+
- The canonical guide registry is `src/config/guides.json`; the .NET
|
|
25
|
+
specialist has guide ID `dotnet` and resolves to
|
|
26
|
+
`ENG/dotnet-aspnetcore-development-eng.md`.
|
|
27
|
+
- Project evidence schema v1 recognizes
|
|
28
|
+
structurally parsed Flutter, SDK-style .NET, Node.js, Rust, C, C++, Java,
|
|
29
|
+
SQL, Go, TypeScript, PHP, and Swift project evidence. SQL remains a bounded
|
|
30
|
+
owned-file overlay, while same-root language identities compose. ASP.NET Core
|
|
31
|
+
and ABP are conditional overlays recorded as reasons on `dotnet`; they
|
|
32
|
+
are not standalone guide IDs, and route validation requires each overlay to
|
|
33
|
+
include `dotnet`.
|
|
34
|
+
- Project detection is bounded by 256
|
|
35
|
+
manifests, 64 solution files,
|
|
36
|
+
1048576 bytes per manifest,
|
|
37
|
+
256 supporting source files,
|
|
38
|
+
524288 bytes per source file,
|
|
39
|
+
4096 visited directories, and
|
|
40
|
+
20000 visited entries. It skips
|
|
41
|
+
symlinks and configured generated/vendor directories; exhausted budgets fail
|
|
42
|
+
closed rather than producing unbounded discovery.
|
|
43
|
+
- Task ownership discovery is a separate exhaustive operation. Task-list
|
|
44
|
+
filters and pagination project the validated discovery result and do not
|
|
45
|
+
remove ledger or recovery evidence. See `GUIDE_ROUTER.md` and
|
|
46
|
+
`docs/CLI_REFERENCE.md` for the operator-facing contracts.
|
|
47
|
+
|
|
22
48
|
## Adaptive execution profiles
|
|
23
49
|
|
|
24
50
|
`complianceMode` controls how strongly project policy is enforced. The
|
|
@@ -117,6 +143,33 @@ Phases: RECEIVED, DISCOVERING, CONTRACT_READY, ROUTED, DESIGNING, PLANNED, EXECU
|
|
|
117
143
|
Protocol v1, schema v1, and Integration API v1 remain independent of these
|
|
118
144
|
capability-family versions.
|
|
119
145
|
|
|
146
|
+
## Guide registry
|
|
147
|
+
|
|
148
|
+
| Guide | Path | Installable |
|
|
149
|
+
| --- | --- | --- |
|
|
150
|
+
| premium | ENG/premium-sites-studio-eng.md | yes |
|
|
151
|
+
| clean | ENG/clean-code-eng.md | yes |
|
|
152
|
+
| test | ENG/test-code-eng.md | yes |
|
|
153
|
+
| security | ENG/sec-code-eng.md | yes |
|
|
154
|
+
| design | ENG/design-code-eng.md | yes |
|
|
155
|
+
| taste | ENG/taste-frontend-eng.md | yes |
|
|
156
|
+
| performance | ENG/perf-code-eng.md | yes |
|
|
157
|
+
| accessibility | ENG/accessibility-eng.md | yes |
|
|
158
|
+
| games | ENG/games-code-design-web-eng.md | yes |
|
|
159
|
+
| documentation | ENG/documentation-quality-eng.md | yes |
|
|
160
|
+
| flutter | ENG/flutter-development-eng.md | yes |
|
|
161
|
+
| dotnet | ENG/dotnet-aspnetcore-development-eng.md | yes |
|
|
162
|
+
| nodejs | ENG/nodejs-backend-development-eng.md | yes |
|
|
163
|
+
| rust | ENG/rust-development-eng.md | yes |
|
|
164
|
+
| c | ENG/c-development-eng.md | yes |
|
|
165
|
+
| cpp | ENG/cpp-development-eng.md | yes |
|
|
166
|
+
| java | ENG/java-development-eng.md | yes |
|
|
167
|
+
| sql | ENG/sql-development-eng.md | yes |
|
|
168
|
+
| go | ENG/go-development-eng.md | yes |
|
|
169
|
+
| typescript | ENG/typescript-development-eng.md | yes |
|
|
170
|
+
| php | ENG/php-development-eng.md | yes |
|
|
171
|
+
| swift | ENG/swift-development-eng.md | yes |
|
|
172
|
+
|
|
120
173
|
## Public artifact registry
|
|
121
174
|
|
|
122
175
|
| Key | Scope | Path | Schema | Trust role |
|
|
@@ -223,7 +276,7 @@ capability-family versions.
|
|
|
223
276
|
| complete | MUTATING | Evaluates verification receipt coverage, gates, and ledger integrity to authorize task completion. |
|
|
224
277
|
| next | READ_ONLY | Returns deterministic next-action guidance and command recommendations based on active state. |
|
|
225
278
|
| preflight | MUTATING | Evaluates pre-implementation contract, routing, and gates; synchronizes work state when READY. |
|
|
226
|
-
| reconcile-closure | MUTATING | Refreshes the work-state checkpoint of an EXECUTING task whose objective is already satisfied in the current repository, after contract-bound executed evidence, so canonical completion can proceed. |
|
|
279
|
+
| reconcile-closure | MUTATING | Refreshes the work-state checkpoint of an EXECUTING, VERIFYING, or REVIEWING task whose objective is already satisfied in the current repository, after contract-bound executed evidence, so canonical completion can proceed. |
|
|
227
280
|
| record-decision-criterion | MUTATING | Records an append-only decision settlement criterion bound to the active contract fingerprint. |
|
|
228
281
|
| record-diagnosis | MUTATING | Records an append-only diagnosis event or structured diagnostic case in the lifecycle event ledger. |
|
|
229
282
|
| record-hypothesis-disposition | MUTATING | Records an evidence-bound hypothesis disposition update in the lifecycle event ledger. |
|
package/docs/CLI_REFERENCE.md
CHANGED
|
@@ -838,7 +838,7 @@ Updates the managed instruction kit to match the current ForgeLoop package versi
|
|
|
838
838
|
|
|
839
839
|
Calculates and persists deterministic engineering guide routing.
|
|
840
840
|
|
|
841
|
-
- **Purpose**: Selects relevant technical guides (e.g. `clean`, `test`, `security`, `design`) from declared work attributes and bounded structural project evidence such as an affected Flutter SDK dependency.
|
|
841
|
+
- **Purpose**: Selects relevant technical guides (e.g. `clean`, `test`, `security`, `design`) from declared work attributes and bounded structural project evidence such as an affected Flutter SDK dependency, supported .NET project, confirmed Node.js backend runtime, valid Rust Cargo package/workspace, recognized C/C++, Java, Go, TypeScript, PHP, or Swift project, or owned SQL artifact. ASP.NET Core and ABP are conditional reasons on the `dotnet` specialist, not standalone guides; SQL is a host-project overlay.
|
|
842
842
|
- **When to use**: During discovery before preflight.
|
|
843
843
|
- **Mutation**: Writes `.forgeloop/task-state/<taskKey>/routing-result.json`.
|
|
844
844
|
- **Options**:
|
|
@@ -982,6 +982,7 @@ Computes the deterministic next action required by the protocol.
|
|
|
982
982
|
- `--path <directory>`: target project directory (default: current directory)
|
|
983
983
|
- `--task <id>`: task ID to operate on (when omitted, resolved from context or single active task)
|
|
984
984
|
- `--compact`: emit a bounded next-action projection
|
|
985
|
+
- `--explain`: include bounded read-only blocker and recovery explanation
|
|
985
986
|
- `--json`: emit structured output as JSON
|
|
986
987
|
|
|
987
988
|
<!-- END FORGELOOP GENERATED: cli:next:options -->
|
|
@@ -1970,12 +1971,12 @@ Clears canonical work-state checkpoint for the current task.
|
|
|
1970
1971
|
|
|
1971
1972
|
### `reconcile-closure`
|
|
1972
1973
|
|
|
1973
|
-
Reconciles the checkpoint of an EXECUTING task whose objective is already satisfied in the current repository.
|
|
1974
|
+
Reconciles the checkpoint of an EXECUTING, VERIFYING, or REVIEWING task whose objective is already satisfied in the current repository.
|
|
1974
1975
|
|
|
1975
|
-
- **Purpose**: Refresh the work-state repository fingerprint of a stale EXECUTING task after repository movement, using executed contract-bound evidence that the objective is present, so the canonical completion pipeline can close it.
|
|
1976
|
-
- **When to use**: When a task is stuck in EXECUTING with `E_REPOSITORY_CHANGED` / `E_STATE_REVALIDATION_REQUIRED` and its objective was already satisfied by other changes in the current repository.
|
|
1977
|
-
- **Mutation**: Appends a `CHECKPOINT_RECONCILED` ledger event (previous/current repository fingerprints plus evidence) and refreshes the work-state repository fingerprint.
|
|
1978
|
-
- **Safety Note**: Refuses
|
|
1976
|
+
- **Purpose**: Refresh the work-state repository fingerprint of a stale EXECUTING, VERIFYING, or REVIEWING task after repository movement, using executed contract-bound evidence that the objective is present, so the canonical completion pipeline can close it.
|
|
1977
|
+
- **When to use**: When a task is stuck in EXECUTING, VERIFYING, or REVIEWING with `E_REPOSITORY_CHANGED` / `E_STATE_REVALIDATION_REQUIRED` and its objective was already satisfied by other changes in the current repository. A REVIEWING task also needs authorized completion recovery.
|
|
1978
|
+
- **Mutation**: Appends a `CHECKPOINT_RECONCILED` ledger event (previous/current repository fingerprints plus evidence) and refreshes the work-state repository fingerprint. The phase stays unchanged until the canonical pipeline advances it; claims release only through canonical `COMPLETE`.
|
|
1979
|
+
- **Safety Note**: Refuses other phases, fresh checkpoints, contract or artifact drift, invalid ledgers, unknown requirements, and failing evidence.
|
|
1979
1980
|
- **Options**:
|
|
1980
1981
|
|
|
1981
1982
|
<!-- BEGIN FORGELOOP GENERATED: cli:reconcile-closure:options -->
|
|
@@ -2016,6 +2017,8 @@ Initializes a new isolated task namespace with write claims and contract.
|
|
|
2016
2017
|
- `--task <id>`: task ID to operate on (when omitted, resolved from context or single active task)
|
|
2017
2018
|
- `--claim <path>`: scoped file path or directory prefix claimed for mutation (repeatable)
|
|
2018
2019
|
- `--contract-file <path>`: path to initial contract file
|
|
2020
|
+
- `--preset <name>`: bounded contract preset: documentation, bug, feature, or release
|
|
2021
|
+
- `--preview`: preview the contract without creating lifecycle state
|
|
2019
2022
|
- `--json`: emit structured output as JSON
|
|
2020
2023
|
|
|
2021
2024
|
<!-- END FORGELOOP GENERATED: cli:task-create:options -->
|
|
@@ -2034,6 +2037,12 @@ Initializes a new isolated task namespace with write claims and contract.
|
|
|
2034
2037
|
|
|
2035
2038
|
`--contract-file` points to a contract JSON that is validated and copied into the task namespace.
|
|
2036
2039
|
|
|
2040
|
+
Use `--preset documentation|bug|feature|release --preview` for a bounded,
|
|
2041
|
+
read-only contract proposal. Preview validates claims and creates no task
|
|
2042
|
+
namespace or project-claims lock; repeat without `--preview` after reviewing
|
|
2043
|
+
the proposal. Presets record unresolved decisions when concrete deliverables
|
|
2044
|
+
are not supplied and do not publish or deploy release artifacts.
|
|
2045
|
+
|
|
2037
2046
|
### `task-list`
|
|
2038
2047
|
|
|
2039
2048
|
Lists all tasks discovered in `.forgeloop/task-state/`.
|
|
@@ -2045,14 +2054,27 @@ Lists all tasks discovered in `.forgeloop/task-state/`.
|
|
|
2045
2054
|
<!-- BEGIN FORGELOOP GENERATED: cli:task-list:options -->
|
|
2046
2055
|
|
|
2047
2056
|
- `--path <directory>`: target project directory (default: current directory)
|
|
2057
|
+
- `--phase <phase>`: only return tasks in this lifecycle phase
|
|
2058
|
+
- `--active`: only return healthy tasks with active ownership and a non-terminal phase
|
|
2059
|
+
- `--limit <number>`: maximum tasks to return
|
|
2060
|
+
- `--offset <number>`: number of sorted tasks to skip
|
|
2048
2061
|
- `--json`: emit structured output as JSON
|
|
2049
2062
|
|
|
2050
2063
|
<!-- END FORGELOOP GENERATED: cli:task-list:options -->
|
|
2051
2064
|
|
|
2065
|
+
Results are sorted by task ID. `--phase` and `--active` filter the
|
|
2066
|
+
presentation only; ownership and corruption checks still run for every
|
|
2067
|
+
discovered task before filtering. `--limit` and `--offset` provide bounded
|
|
2068
|
+
pagination and return `total` and `hasMore` in JSON. Listing never removes
|
|
2069
|
+
ledger or recovery evidence. Discovery itself is exhaustive for valid task
|
|
2070
|
+
namespaces because ownership and conflict correctness must not depend on a
|
|
2071
|
+
page limit.
|
|
2072
|
+
|
|
2052
2073
|
- **Example**:
|
|
2053
2074
|
|
|
2054
2075
|
```bash
|
|
2055
2076
|
forgeloop task-list --json
|
|
2077
|
+
forgeloop task-list --active --limit 20 --offset 0 --json
|
|
2056
2078
|
```
|
|
2057
2079
|
|
|
2058
2080
|
### `task-show`
|
|
@@ -79,7 +79,8 @@ generated Markdown regions (<!-- BEGIN FORGELOOP GENERATED: ... -->)
|
|
|
79
79
|
↓
|
|
80
80
|
semantic conformance checks (scripts/validate_documentation_conformance.mjs)
|
|
81
81
|
↓
|
|
82
|
-
|
|
82
|
+
documentation validation (.github/workflows/docs.yml) and the PR aggregator
|
|
83
|
+
(.github/workflows/pr-core.yml)
|
|
83
84
|
```
|
|
84
85
|
|
|
85
86
|
### Provenance Mapping Table
|
package/docs/GETTING_STARTED.md
CHANGED
|
@@ -49,11 +49,61 @@ forgeloop next --task task-contact-form-001 --compact --json
|
|
|
49
49
|
forgeloop task-show --task task-contact-form-001 --compact --json
|
|
50
50
|
```
|
|
51
51
|
|
|
52
|
+
When the task shape is known but a full contract has not been written yet,
|
|
53
|
+
use a bounded preset preview. Preview is read-only and records unresolved
|
|
54
|
+
decisions instead of guessing project facts:
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
forgeloop task-create --task task-contact-form-001 \
|
|
58
|
+
--claim src/components --claim tests \
|
|
59
|
+
--preset feature --preview --json
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
After reviewing the proposed contract, repeat the command without
|
|
63
|
+
`--preview` to create the namespace and persist the same validated contract.
|
|
64
|
+
The supported presets are `documentation`, `bug`, `feature`, and `release`.
|
|
65
|
+
The release preset retains an independently verified publication requirement;
|
|
66
|
+
it does not publish or deploy anything.
|
|
67
|
+
|
|
68
|
+
For a bounded explanation of a blocked or recovery-sensitive next action, opt
|
|
69
|
+
in with `--explain`. The explanation is read-only and derived from canonical
|
|
70
|
+
reason codes and artifact references:
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
forgeloop next --task task-contact-form-001 --explain --json
|
|
74
|
+
```
|
|
75
|
+
|
|
52
76
|
These commands do not bypass contracts, gates, verification, provenance,
|
|
53
77
|
lifecycle phases, or validator-backed completion. Usage telemetry is optional,
|
|
54
78
|
never estimated, and never verification evidence; `efficiency --task` compares
|
|
55
79
|
only against a metadata-compatible local baseline.
|
|
56
80
|
|
|
81
|
+
### Project-aware guide routing
|
|
82
|
+
|
|
83
|
+
ForgeLoop selects specialist context from bounded structural evidence in the
|
|
84
|
+
affected project scope. A parsed `pubspec.yaml` with
|
|
85
|
+
`dependencies.flutter.sdk: flutter` selects `flutter`. A parsed SDK-style
|
|
86
|
+
`*.csproj`, `*.fsproj`, or `*.vbproj` using the supported .NET SDK allowlist
|
|
87
|
+
selects the single `dotnet` guide. Web/Razor/Blazor or
|
|
88
|
+
`Microsoft.AspNetCore.App` evidence adds an ASP.NET Core routing reason, and a
|
|
89
|
+
`Volo.Abp.*` package reference adds an ABP routing reason; neither overlay is a
|
|
90
|
+
standalone guide ID, and each requires `dotnet` in project evidence.
|
|
91
|
+
|
|
92
|
+
Bounded structural inspectors also recognize Go modules/workspaces, valid
|
|
93
|
+
TypeScript configs, Composer/PHP projects, Java Maven/Gradle/Bazel roots,
|
|
94
|
+
SwiftPM/Xcode/native Swift roots, and explicit C/C++ build/source evidence.
|
|
95
|
+
Meaningful SQL migrations and schemas are scoped overlays. Build, compiler,
|
|
96
|
+
package-manager, database, lockfile, generated, and vendor artifacts are not
|
|
97
|
+
executed or promoted beyond their documented evidence contract.
|
|
98
|
+
|
|
99
|
+
Mentions in prose, source snippets, Dockerfiles, lockfiles, package names,
|
|
100
|
+
malformed manifests, and unrelated monorepo roots are insufficient. Mixed
|
|
101
|
+
Flutter/.NET roots stay isolated. Shared MSBuild/NuGet files apply only to
|
|
102
|
+
descendant confirmed .NET projects, and `.sln`/`.slnx` claims use exact
|
|
103
|
+
membership. Discovery skips symlinks and is bounded; see
|
|
104
|
+
[`GUIDE_ROUTER.md`](../GUIDE_ROUTER.md) for the exact allowlist, reason codes,
|
|
105
|
+
and numeric limits.
|
|
106
|
+
|
|
57
107
|
---
|
|
58
108
|
|
|
59
109
|
## 2. Prerequisites
|
|
@@ -395,8 +445,17 @@ forgeloop complete --task auth-feature --json
|
|
|
395
445
|
|
|
396
446
|
# Inspect active tasks
|
|
397
447
|
forgeloop task-list --json
|
|
448
|
+
|
|
449
|
+
# Filter and page the deterministic projection
|
|
450
|
+
forgeloop task-list --phase EXECUTING --limit 20 --offset 0 --json
|
|
451
|
+
forgeloop task-list --active --limit 20 --offset 20 --json
|
|
398
452
|
```
|
|
399
453
|
|
|
454
|
+
Task discovery is exhaustive for ownership and conflict correctness. The
|
|
455
|
+
`--phase` and `--active` options filter the presentation after validation;
|
|
456
|
+
`--limit` and `--offset` page the sorted result and JSON includes `total` and
|
|
457
|
+
`hasMore`. Listing is read-only and never removes ledger or recovery evidence.
|
|
458
|
+
|
|
400
459
|
---
|
|
401
460
|
|
|
402
461
|
## 6. What ForgeLoop Creates
|
package/docs/PACKAGE_CONTENTS.md
CHANGED
|
@@ -11,8 +11,9 @@ part of the consumer tarball.
|
|
|
11
11
|
|
|
12
12
|
The package exposes the `forgeloop` executable from `src/cli.js` and the
|
|
13
13
|
`@cassiomc1/forgeloop/integration` subpath from `src/integration.js`, with its
|
|
14
|
-
declaration file. The package has
|
|
15
|
-
20 or
|
|
14
|
+
declaration file. The package has the approved exact `smol-toml` runtime
|
|
15
|
+
dependency for bounded Cargo manifest parsing and requires Node.js 20 or
|
|
16
|
+
newer.
|
|
16
17
|
|
|
17
18
|
## Included files
|
|
18
19
|
|
|
@@ -28,10 +29,16 @@ The published tarball includes the following consumer-facing groups:
|
|
|
28
29
|
`src/repository-index/tgrep-manifest.json`; native engine binaries are
|
|
29
30
|
provisioned outside the npm tarball.
|
|
30
31
|
- **Specialist guidance:** every registered consumer guide under `ENG/`,
|
|
31
|
-
including `ENG/flutter-development-eng.md`,
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
32
|
+
including `ENG/flutter-development-eng.md`,
|
|
33
|
+
`ENG/dotnet-aspnetcore-development-eng.md`,
|
|
34
|
+
`ENG/nodejs-backend-development-eng.md`,
|
|
35
|
+
`ENG/rust-development-eng.md`, and the C, C++, Java, SQL, Go, TypeScript,
|
|
36
|
+
PHP, and Swift specialists, ships with the guide registry and is resolved
|
|
37
|
+
from package-local paths. Specialists are selected only from their bounded
|
|
38
|
+
structural primary evidence; SQL remains a scoped host-project overlay.
|
|
39
|
+
ASP.NET Core and ABP are conditional routing overlays on the `dotnet` guide,
|
|
40
|
+
not additional package guides. The package does not install or invoke
|
|
41
|
+
framework, compiler, build, package-manager, or database tooling.
|
|
35
42
|
- **Initialization material:** the root protocol and integration documents,
|
|
36
43
|
legal notices, the target profile template, and every path listed by
|
|
37
44
|
`src/core/templates.js`. These files are read by `init` and `update`, so
|
|
@@ -44,7 +51,8 @@ The published tarball includes the following consumer-facing groups:
|
|
|
44
51
|
generated local repositories and measurements are not.
|
|
45
52
|
- **User documentation:** the getting-started, integration, CLI, artifact,
|
|
46
53
|
Repository Index, Persistent Search Transport, troubleshooting, release,
|
|
47
|
-
package-boundary, and related reference pages
|
|
54
|
+
package-boundary, and related reference pages, together with the
|
|
55
|
+
machine-readable documentation and protocol indexes and `CONTRIBUTING.md`.
|
|
48
56
|
The advisory-context and Ripwire adapter guides ship with the corresponding
|
|
49
57
|
public integration surface.
|
|
50
58
|
The typed diagram sources, generated HTML/SVG/receipt artifacts, and
|
|
@@ -72,13 +80,17 @@ The tarball intentionally omits repository-only material:
|
|
|
72
80
|
- the repository README hero PNG, which is a GitHub-only asset. The packaged
|
|
73
81
|
README remains intentionally text-first around that relative repository
|
|
74
82
|
image reference.
|
|
83
|
+
- the execution PoC, its audit, and its evidence package. Packaged README and
|
|
84
|
+
index links to this repository-only material use GitHub URLs so they remain
|
|
85
|
+
truthful for npm consumers.
|
|
75
86
|
|
|
76
|
-
The package test checks
|
|
87
|
+
The package test checks all registered guide paths and these exclusion classes. It
|
|
77
88
|
also enumerates `src/**/*.js` and fails if a maintained runtime module is
|
|
78
89
|
missing from the candidate tarball or if a retired helper is reintroduced.
|
|
79
90
|
The repository index remains a catalog: links from `DOCS_INDEX.md` to tests,
|
|
80
|
-
|
|
81
|
-
|
|
91
|
+
historical plans, and source trees may intentionally resolve only in the full
|
|
92
|
+
repository and are not package dependencies. The canonical documentation and
|
|
93
|
+
protocol indexes are included in the tarball.
|
|
82
94
|
|
|
83
95
|
## Verification and publication
|
|
84
96
|
|
|
@@ -91,10 +103,12 @@ npm run pack:smoke
|
|
|
91
103
|
```
|
|
92
104
|
|
|
93
105
|
`pack:smoke` installs the candidate tarball into a temporary consumer and
|
|
94
|
-
exercises the CLI, public Integration API, initialization, schemas, and
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
106
|
+
exercises the CLI, public Integration API, initialization, schemas, and the
|
|
107
|
+
Structural Quality documentation's packaged diagram references. The
|
|
108
|
+
package-boundary tests also assert
|
|
109
|
+
that every registered guide path, including all language specialists, is
|
|
110
|
+
present in the candidate. The tag-triggered publication
|
|
111
|
+
workflow
|
|
98
112
|
runs the same smoke gate before `npm publish --provenance --access public`.
|
|
99
113
|
Publication therefore remains owned by the trusted GitHub Actions OIDC
|
|
100
114
|
workflow; local package inspection proves the candidate boundary but does not
|
package/docs/RECIPES.md
CHANGED
|
@@ -35,6 +35,18 @@ Concise, copy-paste friendly recipes for common ForgeLoop tasks.
|
|
|
35
35
|
|
|
36
36
|
### Recipe 1 — Start a New Task
|
|
37
37
|
|
|
38
|
+
When the task shape is known but the final contract has not been written, first
|
|
39
|
+
request a read-only preset proposal:
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
forgeloop task-create --task task-001 --claim src --claim tests \
|
|
43
|
+
--preset feature --preview --json
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Review the bounded proposal, then repeat without `--preview` before continuing
|
|
47
|
+
with the task workflow below. Preview creates no task namespace and acquires no
|
|
48
|
+
project claim lock.
|
|
49
|
+
|
|
38
50
|
<!-- FORGELOOP EXAMPLE: recipes:create-task | exit=0 | json.taskId=task-001 -->
|
|
39
51
|
```bash
|
|
40
52
|
forgeloop task-create --task task-001 --claim src --claim tests --json
|
|
@@ -243,6 +255,12 @@ forgeloop task-create --task billing-feature --claim src/billing --claim tests/b
|
|
|
243
255
|
# 3. List active tasks
|
|
244
256
|
forgeloop task-list --json
|
|
245
257
|
|
|
258
|
+
# 3a. Filter and page the read-only ownership-aware projection
|
|
259
|
+
forgeloop task-list --active --limit 20 --offset 0 --json
|
|
260
|
+
|
|
261
|
+
# 3b. Ask for a bounded blocker/recovery explanation when needed
|
|
262
|
+
forgeloop next --task auth-feature --explain --json
|
|
263
|
+
|
|
246
264
|
# 4. Work on task-1
|
|
247
265
|
forgeloop route --task auth-feature --work clean-code --surface backend
|
|
248
266
|
forgeloop preflight --task auth-feature --json
|
|
@@ -256,6 +274,11 @@ forgeloop complete --task auth-feature --json
|
|
|
256
274
|
forgeloop task-unlock --task auth-feature --force --json
|
|
257
275
|
```
|
|
258
276
|
|
|
277
|
+
`task-list` discovers all valid task namespaces before applying filters and
|
|
278
|
+
pagination. Its JSON response reports `total` and `hasMore`; filtering does not
|
|
279
|
+
skip ownership or corruption checks, and listing never deletes ledger or
|
|
280
|
+
recovery evidence.
|
|
281
|
+
|
|
259
282
|
---
|
|
260
283
|
|
|
261
284
|
### Recipe 12 — Migrate Legacy 1.0 Single-Task Layout
|
|
@@ -13,6 +13,17 @@ boundaries explicit:
|
|
|
13
13
|
`ENG/flutter-development-eng.md` and explain that the specialist is
|
|
14
14
|
selected only from a structurally parsed
|
|
15
15
|
`dependencies.flutter.sdk: flutter` entry in affected scope.
|
|
16
|
+
- [ ] README catalog and architecture fallback identify
|
|
17
|
+
`ENG/rust-development-eng.md` and explain that the specialist is
|
|
18
|
+
selected only from a structurally parsed `[package]` or `[workspace]`
|
|
19
|
+
table in an affected `Cargo.toml`.
|
|
20
|
+
- [ ] README catalog and architecture fallback identify
|
|
21
|
+
`ENG/nodejs-backend-development-eng.md` and explain that Node.js
|
|
22
|
+
backend/runtime evidence is distinct from build, test, and configuration
|
|
23
|
+
tooling executed under Node.js.
|
|
24
|
+
- [ ] README catalog and architecture fallback identify the C, C++, Java, SQL,
|
|
25
|
+
Go, TypeScript, PHP, and Swift specialists and explain their bounded
|
|
26
|
+
structural evidence and same-root composition rules.
|
|
16
27
|
- [ ] The canonical engineering-flow source and regenerated HTML/SVG diagram
|
|
17
28
|
explain project detection as routing context, not verification or
|
|
18
29
|
completion evidence.
|
|
@@ -34,6 +45,22 @@ This branch prepares the candidate and its pull request. npm publication,
|
|
|
34
45
|
tagging, GitHub Release, deployment, and merge remain separately authorized
|
|
35
46
|
actions.
|
|
36
47
|
|
|
48
|
+
## CI minimization validation
|
|
49
|
+
|
|
50
|
+
- [ ] `npm run verify:fast` passes for edit-time feedback.
|
|
51
|
+
- [ ] `npm run verify:prepush` passes before the release pull request; MCP
|
|
52
|
+
setup, when needed, was run explicitly with `npm run mcp:setup`.
|
|
53
|
+
- [ ] Ordinary PR validation uses `.github/workflows/pr-core.yml` with the
|
|
54
|
+
unchanged required contexts `audit`, `CodeQL`, `Verify generated Archify
|
|
55
|
+
diagram`, `validate (22)`, `tarball smoke (ubuntu-latest)`, and
|
|
56
|
+
`dependency-review`.
|
|
57
|
+
- [ ] `validate (22)` is always present and fails closed on an applicable
|
|
58
|
+
prerequisite failure, cancellation, or unexpected skip.
|
|
59
|
+
- [ ] Path classification scenarios cover README-only, ordinary source,
|
|
60
|
+
Repository Index, package-export, and forced release validation.
|
|
61
|
+
- [ ] Main-branch documentation, Node compatibility, package smoke, audit,
|
|
62
|
+
and Windows full-suite workflows remain available for broader validation.
|
|
63
|
+
|
|
37
64
|
## Contract and package identity
|
|
38
65
|
|
|
39
66
|
- [ ] `package.json` and `package-lock.json` contain the same package version.
|
|
@@ -47,7 +74,7 @@ actions.
|
|
|
47
74
|
- [ ] [`docs/PACKAGE_CONTENTS.md`](./PACKAGE_CONTENTS.md) matches the current
|
|
48
75
|
`package.json` file list and documents intentional inclusions and
|
|
49
76
|
exclusions.
|
|
50
|
-
- [ ] The candidate tarball includes
|
|
77
|
+
- [ ] The candidate tarball includes every registered specialist guide and every
|
|
51
78
|
other `src/config/guides.json` path; no repository-only guide state is
|
|
52
79
|
packaged.
|
|
53
80
|
- [ ] Every maintained `src/**/*.js` module is present in the candidate
|
|
@@ -70,7 +97,8 @@ actions.
|
|
|
70
97
|
- [ ] Stale contract/route identity rejects handoff creation or acceptance.
|
|
71
98
|
- [ ] An invalid event ledger projects `INCONSISTENT`.
|
|
72
99
|
- [ ] Continuity lint remains non-authoritative and non-evidence.
|
|
73
|
-
- [ ] `npm run dependency:policy` passes
|
|
100
|
+
- [ ] `npm run dependency:policy` passes with only the approved exact runtime
|
|
101
|
+
parser dependency and approved development dependencies.
|
|
74
102
|
- [ ] `npm run lint` passes.
|
|
75
103
|
- [ ] `npm test` passes.
|
|
76
104
|
- [ ] `npm run benchmark:profiles:check` passes; absent provider/host history
|