@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/GUIDE_ROUTER.md
CHANGED
|
@@ -53,6 +53,17 @@ project commands.
|
|
|
53
53
|
| `games` | [Web games](./ENG/games-code-design-web-eng.md) | Architecture and operation of 2D, 3D, and procedural web games |
|
|
54
54
|
| `documentation` | [Documentation quality](./ENG/documentation-quality-eng.md) | Accuracy, architecture, freshness, accessibility, and verifiable technical documentation |
|
|
55
55
|
| `flutter` | [Flutter application engineering](./ENG/flutter-development-eng.md) | Architecture, implementation, testing, performance, accessibility, platform integration, and release of production Flutter applications |
|
|
56
|
+
| `dotnet` | [.NET and ASP.NET Core development engineering](./ENG/dotnet-aspnetcore-development-eng.md) | Architecture, implementation, testing, performance, security, data access, hosting, observability, and release of production .NET applications |
|
|
57
|
+
| `nodejs` | [Node.js backend development engineering](./ENG/nodejs-backend-development-eng.md) | Architecture, implementation, testing, security, performance, observability, and release of production Node.js services and workers |
|
|
58
|
+
| `c` | [C development engineering](./ENG/c-development-eng.md) | Memory-safe-by-contract C libraries, services, native interfaces, security, testing, and reproducible toolchains |
|
|
59
|
+
| `cpp` | [C++ development engineering](./ENG/cpp-development-eng.md) | Ownership, RAII, concurrency, ABI, native interoperability, testing, and reproducible C++ systems |
|
|
60
|
+
| `java` | [Java development engineering](./ENG/java-development-eng.md) | JVM services, libraries, workers, build compatibility, concurrency, security, testing, and release |
|
|
61
|
+
| `sql` | [SQL development engineering](./ENG/sql-development-eng.md) | Schemas, queries, migrations, transactions, database security, performance, and compatibility |
|
|
62
|
+
| `go` | [Go development engineering](./ENG/go-development-eng.md) | Modules, services, workers, concurrency, cancellation, security, testing, and release |
|
|
63
|
+
| `typescript` | [TypeScript development engineering](./ENG/typescript-development-eng.md) | Type-system/compiler contracts, runtime boundaries, module compatibility, testing, and release |
|
|
64
|
+
| `php` | [PHP development engineering](./ENG/php-development-eng.md) | Composer applications, web services, workers, runtime constraints, security, testing, and deployment |
|
|
65
|
+
| `swift` | [Swift development engineering](./ENG/swift-development-eng.md) | SwiftPM/Xcode applications, concurrency, platform boundaries, interoperability, testing, and release |
|
|
66
|
+
| `rust` | [Rust development engineering](./ENG/rust-development-eng.md) | Architecture, implementation, testing, security, performance, reproducibility, and release of production Rust applications, services, libraries, and workers |
|
|
56
67
|
|
|
57
68
|
## Domain rules
|
|
58
69
|
|
|
@@ -222,6 +233,271 @@ rg -n '^## |architecture|testing|performance|accessibility|platform|release|Flut
|
|
|
222
233
|
|
|
223
234
|
**Expected evidence:** a confirmed affected Flutter project, a scoped route, platform-appropriate tests, measured performance or accessibility checks when relevant, and honest `NOT_VERIFIED` reporting for unavailable Flutter tooling.
|
|
224
235
|
|
|
236
|
+
### `dotnet` — .NET and ASP.NET Core development engineering
|
|
237
|
+
|
|
238
|
+
**Activate when:** a confirmed project root has a structurally parsed SDK-style `*.csproj`, `*.fsproj`, or `*.vbproj` using one of the supported SDKs below, and the task scope intersects that root:
|
|
239
|
+
|
|
240
|
+
- `Microsoft.NET.Sdk`, `Microsoft.NET.Sdk.Web`, `Microsoft.NET.Sdk.Worker`,
|
|
241
|
+
`Microsoft.NET.Sdk.Razor`, or `Microsoft.NET.Sdk.BlazorWebAssembly`;
|
|
242
|
+
- `Aspire.AppHost.Sdk` or `MSTest.Sdk`;
|
|
243
|
+
- the equivalent `<Sdk Name="..." />` declaration in the project XML.
|
|
244
|
+
|
|
245
|
+
Web, Razor, or Blazor SDKs, or `FrameworkReference Include="Microsoft.AspNetCore.App"`, confirm ASP.NET Core context. A `Volo.Abp.*` package reference adds the ABP overlay while retaining the single `dotnet` guide ID.
|
|
246
|
+
|
|
247
|
+
**Do not activate merely because:** prose, Markdown, source snippets, a Dockerfile, a lockfile, an arbitrary directory name, a package cache, or an unrelated monorepo project mentions .NET, ASP.NET Core, or ABP. A malformed, oversized, non-SDK-style, or unsupported project file fails closed. Shared `Directory.Build.*`, `Directory.Packages.props`, `global.json`, and NuGet files apply only to descendant .NET projects in their directory scope; `.sln`/`.slnx` claims use exact solution membership.
|
|
248
|
+
|
|
249
|
+
**Usually combine with:** `clean` and `test`; add `security` for trust-boundary or dependency changes, `performance` for measured cost or critical paths, `documentation` for technical documentation, and the UI guides for Razor/Blazor or other user-facing changes.
|
|
250
|
+
|
|
251
|
+
The route command obtains this evidence from `src/core/project-detection.js`. It walks bounded, non-symlinked project manifests, parses direct XML SDK/target/reference structure without evaluating the full MSBuild graph, and matches task claims against project roots, shared configuration scope, or exact solution membership. ASP.NET Core and ABP are routing reasons on the specialist guide, not additional guide IDs.
|
|
252
|
+
|
|
253
|
+
Project discovery is fail-closed and bounded by default: at most 256 project
|
|
254
|
+
manifests, 64 solution files, 1 MiB per manifest, 256 supporting source files
|
|
255
|
+
with 512 KiB per source file, 4,096 visited directories, and 20,000 visited
|
|
256
|
+
entries. Symlinks and common generated/vendor directories are skipped. When a
|
|
257
|
+
budget is exhausted, the detector does not claim reliable project evidence.
|
|
258
|
+
These limits bound discovery work; they do not cap task ownership discovery.
|
|
259
|
+
|
|
260
|
+
The .NET routing reasons are `PROJECT_DOTNET_SDK_PROJECT`,
|
|
261
|
+
`PROJECT_DOTNET_BASELINE`, `PROJECT_ASPNETCORE_CONFIRMED`, and
|
|
262
|
+
`PROJECT_ABP_CONFIRMED`. The corresponding exclusions are
|
|
263
|
+
`NO_DOTNET_PROJECT_EVIDENCE`, `NO_DOTNET_SCOPE_MATCH`,
|
|
264
|
+
`NO_DOTNET_PRIMARY_EVIDENCE`, and `NO_DOTNET_EXECUTABLE_WORK`. The route
|
|
265
|
+
validator also requires `aspnetcore` and `abp` project-evidence overlays to be
|
|
266
|
+
accompanied by `dotnet`; it rejects standalone overlays rather than creating a
|
|
267
|
+
second specialist guide.
|
|
268
|
+
|
|
269
|
+
```bash
|
|
270
|
+
rg -n '^## |architecture|dependency injection|middleware|endpoints|configuration|authentication|authorization|EF Core|testing|WebApplicationFactory|workers|Blazor|ABP|publish|troubleshooting' ENG/dotnet-aspnetcore-development-eng.md
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
**Expected evidence:** a confirmed affected .NET project, a scoped route, compatible SDK/runtime decisions, focused and integration checks for changed boundaries, and honest `NOT_VERIFIED` reporting for unavailable .NET tooling or runtime environments.
|
|
274
|
+
|
|
275
|
+
### `nodejs` — Node.js backend development engineering
|
|
276
|
+
|
|
277
|
+
**Activate when:** a confirmed project root has a valid `package.json` with an
|
|
278
|
+
allowlisted runtime backend dependency (`express`, `fastify`, `@nestjs/core`,
|
|
279
|
+
`koa`, or `@hapi/hapi`), a direct `node`/`node.exe` runtime script, or bounded
|
|
280
|
+
source evidence importing or re-exporting a Node server/network built-in such
|
|
281
|
+
as `node:http`, `node:https`, `node:http2`, `node:net`, `node:tls`, or `node:dgram`
|
|
282
|
+
from a plausible runtime application surface, and the task scope intersects
|
|
283
|
+
that root.
|
|
284
|
+
|
|
285
|
+
**Do not activate merely because:** a `package.json`, `engines.node`, `type`,
|
|
286
|
+
`packageManager`, lockfile, `.nvmrc`, `.node-version`, `@types/node`,
|
|
287
|
+
TypeScript, `tsx`, Dockerfile, CI setup, frontend dependency, Next-only
|
|
288
|
+
dependency, prose mention, or development-only framework dependency exists.
|
|
289
|
+
Malformed or oversized manifests fail closed. The detector never executes
|
|
290
|
+
scripts or source code, follows symlinks, installs packages, or accesses the
|
|
291
|
+
network.
|
|
292
|
+
|
|
293
|
+
**Usually combine with:** `clean` and `test`; add `security` for input,
|
|
294
|
+
authentication, authorization, dependency, secret, external-service, or
|
|
295
|
+
publication risks; add `performance` for measured latency, throughput,
|
|
296
|
+
memory, event-loop, queue, or database work; add `documentation` when the API,
|
|
297
|
+
configuration, or operational contract changes.
|
|
298
|
+
|
|
299
|
+
The route command obtains this evidence from
|
|
300
|
+
`src/core/project-detection.js`. It walks bounded, non-symlinked manifests and
|
|
301
|
+
source files, isolates nested project roots across Flutter, .NET, Node.js, and
|
|
302
|
+
Rust,
|
|
303
|
+
recognizes workspace-root and shared lockfile scope, and preserves
|
|
304
|
+
`projectEvidence.schemaVersion: 1`. Node source evidence ignores comments,
|
|
305
|
+
template text, `import type`/`export type`, inline type-only specifiers,
|
|
306
|
+
declaration files, tooling/configuration filenames, and non-runtime directories
|
|
307
|
+
such as tests, fixtures, examples, docs, build output, scripts, tools, codegen,
|
|
308
|
+
and package caches. A mixed declaration counts only when a runtime value
|
|
309
|
+
specifier is safely recognized; unsupported complex declarations fail closed.
|
|
310
|
+
Runtime re-exports with a value specifier are included because the specialist
|
|
311
|
+
covers Node.js server/runtime library surfaces as well as services and workers.
|
|
312
|
+
Node.js execution used only for build, test, or configuration tooling is not
|
|
313
|
+
sufficient backend/runtime evidence. Mixed Flutter/.NET/Node repositories
|
|
314
|
+
retain each confirmed framework; claims and shared files stop at the same
|
|
315
|
+
nested ownership boundaries. A claim that does not reach a confirmed Node
|
|
316
|
+
project produces `NO_NODEJS_SCOPE_MATCH` or leaves the specialist excluded.
|
|
317
|
+
|
|
318
|
+
```bash
|
|
319
|
+
rg -n '^## |activation|runtime|architecture|Express|Fastify|NestJS|security|testing|performance|deployment|Definition of Done' ENG/nodejs-backend-development-eng.md
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
**Expected evidence:** a confirmed affected Node project, a scoped route,
|
|
323
|
+
validated inputs and configuration, bounded trust and resource controls,
|
|
324
|
+
focused plus integration/adversarial checks, observable failure and shutdown
|
|
325
|
+
behavior, and honest `NOT_VERIFIED` reporting for unavailable Node tooling.
|
|
326
|
+
|
|
327
|
+
### `c` — C development engineering
|
|
328
|
+
|
|
329
|
+
Activate for explicit C language declarations in CMake or Meson, a native
|
|
330
|
+
Bazel rule with owned .c source, or a direct claim to owned .c source. Headers,
|
|
331
|
+
Makefiles, compiler images, flags, generated trees, and prose are not enough.
|
|
332
|
+
C and C++ may compose at one root. Detection is bounded and static; it never
|
|
333
|
+
runs native build tools, compilers, linkers, generators, or tests. Repository
|
|
334
|
+
flags, compiler mode, ABI, C library, and platform contracts decide the
|
|
335
|
+
effective C standard; C23 is only the current published reference.
|
|
336
|
+
|
|
337
|
+
Expected evidence is a confirmed affected root, scoped ownership, explicit
|
|
338
|
+
memory/resource contracts, failure-path tests, and separately recorded
|
|
339
|
+
toolchain checks. See ENG/c-development-eng.md for the specialist contract.
|
|
340
|
+
|
|
341
|
+
### `cpp` — C++ development engineering
|
|
342
|
+
|
|
343
|
+
Activate for explicit C++ language declarations in CMake or Meson, a native
|
|
344
|
+
Bazel rule with owned .cc, .cpp, .cxx, or .c++ source, or a direct claim to
|
|
345
|
+
owned C++ source. Headers remain ambiguous without explicit build context.
|
|
346
|
+
Makefiles, compiler versions, flags, generated trees, and vendored code do not
|
|
347
|
+
establish C++ identity. The detector never executes native build logic.
|
|
348
|
+
|
|
349
|
+
C++23 is the published baseline reference; compiler support for C++26 is not
|
|
350
|
+
permission to change the repository standard or ABI. See
|
|
351
|
+
ENG/cpp-development-eng.md for ownership, RAII, ABI, concurrency, and testing
|
|
352
|
+
guidance.
|
|
353
|
+
|
|
354
|
+
### `java` — Java development engineering
|
|
355
|
+
|
|
356
|
+
Activate for owned Java source with structural Maven, Gradle, or Bazel
|
|
357
|
+
evidence, an unambiguous Java compiler/platform declaration, or a direct .java
|
|
358
|
+
claim. A POM, Gradle wrapper/settings, generic aggregator, JDK image, or
|
|
359
|
+
setup-java CI step alone is not an application; explicit recognized Java
|
|
360
|
+
plugins/rules are structural evidence, including `java-gradle-plugin`. Gradle
|
|
361
|
+
topology uses only unconditional top-level literal includes; conditional,
|
|
362
|
+
interpolated, or executable expressions remain unresolved. Unsafe XML
|
|
363
|
+
DTD/entity constructs fail closed; Maven, Gradle, Bazel, plugins, annotation
|
|
364
|
+
processors, tests, and Java code are never executed.
|
|
365
|
+
|
|
366
|
+
Keep source level, release/target, build JDK, runtime JDK, preview features,
|
|
367
|
+
framework minimums, and vendor distribution separate. Repository configuration
|
|
368
|
+
wins over current JDK availability. See ENG/java-development-eng.md.
|
|
369
|
+
|
|
370
|
+
### `sql` — SQL development engineering
|
|
371
|
+
|
|
372
|
+
Activate as an overlay for a directly claimed meaningful SQL artifact or a
|
|
373
|
+
bounded statement in an owned db, database, migration, migrations, schema, or
|
|
374
|
+
sql directory. SQL composes with its host language specialist and dialect is
|
|
375
|
+
not a public framework value. Comments, strings, prose, drivers, connection
|
|
376
|
+
strings, empty files, generated/vendor content, and database images are not
|
|
377
|
+
evidence.
|
|
378
|
+
|
|
379
|
+
The detector masks lexical noise and never connects to a database, executes
|
|
380
|
+
queries, applies migrations, reads credentials, or introspects schemas. Single-
|
|
381
|
+
quoted string values are masked, while double-quoted, backtick-quoted, and
|
|
382
|
+
bracket-quoted identifiers are preserved as internal neutral identifier tokens
|
|
383
|
+
for structural matching. It recognizes bounded statement families only when
|
|
384
|
+
structural tokens are present, and common CTE shapes, without claiming full
|
|
385
|
+
dialect parsing; PostgreSQL JSON operators such as `#>` and `#>>` remain SQL
|
|
386
|
+
tokens, not comments. ISO/IEC
|
|
387
|
+
9075:2023 is a portability reference; the actual engine and version govern
|
|
388
|
+
dialect behavior. See
|
|
389
|
+
ENG/sql-development-eng.md.
|
|
390
|
+
|
|
391
|
+
### `go` — Go development engineering
|
|
392
|
+
|
|
393
|
+
Activate for a valid bounded go.mod module or a go.work connected to known
|
|
394
|
+
repository-local modules. A go.work without a usable module, .go source alone,
|
|
395
|
+
go.sum, vendor metadata, Docker image, or setup-go CI step is insufficient.
|
|
396
|
+
The go minimum-version and toolchain directives remain distinct. Detection
|
|
397
|
+
resolves only known manifests and never runs Go, downloads modules, evaluates
|
|
398
|
+
build tags, or executes generators. `ignore` directives in `go.mod` are
|
|
399
|
+
retained as module metadata (including single and block forms); they do not
|
|
400
|
+
change project identity, and `go.work` does not accept them. See
|
|
401
|
+
ENG/go-development-eng.md.
|
|
402
|
+
|
|
403
|
+
### `typescript` — TypeScript development engineering
|
|
404
|
+
|
|
405
|
+
Activate for a valid bounded JSONC tsconfig.json. A custom tsconfig.*.json is
|
|
406
|
+
primary only when directly claimed or referenced by a confirmed config.
|
|
407
|
+
jsconfig.json, .ts snippets, declaration files, compiler dependencies, and CI
|
|
408
|
+
compiler setup are not TypeScript project identity. `extends` may be a string
|
|
409
|
+
or array; local shared configs route claims to their consuming configs and do
|
|
410
|
+
not become independent roots merely because they are named as bases. Local
|
|
411
|
+
references are checked only against discovered configs; the compiler and
|
|
412
|
+
config files are never executed.
|
|
413
|
+
|
|
414
|
+
TypeScript is runtime-neutral, so a co-located Node package may select both
|
|
415
|
+
typescript and nodejs. See ENG/typescript-development-eng.md.
|
|
416
|
+
|
|
417
|
+
### `php` — PHP development engineering
|
|
418
|
+
|
|
419
|
+
Activate for a valid bounded composer.json with package/require/autoload
|
|
420
|
+
identity or a direct claim to executable PHP source. Composer lockfiles,
|
|
421
|
+
vendor, PHP version strings, Docker/CI setup, static HTML, and README examples
|
|
422
|
+
are not enough. Composer scripts/plugins, PHP, autoload generation, and
|
|
423
|
+
network resolution are never run. PHP extension roots may compose with C.
|
|
424
|
+
strict_types remains a per-file call-site rule. See ENG/php-development-eng.md.
|
|
425
|
+
|
|
426
|
+
### `swift` — Swift development engineering
|
|
427
|
+
|
|
428
|
+
Activate for a valid Package.swift tools-version/PackageDescription/Package
|
|
429
|
+
structure with Swift target evidence, explicit Swift in CMake/Meson, bounded
|
|
430
|
+
Xcode Swift markers, or a direct .swift claim. A direct Package.swift claim
|
|
431
|
+
also selects Swift guidance for a native-only package manifest. Package.resolved,
|
|
432
|
+
vendor/generated source, Docker/CI setup, and package execution are not
|
|
433
|
+
evidence. Invalid Package.swift files contribute no SwiftPM-derived C/C++
|
|
434
|
+
composition. SwiftPM may compose Swift with C or C++ at one root. Swift
|
|
435
|
+
`mobile-ui` work remains executable Swift work. Swift 6.3 is the stable
|
|
436
|
+
reference snapshot; beta documentation is not an automatic target.
|
|
437
|
+
See ENG/swift-development-eng.md.
|
|
438
|
+
|
|
439
|
+
### `rust` — Rust development engineering
|
|
440
|
+
|
|
441
|
+
**Activate when:** a confirmed project root has a bounded, structurally parsed
|
|
442
|
+
`Cargo.toml` with a valid `[package]` and/or `[workspace]` table, and the task
|
|
443
|
+
scope intersects that root. A package workspace and a virtual workspace are
|
|
444
|
+
both valid when the virtual workspace has at least one resolvable package
|
|
445
|
+
member; an empty or unresolved virtual workspace fails closed. A virtual
|
|
446
|
+
workspace contributes its confirmed package members as public project roots. A
|
|
447
|
+
package workspace may contain both tables, but `package.workspace` is mutually
|
|
448
|
+
exclusive with `[workspace]` and associates a package with another workspace.
|
|
449
|
+
|
|
450
|
+
**Do not activate merely because:** a `.rs` file, `Cargo.lock`,
|
|
451
|
+
`rust-toolchain`/`rust-toolchain.toml`, `.cargo/config.toml`, rustfmt or Clippy
|
|
452
|
+
configuration, a Tokio/Axum/Actix/other dependency name, a Dockerfile, CI
|
|
453
|
+
toolchain setup, or repository prose exists. `target/` and `vendor/` are
|
|
454
|
+
ignored. Build scripts, proc-macro crates, generated code, and native tooling
|
|
455
|
+
remain runtime/build context rather than a replacement for Cargo identity.
|
|
456
|
+
|
|
457
|
+
Cargo inheritance such as `package.edition.workspace = true` and
|
|
458
|
+
`package.rust-version.workspace = true` is accepted as package metadata;
|
|
459
|
+
`[workspace.package]` may enrich supporting signals. Workspace membership uses
|
|
460
|
+
only known discovered manifests and bounded `members`/`exclude` patterns: `*`
|
|
461
|
+
and `?` stay within one path segment, `**` may cross segments, and absolute or
|
|
462
|
+
parent-directory escape paths are rejected. Local package `path` dependencies
|
|
463
|
+
and explicitly used inherited workspace dependencies can associate a known
|
|
464
|
+
package with a workspace, while `[workspace.dependencies]` declarations alone
|
|
465
|
+
do not create active dependency edges. A valid `package.workspace` association
|
|
466
|
+
may point to a known workspace outside the package's directory subtree, but not
|
|
467
|
+
outside the repository; no additional traversal is triggered.
|
|
468
|
+
|
|
469
|
+
**Usually combine with:** `clean` and `test`; add `security` for unsafe/FFI,
|
|
470
|
+
untrusted input, secrets, dependencies, external services, or publication;
|
|
471
|
+
add `performance` for measured CPU, memory, latency, allocation, executor,
|
|
472
|
+
queue, or I/O work; add `documentation` when public APIs, configuration, or
|
|
473
|
+
operational contracts change.
|
|
474
|
+
|
|
475
|
+
The route command obtains this evidence from
|
|
476
|
+
`src/core/project-detection.js` and the conservative TOML recognizer in
|
|
477
|
+
`src/core/rust-project.js`. It performs bounded, non-symlinked discovery and
|
|
478
|
+
manifest reads, never runs Cargo or source code, and treats `Cargo.toml` as
|
|
479
|
+
primary evidence while edition, MSRV, resolver, features, dependencies,
|
|
480
|
+
lockfiles, toolchains, and configuration are supporting signals. Explicit
|
|
481
|
+
workspace members/excludes, nested workspaces, and confirmed Flutter, .NET,
|
|
482
|
+
Node.js, and Rust roots constrain claims and shared-file ownership. `Cargo.lock`
|
|
483
|
+
and configuration files apply only to their owning package/workspace scope; a
|
|
484
|
+
parent cannot absorb a child's shared file merely because its path is a
|
|
485
|
+
descendant.
|
|
486
|
+
|
|
487
|
+
Rust has no Node-style LTS channel. Keep active toolchain, MSRV
|
|
488
|
+
(`package.rust-version`), edition, and compilation target separate, and use
|
|
489
|
+
version-matched official Rust and Cargo documentation. Current stable is a
|
|
490
|
+
dated observation, not a universal migration target.
|
|
491
|
+
|
|
492
|
+
```bash
|
|
493
|
+
rg -n '^## |Cargo|toolchain|MSRV|edition|ownership|async|unsafe|FFI|security|testing|release|Definition of Done' ENG/rust-development-eng.md
|
|
494
|
+
```
|
|
495
|
+
|
|
496
|
+
**Expected evidence:** a confirmed affected Cargo package or workspace, a
|
|
497
|
+
scoped route, compatible toolchain/MSRV/edition/target decisions, focused plus
|
|
498
|
+
workspace checks, explicit resource and trust controls, and honest
|
|
499
|
+
`NOT_VERIFIED` reporting for unavailable Rust targets or toolchains.
|
|
500
|
+
|
|
225
501
|
## Work-type matrix
|
|
226
502
|
|
|
227
503
|
| Work | Primary guide | Common complements | Exclude when |
|
|
@@ -232,6 +508,16 @@ rg -n '^## |architecture|testing|performance|accessibility|platform|release|Flut
|
|
|
232
508
|
| Backend, API, or data | `clean` | `test`, `security`; `performance` for a critical path | That layer does not exist |
|
|
233
509
|
| Web, mobile, or desktop UI | `design` | `accessibility`, `clean`, `test`; risk defines the rest | Users cannot observe the change |
|
|
234
510
|
| Flutter application | `flutter` | `clean`, `test`; add `design`, `accessibility`, `security`, or `performance` as applicable | No primary Flutter SDK dependency in the affected project scope |
|
|
511
|
+
| .NET / ASP.NET Core application | `dotnet` | `clean`, `test`; add `security`, `performance`, `documentation`, or UI guides as applicable | No supported SDK-style .NET project in the affected project scope |
|
|
512
|
+
| Node.js backend, API, worker, or server runtime | `nodejs` | `clean`, `test`; add `security`, `performance`, or `documentation` as applicable | No primary Node.js backend/runtime evidence in the affected project scope |
|
|
513
|
+
| Rust application, service, library, or worker | `rust` | `clean`, `test`; add `security`, `performance`, or `documentation` as applicable | No valid Cargo package/workspace in the affected project scope |
|
|
514
|
+
| C or C++ native project | `c`, `cpp` | `clean`, `test`; add `security`, `performance`, or `documentation` as applicable | No explicit/owned native implementation evidence |
|
|
515
|
+
| Java service, library, or worker | `java` | `clean`, `test`; add `security`, `performance`, or `documentation` as applicable | No structural Java build/source evidence |
|
|
516
|
+
| Go module, service, or worker | `go` | `clean`, `test`; add `security`, `performance`, or `documentation` as applicable | No valid discovered Go module/workspace |
|
|
517
|
+
| TypeScript project | `typescript` | `clean`, `test`; add `security`, `performance`, or `documentation` as applicable | No valid or referenced tsconfig project |
|
|
518
|
+
| PHP application, package, or worker | `php` | `clean`, `test`; add `security`, `performance`, or `documentation` as applicable | No Composer or scoped executable PHP evidence |
|
|
519
|
+
| Swift application, package, or service | `swift` | `clean`, `test`; add `security`, `performance`, or `documentation` as applicable | No SwiftPM/Xcode/build/source evidence |
|
|
520
|
+
| SQL schema, query, or migration | `sql` | `clean`, `test`, `security`; add `performance` for measured query/migration risk | No meaningful owned SQL artifact |
|
|
235
521
|
| Complete website | `premium` | `design`, `accessibility`, `clean`, `test`, `security`, `performance` | The deliverable is not a complete site |
|
|
236
522
|
| Web game | `games` | `clean`, `test`, `security`, `performance`, `accessibility`; `design` with UI | The product is not a game |
|
|
237
523
|
| HTML video or motion | `design` | `accessibility`, `performance`, `test`, `security` | There is no audiovisual composition |
|
|
@@ -265,26 +551,61 @@ The first routing contract is versioned as `schemaVersion: 1`. It accepts:
|
|
|
265
551
|
- optional boolean `behaviorChange` and `executableChange` signals.
|
|
266
552
|
- optional `projectEvidence` with a schema version, a scope result, detected
|
|
267
553
|
framework IDs, affected project roots, primary signals, and supporting
|
|
268
|
-
signals. The current framework
|
|
269
|
-
|
|
554
|
+
signals. The current framework IDs are `flutter`, `dotnet`, `aspnetcore`,
|
|
555
|
+
`abp`, `nodejs`, `rust`, `c`, `cpp`, `java`, `sql`, `go`, `typescript`,
|
|
556
|
+
`php`, and `swift`. Flutter's primary signal is an affected
|
|
557
|
+
`dependencies.flutter.sdk: flutter` entry in `pubspec.yaml`. .NET's primary
|
|
558
|
+
signal is a supported SDK-style project manifest; ASP.NET Core and ABP are
|
|
559
|
+
structural overlays. Node.js primary signals are an allowlisted runtime
|
|
560
|
+
dependency, direct Node runtime script, or narrow server-builtin source
|
|
561
|
+
import in a valid `package.json` project. The C/C++, Java, Go, TypeScript,
|
|
562
|
+
PHP, and Swift specialists use bounded structural build/config or owned
|
|
563
|
+
source evidence; SQL is a bounded owned-file overlay. Rust's primary
|
|
564
|
+
signals are a valid structural `[package]` and/or `[workspace]` table in
|
|
565
|
+
`Cargo.toml`; Rust source, lockfiles, toolchain files, and dependencies
|
|
566
|
+
are supporting context.
|
|
270
567
|
|
|
271
568
|
Rule precedence is deterministic: the work type establishes the primary
|
|
272
569
|
closure; affected surfaces add mandatory complements; risks add security,
|
|
273
570
|
performance, or accessibility; executable/behavior changes add clean and
|
|
274
571
|
test; required rules win over optional exclusions; and the evaluator preserves
|
|
275
572
|
canonical insertion order. A matching Flutter project adds `flutter` plus the
|
|
276
|
-
`clean`/`test` baseline before ordinary work-type complements; documentation
|
|
277
|
-
and UI-copy work do not activate the specialist.
|
|
278
|
-
|
|
573
|
+
`clean`/`test` baseline before ordinary work-type complements; documentation
|
|
574
|
+
and UI-copy work do not activate the specialist. A matching .NET project adds
|
|
575
|
+
`dotnet` plus the `clean`/`test` baseline and records ASP.NET Core/ABP reasons
|
|
576
|
+
on that guide. A matching Node.js project adds `nodejs` plus the `clean`/`test`
|
|
577
|
+
baseline and records `PROJECT_NODEJS_CONFIRMED`; dependency, direct-script,
|
|
578
|
+
and server-runtime reasons are optional enrichments when the corresponding
|
|
579
|
+
primary signals are present. A matching Rust project adds `rust` plus the
|
|
580
|
+
`clean`/`test` baseline and records `PROJECT_RUST_CONFIRMED`; package and
|
|
581
|
+
workspace roles are optional reason enrichments. The public `frameworks` field remains the
|
|
582
|
+
authority for the confirmed framework; the router does not reverse-engineer
|
|
583
|
+
Node selection from private signal substrings. Unknown or duplicate signals
|
|
584
|
+
fail with a routing error.
|
|
279
585
|
|
|
280
586
|
Every selected guide has stable reason codes such as
|
|
281
587
|
`WORK_COMPLETE_WEBSITE`, `SURFACE_UI`, `RISK_UNTRUSTED_INPUT`, and
|
|
282
588
|
`CHANGE_EXECUTABLE_CONFIG`. Exclusions use stable codes such as
|
|
283
589
|
`NO_TRUST_BOUNDARY`, `NO_MEASURABLE_PERFORMANCE_RISK`, and
|
|
284
|
-
`NO_DOCUMENTATION_SURFACE`. Flutter uses
|
|
285
|
-
`PROJECT_FLUTTER_SDK_DEPENDENCY`, `PROJECT_FLUTTER_BASELINE`,
|
|
286
|
-
`NO_FLUTTER_PRIMARY_EVIDENCE`, `NO_FLUTTER_SCOPE_MATCH`, and
|
|
287
|
-
`NO_FLUTTER_EXECUTABLE_WORK`.
|
|
590
|
+
`NO_DOCUMENTATION_SURFACE`. Flutter uses
|
|
591
|
+
`PROJECT_FLUTTER_SDK_DEPENDENCY`, `PROJECT_FLUTTER_BASELINE`,
|
|
592
|
+
`NO_FLUTTER_PRIMARY_EVIDENCE`, `NO_FLUTTER_SCOPE_MATCH`, and
|
|
593
|
+
`NO_FLUTTER_EXECUTABLE_WORK`.
|
|
594
|
+
Node.js uses `PROJECT_NODEJS_CONFIRMED`,
|
|
595
|
+
`PROJECT_NODEJS_BACKEND_FRAMEWORK`,
|
|
596
|
+
`PROJECT_NODEJS_RUNTIME_SCRIPT`, `PROJECT_NODEJS_SERVER_RUNTIME`,
|
|
597
|
+
`PROJECT_NODEJS_BASELINE`, `NO_NODEJS_PRIMARY_EVIDENCE`,
|
|
598
|
+
`NO_NODEJS_SCOPE_MATCH`, and `NO_NODEJS_EXECUTABLE_WORK`. Rust uses
|
|
599
|
+
`PROJECT_RUST_CONFIRMED`, `PROJECT_RUST_CARGO_PACKAGE`,
|
|
600
|
+
`PROJECT_RUST_CARGO_WORKSPACE`, `PROJECT_RUST_BASELINE`,
|
|
601
|
+
`NO_RUST_PRIMARY_EVIDENCE`, `NO_RUST_SCOPE_MATCH`, and
|
|
602
|
+
`NO_RUST_EXECUTABLE_WORK`.
|
|
603
|
+
|
|
604
|
+
The .NET specialist uses `PROJECT_DOTNET_SDK_PROJECT` and
|
|
605
|
+
`PROJECT_DOTNET_BASELINE`; confirmed ASP.NET Core and ABP overlays add
|
|
606
|
+
`PROJECT_ASPNETCORE_CONFIRMED` and `PROJECT_ABP_CONFIRMED`. Exclusions are
|
|
607
|
+
`NO_DOTNET_PROJECT_EVIDENCE`, `NO_DOTNET_SCOPE_MATCH`,
|
|
608
|
+
`NO_DOTNET_PRIMARY_EVIDENCE`, and `NO_DOTNET_EXECUTABLE_WORK`.
|
|
288
609
|
|
|
289
610
|
Platform signals are contextual, not automatic guide activators:
|
|
290
611
|
|
|
@@ -309,8 +630,63 @@ Negative routing guarantees:
|
|
|
309
630
|
- a backend refactor does not activate `design` or `accessibility`;
|
|
310
631
|
- static UI copy does not activate `security` without a trust-boundary signal;
|
|
311
632
|
- a package file alone does not prove that Node is an affected task surface;
|
|
633
|
+
- a valid `package.json` without an allowlisted runtime dependency, direct Node
|
|
634
|
+
runtime script, or narrow server-builtin import from a plausible runtime
|
|
635
|
+
surface does not activate `nodejs`;
|
|
636
|
+
- React/Vite, Next-only, engines-only, `@types/node`-only, devDependency-only,
|
|
637
|
+
lockfile-only, Docker-only, and CI-only evidence does not activate `nodejs`;
|
|
638
|
+
- Node.js detection does not execute package scripts, import source, install
|
|
639
|
+
dependencies, follow symlinks, read unbounded files, or make network calls;
|
|
640
|
+
- comments, template text, `import type`/`export type`, inline type-only
|
|
641
|
+
specifiers, declaration files, tooling/configuration files, and
|
|
642
|
+
test/fixture/example/documentation/build/script/tool/codegen/cache directories
|
|
643
|
+
do not create Node.js runtime evidence;
|
|
644
|
+
- a `MATCH` or `UNSCOPED` public `projectEvidence` object whose frameworks
|
|
645
|
+
include `nodejs` selects the Node.js guide for executable work even when its
|
|
646
|
+
primary signal list is empty; signal details only enrich the reason list;
|
|
647
|
+
- a workspace root may scope confirmed Node descendants, but a frontend or
|
|
648
|
+
unrelated nested package remains isolated, and nested project boundaries are
|
|
649
|
+
applied consistently to Flutter, .NET, Node source scans, claims, and shared
|
|
650
|
+
files;
|
|
651
|
+
- documentation, UI-copy, and mobile-only work do not activate the Node.js
|
|
652
|
+
specialist even when the repository contains a confirmed Node package;
|
|
312
653
|
- `flutter_test`, a Flutter word in documentation, or a lockfile package does
|
|
313
654
|
not replace the primary Flutter SDK dependency signal;
|
|
655
|
+
- a .NET word in documentation, a `Dockerfile`, `project.assets.json`, a
|
|
656
|
+
package-lock file, or an arbitrary package name does not activate `dotnet`;
|
|
657
|
+
- a standalone `aspnetcore` or `abp` project-evidence overlay is invalid;
|
|
658
|
+
- a worker or library SDK selects the .NET specialist without claiming it is
|
|
659
|
+
an ASP.NET Core application; web/Razor/Blazor SDK or framework-reference
|
|
660
|
+
evidence is required for the ASP.NET Core reason;
|
|
661
|
+
- a malformed, oversized, unsupported, or non-SDK-style project manifest does
|
|
662
|
+
not provide primary .NET evidence;
|
|
663
|
+
- ABP guidance is not added for a plain ASP.NET Core project without a
|
|
664
|
+
structural `Volo.Abp.*` package reference;
|
|
665
|
+
- a shared MSBuild/NuGet file does not activate unrelated projects outside its
|
|
666
|
+
directory scope, and a solution claim does not activate non-members;
|
|
667
|
+
- a `.rs` file, `Cargo.lock`, Rust toolchain/configuration file, or Rust
|
|
668
|
+
dependency name does not replace a valid Cargo package/workspace manifest;
|
|
669
|
+
- a C/C++ header, Makefile, compiler image, or generic native build file does
|
|
670
|
+
not replace explicit language or owned implementation evidence;
|
|
671
|
+
- a Java POM/Gradle wrapper, Go source or go.sum, jsconfig, Composer lockfile,
|
|
672
|
+
Package.resolved, or generic build metadata alone does not establish the
|
|
673
|
+
corresponding specialist;
|
|
674
|
+
- SQL is selected only from a meaningful claimed or owned migration/schema
|
|
675
|
+
artifact and overlays the host project; comments, strings, and credentials
|
|
676
|
+
are never evidence;
|
|
677
|
+
- build/package/compiler tools are never executed during project detection,
|
|
678
|
+
and all eight language specialists preserve bounded reads, traversal, and
|
|
679
|
+
same-root composition;
|
|
680
|
+
- a virtual workspace root is not exposed as a public package root, excluded
|
|
681
|
+
workspace members remain out of an explicit workspace claim, and nested
|
|
682
|
+
Cargo workspaces remain ownership boundaries;
|
|
683
|
+
- Rust shared files (`Cargo.lock`, toolchain, `.cargo/config*`, rustfmt, and
|
|
684
|
+
Clippy configuration) apply only to their owning package/workspace scope;
|
|
685
|
+
- a `MATCH` or `UNSCOPED` public `projectEvidence` object whose frameworks
|
|
686
|
+
include `rust` selects the Rust guide for executable work even when its
|
|
687
|
+
primary signal list is empty; public framework identity is authoritative;
|
|
688
|
+
- documentation and UI-copy work do not activate the Rust specialist even
|
|
689
|
+
when the repository contains a confirmed Cargo project;
|
|
314
690
|
- an unrelated monorepo project does not activate Flutter when task claims do
|
|
315
691
|
not intersect its confirmed project root; nested project roots remain isolated;
|
|
316
692
|
- an explicit executable-change signal adds `clean` and `test` even when the
|
|
@@ -365,6 +741,39 @@ the task claim reaches that project, and cover widget/state behavior, platform
|
|
|
365
741
|
integration, accessibility, performance, and release checks according to the
|
|
366
742
|
changed surface. Supporting signals alone must leave `flutter` excluded.
|
|
367
743
|
|
|
744
|
+
### .NET / ASP.NET Core application feature
|
|
745
|
+
|
|
746
|
+
<!-- route:dotnet-app-feature=dotnet,clean,test -->
|
|
747
|
+
|
|
748
|
+
Verify the affected project uses a supported SDK-style .NET manifest, confirm
|
|
749
|
+
the claim scope or exact solution membership, and cover DI lifetimes, pipeline
|
|
750
|
+
ordering, endpoint contracts, validation, authorization, cancellation, data
|
|
751
|
+
access, observability, and integration behavior according to the changed
|
|
752
|
+
surface. A worker/library project remains on the same specialist guide but
|
|
753
|
+
does not receive an ASP.NET Core claim without structural web evidence.
|
|
754
|
+
|
|
755
|
+
### Node.js backend feature
|
|
756
|
+
|
|
757
|
+
<!-- route:nodejs-backend-feature=nodejs,clean,test -->
|
|
758
|
+
|
|
759
|
+
Verify the affected package has primary Node.js evidence, confirm the claim
|
|
760
|
+
reaches the correct package root or workspace descendant, and cover runtime and
|
|
761
|
+
module-system compatibility, input/configuration validation, authentication and
|
|
762
|
+
authorization, middleware order, timeouts/cancellation, persistence and
|
|
763
|
+
external-service boundaries, observability, shutdown, and adversarial tests.
|
|
764
|
+
Supporting package metadata and lockfiles alone must leave `nodejs` excluded.
|
|
765
|
+
|
|
766
|
+
### Rust application feature
|
|
767
|
+
|
|
768
|
+
<!-- route:rust-app-feature=rust,clean,test -->
|
|
769
|
+
|
|
770
|
+
Verify the affected `Cargo.toml` contains a valid `[package]` or `[workspace]`
|
|
771
|
+
table, confirm the claim reaches the correct package/workspace scope, and
|
|
772
|
+
cover toolchain/MSRV/edition/target compatibility, ownership and cancellation,
|
|
773
|
+
resource limits, unsafe/FFI/dependency boundaries, focused tests, and the
|
|
774
|
+
workspace checks required by the repository. Cargo metadata and Rust tooling
|
|
775
|
+
files alone must leave `rust` excluded.
|
|
776
|
+
|
|
368
777
|
## Route changes
|
|
369
778
|
|
|
370
779
|
If investigation reveals a new surface, update the guide set before editing that area. Record only the concise reason; do not create a versioned task log.
|
package/QUALITY_SCORECARD.md
CHANGED
|
@@ -95,6 +95,7 @@ are both present:
|
|
|
95
95
|
| --- | --- | --- |
|
|
96
96
|
| Routing | `src/core/router.js`, route schemas, stable reason codes, and exclusions | `tests/router.test.js`, `tests/fixtures/routes/` |
|
|
97
97
|
| Flutter project detection and routing | `src/core/project-detection.js`, `src/core/router.js`, `src/config/guides.json`, and scoped manifest evidence | `tests/project-detection.test.js`, `tests/guide-registry.test.js`, `tests/router.test.js` |
|
|
98
|
+
| Rust project detection and routing | `src/core/project-detection.js`, `src/core/rust-project.js`, `src/core/router.js`, `src/config/guides.json`, and scoped Cargo evidence | `tests/rust-project-detection.test.js`, `tests/guide-registry.test.js`, `tests/router.test.js` |
|
|
98
99
|
| Observability | `src/core/receipt.js`, `src/core/inspect.js`, `src/core/evidence.js`, and schema health | `tests/observability.test.js`, `tests/receipt-semantics.test.js`, `tests/schema-health.test.js` |
|
|
99
100
|
| Resume/checkpoint | `src/core/work-state.js`, `EXECUTION_STATE.md`, shared loaded-state classifier, contract/artifact classifiers, and atomic writes | `tests/work-state.test.js`, `tests/checkpoint-freshness.test.js`, status, validate-state, and validate-protocol tests |
|
|
100
101
|
| Delegation | `src/core/delegation.js`, delegation-set validator, and `DELEGATION_PROTOCOL.md` | `tests/delegation.test.js`, `tests/delegation-set.test.js` |
|
package/README.md
CHANGED
|
@@ -6,29 +6,26 @@
|
|
|
6
6
|
|
|
7
7
|
[](https://github.com/cassiomc1/forgeloop/actions/workflows/codeql.yml)
|
|
8
8
|
[](https://github.com/cassiomc1/forgeloop/actions/workflows/dependency-review.yml)
|
|
9
|
-
[](https://github.com/cassiomc1/forgeloop/actions/workflows/docs-quality.yml)
|
|
10
9
|
[](https://github.com/cassiomc1/forgeloop/actions/workflows/forgeloop-audit.yml)
|
|
11
10
|
[](https://github.com/cassiomc1/forgeloop/actions/workflows/npm-publish.yml)
|
|
12
11
|
[](https://github.com/cassiomc1/forgeloop/actions/workflows/package-smoke.yml)
|
|
13
12
|
[](https://github.com/cassiomc1/forgeloop/actions/workflows/release-notes.yml)
|
|
14
13
|
|
|
15
|
-
ForgeLoop is a
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
It is a protocol CLI, not an agent or LLM runtime, framework, or graph orchestrator.
|
|
14
|
+
ForgeLoop is a protocol CLI for AI-assisted development.
|
|
15
|
+
It turns outcomes into contracts, deterministic routing, resumable state,
|
|
16
|
+
evidence-backed verification, recovery, cross-harness continuity, repository
|
|
17
|
+
discovery, and validator-backed completion—not an agent or LLM runtime.
|
|
20
18
|
|
|
21
|
-
|
|
22
|
-
[`LOOP_ENGINEERING.md`](./LOOP_ENGINEERING.md) is
|
|
23
|
-
[`PROTOCOL_INTEGRATION.md`](./PROTOCOL_INTEGRATION.md) defines
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
relevant guides.
|
|
19
|
+
Operational sources are indexed in [`DOCS_INDEX.md`](./DOCS_INDEX.md).
|
|
20
|
+
[`LOOP_ENGINEERING.md`](./LOOP_ENGINEERING.md) is canonical;
|
|
21
|
+
[`PROTOCOL_INTEGRATION.md`](./PROTOCOL_INTEGRATION.md) defines discovery,
|
|
22
|
+
[`PROJECT_PROFILE.md`](./PROJECT_PROFILE.md) stores project facts, and
|
|
23
|
+
[`GUIDE_ROUTER.md`](./GUIDE_ROUTER.md) selects relevant guides.
|
|
27
24
|
|
|
28
25
|
## Where should I start?
|
|
29
26
|
|
|
30
27
|
- **New to ForgeLoop** → [`docs/GETTING_STARTED.md`](./docs/GETTING_STARTED.md)
|
|
31
|
-
- **Inspect a real ForgeLoop execution** → [
|
|
28
|
+
- **Inspect a real ForgeLoop execution** → [repository PoC](https://github.com/cassiomc1/forgeloop/blob/main/poc/README.md)
|
|
32
29
|
- **Full protocol specification** → [`LOOP_ENGINEERING.md`](./LOOP_ENGINEERING.md)
|
|
33
30
|
- **Integrating an AI harness** → [`PROTOCOL_INTEGRATION.md`](./PROTOCOL_INTEGRATION.md)
|
|
34
31
|
- **Optional advisory context providers** → [`docs/ADVISORY_CONTEXT.md`](./docs/ADVISORY_CONTEXT.md)
|
|
@@ -45,13 +42,13 @@ relevant guides.
|
|
|
45
42
|
|
|
46
43
|
## Real execution proof
|
|
47
44
|
|
|
48
|
-
|
|
45
|
+
The repository-only [execution PoC](https://github.com/cassiomc1/forgeloop/blob/main/poc/README.md) covers workload, protocol
|
|
49
46
|
artifacts, trusted provenance, receipts, evidence, and audit. It reached
|
|
50
47
|
validator-backed `COMPLETE / VALID` and preserves a later
|
|
51
48
|
`E_RECEIPT_PATH_MISMATCH` after publication changed the repository.
|
|
52
49
|
|
|
53
|
-
- [Canonical technical audit](
|
|
54
|
-
- [Evidence package](
|
|
50
|
+
- [Canonical technical audit](https://github.com/cassiomc1/forgeloop/blob/main/poc/reports/poc-20260826-real-execution-technical-audit-v2.md)
|
|
51
|
+
- [Evidence package](https://github.com/cassiomc1/forgeloop/tree/main/poc/evidence/poc-20260826-real-execution/)
|
|
55
52
|
|
|
56
53
|
## Catalog
|
|
57
54
|
|
|
@@ -68,13 +65,24 @@ validator-backed `COMPLETE / VALID` and preserves a later
|
|
|
68
65
|
| Web games | [`ENG/games-code-design-web-eng.md`](./ENG/games-code-design-web-eng.md) |
|
|
69
66
|
| Documentation quality | [`ENG/documentation-quality-eng.md`](./ENG/documentation-quality-eng.md) |
|
|
70
67
|
| Flutter | [guide](./ENG/flutter-development-eng.md) |
|
|
68
|
+
| .NET and ASP.NET Core | [guide](./ENG/dotnet-aspnetcore-development-eng.md) |
|
|
69
|
+
| Node.js | [guide](./ENG/nodejs-backend-development-eng.md) |
|
|
70
|
+
| Rust | [guide](./ENG/rust-development-eng.md) |
|
|
71
|
+
| C | [guide](./ENG/c-development-eng.md) |
|
|
72
|
+
| C++ | [guide](./ENG/cpp-development-eng.md) |
|
|
73
|
+
| Java | [guide](./ENG/java-development-eng.md) |
|
|
74
|
+
| SQL | [guide](./ENG/sql-development-eng.md) |
|
|
75
|
+
| Go | [guide](./ENG/go-development-eng.md) |
|
|
76
|
+
| TypeScript | [guide](./ENG/typescript-development-eng.md) |
|
|
77
|
+
| PHP | [guide](./ENG/php-development-eng.md) |
|
|
78
|
+
| Swift | [guide](./ENG/swift-development-eng.md) |
|
|
71
79
|
| Structural quality feedback | [`docs/STRUCTURAL_QUALITY.md`](./docs/STRUCTURAL_QUALITY.md) |
|
|
72
80
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
81
|
+
Routing uses bounded structural evidence for Flutter, .NET, Node.js, Rust, C,
|
|
82
|
+
C++, Java, Go, TypeScript, PHP, and Swift; SQL is a scoped schema/query/
|
|
83
|
+
migration overlay. Source extensions, build tooling, lockfiles, compiler/JDK/
|
|
84
|
+
runtime images, and prose alone fail where the specialist contract requires
|
|
85
|
+
stronger project identity. The public project-evidence schema remains v1.
|
|
78
86
|
|
|
79
87
|
## Quickstart
|
|
80
88
|
|
|
@@ -458,9 +466,13 @@ and [visual review](./docs/diagrams/reviews/forgeloop-code-attestation-flow.revi
|
|
|
458
466
|
show exact content binding, optional signing, and separate revision-range
|
|
459
467
|
coverage.
|
|
460
468
|
|
|
461
|
-
Text-only fallback: discovery creates the contract and route; parsed
|
|
462
|
-
|
|
463
|
-
|
|
469
|
+
Text-only fallback: discovery creates the contract and route; parsed project
|
|
470
|
+
manifests/build metadata select the corresponding language specialist; owned
|
|
471
|
+
SQL migrations overlay their host project; parsed
|
|
472
|
+
`dependencies.flutter.sdk: flutter` selects Flutter for that root; a supported
|
|
473
|
+
SDK-style manifest selects .NET; parsed `[package]` or `[workspace]` in
|
|
474
|
+
`Cargo.toml` selects Rust for that root; ASP.NET Core and ABP remain .NET
|
|
475
|
+
overlays. Routing is not verification/completion evidence. Gates and
|
|
464
476
|
`PREFLIGHT_READY` authorize execution; verification creates
|
|
465
477
|
structured evidence; failures enter diagnosis and correction; review precedes
|
|
466
478
|
validator-backed completion. Drift reopens verification, and migration keeps
|
|
@@ -504,16 +516,15 @@ it must not infer current ownership from `task.json` or `recovery.json` alone.
|
|
|
504
516
|
|
|
505
517
|
## Security and dependency boundary
|
|
506
518
|
|
|
507
|
-
|
|
508
|
-
plugins,
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
519
|
+
Runtime uses Node built-ins and approved exact `smol-toml`; it installs no
|
|
520
|
+
agents, providers, plugins, services, or telemetry. Paths, symlinks, JSON,
|
|
521
|
+
manifests, schemas, receipts, and secret-like values are bounded or checked.
|
|
522
|
+
Install-capable verification requires trusted host authority; see
|
|
523
|
+
[`THREAT_MODEL.md`](./THREAT_MODEL.md).
|
|
512
524
|
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
is vendored at `vendor/archify/v2.15.0/` rather than installed as a package.
|
|
525
|
+
c8, ESLint, TypeScript, and YAML remain development-only. The dependency
|
|
526
|
+
policy rejects unapproved runtime or development dependencies. Archify is
|
|
527
|
+
vendored at `vendor/archify/v2.15.0/` rather than installed as a package.
|
|
517
528
|
|
|
518
529
|
To report vulnerabilities or contribute changes, see
|
|
519
530
|
[`SECURITY.md`](./SECURITY.md) and [`CONTRIBUTING.md`](./CONTRIBUTING.md).
|