arckit-cli 6.1.1__py3-none-any.whl

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 (482) hide show
  1. arckit_cli/__init__.py +1120 -0
  2. arckit_cli-6.1.1.data/data/share/arckit/.arckit/memory/sessions.md +293 -0
  3. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/_partials/RENDERING.md +22 -0
  4. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/_partials/document-control-uae.md +20 -0
  5. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/_partials/document-control-uk.md +16 -0
  6. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/adm-preliminary-template.md +135 -0
  7. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/adr-template.md +588 -0
  8. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/agent-design-template.md +390 -0
  9. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/agent-governance-template.md +90 -0
  10. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/agent-integration-template.md +159 -0
  11. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/agent-inventory-template.md +108 -0
  12. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/agent-maturity-template.md +388 -0
  13. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/agent-security-template.md +213 -0
  14. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/analysis-report-template.md +323 -0
  15. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/application-inventory-template.md +221 -0
  16. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/architecture-board-template.md +194 -0
  17. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/architecture-change-template.md +205 -0
  18. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/architecture-diagram-template.md +610 -0
  19. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/architecture-principles-template.md +632 -0
  20. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/architecture-repository-template.md +107 -0
  21. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/architecture-strategy-template.md +666 -0
  22. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/at-bvergg-template.md +252 -0
  23. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/at-dsgvo-template.md +354 -0
  24. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/at-nisg-template.md +236 -0
  25. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/au-aescsf-template.md +189 -0
  26. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/au-ai-assurance-template.md +243 -0
  27. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/au-disp-attestation-template.md +297 -0
  28. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/au-dss-template.md +302 -0
  29. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/au-e8-posture-template.md +377 -0
  30. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/au-energy-compliance-template.md +189 -0
  31. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/au-ism-controls-template.md +462 -0
  32. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/au-ndb-playbook-template.md +288 -0
  33. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/au-ot-security-template.md +204 -0
  34. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/au-pia-template.md +394 -0
  35. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/au-pspf-template.md +380 -0
  36. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/au-soci-cirmp-template.md +206 -0
  37. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/aws-research-template.md +605 -0
  38. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/azure-research-template.md +559 -0
  39. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/backlog-template.md +465 -0
  40. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/ca-aia-template.md +206 -0
  41. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/ca-atip-template.md +192 -0
  42. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/ca-charter-template.md +190 -0
  43. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/ca-cloud-residency-template.md +173 -0
  44. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/ca-fitaa-template.md +156 -0
  45. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/ca-gc-digital-standards-template.md +208 -0
  46. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/ca-itsg-33-template.md +228 -0
  47. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/ca-ocap-template.md +205 -0
  48. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/ca-ola-template.md +171 -0
  49. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/ca-pia-template.md +193 -0
  50. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/ca-pspc-template.md +214 -0
  51. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/ca-soia-template.md +219 -0
  52. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/capability-map-template.md +125 -0
  53. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/competitors-template.md +113 -0
  54. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/conformance-assessment-template.md +507 -0
  55. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/data-mesh-contract-template.md +851 -0
  56. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/data-model-template.md +1043 -0
  57. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/data-source-profile-template.md +80 -0
  58. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/datascout-template.md +546 -0
  59. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/devops-template.md +961 -0
  60. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/dfd-template.md +161 -0
  61. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/dld-review-template.md +427 -0
  62. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/dos-requirements-template.md +506 -0
  63. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/dpia-template.md +1200 -0
  64. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/eu-ai-act-template.md +227 -0
  65. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/eu-cra-template.md +176 -0
  66. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/eu-data-act-template.md +175 -0
  67. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/eu-dora-template.md +197 -0
  68. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/eu-dsa-template.md +183 -0
  69. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/eu-nis2-template.md +196 -0
  70. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/eu-rgpd-template.md +198 -0
  71. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/evaluation-criteria-template.md +719 -0
  72. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/finops-template.md +662 -0
  73. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/fr-algorithme-public-template.md +162 -0
  74. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/fr-anssi-carto-template.md +196 -0
  75. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/fr-anssi-template.md +190 -0
  76. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/fr-code-reuse-template.md +190 -0
  77. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/fr-dinum-template.md +195 -0
  78. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/fr-dr-template.md +187 -0
  79. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/fr-ebios-template.md +209 -0
  80. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/fr-irn-template.md +311 -0
  81. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/fr-marche-public-template.md +178 -0
  82. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/fr-pssi-template.md +270 -0
  83. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/fr-rgpd-template.md +195 -0
  84. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/fr-secnumcloud-template.md +188 -0
  85. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/framework-overview-template.md +247 -0
  86. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/gap-analysis-template.md +198 -0
  87. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/gcloud-clarify-template.md +340 -0
  88. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/gcloud-requirements-template.md +370 -0
  89. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/gcp-research-template.md +585 -0
  90. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/glossary-template.md +117 -0
  91. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/gov-code-search-template.md +213 -0
  92. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/gov-landscape-template.md +271 -0
  93. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/gov-reuse-template.md +214 -0
  94. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/grants-template.md +131 -0
  95. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/hld-review-template.md +760 -0
  96. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/jsp-936-template.md +1394 -0
  97. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/maturity-model-template.md +297 -0
  98. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/mlops-template.md +720 -0
  99. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/mod-secure-by-design-template.md +784 -0
  100. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/operationalize-template.md +1016 -0
  101. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/pages-template.html +5121 -0
  102. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/platform-design-template.md +1610 -0
  103. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/presentation-template.md +270 -0
  104. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/principles-compliance-assessment-template.md +389 -0
  105. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/project-plan-template.md +421 -0
  106. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/rationalization-template.md +208 -0
  107. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/requirements-template.md +1026 -0
  108. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/research-findings-template.md +939 -0
  109. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/risk-register-template.md +883 -0
  110. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/roadmap-template.md +787 -0
  111. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/service-assessment-prep-template.md +448 -0
  112. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/servicenow-design-template.md +273 -0
  113. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/sobc-template.md +1127 -0
  114. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/sow-template.md +785 -0
  115. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/stakeholder-drivers-template.md +493 -0
  116. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/story-template.md +889 -0
  117. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/tcop-review-template.md +593 -0
  118. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/tech-note-template.md +59 -0
  119. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/tenders-template.md +124 -0
  120. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/traceability-matrix-template.md +360 -0
  121. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/transition-architecture-template.md +286 -0
  122. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/uae-ai-autonomy-tier-template.md +97 -0
  123. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/uae-ai-charter-template.md +81 -0
  124. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/uae-classification-template.md +86 -0
  125. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/uae-cloud-residency-template.md +136 -0
  126. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/uae-data-sharing-template.md +105 -0
  127. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/uae-digital-records-template.md +97 -0
  128. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/uae-ias-template.md +109 -0
  129. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/uae-pdpl-template.md +105 -0
  130. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/uae-priorities-alignment-template.md +99 -0
  131. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/uae-procurement-template.md +115 -0
  132. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/uae-uaepass-template.md +129 -0
  133. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/uae-zero-bureaucracy-template.md +85 -0
  134. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/uk-fs-consumer-duty-board-report-template.md +49 -0
  135. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/uk-fs-consumer-duty-template.md +362 -0
  136. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/uk-fs-ctp-dependency-register-template.md +24 -0
  137. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/uk-fs-ctp-dependency-template.md +321 -0
  138. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/uk-fs-safeguarding-reconciliation-template.md +77 -0
  139. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/uk-fs-safeguarding-template.md +348 -0
  140. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/uk-fs-sca-rts-exemption-matrix-template.md +47 -0
  141. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/uk-fs-sca-rts-template.md +273 -0
  142. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/uk-gov-ai-playbook-template.md +942 -0
  143. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/uk-gov-atrs-template.md +1087 -0
  144. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/uk-mdr-classification-template.md +307 -0
  145. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/uk-nhs-dcb0129-case-template.md +214 -0
  146. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/uk-nhs-dcb0129-hazard-template.md +217 -0
  147. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/uk-nhs-dcb0129-safety-template.md +78 -0
  148. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/uk-nhs-dcb0129-template.md +13 -0
  149. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/uk-nhs-dcb0160-deployment-case-template.md +207 -0
  150. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/uk-nhs-dcb0160-deployment-hazard-template.md +290 -0
  151. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/uk-nhs-dcb0160-deployment-safety-template.md +81 -0
  152. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/uk-nhs-dcb0160-template.md +13 -0
  153. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/uk-nhs-dtac-template.md +341 -0
  154. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/ukgov-secure-by-design-template.md +1031 -0
  155. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/us-ai-impact-template.md +212 -0
  156. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/us-ai-rmf-template.md +232 -0
  157. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/us-fedramp-readiness-template.md +209 -0
  158. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/us-fedramp-ssp-template.md +352 -0
  159. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/us-fisma-categorization-template.md +145 -0
  160. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/us-icam-template.md +216 -0
  161. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/us-nist-800-53-template.md +222 -0
  162. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/us-privacy-pia-template.md +191 -0
  163. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/us-sbom-eo-14028-template.md +253 -0
  164. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/us-zero-trust-template.md +234 -0
  165. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/vendor-profile-template.md +88 -0
  166. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/vendor-scoring-template.md +332 -0
  167. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/wardley-climate-template.md +269 -0
  168. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/wardley-doctrine-template.md +299 -0
  169. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/wardley-gameplay-template.md +346 -0
  170. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/wardley-map-template.md +587 -0
  171. arckit_cli-6.1.1.data/data/share/arckit/.arckit/templates/wardley-value-chain-template.md +256 -0
  172. arckit_cli-6.1.1.data/data/share/arckit/CHANGELOG.md +3554 -0
  173. arckit_cli-6.1.1.data/data/share/arckit/VERSION +1 -0
  174. arckit_cli-6.1.1.data/data/share/arckit/docs/DEPENDENCY-MATRIX.md +929 -0
  175. arckit_cli-6.1.1.data/data/share/arckit/docs/README.md +322 -0
  176. arckit_cli-6.1.1.data/data/share/arckit/docs/WORKFLOW-DIAGRAMS.md +1088 -0
  177. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/adm-preliminary.md +72 -0
  178. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/adr.md +60 -0
  179. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/agent-design.md +71 -0
  180. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/agent-governance.md +61 -0
  181. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/agent-integration.md +59 -0
  182. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/agent-inventory.md +60 -0
  183. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/agent-maturity.md +84 -0
  184. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/agent-security.md +63 -0
  185. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/ai-playbook.md +103 -0
  186. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/analyze.md +57 -0
  187. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/application-inventory.md +71 -0
  188. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/application-rationalization.md +71 -0
  189. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/architecture-board.md +60 -0
  190. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/architecture-change.md +73 -0
  191. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/architecture-repository.md +62 -0
  192. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/artifact-health.md +228 -0
  193. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/at-bvergg.md +86 -0
  194. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/at-dsgvo.md +75 -0
  195. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/at-nisg.md +94 -0
  196. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/atrs.md +98 -0
  197. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/au-aescsf.md +45 -0
  198. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/au-ai-assurance.md +84 -0
  199. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/au-disp-attestation.md +90 -0
  200. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/au-dss.md +76 -0
  201. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/au-e8-posture.md +73 -0
  202. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/au-energy-compliance.md +47 -0
  203. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/au-federal-overlay.md +199 -0
  204. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/au-ism-controls.md +78 -0
  205. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/au-ndb-playbook.md +80 -0
  206. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/au-ot-security.md +39 -0
  207. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/au-pia.md +72 -0
  208. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/au-pspf.md +81 -0
  209. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/au-soci-cirmp.md +40 -0
  210. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/autoresearch.md +334 -0
  211. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/aws-research.md +160 -0
  212. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/azure-research.md +157 -0
  213. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/backlog.md +58 -0
  214. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/build.md +132 -0
  215. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/business-capability-map.md +68 -0
  216. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/business-case.md +68 -0
  217. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/c4-layout-science.md +280 -0
  218. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/ca-aia.md +81 -0
  219. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/ca-atip.md +79 -0
  220. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/ca-charter.md +81 -0
  221. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/ca-cloud-residency.md +91 -0
  222. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/ca-fitaa.md +81 -0
  223. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/ca-gc-digital-standards.md +93 -0
  224. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/ca-itsg-33.md +80 -0
  225. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/ca-ocap.md +91 -0
  226. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/ca-ola.md +80 -0
  227. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/ca-pia.md +83 -0
  228. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/ca-pspc.md +96 -0
  229. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/ca-soia.md +87 -0
  230. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/codes-of-practice.md +154 -0
  231. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/competitors.md +202 -0
  232. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/conformance.md +153 -0
  233. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/create.md +61 -0
  234. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/custom-commands.md +236 -0
  235. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/customize.md +108 -0
  236. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/data-mesh-contract.md +239 -0
  237. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/data-model.md +69 -0
  238. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/data-quality-framework.md +118 -0
  239. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/datascout.md +162 -0
  240. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/declaration.md +59 -0
  241. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/design-review.md +66 -0
  242. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/devops.md +96 -0
  243. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/dfd.md +187 -0
  244. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/diagram.md +118 -0
  245. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/dld-review.md +102 -0
  246. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/dos.md +109 -0
  247. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/dpia.md +80 -0
  248. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/enterprise-scale.md +260 -0
  249. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/eu-ai-act.md +82 -0
  250. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/eu-cra.md +90 -0
  251. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/eu-data-act.md +85 -0
  252. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/eu-dora.md +83 -0
  253. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/eu-dsa.md +85 -0
  254. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/eu-nis2.md +82 -0
  255. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/eu-rgpd.md +76 -0
  256. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/evaluate.md +115 -0
  257. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/export-okf.md +70 -0
  258. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/finops.md +117 -0
  259. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/fr-algorithme-public.md +86 -0
  260. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/fr-anssi-carto.md +69 -0
  261. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/fr-anssi.md +79 -0
  262. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/fr-code-reuse.md +86 -0
  263. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/fr-dinum.md +83 -0
  264. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/fr-dr.md +88 -0
  265. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/fr-ebios.md +84 -0
  266. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/fr-irn.md +103 -0
  267. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/fr-marche-public.md +94 -0
  268. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/fr-pssi.md +87 -0
  269. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/fr-rgpd.md +75 -0
  270. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/fr-secnumcloud.md +80 -0
  271. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/framework.md +234 -0
  272. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/gap-analysis.md +70 -0
  273. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/gcloud-clarify.md +108 -0
  274. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/gcloud-competitors.md +61 -0
  275. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/gcloud-search.md +106 -0
  276. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/gcp-research.md +169 -0
  277. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/glossary.md +190 -0
  278. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/gov-code-search.md +119 -0
  279. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/gov-landscape.md +114 -0
  280. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/gov-reuse.md +112 -0
  281. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/govs-007-security.md +93 -0
  282. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/grants.md +106 -0
  283. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/graph-report.md +77 -0
  284. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/health.md +234 -0
  285. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/hld-review.md +110 -0
  286. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/hooks.md +121 -0
  287. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/impact.md +68 -0
  288. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/import-okf.md +67 -0
  289. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/init.md +159 -0
  290. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/jsp-936.md +60 -0
  291. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/knowledge-compounding.md +140 -0
  292. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/maturity-model.md +186 -0
  293. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/mcp-servers.md +329 -0
  294. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/migration.md +333 -0
  295. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/mlops.md +126 -0
  296. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/mod-secure.md +124 -0
  297. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/national-data-strategy.md +115 -0
  298. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/navigator.md +86 -0
  299. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/operationalize.md +143 -0
  300. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/pages.md +227 -0
  301. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/pinecone-mcp.md +128 -0
  302. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/plan.md +66 -0
  303. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/platform-design.md +600 -0
  304. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/presentation.md +137 -0
  305. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/pricing.md +62 -0
  306. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/principles-compliance.md +63 -0
  307. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/principles.md +55 -0
  308. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/procurement.md +57 -0
  309. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/productivity.md +217 -0
  310. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/remote-control.md +151 -0
  311. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/requirements.md +61 -0
  312. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/research.md +65 -0
  313. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/review.md +61 -0
  314. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/risk-management.md +70 -0
  315. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/risk.md +132 -0
  316. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/roadmap.md +58 -0
  317. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/roles/README.md +68 -0
  318. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/roles/business-analyst.md +70 -0
  319. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/roles/business-architect.md +70 -0
  320. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/roles/cdo.md +59 -0
  321. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/roles/ciso.md +61 -0
  322. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/roles/cto-cdio.md +59 -0
  323. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/roles/data-architect.md +68 -0
  324. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/roles/data-governance-manager.md +59 -0
  325. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/roles/delivery-manager.md +63 -0
  326. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/roles/devops-engineer.md +55 -0
  327. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/roles/enterprise-architect.md +84 -0
  328. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/roles/it-service-manager.md +55 -0
  329. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/roles/network-architect.md +58 -0
  330. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/roles/performance-analyst.md +67 -0
  331. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/roles/product-manager.md +62 -0
  332. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/roles/security-architect.md +78 -0
  333. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/roles/service-owner.md +58 -0
  334. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/roles/solution-architect.md +75 -0
  335. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/roles/technical-architect.md +68 -0
  336. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/score.md +91 -0
  337. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/sdd-lot1.md +61 -0
  338. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/sdd-lot2.md +62 -0
  339. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/sdd-lot3.md +62 -0
  340. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/search.md +71 -0
  341. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/secure.md +181 -0
  342. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/security-hooks.md +200 -0
  343. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/security.md +62 -0
  344. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/service-assessment.md +47 -0
  345. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/service-design.md +71 -0
  346. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/servicenow.md +152 -0
  347. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/session-memory.md +100 -0
  348. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/sobc.md +129 -0
  349. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/sow.md +125 -0
  350. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/stakeholder-analysis.md +51 -0
  351. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/stakeholders.md +138 -0
  352. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/start.md +276 -0
  353. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/story.md +61 -0
  354. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/strategy.md +211 -0
  355. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/submission-pack.md +72 -0
  356. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/supplier-profile.md +70 -0
  357. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/tcop.md +124 -0
  358. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/template-builder.md +125 -0
  359. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/tenders.md +193 -0
  360. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/testing-plugin-branches.md +79 -0
  361. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/traceability.md +58 -0
  362. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/transition-architecture.md +69 -0
  363. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/trello.md +139 -0
  364. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/uae-ai-autonomy-tier.md +84 -0
  365. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/uae-ai-charter.md +89 -0
  366. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/uae-classification.md +73 -0
  367. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/uae-cloud-residency.md +84 -0
  368. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/uae-data-sharing.md +84 -0
  369. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/uae-digital-records.md +71 -0
  370. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/uae-ias.md +93 -0
  371. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/uae-overlay-maintenance.md +154 -0
  372. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/uae-overlay.md +208 -0
  373. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/uae-pdpl.md +73 -0
  374. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/uae-priorities-alignment.md +82 -0
  375. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/uae-procurement.md +71 -0
  376. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/uae-uaepass.md +83 -0
  377. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/uae-zero-bureaucracy.md +80 -0
  378. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/uk-fs-consumer-duty.md +178 -0
  379. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/uk-fs-ctp-dependency.md +181 -0
  380. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/uk-fs-payments-overlay.md +216 -0
  381. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/uk-fs-safeguarding.md +176 -0
  382. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/uk-fs-sca-rts.md +164 -0
  383. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/uk-government/ai-playbook.md +56 -0
  384. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/uk-government/algorithmic-transparency.md +44 -0
  385. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/uk-government/digital-marketplace.md +55 -0
  386. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/uk-government/secure-by-design.md +51 -0
  387. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/uk-government/standards-map.md +108 -0
  388. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/uk-government/technology-code-of-practice.md +63 -0
  389. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/uk-mdr-classification.md +59 -0
  390. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/uk-mod/secure-by-design.md +54 -0
  391. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/uk-nhs-clinical-safety-overlay.md +214 -0
  392. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/uk-nhs-dcb0129.md +64 -0
  393. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/uk-nhs-dcb0160.md +62 -0
  394. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/uk-nhs-dtac.md +55 -0
  395. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/upgrading.md +130 -0
  396. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/us-ai-impact.md +71 -0
  397. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/us-ai-rmf.md +70 -0
  398. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/us-federal-overlay.md +111 -0
  399. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/us-fedramp-readiness.md +69 -0
  400. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/us-fedramp-ssp.md +71 -0
  401. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/us-fisma-categorization.md +68 -0
  402. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/us-icam.md +70 -0
  403. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/us-nist-800-53.md +70 -0
  404. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/us-privacy-pia.md +74 -0
  405. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/us-sbom-eo-14028.md +71 -0
  406. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/us-zero-trust.md +68 -0
  407. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/wardley-climate.md +122 -0
  408. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/wardley-doctrine.md +120 -0
  409. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/wardley-gameplay.md +123 -0
  410. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/wardley-value-chain.md +130 -0
  411. arckit_cli-6.1.1.data/data/share/arckit/docs/guides/wardley.md +173 -0
  412. arckit_cli-6.1.1.data/data/share/arckit/extensions/arckit-codex/.agents/plugins/marketplace.json +20 -0
  413. arckit_cli-6.1.1.data/data/share/arckit/extensions/arckit-codex/README.md +325 -0
  414. arckit_cli-6.1.1.data/data/share/arckit/extensions/arckit-codex/VERSION +1 -0
  415. arckit_cli-6.1.1.data/data/share/arckit/extensions/arckit-codex/docs/DEPENDENCY-MATRIX.md +616 -0
  416. arckit_cli-6.1.1.data/data/share/arckit/extensions/arckit-codex/hooks/arckit-codex-hook.mjs +1270 -0
  417. arckit_cli-6.1.1.data/data/share/arckit/extensions/arckit-codex/hooks/graph-inject.mjs +1497 -0
  418. arckit_cli-6.1.1.data/data/share/arckit/extensions/arckit-codex/hooks/graph-rollups.mjs +247 -0
  419. arckit_cli-6.1.1.data/data/share/arckit/extensions/arckit-codex/hooks/graph-utils.mjs +363 -0
  420. arckit_cli-6.1.1.data/data/share/arckit/extensions/arckit-codex/hooks/hook-utils.mjs +383 -0
  421. arckit_cli-6.1.1.data/data/share/arckit/extensions/arckit-codex/hooks/hooks.json +80 -0
  422. arckit_cli-6.1.1.data/data/share/arckit/extensions/arckit-codex/hooks/okf-frontmatter.mjs +279 -0
  423. arckit_cli-6.1.1.data/data/share/arckit/extensions/arckit-codex/hooks/project-context-builder.mjs +168 -0
  424. arckit_cli-6.1.1.data/data/share/arckit/extensions/arckit-codex/hooks/sync-guides.mjs +1120 -0
  425. arckit_cli-6.1.1.data/data/share/arckit/extensions/arckit-copilot/README.md +68 -0
  426. arckit_cli-6.1.1.data/data/share/arckit/extensions/arckit-copilot/VERSION +1 -0
  427. arckit_cli-6.1.1.data/data/share/arckit/extensions/arckit-copilot/docs/DEPENDENCY-MATRIX.md +616 -0
  428. arckit_cli-6.1.1.data/data/share/arckit/extensions/arckit-opencode/LICENSE +21 -0
  429. arckit_cli-6.1.1.data/data/share/arckit/extensions/arckit-opencode/README.md +65 -0
  430. arckit_cli-6.1.1.data/data/share/arckit/extensions/arckit-opencode/VERSION +1 -0
  431. arckit_cli-6.1.1.data/data/share/arckit/extensions/arckit-opencode/docs/DEPENDENCY-MATRIX.md +616 -0
  432. arckit_cli-6.1.1.data/data/share/arckit/extensions/arckit-opencode/opencode.json +25 -0
  433. arckit_cli-6.1.1.data/data/share/arckit/extensions/arckit-vibe/.mcp.json +63 -0
  434. arckit_cli-6.1.1.data/data/share/arckit/extensions/arckit-vibe/LICENSE +26 -0
  435. arckit_cli-6.1.1.data/data/share/arckit/extensions/arckit-vibe/README.md +407 -0
  436. arckit_cli-6.1.1.data/data/share/arckit/extensions/arckit-vibe/VERSION +1 -0
  437. arckit_cli-6.1.1.data/data/share/arckit/extensions/arckit-vibe/vibe-config.toml +62 -0
  438. arckit_cli-6.1.1.data/data/share/arckit/scripts/README.md +680 -0
  439. arckit_cli-6.1.1.data/data/share/arckit/scripts/autoresearch/fixtures/000-global/ARC-000-PRIN-v1.0.md +120 -0
  440. arckit_cli-6.1.1.data/data/share/arckit/scripts/autoresearch/fixtures/001-test-project/ARC-001-STKE-v1.0.md +100 -0
  441. arckit_cli-6.1.1.data/data/share/arckit/scripts/autoresearch/fixtures/001-test-project/README.md +15 -0
  442. arckit_cli-6.1.1.data/data/share/arckit/scripts/autoresearch/program-selfharness.md +748 -0
  443. arckit_cli-6.1.1.data/data/share/arckit/scripts/autoresearch/program.md +269 -0
  444. arckit_cli-6.1.1.data/data/share/arckit/scripts/bash/check-prerequisites.sh +250 -0
  445. arckit_cli-6.1.1.data/data/share/arckit/scripts/bash/common.sh +359 -0
  446. arckit_cli-6.1.1.data/data/share/arckit/scripts/bash/create-project.sh +408 -0
  447. arckit_cli-6.1.1.data/data/share/arckit/scripts/bash/generate-document-id.sh +146 -0
  448. arckit_cli-6.1.1.data/data/share/arckit/scripts/bash/list-projects.sh +359 -0
  449. arckit_cli-6.1.1.data/data/share/arckit/scripts/bash/migrate-filenames.sh +553 -0
  450. arckit_cli-6.1.1.data/data/share/arckit/scripts/bump-version.sh +293 -0
  451. arckit_cli-6.1.1.data/data/share/arckit/scripts/check_doctype_collisions.py +30 -0
  452. arckit_cli-6.1.1.data/data/share/arckit/scripts/check_recipes.py +94 -0
  453. arckit_cli-6.1.1.data/data/share/arckit/scripts/check_references.py +144 -0
  454. arckit_cli-6.1.1.data/data/share/arckit/scripts/convert_vibe_agents.py +198 -0
  455. arckit_cli-6.1.1.data/data/share/arckit/scripts/convert_vibe_skills.py +499 -0
  456. arckit_cli-6.1.1.data/data/share/arckit/scripts/converter.py +2002 -0
  457. arckit_cli-6.1.1.data/data/share/arckit/scripts/create-sdg-repo.py +820 -0
  458. arckit_cli-6.1.1.data/data/share/arckit/scripts/generate-arckit-architecture-hero.py +317 -0
  459. arckit_cli-6.1.1.data/data/share/arckit/scripts/generate-arckit-hero.py +278 -0
  460. arckit_cli-6.1.1.data/data/share/arckit/scripts/generate-release-notes.sh +112 -0
  461. arckit_cli-6.1.1.data/data/share/arckit/scripts/managed-agents/README.md +105 -0
  462. arckit_cli-6.1.1.data/data/share/arckit/scripts/managed-agents/arckit-agent.py +418 -0
  463. arckit_cli-6.1.1.data/data/share/arckit/scripts/push-extensions.sh +424 -0
  464. arckit_cli-6.1.1.data/data/share/arckit/scripts/python/apply_doc_control_marker.py +50 -0
  465. arckit_cli-6.1.1.data/data/share/arckit/scripts/python/common.py +288 -0
  466. arckit_cli-6.1.1.data/data/share/arckit/scripts/python/create-project.py +373 -0
  467. arckit_cli-6.1.1.data/data/share/arckit/scripts/python/generate-document-id.py +96 -0
  468. arckit_cli-6.1.1.data/data/share/arckit/scripts/python/list-projects.py +238 -0
  469. arckit_cli-6.1.1.data/data/share/arckit/scripts/python/migrate_classification.py +94 -0
  470. arckit_cli-6.1.1.data/data/share/arckit/scripts/render-brand-pngs.py +72 -0
  471. arckit_cli-6.1.1.data/data/share/arckit/scripts/standardise-colon.py +128 -0
  472. arckit_cli-6.1.1.data/data/share/arckit/scripts/sync-claude-plugin-layout.py +159 -0
  473. arckit_cli-6.1.1.data/data/share/arckit/scripts/sync-shared-assets.py +132 -0
  474. arckit_cli-6.1.1.data/data/share/arckit/scripts/tag-plugins.sh +65 -0
  475. arckit_cli-6.1.1.data/data/share/arckit/scripts/tests/test-doc-types-dual-registration.mjs +57 -0
  476. arckit_cli-6.1.1.data/data/share/arckit/scripts/tests/test-fde-templates.mjs +100 -0
  477. arckit_cli-6.1.1.data/data/share/arckit/scripts/tests/test-regime-registration.mjs +65 -0
  478. arckit_cli-6.1.1.dist-info/METADATA +1966 -0
  479. arckit_cli-6.1.1.dist-info/RECORD +482 -0
  480. arckit_cli-6.1.1.dist-info/WHEEL +4 -0
  481. arckit_cli-6.1.1.dist-info/entry_points.txt +2 -0
  482. arckit_cli-6.1.1.dist-info/licenses/LICENSE +26 -0
@@ -0,0 +1,247 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * ArcKit Graph Rollups — Shared health, coverage, and compliance computations
4
+ *
5
+ * Used by:
6
+ * - graph-inject.mjs (formatNavigator, formatGraphReport, formatHealth)
7
+ * - sync-guides.mjs (manifest.projectHealth + per-node health flags for the
8
+ * dashboard Document Map and Project Health panel)
9
+ *
10
+ * Pure data — no Markdown formatting. Callers shape the output.
11
+ */
12
+
13
+ import { DOC_TYPES } from '../config/doc-types.mjs';
14
+
15
+ // ── Constants ──────────────────────────────────────────────────────────────
16
+
17
+ /**
18
+ * Doc types whose category yields HIGH severity in classifySeverity().
19
+ * Used for "compliance readiness" scoring.
20
+ */
21
+ export const HIGH_SEVERITY_TYPES = ['TCOP', 'SECD', 'SECD-MOD', 'DPIA', 'SVCASS',
22
+ 'RISK', 'TRAC', 'CONF', 'PRIN-COMP', 'AIPB', 'ATRS', 'JSP936'];
23
+
24
+ /**
25
+ * Essential doc types per tier — used by navigator to compute coverage and
26
+ * recommend the next command. Tiers represent rough dependency order.
27
+ */
28
+ export const ESSENTIAL_TYPES = [
29
+ { type: 'REQ', tier: 1, command: '$arckit-requirements', label: 'Requirements' },
30
+ { type: 'STKE', tier: 1, command: '$arckit-stakeholders', label: 'Stakeholder Analysis' },
31
+ { type: 'RISK', tier: 1, command: '$arckit-risk', label: 'Risk Register' },
32
+ { type: 'SOBC', tier: 2, command: '$arckit-sobc', label: 'Strategic Outline Business Case' },
33
+ { type: 'ADR', tier: 3, command: '$arckit-adr', label: 'Architecture Decision Record' },
34
+ { type: 'HLDR', tier: 3, command: '$arckit-hld-review', label: 'High-Level Design Review' },
35
+ { type: 'TRAC', tier: 4, command: '$arckit-traceability', label: 'Traceability Matrix' },
36
+ { type: 'CONF', tier: 4, command: '$arckit-conformance', label: 'Conformance Assessment' },
37
+ ];
38
+
39
+ export const CONTEXTUAL_TYPES = [
40
+ { type: 'DPIA', command: '$arckit-dpia', trigger: 'processing personal data' },
41
+ { type: 'SECD', command: '$arckit-secure', trigger: 'security-sensitive system' },
42
+ { type: 'TCOP', command: '$arckit-tcop', trigger: 'UK Gov Service Standard' },
43
+ { type: 'DATA', command: '$arckit-data-model', trigger: 'DR-* requirements present' },
44
+ ];
45
+
46
+ /** Days since lastModified before a node is flagged stale. */
47
+ export const STALE_THRESHOLD_DAYS = 90;
48
+
49
+ // ── Helpers ────────────────────────────────────────────────────────────────
50
+
51
+ function safeParseDate(s) {
52
+ if (!s) return null;
53
+ const d = new Date(s);
54
+ return isNaN(d.getTime()) ? null : d;
55
+ }
56
+
57
+ function daysBetween(date, baseline) {
58
+ return Math.floor((baseline.getTime() - date.getTime()) / (1000 * 60 * 60 * 24));
59
+ }
60
+
61
+ function shortIdOf(fullId) {
62
+ return fullId.replace(/-v[\d.]+$/, '');
63
+ }
64
+
65
+ function fullIdFromPath(path) {
66
+ return path.split('/').pop().replace(/\.md$/, '');
67
+ }
68
+
69
+ // ── Per-node health ────────────────────────────────────────────────────────
70
+
71
+ /**
72
+ * Compute health flags for every node in the graph and attach them as
73
+ * `node.health = { stale, draft, orphan, ageDays }`.
74
+ *
75
+ * Mutates graph.nodes in place. Returns the graph for chaining.
76
+ *
77
+ * `stale` = lastModified (or createdDate) older than STALE_THRESHOLD_DAYS
78
+ * `draft` = status matches /draft/i
79
+ * `orphan` = no incoming or outgoing edges within the project's id-space
80
+ */
81
+ export function tagNodeHealth(graph, baseline = new Date()) {
82
+ if (!graph || !graph.nodes) return graph;
83
+
84
+ // Build per-project full-id sets so orphan detection is project-scoped.
85
+ const projectIds = {};
86
+ for (const [fullId, node] of Object.entries(graph.nodes)) {
87
+ if (!projectIds[node.project]) projectIds[node.project] = new Set();
88
+ projectIds[node.project].add(fullId);
89
+ }
90
+
91
+ // Build connected sets per project from edges.
92
+ const connectedByProject = {};
93
+ for (const projectName of Object.keys(projectIds)) {
94
+ connectedByProject[projectName] = new Set();
95
+ }
96
+ for (const e of graph.edges || []) {
97
+ const fromNode = graph.nodes[e.from];
98
+ if (!fromNode) continue;
99
+ const proj = fromNode.project;
100
+ const set = connectedByProject[proj];
101
+ if (!set) continue;
102
+ set.add(e.from);
103
+ // Edge `to` is short-id; connect any matching full-id in the same project.
104
+ for (const fullId of projectIds[proj]) {
105
+ if (fullId === e.to || shortIdOf(fullId) === e.to) {
106
+ set.add(fullId);
107
+ }
108
+ }
109
+ }
110
+
111
+ for (const [fullId, node] of Object.entries(graph.nodes)) {
112
+ const dateStr = node.lastModified || node.createdDate;
113
+ const d = safeParseDate(dateStr);
114
+ const ageDays = d ? daysBetween(d, baseline) : null;
115
+ const stale = ageDays != null && ageDays >= STALE_THRESHOLD_DAYS;
116
+ const draft = /draft/i.test(node.status || '');
117
+ const connected = connectedByProject[node.project];
118
+ const orphan = !!connected && !connected.has(fullId);
119
+
120
+ node.health = { stale, draft, orphan, ageDays };
121
+ }
122
+
123
+ return graph;
124
+ }
125
+
126
+ // ── Per-project rollup ─────────────────────────────────────────────────────
127
+
128
+ /**
129
+ * Compute a per-project rollup with coverage, compliance, density, and
130
+ * recommended next commands. Mirrors the formulas used in graph-inject.mjs
131
+ * formatNavigator + formatGraphReport but returns structured data.
132
+ *
133
+ * @param {string} projectName e.g. '001-foo'
134
+ * @param {object} graph from scanAllArtifacts (must include nodes, edges)
135
+ * @param {Date} baseline reference "now" for stale calculations
136
+ * @returns {object} project rollup
137
+ */
138
+ export function computeProjectRollup(projectName, graph, baseline = new Date()) {
139
+ const projectNodes = Object.values(graph.nodes).filter(n => n.project === projectName);
140
+ const projectFullIds = new Set(projectNodes.map(n => fullIdFromPath(n.path)));
141
+
142
+ // Edges originating in this project
143
+ const projectEdges = (graph.edges || []).filter(e => projectFullIds.has(e.from));
144
+ const density = projectNodes.length === 0
145
+ ? 0
146
+ : projectEdges.length / projectNodes.length;
147
+
148
+ // Type set
149
+ const presentTypes = new Set(projectNodes.map(n => n.type).filter(Boolean));
150
+
151
+ // Essential coverage (Tier 1–4 doc types)
152
+ const essentialPresent = ESSENTIAL_TYPES.filter(e => presentTypes.has(e.type));
153
+ const essentialMissing = ESSENTIAL_TYPES.filter(e => !presentTypes.has(e.type));
154
+ const essentialPct = ESSENTIAL_TYPES.length === 0
155
+ ? 0
156
+ : Math.round((essentialPresent.length / ESSENTIAL_TYPES.length) * 100);
157
+
158
+ // Contextual artifact suggestions (only flag those NOT present)
159
+ const contextualMissing = CONTEXTUAL_TYPES.filter(c => !presentTypes.has(c.type));
160
+
161
+ // Compliance readiness (HIGH-severity types)
162
+ const presentHigh = HIGH_SEVERITY_TYPES.filter(t => presentTypes.has(t));
163
+ const missingHigh = HIGH_SEVERITY_TYPES.filter(t => !presentTypes.has(t));
164
+ const compliancePct = HIGH_SEVERITY_TYPES.length === 0
165
+ ? 0
166
+ : Math.round((presentHigh.length / HIGH_SEVERITY_TYPES.length) * 100);
167
+
168
+ // Coverage by category — counts vs total possible types per category
169
+ const presentByCategory = {};
170
+ for (const t of presentTypes) {
171
+ const info = DOC_TYPES[t];
172
+ if (!info) continue;
173
+ if (!presentByCategory[info.category]) presentByCategory[info.category] = 0;
174
+ presentByCategory[info.category]++;
175
+ }
176
+
177
+ // Health rollup (count nodes already tagged via tagNodeHealth)
178
+ const tagged = projectNodes.every(n => n.health !== undefined);
179
+ const staleCount = tagged ? projectNodes.filter(n => n.health.stale).length : 0;
180
+ const draftCount = tagged ? projectNodes.filter(n => n.health.draft).length : 0;
181
+ const orphanCount = tagged ? projectNodes.filter(n => n.health.orphan).length : 0;
182
+
183
+ // Global principles presence
184
+ const hasGlobalPrin = Object.values(graph.nodes).some(
185
+ n => n.project === '000-global' && n.type === 'PRIN'
186
+ );
187
+
188
+ // Recommended next commands — missing essentials in tier order, capped at 3
189
+ const recommendations = essentialMissing
190
+ .slice()
191
+ .sort((a, b) => a.tier - b.tier)
192
+ .slice(0, 3)
193
+ .map(e => ({
194
+ command: e.command,
195
+ label: e.label,
196
+ type: e.type,
197
+ tier: e.tier,
198
+ reason: `Tier ${e.tier} essential missing`,
199
+ }));
200
+
201
+ return {
202
+ project: projectName,
203
+ projectId: projectName.match(/^(\d{3})/)?.[1] || '',
204
+ artifactCount: projectNodes.length,
205
+ edgeCount: projectEdges.length,
206
+ density: Number(density.toFixed(2)),
207
+ coverage: {
208
+ essentialPresent: essentialPresent.map(e => e.type),
209
+ essentialMissing: essentialMissing.map(e => ({
210
+ type: e.type,
211
+ command: e.command,
212
+ label: e.label,
213
+ tier: e.tier,
214
+ })),
215
+ essentialPct,
216
+ presentTypes: [...presentTypes].sort(),
217
+ presentByCategory,
218
+ },
219
+ compliance: {
220
+ presentHigh,
221
+ missingHigh,
222
+ pct: compliancePct,
223
+ total: HIGH_SEVERITY_TYPES.length,
224
+ },
225
+ health: { stale: staleCount, draft: draftCount, orphan: orphanCount },
226
+ contextualSuggestions: contextualMissing.map(c => ({
227
+ command: c.command,
228
+ type: c.type,
229
+ trigger: c.trigger,
230
+ })),
231
+ hasGlobalPrin,
232
+ recommendations,
233
+ };
234
+ }
235
+
236
+ /**
237
+ * Compute rollups for every working project in the graph (excludes 000-global).
238
+ *
239
+ * @param {object} graph from scanAllArtifacts
240
+ * @param {Date} baseline reference "now"
241
+ * @returns {object[]} array of per-project rollups, sorted by project name
242
+ */
243
+ export function computeAllProjectRollups(graph, baseline = new Date()) {
244
+ if (!graph || !graph.projects) return [];
245
+ const working = graph.projects.filter(p => p !== '000-global').sort();
246
+ return working.map(p => computeProjectRollup(p, graph, baseline));
247
+ }
@@ -0,0 +1,363 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * ArcKit Graph Utilities — Shared dependency graph builder
4
+ *
5
+ * Used by:
6
+ * - impact-scan.mjs (UserPromptSubmit hook for /arckit:impact)
7
+ * - sync-guides.mjs (UserPromptSubmit hook for /arckit:pages → manifest.json)
8
+ *
9
+ * v2: Optional `opts` enrich the graph with content, full requirement records,
10
+ * vendors, principles, risks, and external-file listings. Defaults preserve v1
11
+ * behaviour exactly so existing consumers need no changes. See issue #162.
12
+ */
13
+
14
+ import { join } from 'node:path';
15
+ import {
16
+ isDir, isFile, readText, listDir, listFilesRecursive, mtimeMs,
17
+ extractDocType, extractVersion,
18
+ extractDocControlFields, extractRequirementIds,
19
+ extractRequirementDetails, extractPrinciples, extractRiskEntries,
20
+ } from './hook-utils.mjs';
21
+ import { DOC_TYPES } from '../config/doc-types.mjs';
22
+
23
+ const DEFAULT_OPTS = Object.freeze({
24
+ withNodeMetadata: false, // version, owner, classification, vendor, subdir, controlFields, reqIds
25
+ withContent: false, // full text + mtimeMs
26
+ withPreview: false, // ~500-char post-control preview
27
+ withRequirements: false, // full requirement records per project
28
+ withVendors: false, // vendor structure with reviews + verdicts
29
+ withPrinciples: false, // extracted principles per project
30
+ withRisks: false, // extracted risk entries per project
31
+ withExternals: false, // projects/*/external/ listing
32
+ excludeGlobal: false, // skip 000-global
33
+ projectFilter: null, // dir name or 3-digit prefix
34
+ });
35
+
36
+ function resolveOpts(opts) {
37
+ return { ...DEFAULT_OPTS, ...(opts || {}) };
38
+ }
39
+
40
+ /**
41
+ * Extract first markdown heading from content.
42
+ */
43
+ export function extractTitle(content) {
44
+ const match = content.match(/^#\s+(.+)/m);
45
+ return match ? match[1].trim() : null;
46
+ }
47
+
48
+ /**
49
+ * Classify impact severity based on document type category.
50
+ * HIGH = Compliance/Governance, MEDIUM = Architecture, LOW = everything else.
51
+ */
52
+ export function classifySeverity(docType) {
53
+ const info = DOC_TYPES[docType];
54
+ if (!info) return 'LOW';
55
+ const cat = info.category;
56
+ if (cat === 'Compliance' || cat === 'Governance') return 'HIGH';
57
+ if (cat === 'Architecture') return 'MEDIUM';
58
+ return 'LOW';
59
+ }
60
+
61
+ /**
62
+ * Build a ~500-char preview by skipping the leading doc-control table.
63
+ */
64
+ export function extractPreview(content, maxLen = 500) {
65
+ const lines = content.split('\n');
66
+ let inTable = false;
67
+ let pastControl = false;
68
+ const previewLines = [];
69
+
70
+ for (const line of lines) {
71
+ const trimmed = line.trim();
72
+
73
+ if (!pastControl) {
74
+ if (trimmed.startsWith('|') || trimmed === '' || trimmed.startsWith('#') || trimmed.startsWith('---')) {
75
+ if (trimmed.startsWith('|')) inTable = true;
76
+ else if (inTable && !trimmed.startsWith('|')) {
77
+ inTable = false;
78
+ pastControl = true;
79
+ }
80
+ continue;
81
+ }
82
+ pastControl = true;
83
+ }
84
+
85
+ if (pastControl && trimmed) {
86
+ previewLines.push(trimmed);
87
+ }
88
+
89
+ if (previewLines.join(' ').length >= maxLen) break;
90
+ }
91
+
92
+ return previewLines.join(' ').substring(0, maxLen);
93
+ }
94
+
95
+ /**
96
+ * Derive { subdir, vendor } from the prefix used while scanning.
97
+ * '' → { subdir: null, vendor: null }
98
+ * 'decisions/' → { subdir: 'decisions', vendor: null }
99
+ * 'vendors/foo/' → { subdir: 'vendors/foo', vendor: 'foo' }
100
+ * 'vendors/foo/reviews/' → { subdir: 'vendors/foo/reviews', vendor: 'foo' }
101
+ */
102
+ function locationFromPrefix(prefix) {
103
+ if (!prefix) return { subdir: null, vendor: null };
104
+ const stripped = prefix.replace(/\/$/, '');
105
+ const vendorMatch = stripped.match(/^vendors\/([^/]+)/);
106
+ return { subdir: stripped, vendor: vendorMatch ? vendorMatch[1] : null };
107
+ }
108
+
109
+ /**
110
+ * Scan a single project directory for ARC documents and build graph data.
111
+ * Mutates nodes, edges, reqIndex in-place (legacy contract preserved).
112
+ *
113
+ * Optional `opts` (v2) enriches per-node fields and accumulates aggregations
114
+ * into the optional `aggregations` argument when provided.
115
+ */
116
+ export function scanProjectDir(projectDir, projectName, nodes, edges, reqIndex, opts, aggregations) {
117
+ const o = resolveOpts(opts);
118
+ const dirsToScan = [
119
+ { dir: projectDir, prefix: '' },
120
+ { dir: join(projectDir, 'decisions'), prefix: 'decisions/' },
121
+ { dir: join(projectDir, 'diagrams'), prefix: 'diagrams/' },
122
+ { dir: join(projectDir, 'wardley-maps'), prefix: 'wardley-maps/' },
123
+ { dir: join(projectDir, 'data-contracts'), prefix: 'data-contracts/' },
124
+ { dir: join(projectDir, 'reviews'), prefix: 'reviews/' },
125
+ { dir: join(projectDir, 'research'), prefix: 'research/' },
126
+ ];
127
+
128
+ const vendorsDir = join(projectDir, 'vendors');
129
+ if (isDir(vendorsDir)) {
130
+ for (const vendor of listDir(vendorsDir)) {
131
+ const vd = join(vendorsDir, vendor);
132
+ if (isDir(vd)) {
133
+ dirsToScan.push({ dir: vd, prefix: `vendors/${vendor}/` });
134
+ const vrd = join(vd, 'reviews');
135
+ if (isDir(vrd)) {
136
+ dirsToScan.push({ dir: vrd, prefix: `vendors/${vendor}/reviews/` });
137
+ }
138
+ }
139
+ }
140
+ }
141
+
142
+ // Aggregations only populated when caller passes the bucket
143
+ const reqAccum = aggregations?.requirements;
144
+ const principlesAccum = aggregations?.principles;
145
+ const risksAccum = aggregations?.risks;
146
+
147
+ for (const { dir, prefix } of dirsToScan) {
148
+ if (!isDir(dir)) continue;
149
+ for (const f of listDir(dir)) {
150
+ if (!f.startsWith('ARC-') || !f.endsWith('.md')) continue;
151
+ const fp = join(dir, f);
152
+ if (!isFile(fp)) continue;
153
+
154
+ const content = readText(fp);
155
+ if (!content) continue;
156
+
157
+ const docType = extractDocType(f);
158
+ const fields = extractDocControlFields(content);
159
+ const title = extractTitle(content) || fields['Document Title'] || f;
160
+ const status = fields['Status'] || '';
161
+ const { subdir, vendor } = locationFromPrefix(prefix);
162
+
163
+ const shortId = f.replace(/-v[\d.]+\.md$/, '');
164
+ const fullId = f.replace(/\.md$/, '');
165
+
166
+ const reqIdsSet = extractRequirementIds(content);
167
+
168
+ // v1 fields — always populated, identical to pre-v2 output
169
+ const node = {
170
+ type: docType,
171
+ project: projectName,
172
+ path: `projects/${projectName}/${prefix}${f}`,
173
+ title,
174
+ status,
175
+ severity: classifySeverity(docType),
176
+ createdDate: fields['Created Date'] || null,
177
+ lastModified: fields['Last Modified'] || null,
178
+ };
179
+
180
+ // v2 enrichments — gated to keep impact/pages output byte-stable
181
+ if (o.withNodeMetadata) {
182
+ node.version = extractVersion(f);
183
+ node.owner = fields['Owner'] || fields['Document Owner'] || '';
184
+ node.classification = fields['Classification'] || '';
185
+ node.vendor = vendor;
186
+ node.subdir = subdir;
187
+ node.controlFields = fields;
188
+ node.reqIds = Array.from(reqIdsSet);
189
+ }
190
+ if (o.withContent) {
191
+ node.content = content;
192
+ node.mtimeMs = mtimeMs(fp);
193
+ }
194
+ if (o.withPreview) {
195
+ node.preview = extractPreview(content);
196
+ }
197
+
198
+ nodes[fullId] = node;
199
+
200
+ for (const reqId of reqIdsSet) {
201
+ if (!reqIndex[reqId]) reqIndex[reqId] = [];
202
+ if (!reqIndex[reqId].includes(fullId)) {
203
+ reqIndex[reqId].push(fullId);
204
+ }
205
+ }
206
+
207
+ // Extract cross-references to other ARC documents (deduplicated per source)
208
+ const ARC_REF_RE = /\bARC-(\d{3})-([A-Z][\w-]*?)(?:-(\d{3}))?(?:-v[\d.]+)?(?:\.md)?\b/g;
209
+ const seenRefs = new Set();
210
+ for (const m of content.matchAll(ARC_REF_RE)) {
211
+ const refStr = m[0].replace(/\.md$/, '');
212
+ const refShort = refStr.replace(/-v[\d.]+$/, '');
213
+ const edgeKey = fullId + '>' + refShort;
214
+ if (refShort !== shortId && !seenRefs.has(edgeKey)) {
215
+ seenRefs.add(edgeKey);
216
+ edges.push({ from: fullId, to: refShort, type: 'references' });
217
+ }
218
+ }
219
+
220
+ // Aggregations
221
+ if (reqAccum && docType === 'REQ') {
222
+ if (!reqAccum[projectName]) reqAccum[projectName] = [];
223
+ const details = extractRequirementDetails(content);
224
+ for (const r of details) {
225
+ reqAccum[projectName].push({ ...r, sourceFile: f });
226
+ }
227
+ }
228
+ if (principlesAccum && docType === 'PRIN') {
229
+ if (!principlesAccum[projectName]) principlesAccum[projectName] = [];
230
+ for (const p of extractPrinciples(content)) {
231
+ principlesAccum[projectName].push({ ...p, sourceFile: f });
232
+ }
233
+ }
234
+ if (risksAccum && docType === 'RISK') {
235
+ if (!risksAccum[projectName]) risksAccum[projectName] = [];
236
+ for (const r of extractRiskEntries(content)) {
237
+ risksAccum[projectName].push({ ...r, sourceFile: f });
238
+ }
239
+ }
240
+ }
241
+ }
242
+ }
243
+
244
+ /**
245
+ * Build a per-project vendor structure with reviews + verdicts.
246
+ */
247
+ function scanVendors(projectDir) {
248
+ const vendors = [];
249
+ const vendorsDir = join(projectDir, 'vendors');
250
+ if (!isDir(vendorsDir)) return vendors;
251
+
252
+ for (const name of listDir(vendorsDir)) {
253
+ const vendorDir = join(vendorsDir, name);
254
+ if (!isDir(vendorDir)) continue;
255
+
256
+ const entry = { name, docs: [], reviews: [] };
257
+
258
+ for (const f of listDir(vendorDir)) {
259
+ if (!f.endsWith('.md')) continue;
260
+ if (!isFile(join(vendorDir, f))) continue;
261
+ entry.docs.push(f);
262
+ }
263
+
264
+ const reviewsDir = join(vendorDir, 'reviews');
265
+ if (isDir(reviewsDir)) {
266
+ for (const f of listDir(reviewsDir)) {
267
+ if (!f.endsWith('.md') || !isFile(join(reviewsDir, f))) continue;
268
+ const content = readText(join(reviewsDir, f));
269
+ let verdict = null;
270
+ if (content) {
271
+ if (/APPROVED\s+WITH\s+CONDITIONS/i.test(content)) verdict = 'APPROVED WITH CONDITIONS';
272
+ else if (/\bREJECTED\b/i.test(content)) verdict = 'REJECTED';
273
+ else if (/\bAPPROVED\b/i.test(content)) verdict = 'APPROVED';
274
+ else if (/\bPENDING\b/i.test(content)) verdict = 'PENDING';
275
+ }
276
+ entry.reviews.push({ file: f, verdict });
277
+ }
278
+ }
279
+
280
+ vendors.push(entry);
281
+ }
282
+
283
+ return vendors;
284
+ }
285
+
286
+ /**
287
+ * List files in projects/<name>/external/ recursively with mtimes
288
+ * (excluding README.md files).
289
+ */
290
+ function scanExternals(projectDir) {
291
+ const externalDir = join(projectDir, 'external');
292
+ if (!isDir(externalDir)) return [];
293
+ const out = [];
294
+ for (const file of listFilesRecursive(externalDir)) {
295
+ if (file.name === 'README.md') continue;
296
+ out.push({
297
+ filename: file.relativePath,
298
+ path: file.path,
299
+ mtimeMs: mtimeMs(file.path),
300
+ });
301
+ }
302
+ return out;
303
+ }
304
+
305
+ /**
306
+ * Scan all projects in the projects/ directory and build a complete dependency graph.
307
+ *
308
+ * v1 contract preserved: with no `opts`, returns `{ nodes, edges, reqIndex, projects }`
309
+ * exactly as before. Optional fields (`requirements`, `vendors`, `principles`, `risks`,
310
+ * `externalFiles`) are added only when the corresponding flag is set.
311
+ */
312
+ export function scanAllArtifacts(projectsDir, opts) {
313
+ const o = resolveOpts(opts);
314
+ const nodes = {};
315
+ const edges = [];
316
+ const reqIndex = {};
317
+
318
+ let projectDirs = listDir(projectsDir)
319
+ .filter(e => isDir(join(projectsDir, e)) && /^\d{3}-/.test(e));
320
+
321
+ if (o.excludeGlobal) {
322
+ projectDirs = projectDirs.filter(e => e !== '000-global');
323
+ }
324
+
325
+ if (o.projectFilter) {
326
+ projectDirs = projectDirs.filter(d =>
327
+ d === o.projectFilter || d.startsWith(o.projectFilter)
328
+ );
329
+ }
330
+
331
+ // Aggregation buckets (only built when requested)
332
+ const aggregations = {};
333
+ if (o.withRequirements) aggregations.requirements = {};
334
+ if (o.withPrinciples) aggregations.principles = {};
335
+ if (o.withRisks) aggregations.risks = {};
336
+
337
+ for (const projectName of projectDirs) {
338
+ const projectDir = join(projectsDir, projectName);
339
+ scanProjectDir(projectDir, projectName, nodes, edges, reqIndex, o, aggregations);
340
+ }
341
+
342
+ const result = { nodes, edges, reqIndex, projects: projectDirs };
343
+
344
+ if (o.withRequirements) result.requirements = aggregations.requirements;
345
+ if (o.withPrinciples) result.principles = aggregations.principles;
346
+ if (o.withRisks) result.risks = aggregations.risks;
347
+
348
+ if (o.withVendors) {
349
+ result.vendors = {};
350
+ for (const projectName of projectDirs) {
351
+ result.vendors[projectName] = scanVendors(join(projectsDir, projectName));
352
+ }
353
+ }
354
+
355
+ if (o.withExternals) {
356
+ result.externalFiles = {};
357
+ for (const projectName of projectDirs) {
358
+ result.externalFiles[projectName] = scanExternals(join(projectsDir, projectName));
359
+ }
360
+ }
361
+
362
+ return result;
363
+ }