@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.
- package/CONTRACT_COVERAGE.md +1 -0
- package/DOCS_INDEX.md +20 -10
- package/EXECUTION_STATE.md +20 -0
- package/LOOP_ENGINEERING.md +103 -1
- package/LOOP_SYSTEM_DESIGN.md +32 -0
- package/PROTOCOL_INTEGRATION.md +90 -0
- package/QUALITY_SCORECARD.md +2 -0
- package/README.md +47 -9
- package/THIRD_PARTY_NOTICES.md +15 -0
- package/THREAT_MODEL.md +41 -1
- package/docs/ARTIFACT_REFERENCE.md +159 -0
- package/docs/CLI_REFERENCE.md +294 -3
- package/docs/DIAGNOSTIC_MODEL.md +181 -0
- package/docs/DOCUMENTATION_GUIDE.md +22 -13
- package/docs/EXECUTION_TRACE.md +76 -0
- package/docs/MCP.md +34 -1
- package/docs/RECIPES.md +67 -0
- package/docs/RELEASE_CHECKLIST_1_6_1.md +121 -0
- package/docs/TROUBLESHOOTING.md +133 -2
- package/docs/assets/diagrams/forgeloop-engineering-flow.html +13797 -0
- package/docs/assets/diagrams/forgeloop-engineering-flow.receipt.json +37 -0
- package/docs/assets/diagrams/forgeloop-engineering-flow.svg +5002 -0
- package/docs/diagrams/README.md +55 -0
- package/docs/diagrams/forgeloop-engineering-flow.workflow.json +122 -0
- package/docs/diagrams/manifest.json +42 -0
- package/docs/diagrams/reviews/forgeloop-engineering-flow.review.json +20 -0
- package/package.json +13 -8
- package/schemas/action.schema.json +100 -0
- package/schemas/approval.schema.json +51 -0
- package/schemas/capability-policy.schema.json +41 -0
- package/schemas/diagnostic-case.schema.json +85 -0
- package/schemas/execution-receipt.schema.json +16 -0
- package/schemas/execution.schema.json +15 -0
- package/schemas/hypothesis-disposition.schema.json +16 -0
- package/schemas/intervention.schema.json +27 -0
- package/schemas/policy-lock.schema.json +1 -0
- package/schemas/policy-snapshot.schema.json +2 -0
- package/schemas/trajectory-evaluation.schema.json +64 -0
- package/schemas/trajectory-scenario.schema.json +42 -0
- package/src/cli.js +94 -0
- package/src/commands/action-authorize.js +41 -0
- package/src/commands/action-propose.js +10 -0
- package/src/commands/action-reconcile.js +10 -0
- package/src/commands/action-record.js +47 -0
- package/src/commands/action-show.js +10 -0
- package/src/commands/action-verify.js +10 -0
- package/src/commands/advance.js +7 -2
- package/src/commands/approval-request.js +64 -0
- package/src/commands/approval-resolve.js +10 -0
- package/src/commands/baseline.js +3 -3
- package/src/commands/eval.js +6 -0
- package/src/commands/history.js +18 -0
- package/src/commands/init.js +2 -2
- package/src/commands/inspect.js +49 -0
- package/src/commands/metrics.js +7 -0
- package/src/commands/next.js +8 -2
- package/src/commands/policy-discover.js +2 -2
- package/src/commands/record-diagnosis.js +37 -1
- package/src/commands/record-hypothesis-disposition.js +45 -0
- package/src/commands/record-intervention.js +35 -0
- package/src/commands/reflect.js +38 -0
- package/src/commands/report.js +9 -1
- package/src/commands/run-action.js +18 -0
- package/src/commands/run-check.js +1 -0
- package/src/commands/trace.js +34 -0
- package/src/commands/validate-protocol.js +21 -13
- package/src/core/action-authorization.js +106 -0
- package/src/core/action-constants.js +86 -0
- package/src/core/action-execution.js +106 -0
- package/src/core/action-ledger-projection.js +302 -0
- package/src/core/action-model.js +581 -0
- package/src/core/action-readiness.js +141 -0
- package/src/core/action-reconciliation-policy.js +49 -0
- package/src/core/action-reconciliation.js +66 -0
- package/src/core/action-verification.js +111 -0
- package/src/core/actions.js +462 -0
- package/src/core/approvals.js +405 -0
- package/src/core/artifact-registry.js +48 -0
- package/src/core/audit.js +25 -0
- package/src/core/bundles.js +15 -0
- package/src/core/capability-policy.js +226 -0
- package/src/core/cli-command-definitions.js +210 -1
- package/src/core/command-executors.js +171 -15
- package/src/core/command-runtime.js +12 -1
- package/src/core/completion-artifacts.js +71 -14
- package/src/core/completion-recovery-rebind.js +194 -0
- package/src/core/completion.js +70 -0
- package/src/core/continuity-reconciliation.js +24 -5
- package/src/core/diagnostic-model.js +396 -0
- package/src/core/diagnostic-projection.js +51 -0
- package/src/core/diagnostic-record.js +360 -0
- package/src/core/error-codes.js +363 -0
- package/src/core/events.js +41 -1
- package/src/core/execution-prerequisites.js +4 -1
- package/src/core/execution.js +29 -188
- package/src/core/failure-signature.js +70 -0
- package/src/core/failure-surface.js +57 -0
- package/src/core/history.js +110 -0
- package/src/core/hypothesis-projection.js +85 -0
- package/src/core/information-gain-projection.js +283 -0
- package/src/core/information-gain.js +138 -0
- package/src/core/inspect.js +105 -7
- package/src/core/integration-invocation-policy.js +55 -0
- package/src/core/integration-resources.js +51 -0
- package/src/core/next-action-model.js +35 -1
- package/src/core/next-action.js +459 -3
- package/src/core/phase.js +40 -21
- package/src/core/policy-engine.js +113 -6
- package/src/core/preflight-consistency.js +31 -5
- package/src/core/preflight.js +19 -2
- package/src/core/prepared-execution.js +256 -0
- package/src/core/progress.js +41 -4
- package/src/core/protocol-info.js +56 -0
- package/src/core/protocol.js +14 -0
- package/src/core/receipt.js +1 -0
- package/src/core/reconcile-closure.js +15 -12
- package/src/core/reflection.js +305 -0
- package/src/core/resumability.js +57 -3
- package/src/core/runtime-context.js +19 -1
- package/src/core/schema-validation.js +8 -0
- package/src/core/strategy-analysis.js +97 -0
- package/src/core/task-paths.js +28 -0
- package/src/core/task-snapshot.js +53 -0
- package/src/core/templates.js +8 -0
- package/src/core/trace.js +548 -0
- package/src/core/trajectory-evaluation.js +71 -0
- package/src/core/trajectory-metrics.js +80 -0
- package/src/core/transaction.js +8 -0
- package/src/core/verification-execution.js +257 -0
- package/src/core/work-state.js +10 -5
- package/src/integration.js +8 -0
- package/docs/assets/forgeloop-flow.svg +0 -1
- package/docs/forgeloop-flow.mmd +0 -51
package/CONTRACT_COVERAGE.md
CHANGED
|
@@ -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.
|
|
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/
|
|
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/
|
|
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
|
|
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
|
|
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
|
|
106
|
-
synchronized.
|
|
107
|
-
- Keep generated
|
|
108
|
-
source by running `npm run docs:
|
|
109
|
-
the source fingerprint
|
|
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
|
package/EXECUTION_STATE.md
CHANGED
|
@@ -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.
|
package/LOOP_ENGINEERING.md
CHANGED
|
@@ -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
|
|
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.
|
package/LOOP_SYSTEM_DESIGN.md
CHANGED
|
@@ -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.
|
package/PROTOCOL_INTEGRATION.md
CHANGED
|
@@ -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.
|
package/QUALITY_SCORECARD.md
CHANGED
|
@@ -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
|
|
264
|
-
|
|
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
|
-
|
|
303
|
+
[Open the animated ForgeLoop evidence-first engineering flow](./docs/assets/diagrams/forgeloop-engineering-flow.html)
|
|
304
|
+
|
|
305
|
+

|
|
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
|
|
309
|
-
|
|
310
|
-
|
|
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:
|
|
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/
|
|
391
|
-
docs/assets/
|
|
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
|
package/THIRD_PARTY_NOTICES.md
CHANGED
|
@@ -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).
|