@cassiomc1/forgeloop 1.11.1 → 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/flutter-development-eng.md +2106 -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 +455 -4
- package/LOOP_SYSTEM_DESIGN.md +10 -6
- package/QUALITY_SCORECARD.md +2 -0
- package/README.md +50 -38
- 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/MCP.md +1 -1
- package/docs/PACKAGE_CONTENTS.md +29 -8
- package/docs/RECIPES.md +23 -0
- package/docs/RELEASE_CHECKLIST.md +51 -9
- package/docs/TROUBLESHOOTING.md +100 -2
- package/docs/assets/diagrams/forgeloop-engineering-flow.html +19 -6
- package/docs/assets/diagrams/forgeloop-engineering-flow.receipt.json +6 -6
- package/docs/assets/diagrams/forgeloop-engineering-flow.svg +5 -5
- package/docs/diagrams/forgeloop-engineering-flow.workflow.json +12 -2
- package/docs/diagrams/reviews/forgeloop-engineering-flow.review.json +3 -3
- 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 +14 -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/route.js +5 -0
- package/src/commands/task-create.js +84 -25
- package/src/commands/task-list.js +22 -2
- package/src/config/guides.json +48 -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 +2227 -0
- package/src/core/reconcile-closure.js +4 -1
- package/src/core/router.js +233 -7
- 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
|
@@ -52,6 +52,18 @@ project commands.
|
|
|
52
52
|
| `accessibility` | [Accessibility](./ENG/accessibility-eng.md) | WCAG, keyboard access, focus, semantics, and assistive technology |
|
|
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
|
+
| `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 |
|
|
55
67
|
|
|
56
68
|
## Domain rules
|
|
57
69
|
|
|
@@ -205,6 +217,287 @@ rg -n '^## |accuracy|completeness|Diátaxis|tutorial|how-to|reference|explanatio
|
|
|
205
217
|
|
|
206
218
|
**Expected evidence:** documentation purpose and audience are clear, factual claims are cross-checked against canonical project sources, changed documentation surfaces are complete, relevant examples/links/builds are validated when available, and unavailable required checks are recorded as `NOT_VERIFIED`.
|
|
207
219
|
|
|
220
|
+
### `flutter` — Flutter application engineering
|
|
221
|
+
|
|
222
|
+
**Activate when:** a confirmed project root has a structurally parsed `pubspec.yaml` with `dependencies.flutter.sdk: flutter`, and the task scope intersects that root. Once the root is confirmed, every claim under it matches, including lockfiles, localization/configuration files, source, tooling, and native platform configuration; confirmed nested project roots remain isolated. The guide then provides the Flutter-specific architecture, implementation, testing, performance, accessibility, platform integration, and release context.
|
|
223
|
+
|
|
224
|
+
**Do not activate merely because:** prose, Markdown, a lockfile, a transitive package name, an arbitrary directory name, a hosted package named `flutter`, or an unrelated monorepo project mentions Flutter. `flutter_test` and platform/source signals are supporting evidence only; they cannot replace the primary SDK dependency signal.
|
|
225
|
+
|
|
226
|
+
**Usually combine with:** `clean` and `test`; add `design`, `accessibility`, `security`, or `performance` when the affected surface or risk requires them.
|
|
227
|
+
|
|
228
|
+
The route command obtains this evidence from `src/core/project-detection.js`. It walks bounded, non-symlinked project manifests, parses dependency structure, and matches task write claims against confirmed project roots. An unscoped route can inspect all detected projects; an explicit claim that does not reach a Flutter project produces `NO_FLUTTER_SCOPE_MATCH` and does not activate the guide. Documentation and UI-copy exclusions remain routing decisions, not project-detection heuristics.
|
|
229
|
+
|
|
230
|
+
```bash
|
|
231
|
+
rg -n '^## |architecture|testing|performance|accessibility|platform|release|Flutter' ENG/flutter-development-eng.md
|
|
232
|
+
```
|
|
233
|
+
|
|
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.
|
|
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
|
+
|
|
208
501
|
## Work-type matrix
|
|
209
502
|
|
|
210
503
|
| Work | Primary guide | Common complements | Exclude when |
|
|
@@ -214,6 +507,17 @@ rg -n '^## |accuracy|completeness|Diátaxis|tutorial|how-to|reference|explanatio
|
|
|
214
507
|
| Code or bug without UI | `clean` | `test`; risk may add `security` or `performance` | The surface is unchanged |
|
|
215
508
|
| Backend, API, or data | `clean` | `test`, `security`; `performance` for a critical path | That layer does not exist |
|
|
216
509
|
| Web, mobile, or desktop UI | `design` | `accessibility`, `clean`, `test`; risk defines the rest | Users cannot observe the change |
|
|
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 |
|
|
217
521
|
| Complete website | `premium` | `design`, `accessibility`, `clean`, `test`, `security`, `performance` | The deliverable is not a complete site |
|
|
218
522
|
| Web game | `games` | `clean`, `test`, `security`, `performance`, `accessibility`; `design` with UI | The product is not a game |
|
|
219
523
|
| HTML video or motion | `design` | `accessibility`, `performance`, `test`, `security` | There is no audiovisual composition |
|
|
@@ -226,7 +530,9 @@ HyperFrames is optional and may be used only when requested or already available
|
|
|
226
530
|
The active agent may classify natural language, but it must pass declared
|
|
227
531
|
signals to the deterministic evaluator in `src/core/router.js`. The evaluator
|
|
228
532
|
does not parse natural language, call a model, or infer a stack from a word in
|
|
229
|
-
the repository.
|
|
533
|
+
the repository. `runRoute` may also pass `projectEvidence` from
|
|
534
|
+
`src/core/project-detection.js`; that evidence is produced by structural
|
|
535
|
+
manifest parsing and scope intersection, not by prose or model confidence.
|
|
230
536
|
|
|
231
537
|
The first routing contract is versioned as `schemaVersion: 1`. It accepts:
|
|
232
538
|
|
|
@@ -243,19 +549,63 @@ The first routing contract is versioned as `schemaVersion: 1`. It accepts:
|
|
|
243
549
|
- `platforms`: `web`, `mobile`, `desktop`, `server`, `ci`, or
|
|
244
550
|
`cross-platform`;
|
|
245
551
|
- optional boolean `behaviorChange` and `executableChange` signals.
|
|
552
|
+
- optional `projectEvidence` with a schema version, a scope result, detected
|
|
553
|
+
framework IDs, affected project roots, primary signals, and supporting
|
|
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.
|
|
246
567
|
|
|
247
568
|
Rule precedence is deterministic: the work type establishes the primary
|
|
248
569
|
closure; affected surfaces add mandatory complements; risks add security,
|
|
249
570
|
performance, or accessibility; executable/behavior changes add clean and
|
|
250
571
|
test; required rules win over optional exclusions; and the evaluator preserves
|
|
251
|
-
canonical insertion order.
|
|
252
|
-
|
|
572
|
+
canonical insertion order. A matching Flutter project adds `flutter` plus the
|
|
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.
|
|
253
585
|
|
|
254
586
|
Every selected guide has stable reason codes such as
|
|
255
587
|
`WORK_COMPLETE_WEBSITE`, `SURFACE_UI`, `RISK_UNTRUSTED_INPUT`, and
|
|
256
588
|
`CHANGE_EXECUTABLE_CONFIG`. Exclusions use stable codes such as
|
|
257
589
|
`NO_TRUST_BOUNDARY`, `NO_MEASURABLE_PERFORMANCE_RISK`, and
|
|
258
|
-
`NO_DOCUMENTATION_SURFACE`.
|
|
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`.
|
|
259
609
|
|
|
260
610
|
Platform signals are contextual, not automatic guide activators:
|
|
261
611
|
|
|
@@ -280,6 +630,65 @@ Negative routing guarantees:
|
|
|
280
630
|
- a backend refactor does not activate `design` or `accessibility`;
|
|
281
631
|
- static UI copy does not activate `security` without a trust-boundary signal;
|
|
282
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;
|
|
653
|
+
- `flutter_test`, a Flutter word in documentation, or a lockfile package does
|
|
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;
|
|
690
|
+
- an unrelated monorepo project does not activate Flutter when task claims do
|
|
691
|
+
not intersect its confirmed project root; nested project roots remain isolated;
|
|
283
692
|
- an explicit executable-change signal adds `clean` and `test` even when the
|
|
284
693
|
semantic work type is documentation.
|
|
285
694
|
|
|
@@ -323,6 +732,48 @@ Verify the game loop, authoritative server, reconciliation, input, assets, fallb
|
|
|
323
732
|
|
|
324
733
|
Verify Markdown, links, paths, commands, and examples.
|
|
325
734
|
|
|
735
|
+
### Flutter application feature
|
|
736
|
+
|
|
737
|
+
<!-- route:flutter-app-feature=flutter,clean,test -->
|
|
738
|
+
|
|
739
|
+
Verify the affected `pubspec.yaml` contains the Flutter SDK dependency, confirm
|
|
740
|
+
the task claim reaches that project, and cover widget/state behavior, platform
|
|
741
|
+
integration, accessibility, performance, and release checks according to the
|
|
742
|
+
changed surface. Supporting signals alone must leave `flutter` excluded.
|
|
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
|
+
|
|
326
777
|
## Route changes
|
|
327
778
|
|
|
328
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/LOOP_SYSTEM_DESIGN.md
CHANGED
|
@@ -242,7 +242,7 @@ presented as a completed protocol state.
|
|
|
242
242
|
|
|
243
243
|
### `ENG/*.md`
|
|
244
244
|
|
|
245
|
-
|
|
245
|
+
Eleven canonical guides cover:
|
|
246
246
|
|
|
247
247
|
- clean code;
|
|
248
248
|
- testing;
|
|
@@ -252,7 +252,9 @@ Nine canonical guides cover:
|
|
|
252
252
|
- accessibility;
|
|
253
253
|
- premium website production;
|
|
254
254
|
- web games;
|
|
255
|
-
- contextual frontend taste
|
|
255
|
+
- contextual frontend taste;
|
|
256
|
+
- technical documentation quality;
|
|
257
|
+
- Flutter application engineering.
|
|
256
258
|
|
|
257
259
|
Each guide has exact English frontmatter and a stable guide ID.
|
|
258
260
|
|
|
@@ -265,6 +267,7 @@ Records external provenance, trademarks, licenses, and reuse boundaries. It is r
|
|
|
265
267
|
| Work type | Guide set |
|
|
266
268
|
| --- | --- |
|
|
267
269
|
| Documentation | Related domain and documentation checks |
|
|
270
|
+
| Flutter application | `flutter` with `clean` and `test`; add surface-specific guides as needed |
|
|
268
271
|
| General code or bug fix | `clean`, `test`; add `security` or `performance` when the surface requires it |
|
|
269
272
|
| Backend, API, authentication, or data | `clean`, `test`, `security`; add `performance` for critical paths |
|
|
270
273
|
| Web, mobile, or desktop interface | `clean`, `test`, `design`, `accessibility`; add `security` and `performance` according to product risk |
|
|
@@ -418,7 +421,7 @@ The documentation workflow verifies:
|
|
|
418
421
|
|
|
419
422
|
- every file referenced by an adapter exists;
|
|
420
423
|
- repository-relative links resolve;
|
|
421
|
-
- exactly
|
|
424
|
+
- exactly eleven canonical English guides exist;
|
|
422
425
|
- guide IDs, filenames, frontmatter keys, and `language: en` match the catalog;
|
|
423
426
|
- no legacy language tree or bilingual metadata remains;
|
|
424
427
|
- all route contracts contain valid guide IDs;
|
|
@@ -428,14 +431,15 @@ The documentation workflow verifies:
|
|
|
428
431
|
- secrets and credential-like assignments are absent;
|
|
429
432
|
- `THIRD_PARTY_NOTICES.md` is present.
|
|
430
433
|
|
|
431
|
-
The validator also exercises
|
|
434
|
+
The validator also exercises seven routing scenarios:
|
|
432
435
|
|
|
433
436
|
1. premium landing page;
|
|
434
437
|
2. authenticated API;
|
|
435
438
|
3. bug fix without UI;
|
|
436
439
|
4. mobile app with UI;
|
|
437
440
|
5. multiplayer web game;
|
|
438
|
-
6. documentation-only change
|
|
441
|
+
6. documentation-only change;
|
|
442
|
+
7. Flutter application feature with a primary SDK dependency signal.
|
|
439
443
|
|
|
440
444
|
## Distribution
|
|
441
445
|
|
|
@@ -527,7 +531,7 @@ is orthogonal to lifecycle phases and does not authorize the receiving harness.
|
|
|
527
531
|
- The repository and its maintained content are English-only.
|
|
528
532
|
- Common project instruction surfaces and generic bootstrap mechanisms have a
|
|
529
533
|
documented entry into one canonical loop.
|
|
530
|
-
- The router selects every relevant guide and excludes irrelevant guides in the
|
|
534
|
+
- The router selects every relevant guide and excludes irrelevant guides in the seven defined scenarios.
|
|
531
535
|
- The profile contains verifiable facts, sources, and real commands without secrets.
|
|
532
536
|
- The loop requires evidence before completion claims and exits safely when blocked.
|
|
533
537
|
- Structural, Markdown, link, and secret checks pass locally and in CI.
|
package/QUALITY_SCORECARD.md
CHANGED
|
@@ -94,6 +94,8 @@ are both present:
|
|
|
94
94
|
| Dimension | Implementation evidence | Executable evidence |
|
|
95
95
|
| --- | --- | --- |
|
|
96
96
|
| Routing | `src/core/router.js`, route schemas, stable reason codes, and exclusions | `tests/router.test.js`, `tests/fixtures/routes/` |
|
|
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` |
|
|
97
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` |
|
|
98
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 |
|
|
99
101
|
| Delegation | `src/core/delegation.js`, delegation-set validator, and `DELEGATION_PROTOCOL.md` | `tests/delegation.test.js`, `tests/delegation-set.test.js` |
|