@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
@@ -171,7 +171,7 @@
171
171
  "harness"
172
172
  ],
173
173
  "canonicalFor": [],
174
- "packaged": false,
174
+ "packaged": true,
175
175
  "replacement": "PROTOCOL_INTEGRATION.md",
176
176
  "removalPolicy": "Remove in the next compatibility-breaking package release."
177
177
  },
@@ -185,7 +185,7 @@
185
185
  "canonicalFor": [
186
186
  "project-profile"
187
187
  ],
188
- "packaged": false
188
+ "packaged": true
189
189
  },
190
190
  {
191
191
  "path": "THIRD_PARTY_NOTICES.md",
@@ -197,19 +197,7 @@
197
197
  "canonicalFor": [
198
198
  "third-party-notices"
199
199
  ],
200
- "packaged": false
201
- },
202
- {
203
- "path": "LICENSE-DOCS.md",
204
- "id": "documentation-license",
205
- "class": "legal",
206
- "audience": [
207
- "maintainer"
208
- ],
209
- "canonicalFor": [
210
- "documentation-license"
211
- ],
212
- "packaged": false
200
+ "packaged": true
213
201
  },
214
202
  {
215
203
  "path": ".github/copilot-instructions.md",
@@ -219,7 +207,7 @@
219
207
  "harness"
220
208
  ],
221
209
  "canonicalFor": [],
222
- "packaged": false
210
+ "packaged": true
223
211
  },
224
212
  {
225
213
  "path": "README.md",
@@ -259,6 +247,19 @@
259
247
  ],
260
248
  "packaged": true
261
249
  },
250
+ {
251
+ "path": "docs/AUDIT_UX.md",
252
+ "id": "audit-ux",
253
+ "class": "reference",
254
+ "audience": [
255
+ "integrator",
256
+ "maintainer"
257
+ ],
258
+ "canonicalFor": [
259
+ "audit-ux-resource"
260
+ ],
261
+ "packaged": true
262
+ },
262
263
  {
263
264
  "path": "docs/CROSS_HARNESS_CONTINUITY.md",
264
265
  "id": "cross-harness-continuity",
@@ -564,6 +565,19 @@
564
565
  "packaged": true,
565
566
  "generator": "scripts/generate-agent-protocol-summary.mjs"
566
567
  },
568
+ {
569
+ "path": "docs/AGENT_SKILL.md",
570
+ "id": "agent-skill",
571
+ "class": "reference",
572
+ "audience": [
573
+ "integrator",
574
+ "maintainer"
575
+ ],
576
+ "canonicalFor": [
577
+ "agent-skill-integration"
578
+ ],
579
+ "packaged": true
580
+ },
567
581
  {
568
582
  "path": "docs/KNOWLEDGE_INTEGRATION_GAP_ANALYSIS.md",
569
583
  "id": "knowledge-integration-gap-analysis",
@@ -605,6 +619,45 @@
605
619
  ],
606
620
  "packaged": true
607
621
  },
622
+ {
623
+ "path": "docs/PROVIDER_ARCHITECTURE.md",
624
+ "id": "provider-architecture",
625
+ "class": "architecture",
626
+ "audience": [
627
+ "integrator",
628
+ "maintainer"
629
+ ],
630
+ "canonicalFor": [
631
+ "provider-extensions"
632
+ ],
633
+ "packaged": true
634
+ },
635
+ {
636
+ "path": "docs/PROVIDERS.md",
637
+ "id": "providers-reference",
638
+ "class": "reference",
639
+ "audience": [
640
+ "integrator",
641
+ "maintainer"
642
+ ],
643
+ "canonicalFor": [
644
+ "provider-extensions-reference"
645
+ ],
646
+ "packaged": true
647
+ },
648
+ {
649
+ "path": "docs/SECURITY_REVIEW.md",
650
+ "id": "security-review",
651
+ "class": "guide",
652
+ "audience": [
653
+ "integrator",
654
+ "maintainer"
655
+ ],
656
+ "canonicalFor": [
657
+ "security-review-provider"
658
+ ],
659
+ "packaged": true
660
+ },
608
661
  {
609
662
  "path": "docs/RIPWIRE_ADAPTER.md",
610
663
  "id": "ripwire-adapter",
@@ -619,6 +672,20 @@
619
672
  ],
620
673
  "packaged": true
621
674
  },
675
+ {
676
+ "path": "docs/OPENSRC_ADAPTER.md",
677
+ "id": "opensrc-adapter",
678
+ "class": "reference",
679
+ "audience": [
680
+ "harness",
681
+ "integrator",
682
+ "maintainer"
683
+ ],
684
+ "canonicalFor": [
685
+ "opensrc-adapter"
686
+ ],
687
+ "packaged": true
688
+ },
622
689
  {
623
690
  "path": "docs/REPOSITORY_INDEX.md",
624
691
  "id": "repository-index",
@@ -647,6 +714,697 @@
647
714
  "persistent-search-transport"
648
715
  ],
649
716
  "packaged": true
717
+ },
718
+ {
719
+ "path": "docs/AGENT_BROWSER_ADAPTER.md",
720
+ "id": "agent-browser-adapter",
721
+ "class": "guide",
722
+ "audience": [
723
+ "integrator",
724
+ "maintainer"
725
+ ],
726
+ "canonicalFor": [
727
+ "agent-browser-adapter"
728
+ ],
729
+ "packaged": true
730
+ },
731
+ {
732
+ "path": "docs/AGENT_BROWSER_VERIFICATION.md",
733
+ "id": "agent-browser-verification",
734
+ "class": "guide",
735
+ "audience": [
736
+ "integrator",
737
+ "maintainer"
738
+ ],
739
+ "canonicalFor": [],
740
+ "packaged": true
741
+ },
742
+ {
743
+ "path": "CONTRIBUTING.md",
744
+ "id": "contributing",
745
+ "class": "guide",
746
+ "audience": [
747
+ "maintainer",
748
+ "contributor"
749
+ ],
750
+ "canonicalFor": [
751
+ "contribution-workflow"
752
+ ],
753
+ "packaged": true
754
+ },
755
+ {
756
+ "path": "benchmarks/execution-profiles/README.md",
757
+ "id": "execution-profile-benchmark-guide",
758
+ "class": "guide",
759
+ "audience": [
760
+ "maintainer",
761
+ "integrator"
762
+ ],
763
+ "canonicalFor": [
764
+ "execution-profile-benchmark-reproduction"
765
+ ],
766
+ "packaged": true
767
+ },
768
+ {
769
+ "path": "benchmarks/repository-index/README.md",
770
+ "id": "repository-index-benchmark-guide",
771
+ "class": "guide",
772
+ "audience": [
773
+ "maintainer",
774
+ "integrator"
775
+ ],
776
+ "canonicalFor": [
777
+ "repository-index-benchmark-reproduction"
778
+ ],
779
+ "packaged": true
780
+ },
781
+ {
782
+ "path": "docs/JEV_BENCHMARKS.md",
783
+ "id": "jev-benchmarks",
784
+ "class": "reference",
785
+ "audience": [
786
+ "maintainer",
787
+ "integrator"
788
+ ],
789
+ "canonicalFor": [
790
+ "jev-benchmark-boundaries"
791
+ ],
792
+ "packaged": true
793
+ },
794
+ {
795
+ "path": "docs/MODEL_ROUTING.md",
796
+ "id": "model-routing",
797
+ "class": "reference",
798
+ "audience": [
799
+ "maintainer",
800
+ "integrator"
801
+ ],
802
+ "canonicalFor": [
803
+ "model-routing"
804
+ ],
805
+ "packaged": true
806
+ },
807
+ {
808
+ "path": "docs/SEMANTIC_DECISION_PLANE.md",
809
+ "id": "semantic-decision-plane",
810
+ "class": "reference",
811
+ "audience": [
812
+ "maintainer",
813
+ "integrator",
814
+ "harness"
815
+ ],
816
+ "canonicalFor": [
817
+ "semantic-decision-plane"
818
+ ],
819
+ "packaged": true
820
+ },
821
+ {
822
+ "path": "docs/TEST_INTELLIGENCE.md",
823
+ "id": "test-intelligence",
824
+ "class": "reference",
825
+ "audience": [
826
+ "maintainer",
827
+ "integrator"
828
+ ],
829
+ "canonicalFor": [
830
+ "test-intelligence"
831
+ ],
832
+ "packaged": true
833
+ },
834
+ {
835
+ "path": "docs/TEST_PRUNING.md",
836
+ "id": "test-pruning",
837
+ "class": "reference",
838
+ "audience": [
839
+ "maintainer",
840
+ "integrator"
841
+ ],
842
+ "canonicalFor": [
843
+ "test-pruning"
844
+ ],
845
+ "packaged": true
846
+ },
847
+ {
848
+ "path": "docs/BROWSER_VERIFICATION.md",
849
+ "id": "browser-verification",
850
+ "class": "reference",
851
+ "audience": [
852
+ "integrator",
853
+ "maintainer"
854
+ ],
855
+ "canonicalFor": [
856
+ "browser-verification"
857
+ ],
858
+ "packaged": true
859
+ },
860
+ {
861
+ "path": "docs/ASTRA_IMPLEMENTATION.md",
862
+ "id": "astra-implementation",
863
+ "class": "historical",
864
+ "audience": [
865
+ "maintainer"
866
+ ],
867
+ "canonicalFor": [
868
+ "astra-implementation-history"
869
+ ],
870
+ "packaged": false
871
+ },
872
+ {
873
+ "path": "docs/STALE_GATE_REVALIDATION.md",
874
+ "id": "stale-gate-revalidation",
875
+ "class": "guide",
876
+ "audience": [
877
+ "harness",
878
+ "maintainer"
879
+ ],
880
+ "canonicalFor": [
881
+ "stale-gate-revalidation"
882
+ ],
883
+ "packaged": false
884
+ },
885
+ {
886
+ "path": "docs/history/README.md",
887
+ "id": "documentation-history-index",
888
+ "class": "index",
889
+ "audience": [
890
+ "maintainer"
891
+ ],
892
+ "canonicalFor": [
893
+ "documentation-history"
894
+ ],
895
+ "packaged": false
896
+ },
897
+ {
898
+ "path": "docs/history/astra-code-audit-20260904.md",
899
+ "id": "astra-code-audit-20260904",
900
+ "class": "historical",
901
+ "audience": [
902
+ "maintainer"
903
+ ],
904
+ "canonicalFor": [
905
+ "astra-code-audit-history"
906
+ ],
907
+ "packaged": false
908
+ },
909
+ {
910
+ "path": "docs/history/releases/RELEASE_EVIDENCE_1_10_ECOSYSTEM.md",
911
+ "id": "release-evidence-1-10-ecosystem",
912
+ "class": "historical",
913
+ "audience": [
914
+ "maintainer"
915
+ ],
916
+ "canonicalFor": [
917
+ "release-evidence-1-10-ecosystem"
918
+ ],
919
+ "packaged": false
920
+ },
921
+ {
922
+ "path": "docs/history/validation/FORGELOOP_1_11_0_RELEASE_VALIDATION.md",
923
+ "id": "release-validation-1-11",
924
+ "class": "historical",
925
+ "audience": [
926
+ "maintainer"
927
+ ],
928
+ "canonicalFor": [
929
+ "release-validation-1-11"
930
+ ],
931
+ "packaged": false
932
+ },
933
+ {
934
+ "path": "docs/history/validation/FORGELOOP_1_11_0_POST_RELEASE_VALIDATION.md",
935
+ "id": "post-release-validation-1-11",
936
+ "class": "historical",
937
+ "audience": [
938
+ "maintainer"
939
+ ],
940
+ "canonicalFor": [
941
+ "post-release-validation-1-11"
942
+ ],
943
+ "packaged": false
944
+ },
945
+ {
946
+ "path": "docs/history/validation/FORGELOOP_GITHUB_CI_MINIMIZATION_VALIDATION.md",
947
+ "id": "github-ci-minimization-validation",
948
+ "class": "historical",
949
+ "audience": [
950
+ "maintainer"
951
+ ],
952
+ "canonicalFor": [
953
+ "github-ci-minimization-history"
954
+ ],
955
+ "packaged": false
956
+ },
957
+ {
958
+ "path": "docs/history/validation/FORGELOOP_PERSISTENT_SEARCH_TRANSPORT_VALIDATION_REPORT.md",
959
+ "id": "persistent-search-transport-validation",
960
+ "class": "historical",
961
+ "audience": [
962
+ "maintainer"
963
+ ],
964
+ "canonicalFor": [
965
+ "persistent-search-transport-validation-history"
966
+ ],
967
+ "packaged": false
968
+ },
969
+ {
970
+ "path": "docs/history/validation/FORGELOOP_REPOSITORY_INDEX_DOCTOR_PRIVACY_FIX_VALIDATION.md",
971
+ "id": "repository-index-privacy-validation",
972
+ "class": "historical",
973
+ "audience": [
974
+ "maintainer"
975
+ ],
976
+ "canonicalFor": [
977
+ "repository-index-privacy-validation-history"
978
+ ],
979
+ "packaged": false
980
+ },
981
+ {
982
+ "path": "docs/history/validation/FORGELOOP_RIPWIRE_IMPLEMENTATION_PLAN.md",
983
+ "id": "ripwire-implementation-plan",
984
+ "class": "historical",
985
+ "audience": [
986
+ "maintainer"
987
+ ],
988
+ "canonicalFor": [
989
+ "ripwire-implementation-history"
990
+ ],
991
+ "packaged": false
992
+ },
993
+ {
994
+ "path": "benchmarks/execution-profiles/adaptive-efficiency-benchmark-20260831.md",
995
+ "id": "adaptive-efficiency-benchmark-20260831",
996
+ "class": "historical",
997
+ "audience": [
998
+ "maintainer"
999
+ ],
1000
+ "canonicalFor": [
1001
+ "adaptive-efficiency-benchmark-20260831"
1002
+ ],
1003
+ "packaged": false
1004
+ },
1005
+ {
1006
+ "path": "ENG/premium-sites-studio-eng.md",
1007
+ "id": "guide-premium",
1008
+ "class": "guide",
1009
+ "audience": [
1010
+ "harness",
1011
+ "maintainer"
1012
+ ],
1013
+ "canonicalFor": [
1014
+ "guide-premium"
1015
+ ],
1016
+ "packaged": true
1017
+ },
1018
+ {
1019
+ "path": "ENG/clean-code-eng.md",
1020
+ "id": "guide-clean",
1021
+ "class": "guide",
1022
+ "audience": [
1023
+ "harness",
1024
+ "maintainer"
1025
+ ],
1026
+ "canonicalFor": [
1027
+ "guide-clean"
1028
+ ],
1029
+ "packaged": true
1030
+ },
1031
+ {
1032
+ "path": "ENG/test-code-eng.md",
1033
+ "id": "guide-test",
1034
+ "class": "guide",
1035
+ "audience": [
1036
+ "harness",
1037
+ "maintainer"
1038
+ ],
1039
+ "canonicalFor": [
1040
+ "guide-test"
1041
+ ],
1042
+ "packaged": true
1043
+ },
1044
+ {
1045
+ "path": "ENG/sec-code-eng.md",
1046
+ "id": "guide-security",
1047
+ "class": "guide",
1048
+ "audience": [
1049
+ "harness",
1050
+ "maintainer"
1051
+ ],
1052
+ "canonicalFor": [
1053
+ "guide-security"
1054
+ ],
1055
+ "packaged": true
1056
+ },
1057
+ {
1058
+ "path": "ENG/design-code-eng.md",
1059
+ "id": "guide-design",
1060
+ "class": "guide",
1061
+ "audience": [
1062
+ "harness",
1063
+ "maintainer"
1064
+ ],
1065
+ "canonicalFor": [
1066
+ "guide-design"
1067
+ ],
1068
+ "packaged": true
1069
+ },
1070
+ {
1071
+ "path": "ENG/taste-frontend-eng.md",
1072
+ "id": "guide-taste",
1073
+ "class": "guide",
1074
+ "audience": [
1075
+ "harness",
1076
+ "maintainer"
1077
+ ],
1078
+ "canonicalFor": [
1079
+ "guide-taste"
1080
+ ],
1081
+ "packaged": true
1082
+ },
1083
+ {
1084
+ "path": "ENG/perf-code-eng.md",
1085
+ "id": "guide-performance",
1086
+ "class": "guide",
1087
+ "audience": [
1088
+ "harness",
1089
+ "maintainer"
1090
+ ],
1091
+ "canonicalFor": [
1092
+ "guide-performance"
1093
+ ],
1094
+ "packaged": true
1095
+ },
1096
+ {
1097
+ "path": "ENG/accessibility-eng.md",
1098
+ "id": "guide-accessibility",
1099
+ "class": "guide",
1100
+ "audience": [
1101
+ "harness",
1102
+ "maintainer"
1103
+ ],
1104
+ "canonicalFor": [
1105
+ "guide-accessibility"
1106
+ ],
1107
+ "packaged": true
1108
+ },
1109
+ {
1110
+ "path": "ENG/games-code-design-web-eng.md",
1111
+ "id": "guide-games",
1112
+ "class": "guide",
1113
+ "audience": [
1114
+ "harness",
1115
+ "maintainer"
1116
+ ],
1117
+ "canonicalFor": [
1118
+ "guide-games"
1119
+ ],
1120
+ "packaged": true
1121
+ },
1122
+ {
1123
+ "path": "ENG/documentation-quality-eng.md",
1124
+ "id": "guide-documentation",
1125
+ "class": "guide",
1126
+ "audience": [
1127
+ "harness",
1128
+ "maintainer"
1129
+ ],
1130
+ "canonicalFor": [
1131
+ "guide-documentation"
1132
+ ],
1133
+ "packaged": true
1134
+ },
1135
+ {
1136
+ "path": "ENG/flutter-development-eng.md",
1137
+ "id": "guide-flutter",
1138
+ "class": "guide",
1139
+ "audience": [
1140
+ "harness",
1141
+ "maintainer"
1142
+ ],
1143
+ "canonicalFor": [
1144
+ "guide-flutter"
1145
+ ],
1146
+ "packaged": true
1147
+ },
1148
+ {
1149
+ "path": "ENG/dotnet-aspnetcore-development-eng.md",
1150
+ "id": "guide-dotnet",
1151
+ "class": "guide",
1152
+ "audience": [
1153
+ "harness",
1154
+ "maintainer"
1155
+ ],
1156
+ "canonicalFor": [
1157
+ "guide-dotnet"
1158
+ ],
1159
+ "packaged": true
1160
+ },
1161
+ {
1162
+ "path": "ENG/nodejs-backend-development-eng.md",
1163
+ "id": "guide-nodejs",
1164
+ "class": "guide",
1165
+ "audience": [
1166
+ "harness",
1167
+ "maintainer"
1168
+ ],
1169
+ "canonicalFor": [
1170
+ "guide-nodejs"
1171
+ ],
1172
+ "packaged": true
1173
+ },
1174
+ {
1175
+ "path": "ENG/rust-development-eng.md",
1176
+ "id": "guide-rust",
1177
+ "class": "guide",
1178
+ "audience": [
1179
+ "harness",
1180
+ "maintainer"
1181
+ ],
1182
+ "canonicalFor": [
1183
+ "guide-rust"
1184
+ ],
1185
+ "packaged": true
1186
+ },
1187
+ {
1188
+ "path": "ENG/c-development-eng.md",
1189
+ "id": "guide-c",
1190
+ "class": "guide",
1191
+ "audience": [
1192
+ "harness",
1193
+ "maintainer"
1194
+ ],
1195
+ "canonicalFor": [
1196
+ "guide-c"
1197
+ ],
1198
+ "packaged": true
1199
+ },
1200
+ {
1201
+ "path": "ENG/cpp-development-eng.md",
1202
+ "id": "guide-cpp",
1203
+ "class": "guide",
1204
+ "audience": [
1205
+ "harness",
1206
+ "maintainer"
1207
+ ],
1208
+ "canonicalFor": [
1209
+ "guide-cpp"
1210
+ ],
1211
+ "packaged": true
1212
+ },
1213
+ {
1214
+ "path": "ENG/java-development-eng.md",
1215
+ "id": "guide-java",
1216
+ "class": "guide",
1217
+ "audience": [
1218
+ "harness",
1219
+ "maintainer"
1220
+ ],
1221
+ "canonicalFor": [
1222
+ "guide-java"
1223
+ ],
1224
+ "packaged": true
1225
+ },
1226
+ {
1227
+ "path": "ENG/sql-development-eng.md",
1228
+ "id": "guide-sql",
1229
+ "class": "guide",
1230
+ "audience": [
1231
+ "harness",
1232
+ "maintainer"
1233
+ ],
1234
+ "canonicalFor": [
1235
+ "guide-sql"
1236
+ ],
1237
+ "packaged": true
1238
+ },
1239
+ {
1240
+ "path": "ENG/go-development-eng.md",
1241
+ "id": "guide-go",
1242
+ "class": "guide",
1243
+ "audience": [
1244
+ "harness",
1245
+ "maintainer"
1246
+ ],
1247
+ "canonicalFor": [
1248
+ "guide-go"
1249
+ ],
1250
+ "packaged": true
1251
+ },
1252
+ {
1253
+ "path": "ENG/typescript-development-eng.md",
1254
+ "id": "guide-typescript",
1255
+ "class": "guide",
1256
+ "audience": [
1257
+ "harness",
1258
+ "maintainer"
1259
+ ],
1260
+ "canonicalFor": [
1261
+ "guide-typescript"
1262
+ ],
1263
+ "packaged": true
1264
+ },
1265
+ {
1266
+ "path": "ENG/php-development-eng.md",
1267
+ "id": "guide-php",
1268
+ "class": "guide",
1269
+ "audience": [
1270
+ "harness",
1271
+ "maintainer"
1272
+ ],
1273
+ "canonicalFor": [
1274
+ "guide-php"
1275
+ ],
1276
+ "packaged": true
1277
+ },
1278
+ {
1279
+ "path": "ENG/python-development-eng.md",
1280
+ "id": "guide-python",
1281
+ "class": "guide",
1282
+ "audience": [
1283
+ "harness",
1284
+ "maintainer"
1285
+ ],
1286
+ "canonicalFor": [
1287
+ "guide-python"
1288
+ ],
1289
+ "packaged": true
1290
+ },
1291
+ {
1292
+ "path": "ENG/swift-development-eng.md",
1293
+ "id": "guide-swift",
1294
+ "class": "guide",
1295
+ "audience": [
1296
+ "harness",
1297
+ "maintainer"
1298
+ ],
1299
+ "canonicalFor": [
1300
+ "guide-swift"
1301
+ ],
1302
+ "packaged": true
1303
+ },
1304
+ {
1305
+ "path": "skills/forgeloop/SKILL.md",
1306
+ "id": "forge-loop-skill",
1307
+ "class": "generated",
1308
+ "audience": [
1309
+ "harness",
1310
+ "integrator"
1311
+ ],
1312
+ "canonicalFor": [
1313
+ "forge-loop-skill"
1314
+ ],
1315
+ "packaged": true,
1316
+ "generator": "scripts/generate-forgeloop-skill.mjs"
1317
+ },
1318
+ {
1319
+ "path": "skills/forgeloop/README.md",
1320
+ "id": "forge-loop-skill-readme",
1321
+ "class": "generated",
1322
+ "audience": [
1323
+ "harness",
1324
+ "integrator"
1325
+ ],
1326
+ "canonicalFor": [
1327
+ "forge-loop-skill-readme"
1328
+ ],
1329
+ "packaged": true,
1330
+ "generator": "scripts/generate-forgeloop-skill.mjs"
1331
+ },
1332
+ {
1333
+ "path": "skills/forgeloop/references/lifecycle.md",
1334
+ "id": "forge-loop-skill-lifecycle",
1335
+ "class": "generated",
1336
+ "audience": [
1337
+ "harness",
1338
+ "integrator"
1339
+ ],
1340
+ "canonicalFor": [
1341
+ "forge-loop-skill-lifecycle"
1342
+ ],
1343
+ "packaged": true,
1344
+ "generator": "scripts/generate-forgeloop-skill.mjs"
1345
+ },
1346
+ {
1347
+ "path": "skills/forgeloop/references/verification.md",
1348
+ "id": "forge-loop-skill-verification",
1349
+ "class": "generated",
1350
+ "audience": [
1351
+ "harness",
1352
+ "integrator"
1353
+ ],
1354
+ "canonicalFor": [
1355
+ "forge-loop-skill-verification"
1356
+ ],
1357
+ "packaged": true,
1358
+ "generator": "scripts/generate-forgeloop-skill.mjs"
1359
+ },
1360
+ {
1361
+ "path": "skills/forgeloop/references/recovery.md",
1362
+ "id": "forge-loop-skill-recovery",
1363
+ "class": "generated",
1364
+ "audience": [
1365
+ "harness",
1366
+ "integrator"
1367
+ ],
1368
+ "canonicalFor": [
1369
+ "forge-loop-skill-recovery"
1370
+ ],
1371
+ "packaged": true,
1372
+ "generator": "scripts/generate-forgeloop-skill.mjs"
1373
+ },
1374
+ {
1375
+ "path": ".cursor/rules/project-loop.mdc",
1376
+ "id": "cursor-adapter",
1377
+ "class": "adapter",
1378
+ "audience": [
1379
+ "harness"
1380
+ ],
1381
+ "canonicalFor": [],
1382
+ "packaged": true
1383
+ },
1384
+ {
1385
+ "path": "src/providers/README.md",
1386
+ "id": "provider-source-readme",
1387
+ "class": "reference",
1388
+ "audience": [
1389
+ "maintainer",
1390
+ "integrator"
1391
+ ],
1392
+ "canonicalFor": [
1393
+ "provider-source-boundary"
1394
+ ],
1395
+ "packaged": true
1396
+ },
1397
+ {
1398
+ "path": "docs/SELF_HOSTED_TESTS.md",
1399
+ "id": "self-hosted-tests",
1400
+ "class": "operational",
1401
+ "audience": [
1402
+ "maintainer"
1403
+ ],
1404
+ "canonicalFor": [
1405
+ "self-hosted-node-validation"
1406
+ ],
1407
+ "packaged": true
650
1408
  }
651
1409
  ]
652
1410
  }