@cassiomc1/forgeloop 1.5.0 → 1.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (133) hide show
  1. package/CONTRACT_COVERAGE.md +1 -0
  2. package/DOCS_INDEX.md +20 -10
  3. package/EXECUTION_STATE.md +20 -0
  4. package/LOOP_ENGINEERING.md +103 -1
  5. package/LOOP_SYSTEM_DESIGN.md +32 -0
  6. package/PROTOCOL_INTEGRATION.md +90 -0
  7. package/QUALITY_SCORECARD.md +2 -0
  8. package/README.md +47 -9
  9. package/THIRD_PARTY_NOTICES.md +15 -0
  10. package/THREAT_MODEL.md +41 -1
  11. package/docs/ARTIFACT_REFERENCE.md +159 -0
  12. package/docs/CLI_REFERENCE.md +294 -3
  13. package/docs/DIAGNOSTIC_MODEL.md +181 -0
  14. package/docs/DOCUMENTATION_GUIDE.md +22 -13
  15. package/docs/EXECUTION_TRACE.md +76 -0
  16. package/docs/MCP.md +34 -1
  17. package/docs/RECIPES.md +67 -0
  18. package/docs/RELEASE_CHECKLIST_1_6_1.md +121 -0
  19. package/docs/TROUBLESHOOTING.md +133 -2
  20. package/docs/assets/diagrams/forgeloop-engineering-flow.html +13797 -0
  21. package/docs/assets/diagrams/forgeloop-engineering-flow.receipt.json +37 -0
  22. package/docs/assets/diagrams/forgeloop-engineering-flow.svg +5002 -0
  23. package/docs/diagrams/README.md +55 -0
  24. package/docs/diagrams/forgeloop-engineering-flow.workflow.json +122 -0
  25. package/docs/diagrams/manifest.json +42 -0
  26. package/docs/diagrams/reviews/forgeloop-engineering-flow.review.json +20 -0
  27. package/package.json +13 -8
  28. package/schemas/action.schema.json +100 -0
  29. package/schemas/approval.schema.json +51 -0
  30. package/schemas/capability-policy.schema.json +41 -0
  31. package/schemas/diagnostic-case.schema.json +85 -0
  32. package/schemas/execution-receipt.schema.json +16 -0
  33. package/schemas/execution.schema.json +15 -0
  34. package/schemas/hypothesis-disposition.schema.json +16 -0
  35. package/schemas/intervention.schema.json +27 -0
  36. package/schemas/policy-lock.schema.json +1 -0
  37. package/schemas/policy-snapshot.schema.json +2 -0
  38. package/schemas/trajectory-evaluation.schema.json +64 -0
  39. package/schemas/trajectory-scenario.schema.json +42 -0
  40. package/src/cli.js +94 -0
  41. package/src/commands/action-authorize.js +41 -0
  42. package/src/commands/action-propose.js +10 -0
  43. package/src/commands/action-reconcile.js +10 -0
  44. package/src/commands/action-record.js +47 -0
  45. package/src/commands/action-show.js +10 -0
  46. package/src/commands/action-verify.js +10 -0
  47. package/src/commands/advance.js +7 -2
  48. package/src/commands/approval-request.js +64 -0
  49. package/src/commands/approval-resolve.js +10 -0
  50. package/src/commands/baseline.js +3 -3
  51. package/src/commands/eval.js +6 -0
  52. package/src/commands/history.js +18 -0
  53. package/src/commands/init.js +2 -2
  54. package/src/commands/inspect.js +49 -0
  55. package/src/commands/metrics.js +7 -0
  56. package/src/commands/next.js +8 -2
  57. package/src/commands/policy-discover.js +2 -2
  58. package/src/commands/record-diagnosis.js +37 -1
  59. package/src/commands/record-hypothesis-disposition.js +45 -0
  60. package/src/commands/record-intervention.js +35 -0
  61. package/src/commands/reflect.js +38 -0
  62. package/src/commands/report.js +9 -1
  63. package/src/commands/run-action.js +18 -0
  64. package/src/commands/run-check.js +1 -0
  65. package/src/commands/trace.js +34 -0
  66. package/src/commands/validate-protocol.js +21 -13
  67. package/src/core/action-authorization.js +106 -0
  68. package/src/core/action-constants.js +86 -0
  69. package/src/core/action-execution.js +106 -0
  70. package/src/core/action-ledger-projection.js +302 -0
  71. package/src/core/action-model.js +581 -0
  72. package/src/core/action-readiness.js +141 -0
  73. package/src/core/action-reconciliation-policy.js +49 -0
  74. package/src/core/action-reconciliation.js +66 -0
  75. package/src/core/action-verification.js +111 -0
  76. package/src/core/actions.js +462 -0
  77. package/src/core/approvals.js +405 -0
  78. package/src/core/artifact-registry.js +48 -0
  79. package/src/core/audit.js +25 -0
  80. package/src/core/bundles.js +15 -0
  81. package/src/core/capability-policy.js +226 -0
  82. package/src/core/cli-command-definitions.js +210 -1
  83. package/src/core/command-executors.js +171 -15
  84. package/src/core/command-runtime.js +12 -1
  85. package/src/core/completion-artifacts.js +71 -14
  86. package/src/core/completion-recovery-rebind.js +194 -0
  87. package/src/core/completion.js +70 -0
  88. package/src/core/continuity-reconciliation.js +24 -5
  89. package/src/core/diagnostic-model.js +396 -0
  90. package/src/core/diagnostic-projection.js +51 -0
  91. package/src/core/diagnostic-record.js +360 -0
  92. package/src/core/error-codes.js +363 -0
  93. package/src/core/events.js +41 -1
  94. package/src/core/execution-prerequisites.js +4 -1
  95. package/src/core/execution.js +29 -188
  96. package/src/core/failure-signature.js +70 -0
  97. package/src/core/failure-surface.js +57 -0
  98. package/src/core/history.js +110 -0
  99. package/src/core/hypothesis-projection.js +85 -0
  100. package/src/core/information-gain-projection.js +283 -0
  101. package/src/core/information-gain.js +138 -0
  102. package/src/core/inspect.js +105 -7
  103. package/src/core/integration-invocation-policy.js +55 -0
  104. package/src/core/integration-resources.js +51 -0
  105. package/src/core/next-action-model.js +35 -1
  106. package/src/core/next-action.js +459 -3
  107. package/src/core/phase.js +40 -21
  108. package/src/core/policy-engine.js +113 -6
  109. package/src/core/preflight-consistency.js +31 -5
  110. package/src/core/preflight.js +19 -2
  111. package/src/core/prepared-execution.js +256 -0
  112. package/src/core/progress.js +41 -4
  113. package/src/core/protocol-info.js +56 -0
  114. package/src/core/protocol.js +14 -0
  115. package/src/core/receipt.js +1 -0
  116. package/src/core/reconcile-closure.js +15 -12
  117. package/src/core/reflection.js +305 -0
  118. package/src/core/resumability.js +57 -3
  119. package/src/core/runtime-context.js +19 -1
  120. package/src/core/schema-validation.js +8 -0
  121. package/src/core/strategy-analysis.js +97 -0
  122. package/src/core/task-paths.js +28 -0
  123. package/src/core/task-snapshot.js +53 -0
  124. package/src/core/templates.js +8 -0
  125. package/src/core/trace.js +548 -0
  126. package/src/core/trajectory-evaluation.js +71 -0
  127. package/src/core/trajectory-metrics.js +80 -0
  128. package/src/core/transaction.js +8 -0
  129. package/src/core/verification-execution.js +257 -0
  130. package/src/core/work-state.js +10 -5
  131. package/src/integration.js +8 -0
  132. package/docs/assets/forgeloop-flow.svg +0 -1
  133. package/docs/forgeloop-flow.mmd +0 -51
@@ -14,6 +14,7 @@ coverage.
14
14
  | Required artifact freshness | `readRequiredArtifactFingerprints`, `classifyLoadedWorkState` | `tests/checkpoint-freshness.test.js`, `tests/validate-protocol-cli.test.js` | matching hash, missing, and changed artifact cases |
15
15
  | Schema health | `inspectSchemaHealth` | `tests/schema-health.test.js` | missing, invalid, and unsupported-version schemas |
16
16
  | Evidence vocabulary | `src/core/evidence.js` | `tests/evidence.test.js` | unknown kind and incomplete record |
17
+ | Verification execution isolation | `src/core/verification-execution.js`, `src/core/runtime-context.js` | adapter call binding, disposable cwd, timeout/termination/truncation preservation, and canonical isolation combinations in `tests/verification-execution-isolation.test.js` | missing adapter under required policy, malformed/contradictory isolation metadata, and live-root cwd claims in `tests/verification-execution-isolation.test.js` |
17
18
  | Receipt semantics | `src/core/receipt.js` | `tests/receipt-semantics.test.js` | unsupported publication, review, check, and completion claims |
18
19
  | Cross-artifact conformance | `src/core/conformance.js`, `src/commands/validate-protocol.js` | `tests/conformance.test.js`, `tests/validate-protocol-cli.test.js` | `stateClassification`, derived stale details, precedence, mismatch, incomplete, and incompatible fixtures |
19
20
  | Delegation conflicts | `src/core/delegation.js` | `tests/delegation-set.test.js` | WRITE/WRITE, WRITE/READ, unknown dependency, and cycle cases |
package/DOCS_INDEX.md CHANGED
@@ -18,12 +18,16 @@ integration and guide context. Use this map before editing documentation.
18
18
  | Cross-harness continuity | [`docs/CROSS_HARNESS_CONTINUITY.md`](./docs/CROSS_HARNESS_CONTINUITY.md) | Operational handoff and multi-tool resumption |
19
19
  | CLI command reference | [`docs/CLI_REFERENCE.md`](./docs/CLI_REFERENCE.md) | Full syntax, options, and JSON examples for all commands |
20
20
  | Artifact and schema reference | [`docs/ARTIFACT_REFERENCE.md`](./docs/ARTIFACT_REFERENCE.md) | Purpose, mutability, and trust classifications of `.forgeloop/` |
21
+ | Durable actions and trajectory evidence | [`docs/EXECUTION_TRACE.md`](./docs/EXECUTION_TRACE.md) and [`docs/RECIPES.md`](./docs/RECIPES.md) | Action provenance, reconciliation, metrics, and project-local evaluation |
21
22
  | Troubleshooting and recovery | [`docs/TROUBLESHOOTING.md`](./docs/TROUBLESHOOTING.md) | Symptom-first recovery and stable error code reference |
22
23
  | Operational recipes | [`docs/RECIPES.md`](./docs/RECIPES.md) | Short copy-paste recipes for daily workflows |
24
+ | Diagnostic model | [`docs/DIAGNOSTIC_MODEL.md`](./docs/DIAGNOSTIC_MODEL.md) | Structured diagnostic cases, interventions, hypothesis dispositions, information gain |
25
+ | Execution trace and observability | [`docs/EXECUTION_TRACE.md`](./docs/EXECUTION_TRACE.md) | `history`, `trace`, `reflect`, and task-level `inspect` read-only projections |
23
26
  | Universal integration API | [`docs/UNIVERSAL_INTEGRATION.md`](./docs/UNIVERSAL_INTEGRATION.md) | Programmatic integration subpath, envelope semantics, and consumer map |
24
27
  | Local-first MCP adapter | [`docs/MCP.md`](./docs/MCP.md) | stdio default, optional strict loopback HTTP; server modes/capabilities and canonical resources |
25
28
  | Documentation guide | [`docs/DOCUMENTATION_GUIDE.md`](./docs/DOCUMENTATION_GUIDE.md) | Rules and checklist for modifying documentation |
26
- | ForgeLoop 1.5/MCP release checklist | [`docs/RELEASE_CHECKLIST_1_5_MCP.md`](./docs/RELEASE_CHECKLIST_1_5_MCP.md) | Integration API v1, MCP package, and publication gates |
29
+ | ForgeLoop 1.6.1 release checklist (current) | [`docs/RELEASE_CHECKLIST_1_6_1.md`](./docs/RELEASE_CHECKLIST_1_6_1.md) | Verification adapter boundary, isolation invariants, and publication gates |
30
+ | ForgeLoop 1.5/MCP release checklist (historical) | [`docs/RELEASE_CHECKLIST_1_5_MCP.md`](./docs/RELEASE_CHECKLIST_1_5_MCP.md) | Integration API v1, MCP package, and publication gates |
27
31
  | ForgeLoop 1.4 release checklist | [`docs/RELEASE_CHECKLIST_1_4.md`](./docs/RELEASE_CHECKLIST_1_4.md) | Claim-recovery, compatibility, package, and publication gates |
28
32
  | Lifecycle, gates, planning, verification, and recovery | [`LOOP_ENGINEERING.md`](./LOOP_ENGINEERING.md) | Normative process for agents and developer workflows |
29
33
  | Capability levels, discovery, and degradation | [`PROTOCOL_INTEGRATION.md`](./PROTOCOL_INTEGRATION.md) | Vendor-neutral harness contract |
@@ -34,7 +38,9 @@ integration and guide context. Use this map before editing documentation.
34
38
  | Artifact and phase schemas | [`schemas/`](./schemas/) and [`CONTRACT_COVERAGE.md`](./CONTRACT_COVERAGE.md) | Versioned machine-readable contract |
35
39
  | CLI/package behavior | [`src/`](./src/) and [`tests/`](./tests/) | Executable implementation and regression evidence |
36
40
  | Guide content | [`ENG/`](./ENG/) | Context-specific, English-only operational guides |
37
- | Diagram | [`docs/forgeloop-flow.mmd`](./docs/forgeloop-flow.mmd) | Canonical Mermaid source; SVG is generated output |
41
+ | Diagram governance | [`docs/diagrams/manifest.json`](./docs/diagrams/manifest.json) | Authoritative taxonomy, renderer mapping, canonical purposes, artifact ownership, and references |
42
+ | Diagram maintainer entrypoint | [`docs/diagrams/README.md`](./docs/diagrams/README.md) | Typed Archify source, animated HTML explorer, animated SVG fallback, review, and regeneration workflow |
43
+ | Real Execution Proof of Concept (PoC) | [`poc/README.md`](./poc/README.md) | Non-normative, reproducible public engineering workload, audit evidence, and technical audit. Normative behavior remains owned by [`LOOP_ENGINEERING.md`](./LOOP_ENGINEERING.md). |
38
44
 
39
45
  ## Audience map
40
46
 
@@ -42,6 +48,7 @@ integration and guide context. Use this map before editing documentation.
42
48
  | --- | --- |
43
49
  | **First-time user or developer** | [`docs/GETTING_STARTED.md`](./docs/GETTING_STARTED.md) |
44
50
  | **AI coding agent / harness** | [`AGENTS.md`](./AGENTS.md) → [`LOOP_ENGINEERING.md`](./LOOP_ENGINEERING.md) |
51
+ | **Technical auditor / Evaluator** | [`poc/README.md`](./poc/README.md) → [`poc/reports/poc-20260826-real-execution-technical-audit-v2.md`](./poc/reports/poc-20260826-real-execution-technical-audit-v2.md) |
45
52
  | **Harness integrator** | [`PROTOCOL_INTEGRATION.md`](./PROTOCOL_INTEGRATION.md) |
46
53
  | **External runtime / orchestrator integrator** | [`ORCHESTRATOR_INTEGRATION.md`](./ORCHESTRATOR_INTEGRATION.md) |
47
54
  | **Resuming another tool / session** | [`docs/CROSS_HARNESS_CONTINUITY.md`](./docs/CROSS_HARNESS_CONTINUITY.md) |
@@ -50,7 +57,8 @@ integration and guide context. Use this map before editing documentation.
50
57
  | **Fixing a broken or stale state** | [`docs/TROUBLESHOOTING.md`](./docs/TROUBLESHOOTING.md) |
51
58
  | **Looking for quick recipes** | [`docs/RECIPES.md`](./docs/RECIPES.md) |
52
59
  | **Documentation contributor** | [`docs/DOCUMENTATION_GUIDE.md`](./docs/DOCUMENTATION_GUIDE.md) |
53
- | **Release maintainer (current)** | [`docs/RELEASE_CHECKLIST_1_5_MCP.md`](./docs/RELEASE_CHECKLIST_1_5_MCP.md) |
60
+ | **Release maintainer (current)** | [`docs/RELEASE_CHECKLIST_1_6_1.md`](./docs/RELEASE_CHECKLIST_1_6_1.md) |
61
+ | **Release maintainer (historical 1.5/MCP)** | [`docs/RELEASE_CHECKLIST_1_5_MCP.md`](./docs/RELEASE_CHECKLIST_1_5_MCP.md) |
54
62
  | **Release maintainer (historical 1.4)** | [`docs/RELEASE_CHECKLIST_1_4.md`](./docs/RELEASE_CHECKLIST_1_4.md) |
55
63
  | **Protocol architect / maintainer** | [`LOOP_SYSTEM_DESIGN.md`](./LOOP_SYSTEM_DESIGN.md) + [`schemas/`](./schemas/) |
56
64
  | **Security auditor** | [`THREAT_MODEL.md`](./THREAT_MODEL.md) |
@@ -59,6 +67,7 @@ integration and guide context. Use this map before editing documentation.
59
67
  ## Task map
60
68
 
61
69
  - **Start my first task**: [`docs/GETTING_STARTED.md`](./docs/GETTING_STARTED.md)
70
+ - **Inspect real execution PoC and audit evidence**: [`poc/README.md`](./poc/README.md)
62
71
  - **Resume after switching tools**: [`docs/CROSS_HARNESS_CONTINUITY.md`](./docs/CROSS_HARNESS_CONTINUITY.md)
63
72
  - **Check CLI options and syntax**: [`docs/CLI_REFERENCE.md`](./docs/CLI_REFERENCE.md)
64
73
  - **Understand what `.forgeloop/` stores**: [`docs/ARTIFACT_REFERENCE.md`](./docs/ARTIFACT_REFERENCE.md)
@@ -88,25 +97,26 @@ process into adapters or README sections; link to the canonical source.
88
97
  ## Verification and release
89
98
 
90
99
  The Node regression suite, ESLint, c8, dependency policy, package boundary,
91
- and Mermaid render are the local executable checks. Python validators remain
100
+ and Archify diagram render are the local executable checks. Python validators remain
92
101
  frozen CI-only compatibility tools because they cover historical Markdown,
93
102
  loop, and secret-scanning contracts that have not been migrated to Node. Their
94
103
  scope, exact commands, and migration boundary are recorded in
95
104
  [`scripts/CI_VALIDATORS.md`](./scripts/CI_VALIDATORS.md).
96
105
 
97
106
  The package has no runtime dependencies. Development dependencies are limited
98
- to ESLint, c8, and Mermaid CLI and are checked by
107
+ to ESLint and c8 and are checked by
99
108
  `npm run dependency:policy`. GitHub Actions use `npm ci`, pinned action SHAs,
100
109
  CodeQL, dependency review, and generated-release notes; npm publication still
101
110
  uses trusted OIDC publishing and is not implied by local verification.
102
111
 
103
112
  ## Editing rules
104
113
 
105
- - Keep lifecycle prose, the Mermaid source, and the text-only README fallback
106
- synchronized.
107
- - Keep generated `docs/assets/forgeloop-flow.svg` synchronized with the Mermaid
108
- source by running `npm run docs:flow` and `npm run docs:check`. CI validates
109
- the source fingerprint instead of comparing renderer-specific SVG geometry.
114
+ - Keep lifecycle prose, the typed Archify source, generated outputs, and the
115
+ text-only README fallback synchronized.
116
+ - Keep the generated HTML, SVG, and receipt synchronized with the Archify
117
+ source by running `npm run docs:diagrams` and `npm run docs:check`. CI
118
+ validates the renderer pin, source fingerprint, artifact hashes, and SVG
119
+ safety constraints.
110
120
  - Preserve the distinction between implemented behavior, local evidence, and
111
121
  external publication or production state.
112
122
  - Run `npm run lint`, `npm run coverage`, `npm run pack:check`, and the Python
@@ -179,3 +179,23 @@ repository context and is always operational context rather than evidence.
179
179
  | Stale | Any | Changed | Run `forgeloop route` and `forgeloop preflight` to revalidate |
180
180
  | Invalid / Corrupted | Any | Any | Fail closed; inspect errors via `forgeloop doctor --json` |
181
181
  | Different Task ID | Present | Any | Do not merge contexts; clear or finish previous task first |
182
+
183
+ ## Durable actions are a separate external-state checkpoint
184
+
185
+ Action artifacts under `actions/` describe side-effect intent and its canonical
186
+ state; they do not replace `work-state.json`. Approval artifacts bind a single
187
+ decision to the exact action fingerprint, contract fingerprint, task revision,
188
+ and capability. Capability policy is configuration, not host authority.
189
+
190
+ `FORGELOOP_EXECUTED` means ForgeLoop launched exact argv through `run-action`;
191
+ `HOST_REPORTED` means an external host performed the operation; and
192
+ `EXTERNAL_OBSERVED` means a later observation supplied reconciliation evidence.
193
+ If the external outcome is uncertain, the action is `COMMIT_UNKNOWN`. It must
194
+ not be retried or used to satisfy required completion until
195
+ `forgeloop action-reconcile` records `COMMITTED`, `NOT_COMMITTED`, or
196
+ `UNKNOWN`. ForgeLoop does not claim universal exactly-once execution.
197
+
198
+ `metrics` and `eval` read the canonical trace, reflection, action artifacts, and
199
+ ledger events. They never mutate lifecycle truth, invent usage/cost data, or
200
+ create a second execution history; reference efficiency is emitted only when a
201
+ project-local scenario provides comparable steps.
@@ -27,6 +27,7 @@
27
27
  - [Precedence & Stop Conditions](#precedence)
28
28
  - [Final Delivery](#final-delivery)
29
29
  - [Cross-Harness Continuity](#cross-harness-execution-continuity)
30
+ - [Durable Actions and Trajectory Evidence](#durable-actions-and-trajectory-evidence)
30
31
  - [Multi-Task Concurrent Project State](#multi-task-concurrent-project-state)
31
32
 
32
33
  ## Protocol applicability
@@ -148,7 +149,7 @@ Every verification command path is classified by resolution mode:
148
149
 
149
150
  **Validator-enforced rule**: Any verification command executed via an installation-capable or explicit-installation resolution mode without a valid canonical installation authority grant is rejected by `record-check`, `audit`, and `complete` with error code `E_INSTALLATION_AUTHORITY_REQUIRED`, `E_AUTHORITY_INVALID`, `E_AUTHORITY_SCOPE_MISMATCH`, or `E_AUTHORITY_UNTRUSTED_SOURCE` and cannot contribute to `VALID` completion.
150
151
 
151
- Recognized command dispatchers (such as `npm test`, `npm start`, `npm stop`, `npm restart`, `npm run <script>`, `npm run-script <script>`, `npm rum <script>`, `npm urn <script>`) are classified by their effective package resolution behavior across recognized lifecycle scripts before process launch. npm invocation parsing recognizes options (e.g. `--silent`, `--loglevel=error`) before the subcommand. Recognized npm-script dispatch is resolved recursively before process launch. `npm restart` uses npm's restart-specific lifecycle semantics (`prerestart`, `prestop`, `stop`, `poststop`, `prestart`, `start`, `poststart`, `postrestart` when `restart` is absent; `prerestart`, `restart`, `postrestart` when `restart` is present) rather than generic pre/main/post handling. ForgeLoop fails closed (`mayInstall: true`) when recursive npm-script resolution encounters a cycle or exceeds its maximum resolution depth (16). ForgeLoop does not resolve npm workspace selection in `run-check` for `0.1.15`. npm script executions using `--workspace`, `-w`, `--workspaces`, or `--ws` fail closed (`E_COMMAND_RESOLUTION_AMBIGUOUS`) because the effective `package.json` execution context may differ from the current ForgeLoop target. Run ForgeLoop against the selected workspace directory directly instead. If any nested lifecycle script invokes an installation-capable command (such as `npx`, `npm exec`, or `pnpm dlx`), the execution is elevated to `INSTALL_CAPABLE_RESOLUTION` and blocked before launch without authority.
152
+ Recognized command dispatchers (such as `npm test`, `npm start`, `npm stop`, `npm restart`, `npm run <script>`, `npm run-script <script>`, `npm rum <script>`, `npm urn <script>`) are classified by their effective package resolution behavior across recognized lifecycle scripts before process launch. npm invocation parsing recognizes options (e.g. `--silent`, `--loglevel=error`) before the subcommand. Recognized npm-script dispatch is resolved recursively before process launch. `npm restart` uses npm's restart-specific lifecycle semantics (`prerestart`, `prestop`, `stop`, `poststop`, `prestart`, `start`, `poststart`, `postrestart` when `restart` is absent; `prerestart`, `restart`, `postrestart` when `restart` is present) rather than generic pre/main/post handling. ForgeLoop fails closed (`mayInstall: true`) when recursive npm-script resolution encounters a cycle or exceeds its maximum resolution depth (16). ForgeLoop does not resolve npm workspace selection in `run-check`. npm script executions using `--workspace`, `-w`, `--workspaces`, or `--ws` fail closed (`E_COMMAND_RESOLUTION_AMBIGUOUS`) because the effective `package.json` execution context may differ from the current ForgeLoop target. Run ForgeLoop against the selected workspace directory directly instead. If any nested lifecycle script invokes an installation-capable command (such as `npx`, `npm exec`, or `pnpm dlx`), the execution is elevated to `INSTALL_CAPABLE_RESOLUTION` and blocked before launch without authority.
152
153
 
153
154
  **npm Classification Model**: npm classification is semantic and fail-closed. Unknown npm commands are not assumed safe. The classifier specifically identifies install-capable families including: `exec`/`x`, `install` aliases, `ci` aliases, `install-test` families, `install-ci-test` families, `update` aliases, `audit fix`, and conditional `init`/`create`/`innit` invocations. Unknown or ambiguous semantics fail closed (`E_COMMAND_RESOLUTION_AMBIGUOUS`).
154
155
 
@@ -161,6 +162,27 @@ resolution is rejected without a valid host-attested authority, while
161
162
  `npx --no-install` remains a non-installing path and may fail honestly when a
162
163
  tool is absent. `run-check` launches the supplied argv without a shell.
163
164
 
165
+ ### Verification execution isolation
166
+
167
+ Without a trusted adapter, verification executes in the live project and is
168
+ recorded as `NATIVE_PROJECT` (`isolated: false`, `liveProjectWritable: true`,
169
+ inherited network and environment). A host may supply a trusted verification
170
+ execution adapter and an isolation policy through the integration runtime
171
+ context (`verificationExecutionAdapter`, `verificationExecutionPolicy`).
172
+ The policy modes are `NONE`, `NATIVE_PROJECT`, `PROJECT_ISOLATED`
173
+ (`isolated: true`, `liveProjectWritable: false`), and `SYSTEM_ISOLATED`
174
+ (additionally `networkPolicy: DENIED`). `liveProjectWritable` is an enforced
175
+ host guarantee reported by the adapter, not an inference from a different
176
+ working directory, and a disposable copy alone does not satisfy filesystem
177
+ isolation. Isolated execution must use a working directory separate from the
178
+ protocol project root. Contradictory isolation metadata is intrinsically
179
+ rejected before evidence persistence with `E_VERIFICATION_EXECUTION_INVALID`,
180
+ and verification that cannot satisfy the required isolation boundary fails
181
+ closed with `E_VERIFICATION_ISOLATION_UNAVAILABLE` instead of running in the
182
+ live project. ForgeLoop owns the adapter contract and evidence semantics; the
183
+ harness owns the concrete isolation backend and no specific backend is
184
+ normative.
185
+
164
186
  `forgeloop record-check` is serialization-only. Its `--command` value is
165
187
  metadata and is never executed. A `kind: command`, `evidenceKind: OBSERVED`
166
188
  check must carry `provenance: FORGELOOP_EXECUTED` and a valid `executionRef`;
@@ -1278,6 +1300,86 @@ completion. `CONTINUITY_CANNOT_GRANT_AUTHORITY`: continuity cannot authorize an
1278
1300
  installation or external action. <a id="FL-CONT-001"></a> **FL-CONT-001 — A receiving harness MUST reconcile**
1279
1301
  continuity against the current work state and checkout before acting on it.
1280
1302
 
1303
+ ## Durable Actions and Trajectory Evidence
1304
+
1305
+ Durable actions extend the existing task protocol; they do not turn ForgeLoop
1306
+ into an agent runtime, scheduler, queue, or workflow engine. Action intent,
1307
+ approval, execution provenance, reconciliation, and evaluation are task-local
1308
+ artifacts whose chronology remains in the same hash-chained `events.ndjson`.
1309
+
1310
+ Every side-effecting action declares an explicit capability, effect class,
1311
+ bounded target, immutable idempotency key, and provenance. Project capability
1312
+ policy is a decision input (`ALLOW`, `DENY`, `REQUIRE_AUTHORITY`, or
1313
+ `REQUIRE_APPROVAL`); it is never host authority. `HOST_ATTESTED` authority can
1314
+ only cross the existing host trust boundary, and `run-action` accepts exact
1315
+ argv with no shell mode.
1316
+
1317
+ ### Durable action trust boundaries (hardened)
1318
+
1319
+ The following invariants are enforced in core code and are regression-tested:
1320
+
1321
+ - **Authorization is canonical.** No caller-controlled surface (`action-record`,
1322
+ CLI flags, MCP tool arguments, project files, environment) can mint
1323
+ `AUTHORIZED`. Only the core authorization service may transition
1324
+ `PROPOSED -> AUTHORIZED` — through `run-action`, or explicitly through
1325
+ `forgeloop action-authorize`, which is a pure adapter over the same service —
1326
+ and only after the current capability policy, the persisted policy lock, and
1327
+ the task policy snapshot agree. Every modern
1328
+ `ACTION_AUTHORIZED` event binds the capability decision, capability-policy
1329
+ fingerprint, policy-lock digest, task-policy digest, and — for
1330
+ `REQUIRE_AUTHORITY`/`REQUIRE_APPROVAL` — the exact host authority or
1331
+ fingerprint-bound approval. Post-authorization mutation of a bound approval
1332
+ artifact is readiness/audit-visible.
1333
+ - **Verification is canonical, independent, and requirement-bound.**
1334
+ `COMMITTED != VERIFIED`. A command exiting 0 proves only local completion.
1335
+ `VERIFIED` is produced exclusively by `forgeloop action-verify` (or the
1336
+ equivalent core service) against a passed ForgeLoop execution artifact that
1337
+ is independent of the action's own commit execution and whose immutable
1338
+ `requirement` exactly equals the action's requirement. New required actions
1339
+ must declare a non-empty requirement at proposal time; historical required
1340
+ artifacts without one remain readable but can never become trusted-satisfied.
1341
+ - **Reconciliation has exactly one replay truth.** A trusted `COMMITTED`
1342
+ settlement emits `ACTION_RECONCILED(outcome=COMMITTED)` (the transition) plus
1343
+ a same-revision informational mirror `ACTION_COMMIT_RECORDED(reconciled=true)`
1344
+ (corroboration only). Ledger replay applies the transition exactly once and
1345
+ validates mirror identity; forged or orphaned mirrors invalidate the ledger.
1346
+ - **Completion consumes readiness.** Required-action completion truth comes
1347
+ from the canonical action-readiness projection, never from raw state labels.
1348
+ A forged or legacy `VERIFIED` label without trusted authorization and
1349
+ canonical verification evidence yields `UNTRUSTED` and blocks completion.
1350
+ - **Settling ambiguity requires trust.** Recording an `UNKNOWN`
1351
+ reconciliation observation is always safe. Settling `COMMIT_UNKNOWN` as
1352
+ `COMMITTED` or `NOT_COMMITTED` requires a trusted out-of-band host authority
1353
+ context plus bounded evidence references bound to the event. Trusted
1354
+ `NOT_COMMITTED` returns the action to `PROPOSED`, so any retry re-evaluates
1355
+ policy, approval, authority, and the task policy snapshot; stale
1356
+ authorization can never be reused.
1357
+ - **STARTED marks the launch boundary.** Deterministic pre-launch checks
1358
+ (argv normalization, command resolution, installation authority, policy
1359
+ identity, approvals) all run before `ACTION_STARTED`; post-start outcomes
1360
+ remain conservative: spawn failure without launch is `FAILED`; anything
1361
+ unproven is `COMMIT_UNKNOWN`.
1362
+ - **Capability policy participates in policy identity.** When
1363
+ `.forgeloop/policy/capabilities.json` exists, its digest participates in the
1364
+ policy lock, the active task policy snapshot, and authorization evidence.
1365
+ Drift blocks before any side effect (`E_ACTION_POLICY_DRIFT`).
1366
+ - **Host context is out-of-band.** Trusted authority travels as an execution
1367
+ context object supplied by an embedding host (`executeForgeLoopCommand` /
1368
+ `createForgeLoopMcpServer({ authorityContextProvider })`). CLI flags such as
1369
+ `--authority HOST_ATTESTED` are requested kinds, never proof. MCP launch
1370
+ flags expose transport surfaces only; tool arguments can never carry
1371
+ `authorityContext`.
1372
+ - **Guidance never lies about authority.** `forgeloop next` returns a
1373
+ structured `authorityRequired` requirement for host-bound approvals instead
1374
+ of recommending a command that cannot satisfy the blocker.
1375
+
1376
+ Trajectory metrics and reference evaluations are read-only projections over the
1377
+ canonical trace, reflection, actions, and events. Missing tokens, costs,
1378
+ provider, model, or optimal-path data remain `null`/`UNKNOWN`; a comparative
1379
+ efficiency ratio exists only when a project-local reference scenario supplies
1380
+ `reference.comparableSteps`. Existing information-gain, intervention, failure
1381
+ signature, and oscillation diagnostics remain canonical.
1382
+
1281
1383
  ## Multi-task concurrent project state
1282
1384
 
1283
1385
  ForgeLoop supports isolated, concurrent tasks within the same repository workspace.
@@ -442,3 +442,35 @@ machine and not a general memory subsystem. Work state owns lifecycle truth;
442
442
  the checkout owns implementation truth; checks/executions own verification
443
443
  truth; completion owns certification. Continuity only narrows what a receiving
444
444
  executor should inspect and continue.
445
+
446
+ ## Durable action and trajectory boundary
447
+
448
+ Durable actions are protocol-owned task artifacts (`actions/`, `approvals/`,
449
+ and `evaluations/`) projected through the existing hash-chained event ledger.
450
+ They record intent, capability policy, approval binding, execution provenance,
451
+ commit uncertainty, reconciliation, and verification without introducing a
452
+ workflow runtime, scheduler, queue, or second ledger.
453
+
454
+ The external side-effect boundary is deliberately conservative: exact argv is
455
+ launched only through `run-action` with no shell mode; project capability
456
+ policy cannot manufacture `HOST_ATTESTED` authority, and trusted host context
457
+ travels out-of-band only (never inside command input, CLI flags, or tool
458
+ arguments). Authorization and verification are canonical core services:
459
+ callers cannot mint `AUTHORIZED` or `VERIFIED`, verification requires an
460
+ independent passed ForgeLoop execution artifact, and required completion
461
+ consumes the canonical action-readiness projection rather than raw state
462
+ labels. Capability policy participates in policy identity: its digest is bound
463
+ into the policy lock, the task policy snapshot, and authorization evidence, so
464
+ drift blocks before any side effect. A started action whose external result is
465
+ uncertain becomes `COMMIT_UNKNOWN`, which forbids retry until explicit
466
+ reconciliation; settling ambiguity as `COMMITTED`/`NOT_COMMITTED` requires
467
+ trusted host attestation plus evidence, and a trusted `NOT_COMMITTED` returns
468
+ the action to `PROPOSED` so stale authorization can never be reused. This
469
+ reduces duplicate-effect risk but cannot provide a universal exactly-once
470
+ guarantee for arbitrary external systems.
471
+
472
+ Metrics and trajectory evaluation are deterministic read-only projections of
473
+ canonical trace/reflection evidence. They preserve unknown usage values and
474
+ only compare efficiency when a project-local reference scenario exists. The
475
+ existing diagnostic and reflection model remains the authority for information
476
+ gain, intervention effectiveness, failure signatures, and oscillation.
@@ -204,6 +204,50 @@ metadata. Invalid or missing references return `E_EXECUTION_REF_INVALID`; an
204
204
  observed command without ForgeLoop provenance returns
205
205
  `E_COMMAND_PROVENANCE_UNATTESTED`.
206
206
 
207
+ ### Verification execution adapter boundary
208
+
209
+ Verification execution is separated from protocol state through a trusted
210
+ adapter boundary. A host supplies both through the integration runtime
211
+ context, and neither is accepted as CLI flags, input, or project files:
212
+
213
+ ```js
214
+ createForgeLoopContext({
215
+ verificationExecutionAdapter: { execute: async (request) => { /* ... */ } },
216
+ verificationExecutionPolicy: { requiredIsolation: "PROJECT_ISOLATED" },
217
+ });
218
+ ```
219
+
220
+ The adapter receives a frozen request (`argv`, `protocolProjectRoot`, `taskId`,
221
+ `checkId`, `requirement`, `timeoutMs`, `resolution`) and returns the execution
222
+ result plus isolation metadata. Isolation modes are:
223
+
224
+ | Mode | `isolated` | `liveProjectWritable` | Network/environment |
225
+ | --- | --- | --- | --- |
226
+ | `NATIVE_PROJECT` | `false` | `true` | Inherited |
227
+ | `PROJECT_ISOLATED` | `true` | `false` | Adapter-declared policy |
228
+ | `SYSTEM_ISOLATED` | `true` | `false` | `networkPolicy: DENIED` required |
229
+
230
+ ForgeLoop owns the adapter contract and evidence semantics; the harness owns
231
+ the concrete isolation backend, and no specific backend is normative in
232
+ ForgeLoop core documentation. The boundary is fail-closed:
233
+
234
+ - isolation metadata must be internally consistent with its declared mode
235
+ (`NATIVE_PROJECT` is never isolated; isolated modes are never
236
+ `liveProjectWritable`; `SYSTEM_ISOLATED` never inherits network access).
237
+ Contradictory metadata is rejected with `E_VERIFICATION_EXECUTION_INVALID`
238
+ before evidence persistence;
239
+ - isolated execution must use a working directory separate from the protocol
240
+ project root;
241
+ - verification that cannot satisfy the required isolation boundary fails with
242
+ `E_VERIFICATION_ISOLATION_UNAVAILABLE` and must never fall back to running
243
+ in the live project.
244
+
245
+ `protocol-info --json` advertises this capability as
246
+ `features.verificationExecutionIsolation` (version 1), including the supported
247
+ modes and the `protocolProjectRootSeparateFromExecutionCwd` invariant. The
248
+ modes, public error codes, and `createForgeLoopContext` are exported from
249
+ `@cassiomc1/forgeloop/integration`.
250
+
207
251
  ## Missing tool capability
208
252
 
209
253
  A missing tool is a capability gap, not installation authority.
@@ -277,6 +321,31 @@ configuration
277
321
  trust
278
322
  ```
279
323
 
324
+ For durable actions, trusted host authority travels **out-of-band** through the
325
+ programmatic integration API:
326
+
327
+ ```js
328
+ await executeForgeLoopCommand({
329
+ command: "approval-resolve",
330
+ projectPath,
331
+ input: { /* actor-controlled command input only */ },
332
+ authorityContext: trustedHostContext, // host-supplied, never from input
333
+ });
334
+ ```
335
+
336
+ `authorityContext` and `runtimeContext` are separate executor parameters; they
337
+ are never merged into `input`, never accepted as tool arguments, and cannot be
338
+ minted by CLI flags, project files, environment variables, or transport
339
+ sessions. MCP embeddings supply an immutable provider instead:
340
+
341
+ ```js
342
+ createForgeLoopMcpServer({
343
+ projectPath,
344
+ allowApprovalResolution: true, // transport surface only
345
+ authorityContextProvider: async ({ command }) => trustedContextOrNull,
346
+ });
347
+ ```
348
+
280
349
  The host-attested source must still resolve outside the actor-writable target. A
281
350
  project-local authority reference may identify a grant, but it does not create
282
351
  the root of trust.
@@ -396,3 +465,24 @@ hosts remain fully supported through the CLI and instruction adapters.
396
465
  requires ForgeLoop 1.4.0 or newer.
397
466
  <a id="FL-CLAIM-003"></a> **FL-CLAIM-003 — A reader without `validatedClaimProjection=true` MUST fail closed**
398
467
  and must not mutate claims.
468
+
469
+ ## Durable actions and authority boundary
470
+
471
+ Durable action support is additive to the integration contract. Read-only
472
+ resources may expose action, approval, metrics, evaluation, and capability
473
+ policy projections, but an integration must not treat transport metadata,
474
+ session IDs, project policy, or actor prose as host authority. `HOST_ATTESTED`
475
+ is accepted only from the existing host trust boundary.
476
+
477
+ `run-action` is an exact-argv surface with no shell mode. Hosts that perform an
478
+ operation themselves must record it as `HOST_REPORTED`; external observations
479
+ used to settle uncertainty are `EXTERNAL_OBSERVED`. A started action whose
480
+ external outcome cannot be proven is `COMMIT_UNKNOWN`: integrations must surface
481
+ `E_ACTION_RECONCILIATION_REQUIRED` and must not retry automatically. The only
482
+ forward path is explicit `action-reconcile` with bounded evidence.
483
+
484
+ Trajectory metrics and evaluations are read-only projections over canonical
485
+ events and trace/reflection data. Missing token/cost/model data remains unknown,
486
+ and efficiency is comparable only when a project-local scenario supplies a
487
+ positive reference step count. ForgeLoop remains an evidence protocol, not an
488
+ agent runtime or workflow engine.
@@ -31,6 +31,8 @@ policy are all present.
31
31
  | Contextual frontend taste | Taste is routed only to applicable premium frontend work, remains advisory, respects accessibility/performance/evidence, and has attribution without runtime dependency. |
32
32
  | Multi-agent coordination | Self-contained briefs, write/write and write/read ownership checks, dependency-set validation, reviewer independence, normalized results, and inline fallback. |
33
33
  | Security boundaries | Realpath containment, bounded untrusted JSON, threat model, nested secret scanning, publication evidence, and explicit authority rules. |
34
+ | Durable external actions | Immutable action identity, idempotency conflict rejection, capability policy, fingerprint-bound approvals, exact-argv provenance, `COMMIT_UNKNOWN` reconciliation, completion blocking, and audit evidence. |
35
+ | Trajectory evaluation | Read-only trace/reflection metrics, unknown usage preservation, canonical comparable-step definition, and scenario-bound efficiency without an arbitrary overall score. |
34
36
  | Maintenance quality | Small modules, built-in runtime, deterministic JSON contracts, malformed/version fixtures, package gates, and backward-compatible protocol versions. |
35
37
 
36
38
  ## Score rules
package/README.md CHANGED
@@ -28,6 +28,7 @@ relevant guides.
28
28
  ## Where should I start?
29
29
 
30
30
  - **New to ForgeLoop** → [`docs/GETTING_STARTED.md`](./docs/GETTING_STARTED.md)
31
+ - **Inspect a real ForgeLoop execution** → [`poc/README.md`](./poc/README.md)
31
32
  - **Full protocol specification** → [`LOOP_ENGINEERING.md`](./LOOP_ENGINEERING.md)
32
33
  - **Integrating an AI harness** → [`PROTOCOL_INTEGRATION.md`](./PROTOCOL_INTEGRATION.md)
33
34
  - **Continuing another harness's task** → [`docs/CROSS_HARNESS_CONTINUITY.md`](./docs/CROSS_HARNESS_CONTINUITY.md)
@@ -38,6 +39,21 @@ relevant guides.
38
39
  - **System architecture & safety** → [`LOOP_SYSTEM_DESIGN.md`](./LOOP_SYSTEM_DESIGN.md) & [`THREAT_MODEL.md`](./THREAT_MODEL.md)
39
40
  - **Documentation index & ownership** → [`DOCS_INDEX.md`](./DOCS_INDEX.md)
40
41
 
42
+ ## Real execution proof
43
+
44
+ ForgeLoop includes a public real-execution PoC with the workload,
45
+ protocol artifacts, trusted command provenance, execution receipt,
46
+ event history, cryptographic evidence manifest, and technical audit.
47
+
48
+ The original task reached validator-backed `COMPLETE / VALID`.
49
+ The evidence package also preserves a later
50
+ `E_RECEIPT_PATH_MISMATCH`, detected after evidence publication itself
51
+ changed the repository.
52
+
53
+ - [PoC overview](./poc/README.md)
54
+ - [Canonical technical audit](./poc/reports/poc-20260826-real-execution-technical-audit-v2.md)
55
+ - [Evidence package](./poc/evidence/poc-20260826-real-execution/)
56
+
41
57
  ## Catalog
42
58
 
43
59
  | Topic | Guide |
@@ -75,6 +91,15 @@ forgeloop next --task demo --json
75
91
  O último comando informa a ação segura seguinte; ele não executa código nem
76
92
  agenda agentes.
77
93
 
94
+ ### Ações externas duráveis
95
+
96
+ Para efeitos externos, registre a intenção com `action-propose`, aplique a
97
+ política de capacidade e a aprovação vinculada ao fingerprint, e execute apenas
98
+ com `run-action` usando argv exato. Um resultado `COMMIT_UNKNOWN` nunca é
99
+ repetido automaticamente: observe o sistema externo e use `action-reconcile`.
100
+ As métricas mantêm tokens/custos como desconhecidos quando o host não os
101
+ fornece, e eficiência só existe quando um cenário de referência foi declarado.
102
+
78
103
  Antes de um harness criar ou retomar uma tarefa, ele pode confirmar a
79
104
  compatibilidade pública sem depender de detalhes internos:
80
105
 
@@ -260,12 +285,24 @@ See [`docs/CLI_REFERENCE.md`](./docs/CLI_REFERENCE.md) and [`LOOP_SYSTEM_DESIGN.
260
285
 
261
286
  ## Architecture flow
262
287
 
263
- The canonical source is [`docs/forgeloop-flow.mmd`](./docs/forgeloop-flow.mmd),
264
- and the committed render is [`docs/assets/forgeloop-flow.svg`](./docs/assets/forgeloop-flow.svg).
288
+ The canonical source is the typed Archify workflow
289
+ [`docs/diagrams/forgeloop-engineering-flow.workflow.json`](./docs/diagrams/forgeloop-engineering-flow.workflow.json).
290
+ The committed animated interactive explorer is
291
+ [`docs/assets/diagrams/forgeloop-engineering-flow.html`](./docs/assets/diagrams/forgeloop-engineering-flow.html),
292
+ which opens in the dark presentation stage and traces the workflow. The
293
+ animated, self-contained SVG fallback is
294
+ [`docs/assets/diagrams/forgeloop-engineering-flow.svg`](./docs/assets/diagrams/forgeloop-engineering-flow.svg),
295
+ and the deterministic hash receipt is
296
+ [`docs/assets/diagrams/forgeloop-engineering-flow.receipt.json`](./docs/assets/diagrams/forgeloop-engineering-flow.receipt.json).
297
+ The governance source is [`docs/diagrams/manifest.json`](./docs/diagrams/manifest.json),
298
+ and the source-bound visual approval is kept in
299
+ [`docs/diagrams/reviews/forgeloop-engineering-flow.review.json`](./docs/diagrams/reviews/forgeloop-engineering-flow.review.json).
265
300
  The broader architecture and boundaries are in
266
301
  [`LOOP_SYSTEM_DESIGN.md`](./LOOP_SYSTEM_DESIGN.md).
267
302
 
268
- ![ForgeLoop evidence-first engineering flow](./docs/assets/forgeloop-flow.svg)
303
+ [Open the animated ForgeLoop evidence-first engineering flow](./docs/assets/diagrams/forgeloop-engineering-flow.html)
304
+
305
+ ![ForgeLoop evidence-first engineering flow (animated SVG fallback)](./docs/assets/diagrams/forgeloop-engineering-flow.svg)
269
306
 
270
307
  Text-only fallback: discovery creates the contract and route; required gates
271
308
  and `PREFLIGHT_READY` authorize execution; verification creates structured
@@ -305,9 +342,10 @@ values are checked; and install-capable verification requires trusted host
305
342
  authority. See [`THREAT_MODEL.md`](./THREAT_MODEL.md) for the full inventory.
306
343
 
307
344
  Development tooling is intentionally separate from runtime dependencies. The
308
- repository policy allows only ESLint, c8, and Mermaid CLI as development
309
- dependencies; `npm run dependency:policy` fails if runtime or unapproved
310
- dependencies appear.
345
+ repository policy allows only ESLint and c8 as development dependencies;
346
+ `npm run dependency:policy` fails if runtime or unapproved dependencies
347
+ appear. The documentation renderer is vendored and pinned under
348
+ `vendor/archify/v2.15.0/` rather than installed as a package dependency.
311
349
 
312
350
  Para reportar vulnerabilidades ou contribuir com alterações, consulte
313
351
  [`SECURITY.md`](./SECURITY.md) e [`CONTRIBUTING.md`](./CONTRIBUTING.md).
@@ -377,7 +415,7 @@ npm run lint
377
415
  npm run coverage
378
416
  npm run pack:check
379
417
  npm run dependency:policy
380
- npm run docs:flow
418
+ npm run docs:diagrams
381
419
  npm run docs:check
382
420
  ```
383
421
 
@@ -387,8 +425,8 @@ npm run docs:check
387
425
  src/ npm CLI and protocol implementation
388
426
  schemas/ versioned artifact schemas
389
427
  ENG/ package-source engineering guides
390
- docs/forgeloop-flow.mmd canonical Mermaid source
391
- docs/assets/ committed diagram render
428
+ docs/diagrams/ typed Archify diagram source and inventory
429
+ docs/assets/diagrams/ committed HTML, SVG, and generation receipt
392
430
  scripts/ checks, renderer, release identity, CI notes
393
431
  tests/ Node and Python regression coverage
394
432
  .forgeloop/ project-scoped ForgeLoop configuration
@@ -64,6 +64,21 @@ inclusion does not install, bundle, or declare any project as a dependency of
64
64
  this collection. Check the specific project's current license, terms,
65
65
  dependencies, version, and distribution conditions before adoption.
66
66
 
67
+ ### Archify v2.15.0 — vendored documentation renderer
68
+
69
+ - Project/source: [tt-a1i/archify](https://github.com/tt-a1i/archify/tree/v2.15.0).
70
+ - Pinned source commit: `e1ac748f19cf805e44bf74fb93c796662152e273`.
71
+ - License declared by the upstream project: MIT; the vendored license is at
72
+ `vendor/archify/v2.15.0/archify/LICENSE`.
73
+ - Use in this collection: deterministic generation and validation of the
74
+ typed workflow diagram under `docs/diagrams/`.
75
+ - Boundary: this is a documentation-only vendored toolchain, not a ForgeLoop
76
+ runtime dependency. It is not installed from a registry, and its exact pin,
77
+ source, license, and raw-byte tree hashes are recorded in
78
+ `vendor/archify/v2.15.0/PIN.json`; output hashes are recorded in the receipt.
79
+ The vendor integrity check rejects modified, missing, extra, renamed, or
80
+ symlinked files before the renderer is trusted.
81
+
67
82
  ### Superpowers
68
83
 
69
84
  - Project: [Superpowers](https://github.com/obra/superpowers).