@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.
Files changed (62) hide show
  1. package/.github/copilot-instructions.md +1 -1
  2. package/AGENTS.md +1 -1
  3. package/CLAUDE.md +1 -1
  4. package/CONTRIBUTING.md +90 -0
  5. package/DOCS_INDEX.md +13 -11
  6. package/ENG/c-development-eng.md +112 -0
  7. package/ENG/cpp-development-eng.md +109 -0
  8. package/ENG/dotnet-aspnetcore-development-eng.md +401 -0
  9. package/ENG/go-development-eng.md +103 -0
  10. package/ENG/java-development-eng.md +125 -0
  11. package/ENG/nodejs-backend-development-eng.md +605 -0
  12. package/ENG/php-development-eng.md +104 -0
  13. package/ENG/rust-development-eng.md +422 -0
  14. package/ENG/sql-development-eng.md +108 -0
  15. package/ENG/swift-development-eng.md +111 -0
  16. package/ENG/typescript-development-eng.md +108 -0
  17. package/GUIDE_ROUTER.md +418 -9
  18. package/QUALITY_SCORECARD.md +1 -0
  19. package/README.md +44 -33
  20. package/THIRD_PARTY_NOTICES.md +19 -7
  21. package/completions/_forgeloop +3 -3
  22. package/completions/forgeloop.bash +3 -3
  23. package/completions/forgeloop.fish +7 -0
  24. package/docs/AGENT_PROTOCOL_SUMMARY.md +55 -2
  25. package/docs/CLI_REFERENCE.md +28 -6
  26. package/docs/DOCUMENTATION_GUIDE.md +2 -1
  27. package/docs/GETTING_STARTED.md +59 -0
  28. package/docs/PACKAGE_CONTENTS.md +28 -14
  29. package/docs/RECIPES.md +23 -0
  30. package/docs/RELEASE_CHECKLIST.md +30 -2
  31. package/docs/TROUBLESHOOTING.md +100 -2
  32. package/docs/documentation-manifest.json +652 -0
  33. package/docs/protocol-requirements.json +77 -0
  34. package/package.json +19 -4
  35. package/schemas/routing-input.schema.json +1 -1
  36. package/scripts/CI_VALIDATORS.md +84 -11
  37. package/scripts/generate-agent-protocol-summary.mjs +36 -0
  38. package/src/commands/next.js +19 -7
  39. package/src/commands/task-create.js +84 -25
  40. package/src/commands/task-list.js +22 -2
  41. package/src/config/guides.json +44 -0
  42. package/src/core/build-script.js +151 -0
  43. package/src/core/c-cpp-project.js +143 -0
  44. package/src/core/cli-command-definitions.js +8 -1
  45. package/src/core/command-executors.js +5 -3
  46. package/src/core/command-input.js +140 -102
  47. package/src/core/contract-presets.js +82 -0
  48. package/src/core/error-codes.js +3 -3
  49. package/src/core/filesystem.js +1 -10
  50. package/src/core/go-project.js +206 -0
  51. package/src/core/java-project.js +403 -0
  52. package/src/core/multi-language-project.js +117 -0
  53. package/src/core/next-explanation.js +63 -0
  54. package/src/core/php-project.js +85 -0
  55. package/src/core/project-detection.js +1760 -52
  56. package/src/core/reconcile-closure.js +4 -1
  57. package/src/core/router.js +156 -3
  58. package/src/core/rust-project.js +400 -0
  59. package/src/core/sql-project.js +141 -0
  60. package/src/core/swift-project.js +200 -0
  61. package/src/core/typescript-project.js +349 -0
  62. package/src/core/xml-structure.js +123 -0
@@ -7,6 +7,7 @@ This guide provides symptom-first recovery procedures for common ForgeLoop proto
7
7
  ## Quick Symptom Index
8
8
 
9
9
  - [`preflight` is `BLOCKED`](#symptom-preflight-is-blocked)
10
+ - [Project-aware .NET routing is missing](#symptom-project-aware-net-routing-is-missing)
10
11
  - [`forgeloop next` returns `RESOLVE_BLOCKER`](#symptom-forgeloop-next-returns-resolve_blocker)
11
12
  - [`forgeloop next` returns `RECORD_DIAGNOSIS`](#symptom-forgeloop-next-returns-record_diagnosis)
12
13
  - [Progress is `STALLED` or `forgeloop next` returns `CHANGE_STRATEGY`](#symptom-progress-is-stalled)
@@ -37,6 +38,7 @@ This guide provides symptom-first recovery procedures for common ForgeLoop proto
37
38
  - [Repository search fails](#symptom-repository-search-fails)
38
39
  - [Persistent search host is unavailable](#symptom-persistent-search-host-is-unavailable)
39
40
  - [Persistent search host ownership is unverified or stale](#symptom-persistent-search-host-ownership-is-unverified-or-stale)
41
+ - [Local validation tier is unavailable or reports `NOT_VERIFIED`](#symptom-local-validation-tier-is-unavailable-or-reports-not_verified)
40
42
  - [Another harness cannot resume the task](#symptom-another-harness-cannot-resume)
41
43
  - [Task claim conflict or recovered task](#symptom-task-creation-blocked-by-a-write-claim-conflict-e_task_scope_conflict)
42
44
  - [Stable Error & Reason Code Reference](#stable-error-and-reason-codes)
@@ -54,6 +56,102 @@ forgeloop protocol-info --json
54
56
  ```
55
57
  <!-- END FORGELOOP EXAMPLE -->
56
58
 
59
+ ### Symptom: local validation tier is unavailable or reports `NOT_VERIFIED`
60
+
61
+ #### What it means
62
+
63
+ The selected local validation tier could not run a required external validator
64
+ or setup prerequisite. `NOT_VERIFIED` is an explicit limitation, not a test
65
+ pass and not permission to install tools implicitly.
66
+
67
+ #### Safe recovery
68
+
69
+ 1. Check the tier and its command list with `node scripts/run-validation.mjs
70
+ --tier <fast|local|prepush|release> --list`.
71
+ 2. Run `npm run mcp:setup` explicitly when MCP dependencies are in scope and
72
+ installation is authorized.
73
+ 3. Confirm Python 3.9 or newer is available for the frozen validators.
74
+ 4. Re-run the tier and record any still-unavailable check as `NOT_VERIFIED` in
75
+ the validation report.
76
+
77
+ The ordinary PR workflow remains path-aware and always publishes the required
78
+ status contexts; its `validate (22)` aggregator fails closed on an applicable
79
+ job failure, cancellation, or unexpected skip. Local success cannot substitute
80
+ for a required remote security or cross-platform check.
81
+
82
+ ### Symptom: the Node.js test suite is slow locally
83
+
84
+ #### Inspect
85
+
86
+ Use the fast, watch, and CI-specific entry points before running the full
87
+ coverage gate:
88
+
89
+ ```bash
90
+ npm run test:quick
91
+ npm run test:watch
92
+ npm run test:ci
93
+ npm run coverage
94
+ ```
95
+
96
+ `npm test` remains the complete no-coverage suite. `test:ci` runs the same
97
+ discovered files with a two-worker cap for small CI runners; it does not remove
98
+ tests or change assertions. Local coverage remains an explicit command because
99
+ instrumentation adds measurable overhead; the PR unit lane wraps that same
100
+ `test:ci` process across four deterministic shards, then aggregates coverage
101
+ without running the suite again. Docs-only changes run the quick suite only on
102
+ the first Node 24 shard; the other shards and the Node 20 lane do not install.
103
+
104
+ #### Native Windows guidance
105
+
106
+ Repeated Node process startup can be slowed by Windows Defender scanning the
107
+ repository and dependency tree. If local policy permits, request narrowly
108
+ scoped exclusions for the trusted `node.exe`, this repository root, and its
109
+ `node_modules` directory. Never disable Defender globally or exclude an
110
+ untrusted path. WSL2 can be used when native Windows remains slow, while
111
+ Windows CI continues to cover native path and process behavior.
112
+
113
+ ### Symptom: Project-aware .NET routing is missing
114
+
115
+ #### What it means
116
+
117
+ The route command did not find confirmed, affected SDK-style .NET project
118
+ evidence, or the task scope does not reach the confirmed project root. ASP.NET
119
+ Core and ABP are conditional overlays on the `dotnet` specialist; they are not
120
+ standalone guides.
121
+
122
+ #### Inspect
123
+
124
+ ```bash
125
+ forgeloop route --task <task-id> --work code --surface backend --json
126
+ forgeloop task-show --task <task-id> --json
127
+ ```
128
+
129
+ Then inspect the affected scope for a structurally valid `*.csproj`, `*.fsproj`,
130
+ or `*.vbproj` using the supported SDK allowlist. ASP.NET Core requires a web,
131
+ Razor, or Blazor SDK or a `FrameworkReference Include="Microsoft.AspNetCore.App"`.
132
+ ABP requires a structural `PackageReference Include="Volo.Abp..."` in the
133
+ confirmed .NET project.
134
+
135
+ #### Common causes
136
+
137
+ - The repository contains only prose, source snippets, Dockerfiles, lockfiles,
138
+ package names, or a malformed/oversized/non-SDK-style project file.
139
+ - A write claim points outside the project root, outside the applicable shared
140
+ `Directory.Build.*`/NuGet scope, or at a non-member of the named `.sln`/`.slnx`.
141
+ - A mixed Flutter/.NET monorepo was treated as one root; nested project roots
142
+ remain isolated.
143
+ - `projectEvidence.frameworks` contains `aspnetcore` or `abp` without
144
+ `dotnet`; route validation rejects that input.
145
+
146
+ #### Safe recovery
147
+
148
+ Do not add a manual `projectEvidence` claim to force specialist activation.
149
+ Correct the task scope or project structure, rerun the canonical route command,
150
+ and inspect its reason/exclusion codes. Project discovery is bounded and
151
+ non-symlinked; budget exhaustion fails closed. See
152
+ [`GUIDE_ROUTER.md`](../GUIDE_ROUTER.md) for the exact limits and reason-code
153
+ contract.
154
+
57
155
  ### Symptom: `preflight` is `BLOCKED`
58
156
 
59
157
  #### What it means
@@ -1332,7 +1430,7 @@ package/process recovery boundary. The relevant stable codes are
1332
1430
  | `E_RECONCILE_EVIDENCE_FAILED` | The executed objective-satisfaction evidence command did not pass. | Inspect the execution artifact; reconciliation is refused until evidence passes in the current repository. |
1333
1431
  | `E_RECONCILE_LEDGER_INVALID` | The append-only event ledger is not valid, so reconciliation cannot be recorded. | Inspect the ledger errors and repair before reconciling. |
1334
1432
  | `E_RECONCILE_NOT_STALE` | reconcile-closure was invoked for a work-state checkpoint that is already fresh. | No reconciliation is required; continue the normal lifecycle. |
1335
- | `E_RECONCILE_PHASE_INVALID` | reconcile-closure was invoked for a task that is not EXECUTING or VERIFYING. | reconcile-closure supports EXECUTING or VERIFYING tasks whose objective is already satisfied. |
1433
+ | `E_RECONCILE_PHASE_INVALID` | reconcile-closure was invoked for a task that is not EXECUTING, VERIFYING, or REVIEWING. | reconcile-closure supports EXECUTING, VERIFYING, or REVIEWING tasks whose objective is already satisfied. |
1336
1434
  | `E_RECONCILE_REQUIREMENT_UNKNOWN` | The supplied check id and requirement text do not exactly match a contract verification item of type VERIFICATION. | Supply the exact id and requirement text of an existing contract verification item. |
1337
1435
  | `E_RECONCILE_UNSUPPORTED_DRIFT` | Work-state drift includes kinds other than REPOSITORY_CHANGED (contract or required-artifact drift). | Resolve contract or artifact drift through their dedicated recovery surfaces; reconcile-closure only refreshes repository fingerprint drift. |
1338
1436
  | `E_REPOSITORY_CHANGED` | The repository fingerprint (branch or HEAD) moved after the work-state checkpoint was recorded. | If the task objective is already satisfied in the current repository, run forgeloop reconcile-closure; otherwise resume from a checkpoint that matches the current repository. |
@@ -1372,7 +1470,7 @@ package/process recovery boundary. The relevant stable codes are
1372
1470
  | `E_STATE_LEDGER_DIVERGENCE` | A ForgeLoop protocol validation or lifecycle condition was not satisfied. | Inspect the structured command result, correct the named artifact or prerequisite, then run forgeloop next --json. |
1373
1471
  | `E_STATE_MISSING` | A ForgeLoop protocol validation or lifecycle condition was not satisfied. | Inspect the structured command result, correct the named artifact or prerequisite, then run forgeloop next --json. |
1374
1472
  | `E_STATE_MISSING_AFTER_PREFLIGHT_READY` | A ForgeLoop protocol validation or lifecycle condition was not satisfied. | Inspect the structured command result, correct the named artifact or prerequisite, then run forgeloop next --json. |
1375
- | `E_STATE_REVALIDATION_REQUIRED` | The work-state checkpoint must be revalidated before the lifecycle can continue. | Run forgeloop reconcile-closure for externally satisfied EXECUTING tasks, or inspect the freshness reasons for other drift. |
1473
+ | `E_STATE_REVALIDATION_REQUIRED` | The work-state checkpoint must be revalidated before the lifecycle can continue. | Run forgeloop reconcile-closure for externally satisfied EXECUTING, VERIFYING, or REVIEWING tasks, or inspect the freshness reasons for other drift. |
1376
1474
  | `E_STATE_TASK_MISMATCH` | A ForgeLoop protocol validation or lifecycle condition was not satisfied. | Inspect the structured command result, correct the named artifact or prerequisite, then run forgeloop next --json. |
1377
1475
  | `E_STRATEGY_OSCILLATION` | Correction history oscillates between previously exhausted strategies without new information. | Gather a genuinely new observation or test a materially different falsifiable hypothesis. |
1378
1476
  | `E_STRUCTURAL_QUALITY_BASELINE_BINDING_MISMATCH` | Structural-quality evidence did not satisfy its provider, artifact, comparison, or lifecycle boundary. | Reconcile contract, route, policy, scope, provider, or rules drift before using the baseline. |