@cassiomc1/forgeloop 1.13.0 → 1.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (211) hide show
  1. package/AGENT_COMPATIBILITY.md +8 -0
  2. package/DOCS_INDEX.md +35 -3
  3. package/ENG/nodejs-backend-development-eng.md +2 -2
  4. package/ENG/sec-code-eng.md +7 -7
  5. package/EXECUTION_STATE.md +12 -0
  6. package/LOOP_ENGINEERING.md +28 -2
  7. package/ORCHESTRATOR_INTEGRATION.md +9 -5
  8. package/PROTOCOL_INTEGRATION.md +55 -2
  9. package/README.md +40 -25
  10. package/TERMINOLOGY.md +2 -0
  11. package/THREAT_MODEL.md +140 -1
  12. package/completions/_forgeloop +19 -1
  13. package/completions/forgeloop.bash +37 -1
  14. package/completions/forgeloop.fish +123 -1
  15. package/docs/ADVISORY_CONTEXT.md +25 -0
  16. package/docs/AGENT_BROWSER_ADAPTER.md +81 -0
  17. package/docs/AGENT_BROWSER_VERIFICATION.md +6 -0
  18. package/docs/AGENT_PROTOCOL_SUMMARY.md +27 -2
  19. package/docs/AGENT_SKILL.md +66 -0
  20. package/docs/ARTIFACT_REFERENCE.md +123 -0
  21. package/docs/AUDIT_UX.md +46 -0
  22. package/docs/BROWSER_VERIFICATION.md +136 -0
  23. package/docs/CLI_REFERENCE.md +366 -6
  24. package/docs/CODE_ATTESTATION.md +2 -2
  25. package/docs/DOCUMENTATION_GUIDE.md +32 -11
  26. package/docs/JEV_BENCHMARKS.md +31 -0
  27. package/docs/MODEL_ROUTING.md +37 -0
  28. package/docs/OPENSRC_ADAPTER.md +241 -0
  29. package/docs/PACKAGE_CONTENTS.md +35 -8
  30. package/docs/PROVIDERS.md +126 -0
  31. package/docs/PROVIDER_ARCHITECTURE.md +199 -0
  32. package/docs/RECIPES.md +9 -0
  33. package/docs/RELEASE_CHECKLIST.md +38 -5
  34. package/docs/SECURITY_REVIEW.md +71 -0
  35. package/docs/SEMANTIC_DECISION_PLANE.md +71 -0
  36. package/docs/TEST_INTELLIGENCE.md +29 -0
  37. package/docs/TEST_PRUNING.md +14 -0
  38. package/docs/TROUBLESHOOTING.md +198 -1
  39. package/docs/UNIVERSAL_INTEGRATION.md +31 -0
  40. package/docs/assets/diagrams/forgeloop-code-attestation-flow.html +2 -2
  41. package/docs/assets/diagrams/forgeloop-code-attestation-flow.receipt.json +5 -5
  42. package/docs/assets/diagrams/forgeloop-code-attestation-flow.svg +1 -1
  43. package/docs/assets/diagrams/forgeloop-engineering-flow.html +39 -26
  44. package/docs/assets/diagrams/forgeloop-engineering-flow.receipt.json +6 -6
  45. package/docs/assets/diagrams/forgeloop-engineering-flow.svg +26 -26
  46. package/docs/assets/diagrams/forgeloop-verification-trust-flow.html +2 -1
  47. package/docs/assets/diagrams/forgeloop-verification-trust-flow.receipt.json +5 -5
  48. package/docs/assets/diagrams/forgeloop-verification-trust-flow.svg +1 -1
  49. package/docs/diagrams/README.md +13 -9
  50. package/docs/diagrams/forgeloop-code-attestation-flow.workflow.json +1 -1
  51. package/docs/diagrams/forgeloop-engineering-flow.workflow.json +24 -19
  52. package/docs/diagrams/forgeloop-verification-trust-flow.workflow.json +1 -0
  53. package/docs/diagrams/reviews/forgeloop-code-attestation-flow.review.json +4 -4
  54. package/docs/diagrams/reviews/forgeloop-engineering-flow.review.json +4 -4
  55. package/docs/diagrams/reviews/forgeloop-verification-trust-flow.review.json +4 -4
  56. package/docs/documentation-manifest.json +750 -5
  57. package/docs/protocol-requirements.json +24 -0
  58. package/package.json +30 -3
  59. package/schemas/config.schema.json +14 -0
  60. package/schemas/context-plan.schema.json +18 -0
  61. package/schemas/semantic-decision.schema.json +46 -0
  62. package/schemas/test-utility.schema.json +44 -0
  63. package/scripts/CI_VALIDATORS.md +6 -6
  64. package/scripts/benchmark-jev.mjs +5 -0
  65. package/scripts/benchmark-test-intelligence.mjs +4 -0
  66. package/scripts/generate-agent-protocol-summary.mjs +4 -1
  67. package/scripts/generate-forgeloop-skill.mjs +133 -0
  68. package/scripts/jev-smoke.mjs +19 -0
  69. package/skills/forgeloop/README.md +9 -0
  70. package/skills/forgeloop/SKILL.md +77 -0
  71. package/skills/forgeloop/references/lifecycle.md +9 -0
  72. package/skills/forgeloop/references/recovery.md +7 -0
  73. package/skills/forgeloop/references/verification.md +7 -0
  74. package/src/adapters/agent-browser/assertions.js +47 -0
  75. package/src/adapters/agent-browser/commands.js +54 -0
  76. package/src/adapters/agent-browser/index.js +3 -0
  77. package/src/adapters/agent-browser/locator.js +40 -0
  78. package/src/adapters/agent-browser/process.js +215 -0
  79. package/src/adapters/agent-browser/provider.js +313 -0
  80. package/src/adapters/emulated-services/constants.js +24 -0
  81. package/src/adapters/emulated-services/index.js +7 -0
  82. package/src/adapters/emulated-services/process.js +162 -0
  83. package/src/adapters/emulated-services/provider.js +282 -0
  84. package/src/adapters/opensrc/normalize.js +90 -0
  85. package/src/adapters/opensrc/process.js +248 -0
  86. package/src/adapters/opensrc/provider.js +338 -0
  87. package/src/adapters/opensrc/search.js +264 -0
  88. package/src/adapters/typesafe/client.js +28 -0
  89. package/src/adapters/typesafe/engine.js +63 -0
  90. package/src/adapters/typesafe/normalize.js +41 -0
  91. package/src/cli.js +108 -0
  92. package/src/commands/checkpoint-revalidate.js +176 -0
  93. package/src/commands/context-plan.js +38 -0
  94. package/src/commands/contract-create.js +264 -0
  95. package/src/commands/contract-revise.js +236 -0
  96. package/src/commands/decision-show.js +14 -0
  97. package/src/commands/decision-status.js +22 -0
  98. package/src/commands/discover.js +41 -0
  99. package/src/commands/doctor.js +15 -0
  100. package/src/commands/gate-record.js +205 -0
  101. package/src/commands/gate-revalidate.js +137 -0
  102. package/src/commands/model-route.js +32 -0
  103. package/src/commands/route.js +146 -18
  104. package/src/commands/semantic-plan.js +17 -0
  105. package/src/commands/task-abandon.js +224 -0
  106. package/src/commands/task-migrate-contract-bootstrap-repair.js +288 -0
  107. package/src/commands/task-repair-contract-bootstrap.js +263 -0
  108. package/src/commands/test-inventory.js +5 -0
  109. package/src/commands/test-prune-plan.js +5 -0
  110. package/src/commands/test-prune-probe.js +5 -0
  111. package/src/commands/test-utility.js +5 -0
  112. package/src/commands/validate-protocol.js +10 -1
  113. package/src/core/artifact-registry.js +24 -0
  114. package/src/core/audit-ux.js +514 -0
  115. package/src/core/browser-verification/constants.js +149 -0
  116. package/src/core/browser-verification/normalize.js +254 -0
  117. package/src/core/browser-verification/provider.js +519 -0
  118. package/src/core/browser-verification/service.js +115 -0
  119. package/src/core/checkpoint-revalidation.js +319 -0
  120. package/src/core/cli-command-definitions.js +241 -0
  121. package/src/core/command-executors.js +110 -0
  122. package/src/core/command-input.js +115 -43
  123. package/src/core/completion-artifacts.js +14 -5
  124. package/src/core/completion.js +4 -6
  125. package/src/core/config.js +3 -0
  126. package/src/core/context-compiler/budget.js +9 -0
  127. package/src/core/context-compiler/candidates.js +39 -0
  128. package/src/core/context-compiler/compiler.js +63 -0
  129. package/src/core/context-compiler/fingerprint.js +11 -0
  130. package/src/core/context-compiler/policy.js +13 -0
  131. package/src/core/context-compiler/result.js +23 -0
  132. package/src/core/contract-bootstrap-recovery.js +655 -0
  133. package/src/core/contract-revision.js +210 -0
  134. package/src/core/decision/artifact.js +69 -0
  135. package/src/core/decision/benchmarks.js +103 -0
  136. package/src/core/decision/cache.js +27 -0
  137. package/src/core/decision/constants.js +58 -0
  138. package/src/core/decision/cutover.js +34 -0
  139. package/src/core/decision/engine.js +22 -0
  140. package/src/core/decision/errors.js +68 -0
  141. package/src/core/decision/events.js +101 -0
  142. package/src/core/decision/freshness.js +19 -0
  143. package/src/core/decision/normalizers/index.js +115 -0
  144. package/src/core/decision/policy.js +18 -0
  145. package/src/core/decision/projection.js +16 -0
  146. package/src/core/decision/question-registry.js +201 -0
  147. package/src/core/decision/request.js +26 -0
  148. package/src/core/decision/resolver.js +130 -0
  149. package/src/core/decision/result.js +58 -0
  150. package/src/core/decision/service.js +156 -0
  151. package/src/core/decision/state-builder.js +65 -0
  152. package/src/core/decision/task-bindings.js +30 -0
  153. package/src/core/decision/test-provider.js +32 -0
  154. package/src/core/decision/thresholds.js +15 -0
  155. package/src/core/error-codes.js +278 -0
  156. package/src/core/events.js +226 -57
  157. package/src/core/evidence-readiness.js +9 -0
  158. package/src/core/execution-prerequisites.js +14 -0
  159. package/src/core/execution-profile.js +63 -38
  160. package/src/core/gate-provenance.js +124 -0
  161. package/src/core/integration-invocation-policy.js +27 -4
  162. package/src/core/integration-resources.js +86 -61
  163. package/src/core/model-router/constants.js +10 -0
  164. package/src/core/model-router/policy.js +103 -0
  165. package/src/core/model-router/router.js +37 -0
  166. package/src/core/next-action-model.js +58 -0
  167. package/src/core/next-action-phases.js +130 -42
  168. package/src/core/next-action-refresh.js +43 -9
  169. package/src/core/next-action-review-phase.js +7 -2
  170. package/src/core/next-action.js +35 -7
  171. package/src/core/phase.js +128 -10
  172. package/src/core/preflight-consistency.js +23 -9
  173. package/src/core/preflight-loaders.js +37 -5
  174. package/src/core/protocol-info.js +65 -0
  175. package/src/core/protocol.js +20 -0
  176. package/src/core/reconcile-closure.js +128 -52
  177. package/src/core/recovery-history.js +1 -0
  178. package/src/core/resumability.js +154 -44
  179. package/src/core/route-artifact.js +15 -1
  180. package/src/core/router.js +67 -1
  181. package/src/core/runtime-context.js +118 -61
  182. package/src/core/schema-validation.js +3 -0
  183. package/src/core/security-review/constants.js +64 -0
  184. package/src/core/security-review/normalize.js +245 -0
  185. package/src/core/security-review/provider.js +204 -0
  186. package/src/core/security-review/service.js +134 -0
  187. package/src/core/semantic-planning/constants.js +19 -0
  188. package/src/core/semantic-planning/projection.js +94 -0
  189. package/src/core/semantic-planning/service.js +15 -0
  190. package/src/core/sources.js +37 -0
  191. package/src/core/task-claim-state.js +201 -1
  192. package/src/core/task-conflict-inspection.js +31 -5
  193. package/src/core/task-paths.js +13 -0
  194. package/src/core/task-recovery.js +1 -0
  195. package/src/core/templates.js +3 -0
  196. package/src/core/test-intelligence/benchmarks.js +68 -0
  197. package/src/core/test-intelligence/inventory.js +73 -0
  198. package/src/core/test-intelligence/prune.js +90 -0
  199. package/src/core/test-intelligence/semantic-state.js +15 -0
  200. package/src/core/test-intelligence/service.js +40 -0
  201. package/src/core/test-intelligence/utility.js +50 -0
  202. package/src/core/trace.js +11 -7
  203. package/src/core/transaction.js +1 -0
  204. package/src/integration.d.ts +492 -0
  205. package/src/integration.js +54 -0
  206. package/src/providers/README.md +47 -0
  207. package/src/providers/capabilities.js +46 -0
  208. package/src/providers/errors.js +15 -0
  209. package/src/providers/index.js +29 -0
  210. package/src/providers/json-snapshot.js +105 -0
  211. package/src/providers/registry.js +152 -0
@@ -15,6 +15,14 @@ The canonical integration contract is:
15
15
  These expectations apply to any compatible harness even though this filename is
16
16
  retained as a deprecated compatibility stub:
17
17
 
18
+ ## Portable Agent Skill
19
+
20
+ The generated [`skills/forgeloop/SKILL.md`](./skills/forgeloop/SKILL.md) is a
21
+ portable bootstrap and instruction surface. It does not replace native harness
22
+ shims, certify a harness, or own lifecycle, completion, evidence, or claims.
23
+ Its canonical source hierarchy and freshness rules are documented in
24
+ [`docs/AGENT_SKILL.md`](./docs/AGENT_SKILL.md).
25
+
18
26
  - Feature-detect capability versions from `protocol-info --json` or the stable
19
27
  Integration API; do not infer support from a package version.
20
28
  - Do not auto-recall advisory context, execute advisory text, or treat it as
package/DOCS_INDEX.md CHANGED
@@ -18,6 +18,7 @@ integration and guide context. Use this map before editing documentation.
18
18
  | Getting started tutorial | [`docs/GETTING_STARTED.md`](./docs/GETTING_STARTED.md) | First-time walkthrough from init to completion |
19
19
  | Cross-harness continuity | [`docs/CROSS_HARNESS_CONTINUITY.md`](./docs/CROSS_HARNESS_CONTINUITY.md) | Operational resume guidance, immutable handoffs, and multi-tool resumption |
20
20
  | Agent bootstrap summary | [`docs/AGENT_PROTOCOL_SUMMARY.md`](./docs/AGENT_PROTOCOL_SUMMARY.md) | Generated concise navigation aid for protocol invariants and commands |
21
+ | Agent Skill integration | [`docs/AGENT_SKILL.md`](./docs/AGENT_SKILL.md) | Generated portable, non-authoritative agent guidance and freshness contract |
21
22
  | CLI command reference | [`docs/CLI_REFERENCE.md`](./docs/CLI_REFERENCE.md) | Full syntax, options, and JSON examples for all commands |
22
23
  | Repository Index and Search | [`docs/REPOSITORY_INDEX.md`](./docs/REPOSITORY_INDEX.md) | Mandatory managed engine, indexed search contract, lifecycle, resource, security, and benchmark behavior |
23
24
  | Persistent CLI search transport | [`docs/PERSISTENT_SEARCH_TRANSPORT.md`](./docs/PERSISTENT_SEARCH_TRANSPORT.md) | CLI-only local IPC, host lifecycle, ownership, recovery, bounds, privacy, and direct API/MCP boundary |
@@ -34,12 +35,30 @@ integration and guide context. Use this map before editing documentation.
34
35
  | Revision and signing providers | [`docs/REVISION_PROVIDERS.md`](./docs/REVISION_PROVIDERS.md) and [`docs/SIGNING_PROVIDERS.md`](./docs/SIGNING_PROVIDERS.md) | Provider-neutral extension contracts |
35
36
  | Platform adapters | [`docs/PLATFORM_ADAPTERS.md`](./docs/PLATFORM_ADAPTERS.md) | Generic CI boundary and platform mapping guidance |
36
37
  | Universal integration API | [`docs/UNIVERSAL_INTEGRATION.md`](./docs/UNIVERSAL_INTEGRATION.md) | Programmatic integration subpath, envelope semantics, and consumer map |
38
+ | Audit UX read model | [`docs/AUDIT_UX.md`](./docs/AUDIT_UX.md) | Bounded read-only task timeline, health, verification, ownership, and completion projection |
37
39
  | Advisory context providers | [`docs/ADVISORY_CONTEXT.md`](./docs/ADVISORY_CONTEXT.md) | Optional external host context, non-evidence trust boundary, allowlist normalization, and safety rules |
40
+ | Provider extension architecture | [`docs/PROVIDER_ARCHITECTURE.md`](./docs/PROVIDER_ARCHITECTURE.md) | Provider-neutral architecture, invocation lifecycle, strict snapshots, cancellation, trust, and authority boundaries |
41
+ | Provider extension reference | [`docs/PROVIDERS.md`](./docs/PROVIDERS.md) | Capability discovery, provider kinds, common contract, limits, errors, and maintainer checklist |
42
+ | Security Review provider | [`docs/SECURITY_REVIEW.md`](./docs/SECURITY_REVIEW.md) | Bounded host-injected observation API, strict findings, timeout/cancellation, and non-authority boundary |
38
43
  | Ripwire advisory adapter | [`docs/RIPWIRE_ADAPTER.md`](./docs/RIPWIRE_ADAPTER.md) | Ripwire-specific registration, process contract, JSON mapping, limits, and verification |
44
+ | OpenSrc advisory adapter | [`docs/OPENSRC_ADAPTER.md`](./docs/OPENSRC_ADAPTER.md) | OpenSrc-specific registration, version qualification, cache containment, deterministic search, limits, and verification |
45
+ | Agent Browser verification adapter | [`docs/AGENT_BROWSER_ADAPTER.md`](./docs/AGENT_BROWSER_ADAPTER.md) | Optional host-owned browser executable, bounded observation mapping, isolation, exact origins, screenshots, and trust boundary |
39
46
  | Local-first MCP adapter | [`docs/MCP.md`](./docs/MCP.md) | stdio default, optional strict loopback HTTP; server modes/capabilities and canonical resources |
40
47
  | Adaptive execution-profile benchmarks | [`docs/EXECUTION_PROFILE_BENCHMARKS.md`](./docs/EXECUTION_PROFILE_BENCHMARKS.md) | Measured provider/host runs, robust statistics, paired/distribution deltas, tail status, outliers, and profile-aware host context |
41
48
  | Knowledge integration gap analysis | [`docs/KNOWLEDGE_INTEGRATION_GAP_ANALYSIS.md`](./docs/KNOWLEDGE_INTEGRATION_GAP_ANALYSIS.md) | Repository-only research audit of candidate coverage, proven gaps, canonical homes, context cost, and intentional skip/defer decisions |
42
49
  | Knowledge sources and provenance | [`docs/KNOWLEDGE_SOURCES.md`](./docs/KNOWLEDGE_SOURCES.md) | Snapshot, licensing observations, source roles, accepted/skipped concepts, and reuse boundaries |
50
+ | Semantic decision plane | [`docs/SEMANTIC_DECISION_PLANE.md`](./docs/SEMANTIC_DECISION_PLANE.md) | Mandatory bounded Jev/TypeSafe System One decisions, typed non-authoritative results, freshness, and fail-closed boundaries |
51
+ | Model routing | [`docs/MODEL_ROUTING.md`](./docs/MODEL_ROUTING.md) | Model-route tiers, host-model selection, deterministic safety floors, and ForgeLoop authority boundaries |
52
+ | Jev benchmarks | [`docs/JEV_BENCHMARKS.md`](./docs/JEV_BENCHMARKS.md) | Offline fixtures, live interoperability smoke, live benchmark calls, usage, latency, and non-generalized claims |
53
+ | Test intelligence | [`docs/TEST_INTELLIGENCE.md`](./docs/TEST_INTELLIGENCE.md) | Bounded test utility analysis, protected-test rules, semantic classification, and non-evidence status |
54
+ | Test pruning | [`docs/TEST_PRUNING.md`](./docs/TEST_PRUNING.md) | Keep/probe/block planning, isolated probes, and deterministic proof before any removal or rewrite |
55
+ | Repository Index | [`docs/REPOSITORY_INDEX.md`](./docs/REPOSITORY_INDEX.md) | Managed engine, index lifecycle, CLI/API/MCP behavior, privacy, recovery, and search boundaries |
56
+ | Persistent search transport | [`docs/PERSISTENT_SEARCH_TRANSPORT.md`](./docs/PERSISTENT_SEARCH_TRANSPORT.md) | CLI-only local IPC, host ownership, recovery, limits, and direct API/MCP differences |
57
+ | Provider architecture | [`docs/PROVIDER_ARCHITECTURE.md`](./docs/PROVIDER_ARCHITECTURE.md) and [`docs/PROVIDERS.md`](./docs/PROVIDERS.md) | Provider-neutral invocation, strict normalization, cancellation, trust, and non-authority boundaries |
58
+ | Structural quality | [`docs/STRUCTURAL_QUALITY.md`](./docs/STRUCTURAL_QUALITY.md) | Optional provider-neutral baseline, delta policy, and evidence boundaries |
59
+ | Security review | [`docs/SECURITY_REVIEW.md`](./docs/SECURITY_REVIEW.md) | Host-injected bounded security observations and non-authoritative findings |
60
+ | Agent Browser verification | [`docs/AGENT_BROWSER_ADAPTER.md`](./docs/AGENT_BROWSER_ADAPTER.md) and [`docs/AGENT_BROWSER_VERIFICATION.md`](./docs/AGENT_BROWSER_VERIFICATION.md) | Optional browser adapter, exact-origin observations, screenshots, and non-evidence limits |
61
+ | Documentation history | [`docs/history/README.md`](./docs/history/README.md) | Archived audits, release evidence, and completed validation records with current-owner links |
43
62
  | Documentation guide | [`docs/DOCUMENTATION_GUIDE.md`](./docs/DOCUMENTATION_GUIDE.md) | Rules and checklist for modifying documentation |
44
63
  | Current release checklist | [`docs/RELEASE_CHECKLIST.md`](./docs/RELEASE_CHECKLIST.md) | Package, protocol, attestation, integration, and publication gates |
45
64
  | Core npm package contents | [`docs/PACKAGE_CONTENTS.md`](./docs/PACKAGE_CONTENTS.md) | Published consumer surface, intentional inclusions, exclusions, and clean-room verification |
@@ -75,8 +94,13 @@ is historical evidence and is not part of the published core package.
75
94
  | --- | --- |
76
95
  | **First-time user or developer** | [`docs/GETTING_STARTED.md`](./docs/GETTING_STARTED.md) |
77
96
  | **AI coding agent / harness** | [`docs/AGENT_PROTOCOL_SUMMARY.md`](./docs/AGENT_PROTOCOL_SUMMARY.md) → [`AGENTS.md`](./AGENTS.md) → [`LOOP_ENGINEERING.md`](./LOOP_ENGINEERING.md) |
97
+ | **Understanding mandatory semantic decisions** | [`docs/SEMANTIC_DECISION_PLANE.md`](./docs/SEMANTIC_DECISION_PLANE.md) |
98
+ | **Selecting a model route** | [`docs/MODEL_ROUTING.md`](./docs/MODEL_ROUTING.md) |
99
+ | **Evaluating test utility or pruning** | [`docs/TEST_INTELLIGENCE.md`](./docs/TEST_INTELLIGENCE.md) → [`docs/TEST_PRUNING.md`](./docs/TEST_PRUNING.md) |
100
+ | **Reviewing historical repository evidence** | [`docs/history/README.md`](./docs/history/README.md) |
78
101
  | **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) |
79
102
  | **Harness integrator** | [`PROTOCOL_INTEGRATION.md`](./PROTOCOL_INTEGRATION.md) |
103
+ | **Audit or operator UI integrator** | [`docs/AUDIT_UX.md`](./docs/AUDIT_UX.md) |
80
104
  | **External runtime / orchestrator integrator** | [`ORCHESTRATOR_INTEGRATION.md`](./ORCHESTRATOR_INTEGRATION.md) |
81
105
  | **Resuming another tool / session** | [`docs/CROSS_HARNESS_CONTINUITY.md`](./docs/CROSS_HARNESS_CONTINUITY.md) |
82
106
  | **Looking up CLI commands** | [`docs/CLI_REFERENCE.md`](./docs/CLI_REFERENCE.md) |
@@ -86,6 +110,8 @@ is historical evidence and is not part of the published core package.
86
110
  | **Looking for quick recipes** | [`docs/RECIPES.md`](./docs/RECIPES.md) |
87
111
  | **Configuring structural quality feedback** | [`docs/STRUCTURAL_QUALITY.md`](./docs/STRUCTURAL_QUALITY.md) |
88
112
  | **Configuring Ripwire advisory context** | [`docs/RIPWIRE_ADAPTER.md`](./docs/RIPWIRE_ADAPTER.md) |
113
+ | **Configuring OpenSrc advisory context** | [`docs/OPENSRC_ADAPTER.md`](./docs/OPENSRC_ADAPTER.md) |
114
+ | **Understanding provider extensions** | [`docs/PROVIDER_ARCHITECTURE.md`](./docs/PROVIDER_ARCHITECTURE.md) → [`docs/PROVIDERS.md`](./docs/PROVIDERS.md) |
89
115
  | **Understanding verification trust** | [`docs/REVISION_PROVIDERS.md`](./docs/REVISION_PROVIDERS.md#differential-verification-scope) |
90
116
  | **Understanding attestation trust** | [`docs/CODE_ATTESTATION.md`](./docs/CODE_ATTESTATION.md#trust-levels) |
91
117
  | **Maintaining generated diagrams** | [`docs/diagrams/README.md`](./docs/diagrams/README.md) |
@@ -112,12 +138,17 @@ is historical evidence and is not part of the published core package.
112
138
  - **Measure structural quality without replacing tests**: [`docs/STRUCTURAL_QUALITY.md`](./docs/STRUCTURAL_QUALITY.md)
113
139
  - **Read the normative protocol specification**: [`LOOP_ENGINEERING.md`](./LOOP_ENGINEERING.md)
114
140
  - **Integrate a new AI environment**: [`PROTOCOL_INTEGRATION.md`](./PROTOCOL_INTEGRATION.md)
141
+ - **Build a task audit view**: [`docs/AUDIT_UX.md`](./docs/AUDIT_UX.md)
115
142
  - **Map ForgeLoop state into an external runtime/orchestrator**: [`ORCHESTRATOR_INTEGRATION.md`](./ORCHESTRATOR_INTEGRATION.md)
116
143
  - **Edit documentation safely**: [`docs/DOCUMENTATION_GUIDE.md`](./docs/DOCUMENTATION_GUIDE.md)
117
144
  - **Audit the npm package boundary**: [`docs/PACKAGE_CONTENTS.md`](./docs/PACKAGE_CONTENTS.md)
118
145
  - **Verify source-content attestations**: [`docs/CODE_ATTESTATION.md`](./docs/CODE_ATTESTATION.md)
119
146
  - **Understand narrow verification and checker binding**: [`docs/REVISION_PROVIDERS.md`](./docs/REVISION_PROVIDERS.md#differential-verification-scope)
120
147
  - **Inspect the governed diagrams**: [`docs/diagrams/README.md`](./docs/diagrams/README.md)
148
+ - **Understand mandatory Jev semantics**: [`docs/SEMANTIC_DECISION_PLANE.md`](./docs/SEMANTIC_DECISION_PLANE.md)
149
+ - **Understand model routing**: [`docs/MODEL_ROUTING.md`](./docs/MODEL_ROUTING.md)
150
+ - **Review test utility and pruning safety**: [`docs/TEST_INTELLIGENCE.md`](./docs/TEST_INTELLIGENCE.md) and [`docs/TEST_PRUNING.md`](./docs/TEST_PRUNING.md)
151
+ - **Review historical validation evidence**: [`docs/history/README.md`](./docs/history/README.md)
121
152
 
122
153
  `README.md` is intentionally a catalog and quickstart. Do not copy the full
123
154
  process into adapters or README sections; link to the canonical source.
@@ -125,7 +156,7 @@ process into adapters or README sections; link to the canonical source.
125
156
  ## Lifecycle reading order
126
157
 
127
158
  1. Read [`README.md`](./README.md) for scope and quickstart.
128
- 2. Read [`LOOP_ENGINEERING.md`](./LOOP_ENGINEERING.md) for the process gates.
159
+ 2. Read [`LOOP_ENGINEERING.md`](./LOOP_ENGINEERING.md) for the process gates and [`docs/SEMANTIC_DECISION_PLANE.md`](./docs/SEMANTIC_DECISION_PLANE.md) for mandatory bounded semantic checkpoints.
129
160
  3. Read [`PROTOCOL_INTEGRATION.md`](./PROTOCOL_INTEGRATION.md) for the active
130
161
  runtime or harness boundary.
131
162
  4. Inspect [`PROJECT_PROFILE.md`](./PROJECT_PROFILE.md) and confirm facts from
@@ -152,8 +183,9 @@ loop, and secret-scanning contracts that have not been migrated to Node. Their
152
183
  scope, exact commands, and migration boundary are recorded in
153
184
  [`scripts/CI_VALIDATORS.md`](./scripts/CI_VALIDATORS.md).
154
185
 
155
- The package uses the approved exact `smol-toml` runtime dependency for bounded
156
- Cargo manifest parsing. Development dependencies remain limited to c8, ESLint,
186
+ The package uses the approved exact `@typesafe-ai/sdk` dependency for the pinned
187
+ semantic decision plane and `smol-toml` for bounded Cargo manifest parsing.
188
+ Development dependencies remain limited to c8, ESLint,
157
189
  TypeScript, and YAML and are checked by `npm run dependency:policy`. GitHub
158
190
  Actions use `npm ci`, pinned action SHAs, CodeQL, dependency review, and
159
191
  generated-release notes; npm publication still uses trusted OIDC publishing
@@ -596,10 +596,10 @@ Useful primary references include:
596
596
  [NestJS](https://docs.nestjs.com/), [Koa](https://koajs.com/), and
597
597
  [hapi](https://hapi.dev/)
598
598
  - [TypeScript handbook](https://www.typescriptlang.org/docs/handbook/intro.html)
599
- - [OWASP API Security Top 10](https://owasp.org/API-Security/editions/2023/en/0x11-t10/)
599
+ - [OWASP API Security Top 10](https://owasp.org/projects/api-security-project)
600
600
  - [OWASP SSRF prevention](https://cheatsheetseries.owasp.org/cheatsheets/Server_Side_Request_Forgery_Prevention_Cheat_Sheet.html)
601
601
  - [OWASP Node.js security guidance](https://cheatsheetseries.owasp.org/cheatsheets/Nodejs_Security_Cheat_Sheet.html)
602
- - [RFC 9110 HTTP semantics](https://www.rfc-editor.org/rfc/rfc9110)
602
+ - [RFC 9110 HTTP semantics](https://datatracker.ietf.org/doc/html/rfc9110)
603
603
 
604
604
  These sources inform implementation decisions; they do not replace the
605
605
  repository's pinned runtime, local policy, tests, or ForgeLoop evidence.
@@ -677,11 +677,11 @@ data independently of that choice.
677
677
 
678
678
  ## Sources and References
679
679
 
680
- - OWASP ASVS 5.0.0: https://owasp.org/www-project-application-security-verification-standard/
680
+ - OWASP ASVS 5.0.0: https://owasp.org/projects/asvs
681
681
  - Official OWASP ASVS 5.0.0 CSV: https://github.com/OWASP/ASVS/raw/v5.0.0/5.0/docs_en/OWASP_Application_Security_Verification_Standard_5.0.0_en.csv
682
682
  - OWASP Top 10:2025 (Web): https://owasp.org/Top10/2025/
683
683
  - OWASP Mobile Top 10:2024: https://owasp.org/www-project-mobile-top-10/
684
- - OWASP Mobile Application Security Verification Standard (MASVS) / MASTG: https://owasp.org/www-project-mobile-app-security/
684
+ - OWASP Mobile Application Security Verification Standard (MASVS) / MASTG: https://owasp.org/projects/mobile-application-security
685
685
  - OWASP Cheat Sheet Series: https://cheatsheetseries.owasp.org/
686
686
  - OWASP SSRF Prevention: https://cheatsheetseries.owasp.org/cheatsheets/Server_Side_Request_Forgery_Prevention_Cheat_Sheet.html
687
687
  - OWASP File Upload: https://cheatsheetseries.owasp.org/cheatsheets/File_Upload_Cheat_Sheet.html
@@ -700,11 +700,11 @@ data independently of that choice.
700
700
  - Android Network Security Config and Certificate Transparency: https://developer.android.com/privacy-and-security/security-config
701
701
  - Android cryptography and Keystore: https://developer.android.com/privacy-and-security/cryptography
702
702
  - Android `EncryptedSharedPreferences` (deprecated): https://developer.android.com/reference/androidx/security/crypto/EncryptedSharedPreferences
703
- - OAuth 2.0 Security Best Current Practice, RFC 9700: https://www.rfc-editor.org/rfc/rfc9700
704
- - JWT Best Current Practices, RFC 8725: https://www.rfc-editor.org/rfc/rfc8725
705
- - Web Origin, RFC 6454: https://www.rfc-editor.org/rfc/rfc6454
706
- - OAuth 2.0 Token Introspection, RFC 7662: https://www.rfc-editor.org/rfc/rfc7662
707
- - ChaCha20-Poly1305, RFC 8439: https://www.rfc-editor.org/rfc/rfc8439
703
+ - OAuth 2.0 Security Best Current Practice, RFC 9700: https://datatracker.ietf.org/doc/html/rfc9700
704
+ - JWT Best Current Practices, RFC 8725: https://datatracker.ietf.org/doc/html/rfc8725
705
+ - Web Origin, RFC 6454: https://datatracker.ietf.org/doc/html/rfc6454
706
+ - OAuth 2.0 Token Introspection, RFC 7662: https://datatracker.ietf.org/doc/html/rfc7662
707
+ - ChaCha20-Poly1305, RFC 8439: https://datatracker.ietf.org/doc/html/rfc8439
708
708
  - GitHub Actions: use full-length commit SHA: https://docs.github.com/en/actions/reference/security/secure-use
709
709
  - GitHub artifact attestations: https://docs.github.com/en/actions/how-tos/secure-your-work/use-artifact-attestations/use-artifact-attestations
710
710
  - Apple Platform Security Guide: https://support.apple.com/guide/security/
@@ -31,6 +31,18 @@ task-bound `COMPLETION_VALIDATED` event and coherent state) is required, and a
31
31
  forged or unproven COMPLETE state is `INCONSISTENT` with historical claims
32
32
  retained.
33
33
 
34
+ For an intentional active-task stop, use the explicit canonical command:
35
+
36
+ ```bash
37
+ forgeloop task-abandon --task <id> --acknowledge-abandonment --json
38
+ ```
39
+
40
+ It appends `TASK_ABANDONED`, writes a matching recovery boundary classified
41
+ `ABANDONED`, keeps the current phase unchanged, and resolves ownership to
42
+ `RELEASED_BY_RECOVERY`. It never emits `COMPLETION_VALIDATED` and never grants
43
+ publication authority. `clear-state` only clears a checkpoint and must not be
44
+ used to release claims.
45
+
34
46
  The file is local, ignored by Git, schema-versioned, and never a replacement
35
47
  for the manifest or the target project profile (installed as
36
48
  `.forgeloop/kit/PROJECT_PROFILE.md`). It contains no secrets and is untrusted
@@ -541,6 +541,21 @@ forgeloop preflight
541
541
 
542
542
  `preflight` validates local ForgeLoop artifacts only. It does not invoke the model, run project commands, or treat a prose declaration as evidence. A `READY` result is required before `EXECUTING` in standard and strict workflows. A non-empty `current-contract.unresolvedDecisions[]` causes `forgeloop preflight` to return `BLOCKED` with `E_CONTRACT_UNRESOLVED_DECISION`; a valid `current-contract.assumptions[]` list does not block preparation.
543
543
 
544
+ Required gates are recorded only through `forgeloop gate-record`. The command
545
+ accepts only gates required by the active route or policy, computes artifact
546
+ hashes itself, rejects traversal and symlink escapes, and permits mutation only
547
+ in `ROUTED`, `DESIGNING`, or `PLANNED`. It rejects gate writes after execution
548
+ starts. A satisfied gate requires a meaningful decision and no unknowns.
549
+ Caller-provided evidence remains descriptive local input and cannot assert
550
+ `HOST_ATTESTED`, `FORGELOOP_EXECUTED`, or remote attestation.
551
+
552
+ Built-in contract preset references are limited to the canonical
553
+ `contract-preset:documentation`, `contract-preset:bug`,
554
+ `contract-preset:feature`, and `contract-preset:release` values. These values
555
+ do not require `.forgeloop/sources.json`; mixed contracts still validate every
556
+ non-built-in reference against the source registry, and unknown preset names
557
+ are rejected.
558
+
544
559
  ### Resumable activation and artifact reconciliation
545
560
 
546
561
  `PREFLIGHT_READY` is a durable checkpoint, not only a status value. A persisted
@@ -864,6 +879,15 @@ proportional phases, but:
864
879
  - `REVIEWING` cannot claim independent review when reviewer and implementer
865
880
  identities are equal.
866
881
 
882
+ Immediately after `task-create`, a task may have a valid descriptor and
883
+ hash-linked `TASK_RECEIVED`/transaction history without `work-state.json`.
884
+ ForgeLoop derives `RECEIVED` from that canonical early artifact set. `next`
885
+ returns `DISCOVER`, and `discover` appends the initial discovery milestone
886
+ without creating synthetic work state. `next` then returns `CREATE_CONTRACT`;
887
+ `contract-create` persists and validates the real contract and materializes the
888
+ first work-state checkpoint with its actual contract fingerprint. Invalid,
889
+ contradictory, or unexpected early history remains inconsistent.
890
+
867
891
  Resume rules are conservative: revalidate branch, HEAD, contract fingerprint,
868
892
  protocol version, and required artifacts before continuing; never rerun a
869
893
  completed destructive or publication action automatically; rerun cheap
@@ -989,8 +1013,10 @@ tooling, the agent must verify the capability boundary before using it:
989
1013
  3. Reuse an existing callable capability when it is sufficient for the task.
990
1014
  4. If the required capability is missing and a keyless Qwen path exists,
991
1015
  install only the smallest matching capability, normally
992
- `qwen-mm-plugins-core` for multimodal reading. Use the active harness's
993
- native installation mechanism or the official
1016
+ `qwen-mm-plugins-core` for multimodal reading, when the host or operator has
1017
+ explicitly granted task-scoped installation authority. Without that
1018
+ authority, keep the capability unavailable and report the limitation. Use
1019
+ the active harness's native installation mechanism or the official
994
1020
  [Qwen-MM-Plugins](https://github.com/QwenLM/Qwen-MM-Plugins) instructions.
995
1021
  5. If the operation is API-backed, check the required environment variable or
996
1022
  configured service endpoint before enabling it. Without that prerequisite,
@@ -183,7 +183,8 @@ Attestation Chain](./docs/CODE_ATTESTATION.md#completion-flow).
183
183
 
184
184
  ## Serializable interfaces
185
185
 
186
- The following JSON Schemas define the boundaries a host may implement:
186
+ The following core lifecycle JSON Schemas define boundaries a host may implement;
187
+ the complete current inventory is generated in `docs/ARTIFACT_REFERENCE.md`:
187
188
 
188
189
  - `schemas/routing-input.schema.json` and
189
190
  `schemas/routing-result.schema.json` define deterministic guide selection
@@ -203,6 +204,9 @@ The following JSON Schemas define the boundaries a host may implement:
203
204
  `schemas/config.schema.json`, `schemas/policy.schema.json`, and
204
205
  `schemas/task-bundle.schema.json` define chronology, mode, policy, and
205
206
  handoff boundaries.
207
+ - `schemas/semantic-decision.schema.json`, `schemas/context-plan.schema.json`,
208
+ and `schemas/test-utility.schema.json` define bounded semantic inputs and
209
+ test-intelligence projections without lifecycle or evidence authority.
206
210
 
207
211
  `src/core/conformance.js` validates relationships that individual schemas
208
212
  cannot express: route/state protocol versions, route/state guide sets,
@@ -224,10 +228,10 @@ tool objects, credentials, hidden prompts, or remote database references.
224
228
  ## Host responsibilities
225
229
 
226
230
  The compatible harness owns model execution, tool execution, scheduling,
227
- parallelism, lifecycle, isolation, and any remote services. It must pass
228
- validated inputs to the protocol, preserve file ownership, report unavailable
229
- capabilities, and never turn local success into an unverified publication
230
- claim.
231
+ parallelism, verification isolation, and any remote services. It must invoke
232
+ lifecycle transitions through ForgeLoop, pass validated inputs, preserve file
233
+ ownership, report unavailable capabilities, and never turn local success into an
234
+ unverified publication claim.
231
235
 
232
236
  ## No-runtime boundary
233
237
 
@@ -181,6 +181,16 @@ authority, provenance, and safety-floor decisions remain unchanged.
181
181
  validator-backed completion remains unchanged.
182
182
  ```
183
183
 
184
+ The capability handshake also advertises the versioned, read-only `auditUx`
185
+ resource feature. `task/audit-view` is a bounded presentation projection
186
+ composed from canonical status, audit, report, history, trace, ownership,
187
+ next-action, approval, and recovery resolvers. It exposes no lifecycle,
188
+ evidence, completion, mutation, or external-execution authority; hosts must
189
+ use the canonical command/API path for mutations. Timeline pagination is
190
+ sequence-based and bounded, and the projection omits raw event payloads,
191
+ commands, environment values, credentials, provider output, and absolute
192
+ paths. See [`docs/AUDIT_UX.md`](./docs/AUDIT_UX.md).
193
+
184
194
  ## Capability negotiation
185
195
 
186
196
  The public capability handshake exposes additive capability families separately
@@ -190,6 +200,7 @@ from Protocol v1, schema v1, and Integration API v1:
190
200
  | --- | --- | --- |
191
201
  | `canonicalHandoffs` | v2 | Immutable handoff snapshots with ledger-backed exactly-once operational acceptance |
192
202
  | `advisoryContextProviders` | v1 | Lazy, opt-in, provider-neutral Integration API injection only |
203
+ | `providerExtensions` | v1 | Experimental provider-neutral capability vocabulary; generic registry remains internal and unexported |
193
204
 
194
205
  `repositoryIndex` v1 is a mandatory provider-neutral discovery capability for
195
206
  Git repositories. ForgeLoop currently implements it with a managed, pinned
@@ -223,6 +234,40 @@ instructions. `protocol-info` may advertise the capability, but advisory
223
234
  recall remains a programmatic Integration API operation; there is no stock
224
235
  `context-recall` CLI command.
225
236
 
237
+ <a id="FL-PROVIDER-001"></a> **FL-PROVIDER-001 — `providerExtensions` MUST remain provider-neutral and experimental and MUST NOT imply a public generic provider registry API.**
238
+
239
+ <a id="FL-PROVIDER-002"></a> **FL-PROVIDER-002 — Every advertised provider kind MUST deny lifecycle, completion, and evidence authority.**
240
+
241
+ <a id="FL-PROVIDER-003"></a> **FL-PROVIDER-003 — Provider results MUST cross a strict JSON snapshot boundary before consumer use.**
242
+
243
+ <a id="FL-PROVIDER-004"></a> **FL-PROVIDER-004 — The generic provider registry MUST remain absent from public package subpath exports.**
244
+
245
+ `providerExtensions` v1 is provider-neutral and experimental. It advertises
246
+ five provider kinds, strict JSON result normalization, cooperative cancellation,
247
+ and false lifecycle, completion, evidence, and auto-install authority. This
248
+ capability advertisement does not imply a generic public provider registration
249
+ API or a supported `./providers` package subpath. Protocol version remains 1,
250
+ Schema version remains 1, and Integration API version remains 1.
251
+
252
+ The dedicated `browserVerificationProviders` runtime-context option is a
253
+ separate explicit Integration API boundary. It is host-injected, provider
254
+ neutral, lazy, and inert during context construction. `runBrowserVerification`
255
+ is the only public operation; it does not run from lifecycle commands and does
256
+ not persist observations. ForgeLoop owns the shared deadline, cooperative
257
+ cancellation, strict result snapshot, exact origin/redirect validation, and
258
+ overall assertion-status derivation. Browser observations cannot directly
259
+ create evidence, completion authority, claims, receipts, or next actions. The
260
+ origin allowlist is not a network sandbox and no browser vendor is canonical.
261
+
262
+ The dedicated `securityReviewProviders` runtime-context option is another
263
+ explicit, host-injected Integration API boundary. `runSecurityReview` is
264
+ lazy, inert during context construction, and observation-only: it does not
265
+ install or discover scanners, mutate lifecycle artifacts, create evidence,
266
+ authorize completion, or issue commands. ForgeLoop bounds and freezes the
267
+ request, shares one deadline and cooperative abort signal across factory and
268
+ review, and normalizes the result into a strict immutable observation. Findings
269
+ must not be treated as canonical evidence or lifecycle authority.
270
+
226
271
  A consumer that understands `canonicalHandoffs` v1 but not v2 may disable the
227
272
  handoff-specific UI while keeping Protocol v1 core functionality available.
228
273
  Consumers must feature-detect the capability family and must not mark the
@@ -394,6 +439,12 @@ only a compatibility alias and has identical caller-acknowledgement semantics.
394
439
  a trusted grant reference through a boundary the active actor cannot mint or
395
440
  replace. The standalone CLI does not expose such a self-attestation option.
396
441
 
442
+ Explicit active-task abandonment is a distinct caller-acknowledged operation:
443
+ `task-abandon --task <id> --acknowledge-abandonment` releases validated claims
444
+ through the same canonical ownership resolver, project/task serialization, and
445
+ append-only recovery history. It does not change the phase or create completion,
446
+ publication, or host authority. `clear-state` is not an abandonment substitute.
447
+
397
448
  Claim ownership is a validated relationship, not an artifact preference.
398
449
  <a id="FL-CLAIM-001"></a> **FL-CLAIM-001 — Every harness MUST consume the canonical claim-state resolver**
399
450
  over the descriptor, work state, recovery artifact, and complete validated
@@ -488,8 +539,10 @@ installing a package.
488
539
 
489
540
  The installed loop directs the active actor to inspect native model and harness
490
541
  capabilities. When a task requires a missing capability (e.g. multimodal vision),
491
- the actor may install the smallest task-scoped capability (such as `Qwen-MM-Plugins`)
492
- through native mechanisms or upstream installers, then verify it before use.
542
+ a host or operator may provision the smallest task-scoped capability (such as
543
+ `Qwen-MM-Plugins`) only when installation authority has been explicitly
544
+ granted. Use native mechanisms or upstream installers, then verify it before
545
+ use. Without that authority, keep it unavailable and report the limitation.
493
546
 
494
547
  API credentials, system packages, and unrelated environment changes remain
495
548
  separately gated.
package/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # ForgeLoop — Verifiable Engineering Protocol
2
2
 
3
3
  <p align="center">
4
- <img src="./docs/assets/eng_readme_forgeloop.png" alt="ForgeLoop — Loop Engineering for AI Agents" width="100%">
4
+ <img src="./docs/assets/forgeloop-architecture.svg" alt="ForgeLoop Architecture" width="100%">
5
5
  </p>
6
6
 
7
7
  [![CodeQL](https://github.com/cassiomc1/forgeloop/actions/workflows/codeql.yml/badge.svg?branch=main)](https://github.com/cassiomc1/forgeloop/actions/workflows/codeql.yml)
@@ -11,10 +11,10 @@
11
11
  [![Package smoke](https://github.com/cassiomc1/forgeloop/actions/workflows/package-smoke.yml/badge.svg?branch=main)](https://github.com/cassiomc1/forgeloop/actions/workflows/package-smoke.yml)
12
12
  [![Release notes](https://github.com/cassiomc1/forgeloop/actions/workflows/release-notes.yml/badge.svg?branch=main)](https://github.com/cassiomc1/forgeloop/actions/workflows/release-notes.yml)
13
13
 
14
- ForgeLoop is a protocol CLI for AI-assisted development.
15
- It turns outcomes into contracts, deterministic routing, resumable state,
16
- evidence-backed verification, recovery, cross-harness continuity, repository
17
- discovery, and validator-backed completion—not an agent or LLM runtime.
14
+ ForgeLoop is the deterministic governor for AI-assisted engineering. Jev is the
15
+ mandatory bounded System One semantic input; the host coding model is System Two
16
+ implementation. ForgeLoop alone owns lifecycle, claims, gates, evidence,
17
+ completion, recovery, and publication truth.
18
18
 
19
19
  Operational sources are indexed in [`DOCS_INDEX.md`](./DOCS_INDEX.md).
20
20
  [`LOOP_ENGINEERING.md`](./LOOP_ENGINEERING.md) is canonical;
@@ -29,7 +29,9 @@ Operational sources are indexed in [`DOCS_INDEX.md`](./DOCS_INDEX.md).
29
29
  - **Full protocol specification** → [`LOOP_ENGINEERING.md`](./LOOP_ENGINEERING.md)
30
30
  - **Integrating an AI harness** → [`PROTOCOL_INTEGRATION.md`](./PROTOCOL_INTEGRATION.md)
31
31
  - **Optional advisory context providers** → [`docs/ADVISORY_CONTEXT.md`](./docs/ADVISORY_CONTEXT.md)
32
+ - **Provider extension architecture** → [`docs/PROVIDER_ARCHITECTURE.md`](./docs/PROVIDER_ARCHITECTURE.md) and [`docs/PROVIDERS.md`](./docs/PROVIDERS.md)
32
33
  - **Agent bootstrap summary** → [`docs/AGENT_PROTOCOL_SUMMARY.md`](./docs/AGENT_PROTOCOL_SUMMARY.md)
34
+ - **Portable ForgeLoop Agent Skill** → [`skills/forgeloop/SKILL.md`](./skills/forgeloop/SKILL.md) and [`docs/AGENT_SKILL.md`](./docs/AGENT_SKILL.md)
33
35
  - **Continuing another harness's task** → [`docs/CROSS_HARNESS_CONTINUITY.md`](./docs/CROSS_HARNESS_CONTINUITY.md)
34
36
  - **CLI command reference** → [`docs/CLI_REFERENCE.md`](./docs/CLI_REFERENCE.md)
35
37
  - **Artifact & schema reference** → [`docs/ARTIFACT_REFERENCE.md`](./docs/ARTIFACT_REFERENCE.md)
@@ -113,20 +115,18 @@ npx @cassiomc1/forgeloop doctor
113
115
 
114
116
  ### 60-second demonstration
115
117
 
116
- In a disposable directory, initialize the kit and create an isolated task. The
117
- result is deterministic and can be inspected by any compatible harness:
118
+ In a disposable directory, initialize the kit and create an isolated task.
119
+ Semantic checkpoints require a host-configured `TYPESAFE_API_KEY`; ForgeLoop never persists it.
118
120
 
119
121
  ```bash
120
122
  npx @cassiomc1/forgeloop init
121
123
  forgeloop task-create --task demo --claim src --json
122
- forgeloop route --task demo --work clean-code --json
124
+ forgeloop contract-create --task demo --preset documentation --json
125
+ forgeloop route --task demo --work code --json
123
126
  forgeloop preflight --task demo --json
124
127
  forgeloop next --task demo --json
125
128
  ```
126
129
 
127
- The last command reports the next safe action; it does not execute code or
128
- schedule agents.
129
-
130
130
  ### Optional code attestation
131
131
 
132
132
  Projects may opt into source-content attestation after a valid completion. The
@@ -152,7 +152,9 @@ results. Provider output is never lifecycle state, evidence, authority,
152
152
  completion truth, or next-action authority, and it is never executable as a
153
153
  protocol command. The optional Ripwire adapter follows the same boundary; see
154
154
  [`docs/ADVISORY_CONTEXT.md`](./docs/ADVISORY_CONTEXT.md) and
155
- [`docs/RIPWIRE_ADAPTER.md`](./docs/RIPWIRE_ADAPTER.md).
155
+ [`docs/RIPWIRE_ADAPTER.md`](./docs/RIPWIRE_ADAPTER.md). The optional OpenSrc
156
+ adapter exposes external package source context through the same boundary; see
157
+ [`docs/OPENSRC_ADAPTER.md`](./docs/OPENSRC_ADAPTER.md).
156
158
 
157
159
  ### Optional task boundaries and differential verification
158
160
 
@@ -178,8 +180,8 @@ raising `VERIFIED` to `ATTESTED`. See [`docs/REVISION_PROVIDERS.md`](./docs/REVI
178
180
 
179
181
  Generic CI provides a platform-neutral revision-range boundary; thin GitHub,
180
182
  GitLab, local, or enterprise adapters may translate revisions without adding
181
- trust rules to the protocol core. The CLI and integration API remain usable
182
- across supported platforms, with MCP as an optional local adapter.
183
+ trust rules to the protocol core. CLI and Integration API remain cross-platform;
184
+ MCP is optional.
183
185
 
184
186
  ### Durable external actions
185
187
 
@@ -363,20 +365,20 @@ ForgeLoop supports isolated, concurrent tasks within the same repository via det
363
365
  # Create an isolated task claiming specific directories
364
366
  forgeloop task-create --task auth-feature --claim src/auth --claim tests/auth --json
365
367
 
366
- # List active and completed tasks
367
368
  forgeloop task-list --json
368
369
 
369
- # Ask for deterministic conflict/recovery guidance
370
370
  forgeloop next --task auth-feature --json
371
371
 
372
- # Only for a task classified STALE or ABANDONED: release effective claims
372
+ # Release claims only for a STALE or ABANDONED task
373
373
  forgeloop task-recover --task auth-feature --acknowledge-recovery --json
374
374
 
375
- # Reacquire conflict-free claims before mutating a recovered task again
375
+ # Explicitly abandon an active non-terminal task when its objective is no longer valid
376
+ forgeloop task-abandon --task auth-feature --acknowledge-abandonment --json
377
+
378
+ # Reacquire conflict-free claims before mutating a recovered task
376
379
  forgeloop task-resume --task auth-feature --json
377
380
 
378
- # Run standard lifecycle commands targeting the task
379
- forgeloop route --task auth-feature --work clean-code --surface backend
381
+ forgeloop route --task auth-feature --work code --surface backend
380
382
  forgeloop preflight --task auth-feature --json
381
383
  forgeloop advance --task auth-feature --to EXECUTING
382
384
  forgeloop complete --task auth-feature --json
@@ -395,6 +397,12 @@ disabled. The standalone acknowledgement flag is not host-attested authority.
395
397
  settlement, normal claim-overlap, and clean-checkout checks succeed. Never
396
398
  create, edit, or delete `recovery.json` manually.
397
399
 
400
+ `task-recover` is reserved for canonical `STALE`/`ABANDONED` classification.
401
+ `task-abandon` is the separate explicit path for an active non-terminal task:
402
+ it records `TASK_ABANDONED`, releases claims as `RELEASED_BY_RECOVERY`, keeps
403
+ the phase unchanged, and never implies completion or publication. `clear-state`
404
+ only removes a checkpoint and is not a claim-release or abandonment mechanism.
405
+
398
406
  ### Executable policy verification & brownfield baselines
399
407
 
400
408
  ForgeLoop enforces automated, non-interactive verification rules (`rules.json`) with zero interactive dependencies:
@@ -431,12 +439,20 @@ See [`docs/CLI_REFERENCE.md`](./docs/CLI_REFERENCE.md) and [`LOOP_SYSTEM_DESIGN.
431
439
 
432
440
  ## Architecture flow
433
441
 
442
+ <a href="./docs/assets/diagrams/forgeloop-engineering-flow.html">
443
+ <img src="./docs/assets/forgeloop-lifecycle-animated.svg" alt="Animated ForgeLoop evidence-first loop: Contract, Route, Preflight, Execute, Evidence, Review, VALID, with an evidence-only correction loop" width="100%">
444
+ </a>
445
+
446
+ *Animation: the rail pulses through each step in order. It loops forever and
447
+ respects reduced-motion settings. Select the image to open the full animated
448
+ interactive explorer.*
449
+
434
450
  The canonical source is the typed Archify workflow
435
451
  [`docs/diagrams/forgeloop-engineering-flow.workflow.json`](./docs/diagrams/forgeloop-engineering-flow.workflow.json).
436
452
  The committed animated interactive explorer is
437
453
  [`docs/assets/diagrams/forgeloop-engineering-flow.html`](./docs/assets/diagrams/forgeloop-engineering-flow.html),
438
454
  which traces it. The
439
- animated, self-contained SVG fallback is
455
+ detailed, self-contained SVG fallback is
440
456
  [`docs/assets/diagrams/forgeloop-engineering-flow.svg`](./docs/assets/diagrams/forgeloop-engineering-flow.svg),
441
457
  and the deterministic hash receipt is
442
458
  [`docs/assets/diagrams/forgeloop-engineering-flow.receipt.json`](./docs/assets/diagrams/forgeloop-engineering-flow.receipt.json).
@@ -449,8 +465,6 @@ The broader architecture and the CLI-only search boundary are in
449
465
 
450
466
  [Open the animated ForgeLoop evidence-first engineering flow](./docs/assets/diagrams/forgeloop-engineering-flow.html)
451
467
 
452
- ![ForgeLoop evidence-first engineering flow (animated SVG fallback)](./docs/assets/diagrams/forgeloop-engineering-flow.svg)
453
-
454
468
  Two focused, source-bound workflow
455
469
  diagrams complement it. The [Verification Trust Flow source](./docs/diagrams/forgeloop-verification-trust-flow.workflow.json),
456
470
  [animated explorer](./docs/assets/diagrams/forgeloop-verification-trust-flow.html),
@@ -516,8 +530,9 @@ it must not infer current ownership from `task.json` or `recovery.json` alone.
516
530
 
517
531
  ## Security and dependency boundary
518
532
 
519
- Runtime uses Node built-ins and approved exact `smol-toml`; it installs no
520
- agents, providers, plugins, services, or telemetry. Paths, symlinks, JSON,
533
+ Runtime uses Node built-ins and the approved exact `@typesafe-ai/sdk` and
534
+ `smol-toml` dependencies; it installs no agents, providers, plugins, services,
535
+ or telemetry. Paths, symlinks, JSON,
521
536
  manifests, schemas, receipts, and secret-like values are bounded or checked.
522
537
  Install-capable verification requires trusted host authority; see
523
538
  [`THREAT_MODEL.md`](./THREAT_MODEL.md).
package/TERMINOLOGY.md CHANGED
@@ -33,6 +33,8 @@
33
33
  | Integration level | The capability tier of an execution environment (`INSTRUCTION_DISCOVERED`, `PROTOCOL_CAPABLE`, `PROTOCOL_LIMITED`, `CONFORMANCE_VERIFIED`). |
34
34
  | Recovered task | A non-terminal task whose ordinary mutation authority is suspended and whose effective write claims are released by durable `recovery.json` state. |
35
35
  | Recovery acknowledgement | A caller declaration that it intends to recover a task classified `STALE` or `ABANDONED`; it is not a host-attested authority grant. |
36
+ | Active-task abandonment | An explicit caller-acknowledged `task-abandon` operation that releases validated claims for a non-terminal active task without changing its phase or asserting completion. |
37
+ | Abandonment event | The append-only `TASK_ABANDONED` recovery boundary and its transaction witness; it is distinct from automatic stale-task recovery and from completion. |
36
38
  | Historical claims | The write claims retained in `task.json` as task history, including while recovery releases their active ownership. |
37
39
  | Effective claims | The claims currently enforced for ownership conflicts: descriptor claims for an active task, or an empty set after validator-backed completion or active recovery. |
38
40
  | Claim reacquisition | The serialized `task-resume` operation that rechecks conflicts and checkout cleanliness before removing recovery state and restoring mutation authority. |