@cassiomc1/forgeloop 1.13.0 → 2.0.0-rc.2

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 (395) hide show
  1. package/AGENT_COMPATIBILITY.md +8 -0
  2. package/CONTRIBUTING.md +11 -7
  3. package/DOCS_INDEX.md +37 -4
  4. package/ENG/c-development-eng.md +2 -2
  5. package/ENG/cpp-development-eng.md +2 -2
  6. package/ENG/dotnet-aspnetcore-development-eng.md +7 -1
  7. package/ENG/flutter-development-eng.md +4 -2
  8. package/ENG/go-development-eng.md +2 -2
  9. package/ENG/java-development-eng.md +3 -3
  10. package/ENG/nodejs-backend-development-eng.md +10 -6
  11. package/ENG/php-development-eng.md +3 -3
  12. package/ENG/python-development-eng.md +205 -0
  13. package/ENG/rust-development-eng.md +42 -1
  14. package/ENG/sec-code-eng.md +7 -7
  15. package/ENG/sql-development-eng.md +4 -4
  16. package/ENG/swift-development-eng.md +5 -4
  17. package/ENG/test-code-eng.md +1 -1
  18. package/ENG/typescript-development-eng.md +4 -4
  19. package/EXECUTION_STATE.md +12 -0
  20. package/GUIDE_ROUTER.md +6 -0
  21. package/LICENSE +133 -21
  22. package/LOOP_ENGINEERING.md +28 -2
  23. package/LOOP_SYSTEM_DESIGN.md +10 -10
  24. package/ORCHESTRATOR_INTEGRATION.md +9 -5
  25. package/PROTOCOL_INTEGRATION.md +55 -2
  26. package/README.md +63 -59
  27. package/TERMINOLOGY.md +2 -0
  28. package/THIRD_PARTY_NOTICES.md +3 -4
  29. package/THREAT_MODEL.md +140 -1
  30. package/completions/_forgeloop +29 -3
  31. package/completions/forgeloop.bash +55 -3
  32. package/completions/forgeloop.fish +183 -1
  33. package/docs/ADVISORY_CONTEXT.md +25 -0
  34. package/docs/AGENT_BROWSER_ADAPTER.md +81 -0
  35. package/docs/AGENT_BROWSER_VERIFICATION.md +6 -0
  36. package/docs/AGENT_PROTOCOL_SUMMARY.md +74 -39
  37. package/docs/AGENT_SKILL.md +66 -0
  38. package/docs/ARTIFACT_REFERENCE.md +171 -35
  39. package/docs/AUDIT_UX.md +46 -0
  40. package/docs/BROWSER_VERIFICATION.md +136 -0
  41. package/docs/CLI_REFERENCE.md +512 -8
  42. package/docs/CODE_ATTESTATION.md +2 -2
  43. package/docs/DOCUMENTATION_GUIDE.md +34 -11
  44. package/docs/GETTING_STARTED.md +3 -3
  45. package/docs/JEV_BENCHMARKS.md +31 -0
  46. package/docs/MODEL_ROUTING.md +37 -0
  47. package/docs/OPENSRC_ADAPTER.md +241 -0
  48. package/docs/PACKAGE_CONTENTS.md +46 -18
  49. package/docs/PROVIDERS.md +126 -0
  50. package/docs/PROVIDER_ARCHITECTURE.md +199 -0
  51. package/docs/RECIPES.md +9 -0
  52. package/docs/RELEASE_CHECKLIST.md +116 -12
  53. package/docs/SECURITY_REVIEW.md +71 -0
  54. package/docs/SELF_HOSTED_TESTS.md +121 -0
  55. package/docs/SEMANTIC_DECISION_PLANE.md +71 -0
  56. package/docs/TEST_INTELLIGENCE.md +29 -0
  57. package/docs/TEST_PRUNING.md +14 -0
  58. package/docs/TROUBLESHOOTING.md +198 -1
  59. package/docs/UNIVERSAL_INTEGRATION.md +31 -0
  60. package/docs/assets/diagrams/forgeloop-code-attestation-flow.html +2 -2
  61. package/docs/assets/diagrams/forgeloop-code-attestation-flow.receipt.json +5 -5
  62. package/docs/assets/diagrams/forgeloop-code-attestation-flow.svg +1 -1
  63. package/docs/assets/diagrams/forgeloop-engineering-flow.html +39 -26
  64. package/docs/assets/diagrams/forgeloop-engineering-flow.receipt.json +6 -6
  65. package/docs/assets/diagrams/forgeloop-engineering-flow.svg +26 -26
  66. package/docs/assets/diagrams/forgeloop-verification-trust-flow.html +2 -1
  67. package/docs/assets/diagrams/forgeloop-verification-trust-flow.receipt.json +5 -5
  68. package/docs/assets/diagrams/forgeloop-verification-trust-flow.svg +1 -1
  69. package/docs/diagrams/README.md +13 -9
  70. package/docs/diagrams/forgeloop-code-attestation-flow.workflow.json +1 -1
  71. package/docs/diagrams/forgeloop-engineering-flow.workflow.json +24 -19
  72. package/docs/diagrams/forgeloop-verification-trust-flow.workflow.json +1 -0
  73. package/docs/diagrams/reviews/forgeloop-code-attestation-flow.review.json +4 -4
  74. package/docs/diagrams/reviews/forgeloop-engineering-flow.review.json +4 -4
  75. package/docs/diagrams/reviews/forgeloop-verification-trust-flow.review.json +4 -4
  76. package/docs/documentation-manifest.json +774 -16
  77. package/docs/protocol-requirements.json +24 -0
  78. package/package.json +43 -11
  79. package/schemas/config.schema.json +14 -0
  80. package/schemas/context-plan.schema.json +18 -0
  81. package/schemas/semantic-decision.schema.json +46 -0
  82. package/schemas/task-bundle.schema.json +7 -2
  83. package/schemas/test-utility.schema.json +44 -0
  84. package/scripts/CI_VALIDATORS.md +6 -6
  85. package/scripts/benchmark-jev.mjs +5 -0
  86. package/scripts/benchmark-test-intelligence.mjs +4 -0
  87. package/scripts/generate-agent-protocol-summary.mjs +6 -3
  88. package/scripts/generate-forgeloop-skill.mjs +133 -0
  89. package/scripts/jev-smoke.mjs +19 -0
  90. package/scripts/run-mcp-clean-tests.mjs +30 -0
  91. package/skills/forgeloop/README.md +9 -0
  92. package/skills/forgeloop/SKILL.md +77 -0
  93. package/skills/forgeloop/references/lifecycle.md +9 -0
  94. package/skills/forgeloop/references/recovery.md +7 -0
  95. package/skills/forgeloop/references/verification.md +7 -0
  96. package/src/adapters/agent-browser/assertions.js +47 -0
  97. package/src/adapters/agent-browser/commands.js +54 -0
  98. package/src/adapters/agent-browser/index.js +3 -0
  99. package/src/adapters/agent-browser/locator.js +40 -0
  100. package/src/adapters/agent-browser/process.js +215 -0
  101. package/src/adapters/agent-browser/provider.js +316 -0
  102. package/src/adapters/emulated-services/constants.js +24 -0
  103. package/src/adapters/emulated-services/index.js +7 -0
  104. package/src/adapters/emulated-services/process.js +162 -0
  105. package/src/adapters/emulated-services/provider.js +289 -0
  106. package/src/adapters/opensrc/normalize.js +90 -0
  107. package/src/adapters/opensrc/process.js +248 -0
  108. package/src/adapters/opensrc/provider.js +338 -0
  109. package/src/adapters/opensrc/search.js +264 -0
  110. package/src/adapters/temporary-paths.js +18 -0
  111. package/src/adapters/typesafe/client.js +28 -0
  112. package/src/adapters/typesafe/engine.js +63 -0
  113. package/src/adapters/typesafe/normalize.js +41 -0
  114. package/src/cli.js +218 -174
  115. package/src/commands/action-show.js +5 -2
  116. package/src/commands/advance.js +5 -1
  117. package/src/commands/baseline.js +13 -11
  118. package/src/commands/checkpoint-revalidate.js +192 -0
  119. package/src/commands/complete.js +19 -3
  120. package/src/commands/context-plan.js +38 -0
  121. package/src/commands/contract-create.js +266 -0
  122. package/src/commands/contract-revise.js +236 -0
  123. package/src/commands/decision-show.js +14 -0
  124. package/src/commands/decision-status.js +22 -0
  125. package/src/commands/discover.js +41 -0
  126. package/src/commands/doctor.js +51 -13
  127. package/src/commands/gate-record.js +194 -0
  128. package/src/commands/gate-revalidate.js +135 -0
  129. package/src/commands/handoff-list.js +6 -1
  130. package/src/commands/handoff-show.js +6 -1
  131. package/src/commands/migrate-protocol.js +2 -2
  132. package/src/commands/model-route.js +40 -0
  133. package/src/commands/next.js +7 -1
  134. package/src/commands/policy-diff.js +25 -4
  135. package/src/commands/progress.js +17 -11
  136. package/src/commands/record-diagnosis.js +3 -0
  137. package/src/commands/route.js +146 -18
  138. package/src/commands/semantic-plan.js +41 -0
  139. package/src/commands/status.js +6 -1
  140. package/src/commands/storage-backup.js +15 -0
  141. package/src/commands/storage-migrate.js +5 -0
  142. package/src/commands/storage-migration-resume.js +5 -0
  143. package/src/commands/storage-migration-status.js +44 -0
  144. package/src/commands/storage-restore-resume.js +7 -0
  145. package/src/commands/storage-restore.js +8 -0
  146. package/src/commands/task-abandon.js +224 -0
  147. package/src/commands/task-list.js +8 -43
  148. package/src/commands/task-migrate-contract-bootstrap-repair.js +288 -0
  149. package/src/commands/task-migrate.js +3 -3
  150. package/src/commands/task-recover.js +10 -2
  151. package/src/commands/task-repair-contract-bootstrap.js +263 -0
  152. package/src/commands/task-scope.js +18 -2
  153. package/src/commands/task-show.js +16 -2
  154. package/src/commands/test-inventory.js +5 -0
  155. package/src/commands/test-prune-plan.js +5 -0
  156. package/src/commands/test-prune-probe.js +5 -0
  157. package/src/commands/test-utility.js +5 -0
  158. package/src/commands/validate-protocol.js +39 -15
  159. package/src/commands/validate-receipt.js +8 -1
  160. package/src/config/guides.json +4 -0
  161. package/src/core/action-ledger-projection.js +10 -3
  162. package/src/core/actions.js +38 -75
  163. package/src/core/activation.js +11 -3
  164. package/src/core/approvals.js +17 -51
  165. package/src/core/artifact-registry.js +83 -2
  166. package/src/core/artifacts.js +81 -27
  167. package/src/core/attachment-paths.js +45 -0
  168. package/src/core/attestation-coverage.js +6 -1
  169. package/src/core/attestation-verifier.js +21 -2
  170. package/src/core/attestation.js +17 -6
  171. package/src/core/audit-ux.js +514 -0
  172. package/src/core/audit.js +6 -1
  173. package/src/core/browser-verification/constants.js +149 -0
  174. package/src/core/browser-verification/normalize.js +254 -0
  175. package/src/core/browser-verification/provider.js +519 -0
  176. package/src/core/browser-verification/service.js +115 -0
  177. package/src/core/bundles.js +160 -66
  178. package/src/core/checkpoint-revalidation.js +321 -0
  179. package/src/core/cli-command-definitions.js +350 -7
  180. package/src/core/code-manifest.js +9 -3
  181. package/src/core/command-executors.js +274 -108
  182. package/src/core/command-input.js +136 -44
  183. package/src/core/completion-artifacts.js +85 -34
  184. package/src/core/completion-ownership.js +19 -8
  185. package/src/core/completion-recovery-rebind.js +11 -1
  186. package/src/core/completion.js +64 -15
  187. package/src/core/config.js +3 -0
  188. package/src/core/conformance.js +2 -1
  189. package/src/core/context-compiler/budget.js +9 -0
  190. package/src/core/context-compiler/candidates.js +39 -0
  191. package/src/core/context-compiler/compiler.js +63 -0
  192. package/src/core/context-compiler/fingerprint.js +11 -0
  193. package/src/core/context-compiler/policy.js +13 -0
  194. package/src/core/context-compiler/result.js +23 -0
  195. package/src/core/continuity-lint.js +13 -2
  196. package/src/core/continuity-reconciliation.js +16 -3
  197. package/src/core/continuity.js +16 -8
  198. package/src/core/contract-bootstrap-recovery.js +656 -0
  199. package/src/core/contract-revision.js +209 -0
  200. package/src/core/decision/artifact.js +70 -0
  201. package/src/core/decision/benchmarks.js +103 -0
  202. package/src/core/decision/cache.js +27 -0
  203. package/src/core/decision/constants.js +58 -0
  204. package/src/core/decision/cutover.js +34 -0
  205. package/src/core/decision/engine.js +22 -0
  206. package/src/core/decision/errors.js +68 -0
  207. package/src/core/decision/events.js +104 -0
  208. package/src/core/decision/freshness.js +19 -0
  209. package/src/core/decision/normalizers/index.js +115 -0
  210. package/src/core/decision/policy.js +18 -0
  211. package/src/core/decision/projection.js +16 -0
  212. package/src/core/decision/question-registry.js +201 -0
  213. package/src/core/decision/request.js +26 -0
  214. package/src/core/decision/resolver.js +138 -0
  215. package/src/core/decision/result.js +58 -0
  216. package/src/core/decision/service.js +181 -0
  217. package/src/core/decision/state-builder.js +65 -0
  218. package/src/core/decision/task-bindings.js +35 -0
  219. package/src/core/decision/test-provider.js +32 -0
  220. package/src/core/decision/thresholds.js +15 -0
  221. package/src/core/diagnosis-model.js +11 -0
  222. package/src/core/diagnosis.js +10 -1
  223. package/src/core/diagnostic-projection.js +29 -12
  224. package/src/core/diagnostic-record.js +28 -3
  225. package/src/core/efficiency.js +6 -1
  226. package/src/core/error-codes.js +278 -0
  227. package/src/core/events.js +535 -147
  228. package/src/core/evidence-readiness.js +9 -0
  229. package/src/core/execution-prerequisites.js +36 -13
  230. package/src/core/execution-profile.js +63 -38
  231. package/src/core/execution.js +26 -40
  232. package/src/core/filesystem.js +11 -0
  233. package/src/core/gate-artifact.js +105 -19
  234. package/src/core/gate-provenance.js +125 -0
  235. package/src/core/handoff.js +26 -14
  236. package/src/core/history.js +39 -35
  237. package/src/core/hypothesis-projection.js +32 -0
  238. package/src/core/information-gain-projection.js +104 -100
  239. package/src/core/inspect.js +12 -3
  240. package/src/core/integration-invocation-policy.js +37 -4
  241. package/src/core/integration-resources.js +119 -87
  242. package/src/core/ledger-event-collection.js +189 -0
  243. package/src/core/ledger-relations.js +23 -0
  244. package/src/core/model-router/constants.js +10 -0
  245. package/src/core/model-router/policy.js +103 -0
  246. package/src/core/model-router/router.js +37 -0
  247. package/src/core/native-storage.js +12 -0
  248. package/src/core/next-action-continuity.js +31 -9
  249. package/src/core/next-action-model.js +58 -0
  250. package/src/core/next-action-phases.js +131 -43
  251. package/src/core/next-action-refresh.js +43 -9
  252. package/src/core/next-action-review-phase.js +9 -4
  253. package/src/core/next-action-verification-phase.js +2 -1
  254. package/src/core/next-action.js +56 -9
  255. package/src/core/phase.js +266 -103
  256. package/src/core/policy-engine.js +12 -13
  257. package/src/core/preflight-consistency.js +89 -62
  258. package/src/core/preflight-loaders.js +48 -9
  259. package/src/core/preflight-model.js +6 -1
  260. package/src/core/preflight.js +29 -12
  261. package/src/core/progress.js +21 -10
  262. package/src/core/protocol-info.js +68 -0
  263. package/src/core/protocol-migration.js +7 -6
  264. package/src/core/protocol.js +20 -0
  265. package/src/core/reconcile-closure.js +281 -67
  266. package/src/core/recovery-history.js +67 -47
  267. package/src/core/reflection.js +72 -77
  268. package/src/core/responsibility.js +25 -13
  269. package/src/core/resumability.js +154 -44
  270. package/src/core/route-artifact.js +28 -4
  271. package/src/core/router.js +67 -1
  272. package/src/core/runtime-context.js +123 -61
  273. package/src/core/schema-validation.js +11 -3
  274. package/src/core/security-review/constants.js +64 -0
  275. package/src/core/security-review/normalize.js +245 -0
  276. package/src/core/security-review/provider.js +204 -0
  277. package/src/core/security-review/service.js +134 -0
  278. package/src/core/semantic-planning/constants.js +19 -0
  279. package/src/core/semantic-planning/projection.js +94 -0
  280. package/src/core/semantic-planning/service.js +15 -0
  281. package/src/core/settlement.js +12 -1
  282. package/src/core/signing/bundle-file.js +53 -0
  283. package/src/core/signing/bundle-reference.js +15 -0
  284. package/src/core/signing/sigstore.js +60 -33
  285. package/src/core/signing/statement-file.js +27 -0
  286. package/src/core/sources.js +37 -0
  287. package/src/core/storage-runtime-registry.js +41 -0
  288. package/src/core/structural-quality/artifacts.js +20 -14
  289. package/src/core/structural-quality/service.js +81 -56
  290. package/src/core/target-layout.js +1 -1
  291. package/src/core/task-claim-state.js +249 -15
  292. package/src/core/task-command.js +21 -1
  293. package/src/core/task-conflict-inspection.js +133 -102
  294. package/src/core/task-descriptor.js +29 -22
  295. package/src/core/task-discovery.js +288 -90
  296. package/src/core/task-lock.js +66 -306
  297. package/src/core/task-migration-validation.js +5 -5
  298. package/src/core/task-migration.js +17 -287
  299. package/src/core/task-paths.js +13 -0
  300. package/src/core/task-recovery.js +1 -0
  301. package/src/core/task-snapshot.js +51 -8
  302. package/src/core/task-storage-migration.js +18 -0
  303. package/src/core/templates.js +23 -8
  304. package/src/core/test-intelligence/benchmarks.js +68 -0
  305. package/src/core/test-intelligence/inventory.js +73 -0
  306. package/src/core/test-intelligence/prune.js +94 -0
  307. package/src/core/test-intelligence/semantic-state.js +15 -0
  308. package/src/core/test-intelligence/service.js +40 -0
  309. package/src/core/test-intelligence/utility.js +50 -0
  310. package/src/core/trace.js +164 -105
  311. package/src/core/trajectory-evaluation.js +15 -3
  312. package/src/core/trajectory-metrics.js +47 -32
  313. package/src/core/transaction.js +16 -287
  314. package/src/core/verification-scope.js +20 -12
  315. package/src/core/work-state.js +100 -59
  316. package/src/integration.d.ts +492 -0
  317. package/src/integration.js +54 -0
  318. package/src/providers/README.md +47 -0
  319. package/src/providers/capabilities.js +46 -0
  320. package/src/providers/errors.js +15 -0
  321. package/src/providers/index.js +29 -0
  322. package/src/providers/json-snapshot.js +105 -0
  323. package/src/providers/registry.js +152 -0
  324. package/src/repository-index/binary-manager.js +7 -5
  325. package/src/storage/artifact-bytes.js +22 -0
  326. package/src/storage/attachment-binding.js +11 -0
  327. package/src/storage/attachment-files.js +82 -0
  328. package/src/storage/attachment-references.js +36 -0
  329. package/src/storage/backup.js +53 -0
  330. package/src/storage/capabilities.js +31 -0
  331. package/src/storage/connection-owner.js +119 -0
  332. package/src/storage/connection.js +376 -0
  333. package/src/storage/existing-project-scope.js +45 -0
  334. package/src/storage/export-destination.js +44 -0
  335. package/src/storage/exporter.js +284 -0
  336. package/src/storage/file-durability.js +46 -0
  337. package/src/storage/importer.js +461 -0
  338. package/src/storage/index.js +74 -0
  339. package/src/storage/leases.js +63 -0
  340. package/src/storage/ledger-event-snapshot.js +150 -0
  341. package/src/storage/ledger-relations.js +220 -0
  342. package/src/storage/legacy-maintenance-boundary.js +18 -0
  343. package/src/storage/legacy-signature.js +115 -0
  344. package/src/storage/maintenance-handoff.js +129 -0
  345. package/src/storage/maintenance-owner.js +42 -0
  346. package/src/storage/maintenance.js +310 -0
  347. package/src/storage/metadata-json.js +35 -0
  348. package/src/storage/migration-activate.js +59 -0
  349. package/src/storage/migration-archive.js +57 -0
  350. package/src/storage/migration-attachment-root.js +61 -0
  351. package/src/storage/migration-candidate.js +398 -0
  352. package/src/storage/migration-publication.js +143 -0
  353. package/src/storage/migration-rollback-admission.js +54 -0
  354. package/src/storage/migration-rollback-preparation.js +132 -0
  355. package/src/storage/migration-rollback-publication.js +183 -0
  356. package/src/storage/migration-rollback-release.js +66 -0
  357. package/src/storage/migration-rollback-source-stage.js +103 -0
  358. package/src/storage/migration-rollback.js +43 -0
  359. package/src/storage/migration-source-partition.js +56 -0
  360. package/src/storage/migration-source.js +255 -0
  361. package/src/storage/migration-terminal.js +39 -0
  362. package/src/storage/migration-validation.js +75 -0
  363. package/src/storage/migration.js +43 -0
  364. package/src/storage/operational-attachments.js +49 -0
  365. package/src/storage/operational-context.js +50 -0
  366. package/src/storage/project-backup.js +98 -0
  367. package/src/storage/project-bootstrap.js +24 -0
  368. package/src/storage/project-boundary.js +79 -0
  369. package/src/storage/project-read-snapshot.js +18 -0
  370. package/src/storage/project-replacement.js +137 -0
  371. package/src/storage/project-restore.js +203 -0
  372. package/src/storage/record-definitions.js +45 -0
  373. package/src/storage/repository.js +507 -0
  374. package/src/storage/restore-journal.js +62 -0
  375. package/src/storage/restore-layout.js +30 -0
  376. package/src/storage/restore-preparation.js +84 -0
  377. package/src/storage/restore-replacement-archive.js +162 -0
  378. package/src/storage/restore-replacement-owner.js +31 -0
  379. package/src/storage/restore-replacement-preparation.js +128 -0
  380. package/src/storage/restore-replacement.js +142 -0
  381. package/src/storage/restore-terminal.js +32 -0
  382. package/src/storage/runtime.js +31 -0
  383. package/src/storage/schema.js +214 -0
  384. package/src/storage/singleton-import.js +84 -0
  385. package/src/storage/snapshot-continuity.js +16 -0
  386. package/src/storage/snapshot.js +36 -0
  387. package/src/storage/storage-marker.js +79 -0
  388. package/src/storage/task-guards.js +107 -0
  389. package/src/storage/topology.js +42 -0
  390. package/src/storage/transaction.js +179 -0
  391. package/src/storage/unit-of-work.js +663 -0
  392. package/src/storage/windows-process-incarnation.js +206 -0
  393. package/.forgeloop/forgeloop.gitignore +0 -4
  394. package/LICENSE-DOCS.md +0 -13
  395. package/src/core/transaction-maintenance.js +0 -70
@@ -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/
@@ -3,7 +3,7 @@ name: sql-development-eng
3
3
  language: en
4
4
  description: "Specialist overlay guidance for SQL schemas, queries, migrations, and database-boundary changes."
5
5
  version: "2026.09"
6
- last-reviewed: "2026-09-12"
6
+ last-reviewed: "2026-10-13"
7
7
  guide-id: sql
8
8
  requires-gates:
9
9
  - threat-boundary
@@ -37,9 +37,9 @@ migration, reads credentials, or introspects a schema.
37
37
  The repository's database engine, version, migration policy, transaction model,
38
38
  compatibility window, and deployment process win over generic SQL advice. Use
39
39
  the matching engine's official reference first, then ISO/IEC 9075:2023 for
40
- portable semantics. The research snapshot covers PostgreSQL 18.6, MySQL 9.7
41
- Innovation and 8.4 LTS, SQL Server 17 T-SQL, Oracle AI Database 26, and
42
- SQLite; these are reference points, not automatic upgrade targets.
40
+ portable semantics. The 2026-10-13 reference check covers PostgreSQL 18.6, MySQL 9.7 Innovation
41
+ and 8.4 LTS, SQL Server 17 T-SQL, Oracle AI Database 26, and SQLite 3.54.0.
42
+ These are reference points, not automatic upgrade targets.
43
43
 
44
44
  Never infer a dialect, isolation guarantee, identifier rule, timestamp
45
45
  behavior, JSON extension, or migration capability from a file extension.
@@ -3,7 +3,7 @@ name: swift-development-eng
3
3
  language: en
4
4
  description: "Specialist guidance for production Swift applications, packages, services, and Apple-platform components."
5
5
  version: "2026.09"
6
- last-reviewed: "2026-09-12"
6
+ last-reviewed: "2026-10-13"
7
7
  guide-id: swift
8
8
  requires-gates:
9
9
  - threat-boundary
@@ -34,9 +34,8 @@ plugins, build scripts, tests, or network resolution.
34
34
  Repository package manifest, toolchain, deployment target, SDK, target triple,
35
35
  entitlements, signing policy, ABI, and platform support win over generic
36
36
  advice. Use version-matched Swift language, SwiftPM, Apple SDK, and Xcode
37
- documentation after repository evidence. Swift 6.3 is the stable reference in
38
- the 2026-09 plan snapshot; the online language book's 6.4 beta material is not
39
- an automatic target.
37
+ documentation after repository evidence. Swift 6.4 is the current stable reference as of 2026-10-13; it is not an
38
+ automatic migration target.
40
39
 
41
40
  Keep Swift language mode, compiler/toolchain, SDK, deployment target, runtime
42
41
  OS, architecture, signing, entitlements, and package/platform compatibility
@@ -103,6 +102,8 @@ setting evaluation, macro execution, or Xcode build execution.
103
102
 
104
103
  ## Official sources
105
104
 
105
+ - [Swift 6.4 release](https://www.swift.org/blog/swift-6.4-released/)
106
+
106
107
  - [The Swift Programming Language](https://docs.swift.org/swift-book/documentation/the-swift-programming-language/)
107
108
  - [Swift.org documentation](https://www.swift.org/documentation/)
108
109
  - [Swift Package Manager](https://github.com/swiftlang/swift-package-manager)
@@ -57,7 +57,7 @@ A tool is a candidate, not a ranking winner. Record the decision in the reposito
57
57
 
58
58
  | Context | Candidates with official documentation | Reproducible decision basis |
59
59
  | --- | --- | --- |
60
- | Node.js/TypeScript | [`node:test`](https://nodejs.org/api/test.html), [Vitest](https://vitest.dev/guide/), [Jest](https://jestjs.io/docs/getting-started) | existing framework/build, ESM/CJS, TypeScript, mocks, watch, coverage, and CI runtime |
60
+ | Node.js/TypeScript | [`node:test`](https://nodejs.org/docs/latest-v24.x/api/test.html), [Vitest](https://vitest.dev/guide/), [Jest](https://jestjs.io/docs/getting-started) | existing framework/build, ESM/CJS, TypeScript, mocks, watch, coverage, and CI runtime |
61
61
  | Components and browser | [Testing Library](https://testing-library.com/docs/), [Playwright](https://playwright.dev/docs/intro), [Cypress](https://docs.cypress.io/) | required browsers, isolation, failure artifacts, parallelism, accessibility, and app compatibility |
62
62
  | Python | [pytest](https://docs.pytest.org/), [`unittest`](https://docs.python.org/3/library/unittest.html) | dependency policy, fixtures/plugins, Python versions, and existing integration |
63
63
  | .NET | [xUnit.net](https://xunit.net/), [NUnit](https://docs.nunit.org/), [MSTest](https://learn.microsoft.com/dotnet/core/testing/unit-testing-mstest-intro) | .NET version, runner/IDE, fixture model, assertions, and existing projects |
@@ -3,7 +3,7 @@ name: typescript-development-eng
3
3
  language: en
4
4
  description: "Specialist guidance for TypeScript applications, libraries, build configurations, and typed JavaScript boundaries."
5
5
  version: "2026.09"
6
- last-reviewed: "2026-09-12"
6
+ last-reviewed: "2026-10-13"
7
7
  guide-id: typescript
8
8
  requires-gates:
9
9
  - threat-boundary
@@ -33,9 +33,9 @@ compiler, package script, or project code.
33
33
  Repository compiler/configuration, emitted module contract, runtime support,
34
34
  public type compatibility, and build policy win over generic advice. Use the
35
35
  matching repository TypeScript version/config first, then official TypeScript
36
- documentation and release notes, then runtime/framework documentation. The
37
- 2026-09 plan snapshot records TypeScript 7.0 as the current reference. TS 7.0
38
- uses the native Go-based toolset and does not provide a stable programmatic
36
+ documentation and release notes, then runtime/framework documentation. As of
37
+ 2026-10-13, TypeScript 7.0 is the current reference. TS 7.0 uses the native
38
+ Go-based toolset and does not provide a stable programmatic
39
39
  compiler API; TS 6 compatibility can remain necessary for tooling. Do not
40
40
  auto-migrate TS 6 projects or compiler integrations to TS 7.
41
41
 
@@ -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
package/GUIDE_ROUTER.md CHANGED
@@ -63,8 +63,14 @@ project commands.
63
63
  | `typescript` | [TypeScript development engineering](./ENG/typescript-development-eng.md) | Type-system/compiler contracts, runtime boundaries, module compatibility, testing, and release |
64
64
  | `php` | [PHP development engineering](./ENG/php-development-eng.md) | Composer applications, web services, workers, runtime constraints, security, testing, and deployment |
65
65
  | `swift` | [Swift development engineering](./ENG/swift-development-eng.md) | SwiftPM/Xcode applications, concurrency, platform boundaries, interoperability, testing, and release |
66
+ | `python` | [Python development engineering](./ENG/python-development-eng.md) | Python applications, packages, CLIs, async services, data pipelines, and native extensions (reference guide; project auto-routing is not implemented) |
66
67
  | `rust` | [Rust development engineering](./ENG/rust-development-eng.md) | Architecture, implementation, testing, security, performance, reproducibility, and release of production Rust applications, services, libraries, and workers |
67
68
 
69
+ The Python guide is available as bounded reference material, but the current
70
+ `forgeloop route` project-evidence schema does not detect Python projects or
71
+ select the guide automatically. Do not claim automatic Python routing until
72
+ structural detection and route tests are implemented.
73
+
68
74
  ## Domain rules
69
75
 
70
76
  ### `clean` — code and structure
package/LICENSE CHANGED
@@ -1,21 +1,133 @@
1
- MIT License
2
-
3
- Copyright (c) 2026 Cassio
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
1
+ # PolyForm Noncommercial License 1.0.0
2
+
3
+ <https://polyformproject.org/licenses/noncommercial/1.0.0>
4
+
5
+ ## Acceptance
6
+
7
+ In order to get any license under these terms, you must agree
8
+ to them as both strict obligations and conditions to all
9
+ your licenses.
10
+
11
+ ## Copyright License
12
+
13
+ The licensor grants you a copyright license for the
14
+ software to do everything you might do with the software
15
+ that would otherwise infringe the licensor's copyright
16
+ in it for any permitted purpose. However, you may
17
+ only distribute the software according to [Distribution
18
+ License](#distribution-license) and make changes or new works
19
+ based on the software according to [Changes and New Works
20
+ License](#changes-and-new-works-license).
21
+
22
+ ## Distribution License
23
+
24
+ The licensor grants you an additional copyright license
25
+ to distribute copies of the software. Your license
26
+ to distribute covers distributing the software with
27
+ changes and new works permitted by [Changes and New Works
28
+ License](#changes-and-new-works-license).
29
+
30
+ ## Notices
31
+
32
+ You must ensure that anyone who gets a copy of any part of
33
+ the software from you also gets a copy of these terms or the
34
+ URL for them above, as well as copies of any plain-text lines
35
+ beginning with `Required Notice:` that the licensor provided
36
+ with the software. For example:
37
+
38
+ > Required Notice: Copyright Yoyodyne, Inc. (http://example.com)
39
+
40
+ ## Changes and New Works License
41
+
42
+ The licensor grants you an additional copyright license to
43
+ make changes and new works based on the software for any
44
+ permitted purpose.
45
+
46
+ ## Patent License
47
+
48
+ The licensor grants you a patent license for the software that
49
+ covers patent claims the licensor can license, or becomes able
50
+ to license, that you would infringe by using the software.
51
+
52
+ ## Noncommercial Purposes
53
+
54
+ Any noncommercial purpose is a permitted purpose.
55
+
56
+ ## Personal Uses
57
+
58
+ Personal use for research, experiment, and testing for
59
+ the benefit of public knowledge, personal study, private
60
+ entertainment, hobby projects, amateur pursuits, or religious
61
+ observance, without any anticipated commercial application,
62
+ is use for a permitted purpose.
63
+
64
+ ## Noncommercial Organizations
65
+
66
+ Use by any charitable organization, educational institution,
67
+ public research organization, public safety or health
68
+ organization, environmental protection organization,
69
+ or government institution is use for a permitted purpose
70
+ regardless of the source of funding or obligations resulting
71
+ from the funding.
72
+
73
+ ## Fair Use
74
+
75
+ You may have "fair use" rights for the software under the
76
+ law. These terms do not limit them.
77
+
78
+ ## No Other Rights
79
+
80
+ These terms do not allow you to sublicense or transfer any of
81
+ your licenses to anyone else, or prevent the licensor from
82
+ granting licenses to anyone else. These terms do not imply
83
+ any other licenses.
84
+
85
+ ## Patent Defense
86
+
87
+ If you make any written claim that the software infringes or
88
+ contributes to infringement of any patent, your patent license
89
+ for the software granted under these terms ends immediately. If
90
+ your company makes such a claim, your patent license ends
91
+ immediately for work on behalf of your company.
92
+
93
+ ## Violations
94
+
95
+ The first time you are notified in writing that you have
96
+ violated any of these terms, or done anything with the software
97
+ not covered by your licenses, your licenses can nonetheless
98
+ continue if you come into full compliance with these terms,
99
+ and take practical steps to correct past violations, within
100
+ 32 days of receiving notice. Otherwise, all your licenses
101
+ end immediately.
102
+
103
+ ## No Liability
104
+
105
+ ***As far as the law allows, the software comes as is, without
106
+ any warranty or condition, and the licensor will not be liable
107
+ to you for any damages arising out of these terms or the use
108
+ or nature of the software, under any kind of legal claim.***
109
+
110
+ ## Definitions
111
+
112
+ The **licensor** is the individual or entity offering these
113
+ terms, and the **software** is the software the licensor makes
114
+ available under these terms.
115
+
116
+ **You** refers to the individual or entity agreeing to these
117
+ terms.
118
+
119
+ **Your company** is any legal entity, sole proprietorship,
120
+ or other kind of organization that you work for, plus all
121
+ organizations that have control over, are under the control of,
122
+ or are under common control with that organization. **Control**
123
+ means ownership of substantially all the assets of an entity,
124
+ or the power to direct its management and policies by vote,
125
+ contract, or otherwise. Control can be direct or indirect.
126
+
127
+ **Your licenses** are all the licenses granted to you for the
128
+ software under these terms.
129
+
130
+ **Use** means anything you do with the software requiring one
131
+ of your licenses.
132
+
133
+ Required Notice: Copyright (c) 2026 Cassio Marques Campos
@@ -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,
@@ -24,7 +24,7 @@ The system should use every guide that materially helps the task without loading
24
24
  - The loop continues while safe progress is possible. Repetition without new evidence triggers hypothesis reassessment or a blocked result, not infinite retries.
25
25
  - Third-party provenance and reuse boundaries remain part of every portable copy.
26
26
  - Qwen-MM-Plugins is an optional, task-scoped capability extension: the agent checks native support first, installs the smallest missing capability when needed, and verifies it before use; it is not a package or runtime dependency.
27
- - Canonical documents are installed under `.forgeloop/kit/`; root native adapters remain small discovery shims; project-scoped configuration remains under `.forgeloop/`; and modern mutable task protocol state is isolated under `.forgeloop/task-state/<taskKey>/`.
27
+ - Canonical documents are installed under `.forgeloop/kit/`; root native adapters remain small discovery shims; project-scoped configuration remains under `.forgeloop/`; operational task records use `.forgeloop/state.sqlite` in SQLite mode. `.forgeloop/task-state/<taskKey>/` remains the logical and portable export path for task artifacts. Legacy filesystem mode remains a separate compatibility path, and SQLite capability still reports `soleSQLiteWriter: false` while legacy writers remain.
28
28
  - `PREFLIGHT_READY` is a resumable protocol checkpoint reconciled with work state, activation events, fingerprints, and the append-only hash chain.
29
29
 
30
30
  ## Alternatives considered
@@ -446,15 +446,15 @@ The validator also exercises seven routing scenarios:
446
446
  The npm CLI installs the kit into the current directory or an existing
447
447
  directory selected with `--path` when the package is available in the npm
448
448
  registry. If it is not available yet, the same commands can run as
449
- `node src/cli.js ...` from a repository checkout. The CLI maps canonical
450
- documents into `.forgeloop/kit/`, keeps only native instruction shims at the
451
- target root, and leaves project-scoped configuration under `.forgeloop/` while
452
- isolating modern mutable task protocol state (contract, route, gate, state,
453
- event, preflight, receipt, and recovery artifacts) under
454
- `.forgeloop/task-state/<taskKey>/`. Legacy singleton artifacts remain under
455
- `.forgeloop/` for compatibility and migration only. Manual copying must
456
- preserve that target layout; copying package-source root files directly is not
457
- equivalent to `forgeloop init`.
449
+ `node src/cli.js ...` from a repository checkout. The CLI maps canonical documents into `.forgeloop/kit/`, keeps only native
450
+ instruction shims at the target root, and leaves project-scoped configuration
451
+ under `.forgeloop/`. In SQLite mode, mutable task records are stored in
452
+ `.forgeloop/state.sqlite`; `.forgeloop/task-state/<taskKey>/` is the logical
453
+ task-artifact and portable export path, not a claim that each artifact exists
454
+ as a live filesystem file. Legacy filesystem mode remains a separate
455
+ compatibility path, and SQLite mode must not share writable operational state
456
+ with it. Manual copying must preserve the target layout; copying package-source
457
+ root files directly is not equivalent to `forgeloop init`.
458
458
 
459
459
  Recovery uses a relational state model: `work-state.json` owns the lifecycle
460
460
  phase, `task.json` retains historical claims, `recovery.json` records current
@@ -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.