pumuki 6.3.7

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 (744) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +370 -0
  3. package/VERSION +1 -0
  4. package/assets/Hook_01.png +0 -0
  5. package/assets/Hook_02.png +0 -0
  6. package/assets/ai-start.png +0 -0
  7. package/assets/ai_gate.png +0 -0
  8. package/assets/ast_intelligence_01.png +0 -0
  9. package/assets/ast_intelligence_01.svg +40 -0
  10. package/assets/ast_intelligence_02.png +0 -0
  11. package/assets/ast_intelligence_02.svg +39 -0
  12. package/assets/ast_intelligence_03.png +0 -0
  13. package/assets/ast_intelligence_03.svg +55 -0
  14. package/assets/ast_intelligence_04.png +0 -0
  15. package/assets/ast_intelligence_04.svg +39 -0
  16. package/assets/ast_intelligence_05.png +0 -0
  17. package/assets/ast_intelligence_05.svg +45 -0
  18. package/assets/logo.png +0 -0
  19. package/assets/logo_banner.svg +29 -0
  20. package/assets/pre-flight-check.png +0 -0
  21. package/bin/_run-ts-entry.js +46 -0
  22. package/bin/pumuki-ci.js +5 -0
  23. package/bin/pumuki-framework.js +5 -0
  24. package/bin/pumuki-mcp-evidence.js +5 -0
  25. package/bin/pumuki-pre-commit.js +5 -0
  26. package/bin/pumuki-pre-push.js +5 -0
  27. package/bin/pumuki.js +5 -0
  28. package/core/facts/DependencyFact.test.ts +38 -0
  29. package/core/facts/DependencyFact.ts +6 -0
  30. package/core/facts/Fact.test.ts +74 -0
  31. package/core/facts/Fact.ts +10 -0
  32. package/core/facts/FactSet.test.ts +38 -0
  33. package/core/facts/FactSet.ts +3 -0
  34. package/core/facts/FileChangeFact.test.ts +36 -0
  35. package/core/facts/FileChangeFact.ts +5 -0
  36. package/core/facts/FileContentFact.test.ts +26 -0
  37. package/core/facts/FileContentFact.ts +5 -0
  38. package/core/facts/HeuristicFact.test.ts +34 -0
  39. package/core/facts/HeuristicFact.ts +10 -0
  40. package/core/facts/detectors/browser/index.test.ts +131 -0
  41. package/core/facts/detectors/browser/index.ts +67 -0
  42. package/core/facts/detectors/fs/callbacks.test.ts +73 -0
  43. package/core/facts/detectors/fs/callbacks.ts +93 -0
  44. package/core/facts/detectors/fs/promises.test.ts +88 -0
  45. package/core/facts/detectors/fs/promises.ts +75 -0
  46. package/core/facts/detectors/fs/sync.test.ts +48 -0
  47. package/core/facts/detectors/fs/sync.ts +3 -0
  48. package/core/facts/detectors/fs/syncPart1.test.ts +52 -0
  49. package/core/facts/detectors/fs/syncPart1.ts +3 -0
  50. package/core/facts/detectors/fs/syncPart1DirTimes.test.ts +58 -0
  51. package/core/facts/detectors/fs/syncPart1DirTimes.ts +93 -0
  52. package/core/facts/detectors/fs/syncPart1FileOps.test.ts +64 -0
  53. package/core/facts/detectors/fs/syncPart1FileOps.ts +93 -0
  54. package/core/facts/detectors/fs/syncPart1Metadata.test.ts +64 -0
  55. package/core/facts/detectors/fs/syncPart1Metadata.ts +139 -0
  56. package/core/facts/detectors/fs/syncPart2.test.ts +62 -0
  57. package/core/facts/detectors/fs/syncPart2.ts +4 -0
  58. package/core/facts/detectors/fs/syncPart2Core.test.ts +62 -0
  59. package/core/facts/detectors/fs/syncPart2Core.ts +70 -0
  60. package/core/facts/detectors/fs/syncPart2Io.test.ts +62 -0
  61. package/core/facts/detectors/fs/syncPart2Io.ts +70 -0
  62. package/core/facts/detectors/fs/syncPart2Permissions.test.ts +66 -0
  63. package/core/facts/detectors/fs/syncPart2Permissions.ts +93 -0
  64. package/core/facts/detectors/fs/syncPart2Times.test.ts +66 -0
  65. package/core/facts/detectors/fs/syncPart2Times.ts +93 -0
  66. package/core/facts/detectors/fs/syncPart3.test.ts +62 -0
  67. package/core/facts/detectors/fs/syncPart3.ts +3 -0
  68. package/core/facts/detectors/fs/syncPart3DescriptorIo.test.ts +69 -0
  69. package/core/facts/detectors/fs/syncPart3DescriptorIo.ts +93 -0
  70. package/core/facts/detectors/fs/syncPart3Links.test.ts +62 -0
  71. package/core/facts/detectors/fs/syncPart3Links.ts +70 -0
  72. package/core/facts/detectors/fs/syncPart3PathOps.test.ts +72 -0
  73. package/core/facts/detectors/fs/syncPart3PathOps.ts +116 -0
  74. package/core/facts/detectors/process/core.test.ts +147 -0
  75. package/core/facts/detectors/process/core.ts +120 -0
  76. package/core/facts/detectors/process/index.test.ts +61 -0
  77. package/core/facts/detectors/process/index.ts +3 -0
  78. package/core/facts/detectors/process/shell.test.ts +137 -0
  79. package/core/facts/detectors/process/shell.ts +170 -0
  80. package/core/facts/detectors/process/spawn.test.ts +155 -0
  81. package/core/facts/detectors/process/spawn.ts +121 -0
  82. package/core/facts/detectors/security/index.test.ts +382 -0
  83. package/core/facts/detectors/security/index.ts +16 -0
  84. package/core/facts/detectors/security/securityCredentials.test.ts +149 -0
  85. package/core/facts/detectors/security/securityCredentials.ts +192 -0
  86. package/core/facts/detectors/security/securityCrypto.test.ts +122 -0
  87. package/core/facts/detectors/security/securityCrypto.ts +88 -0
  88. package/core/facts/detectors/security/securityJwt.test.ts +187 -0
  89. package/core/facts/detectors/security/securityJwt.ts +134 -0
  90. package/core/facts/detectors/security/securityTls.test.ts +121 -0
  91. package/core/facts/detectors/security/securityTls.ts +88 -0
  92. package/core/facts/detectors/text/android.test.ts +87 -0
  93. package/core/facts/detectors/text/android.ts +38 -0
  94. package/core/facts/detectors/text/ios.test.ts +83 -0
  95. package/core/facts/detectors/text/ios.ts +108 -0
  96. package/core/facts/detectors/text/utils.test.ts +71 -0
  97. package/core/facts/detectors/text/utils.ts +146 -0
  98. package/core/facts/detectors/typescript/index.test.ts +231 -0
  99. package/core/facts/detectors/typescript/index.ts +167 -0
  100. package/core/facts/detectors/utils/astHelpers.test.ts +79 -0
  101. package/core/facts/detectors/utils/astHelpers.ts +33 -0
  102. package/core/facts/detectors/vm/index.test.ts +58 -0
  103. package/core/facts/detectors/vm/index.ts +27 -0
  104. package/core/facts/extractHeuristicFacts.ts +394 -0
  105. package/core/facts/index.test.ts +72 -0
  106. package/core/facts/index.ts +11 -0
  107. package/core/gate/Finding.test.ts +52 -0
  108. package/core/gate/Finding.ts +9 -0
  109. package/core/gate/GateOutcome.test.ts +20 -0
  110. package/core/gate/GateOutcome.ts +1 -0
  111. package/core/gate/GatePolicy.test.ts +28 -0
  112. package/core/gate/GatePolicy.ts +9 -0
  113. package/core/gate/GateStage.test.ts +22 -0
  114. package/core/gate/GateStage.ts +1 -0
  115. package/core/gate/conditionMatches.test.ts +110 -0
  116. package/core/gate/conditionMatches.ts +174 -0
  117. package/core/gate/evaluateGate.test.ts +77 -0
  118. package/core/gate/evaluateGate.ts +23 -0
  119. package/core/gate/evaluateRules.test.ts +106 -0
  120. package/core/gate/evaluateRules.ts +40 -0
  121. package/core/gate/index.test.ts +39 -0
  122. package/core/gate/index.ts +6 -0
  123. package/core/rules/Condition.test.ts +54 -0
  124. package/core/rules/Condition.ts +40 -0
  125. package/core/rules/Consequence.test.ts +25 -0
  126. package/core/rules/Consequence.ts +5 -0
  127. package/core/rules/README.md +6 -0
  128. package/core/rules/RuleDefinition.test.ts +55 -0
  129. package/core/rules/RuleDefinition.ts +20 -0
  130. package/core/rules/RuleSet.test.ts +48 -0
  131. package/core/rules/RuleSet.ts +3 -0
  132. package/core/rules/Severity.test.ts +19 -0
  133. package/core/rules/Severity.ts +12 -0
  134. package/core/rules/index.test.ts +41 -0
  135. package/core/rules/index.ts +7 -0
  136. package/core/rules/mergeRuleSets.ts +53 -0
  137. package/core/rules/presets/androidRuleSet.test.ts +22 -0
  138. package/core/rules/presets/androidRuleSet.ts +62 -0
  139. package/core/rules/presets/astHeuristicsRuleSet.ts +31 -0
  140. package/core/rules/presets/backendRuleSet.test.ts +27 -0
  141. package/core/rules/presets/backendRuleSet.ts +61 -0
  142. package/core/rules/presets/exampleRuleSet.test.ts +25 -0
  143. package/core/rules/presets/exampleRuleSet.ts +34 -0
  144. package/core/rules/presets/frontendRuleSet.test.ts +27 -0
  145. package/core/rules/presets/frontendRuleSet.ts +61 -0
  146. package/core/rules/presets/heuristics/android.ts +58 -0
  147. package/core/rules/presets/heuristics/browser.ts +58 -0
  148. package/core/rules/presets/heuristics/fsCallbacks.ts +9 -0
  149. package/core/rules/presets/heuristics/fsCallbacksFileOperationsRules.ts +400 -0
  150. package/core/rules/presets/heuristics/fsCallbacksMetadataRules.ts +418 -0
  151. package/core/rules/presets/heuristics/fsPromises.ts +9 -0
  152. package/core/rules/presets/heuristics/fsPromisesFileOperations.ts +184 -0
  153. package/core/rules/presets/heuristics/fsPromisesMetadataRules.ts +238 -0
  154. package/core/rules/presets/heuristics/fsSync.ts +13 -0
  155. package/core/rules/presets/heuristics/fsSyncAppendRules.ts +22 -0
  156. package/core/rules/presets/heuristics/fsSyncDescriptorRules.ts +328 -0
  157. package/core/rules/presets/heuristics/fsSyncFileOperationsRules.ts +382 -0
  158. package/core/rules/presets/heuristics/fsSyncPathRules.ts +4 -0
  159. package/core/rules/presets/heuristics/ios.ts +94 -0
  160. package/core/rules/presets/heuristics/process.ts +241 -0
  161. package/core/rules/presets/heuristics/security.ts +13 -0
  162. package/core/rules/presets/heuristics/securityCredentialsRules.ts +80 -0
  163. package/core/rules/presets/heuristics/securityCryptoRules.ts +61 -0
  164. package/core/rules/presets/heuristics/securityJwtRules.ts +61 -0
  165. package/core/rules/presets/heuristics/securityTlsRules.ts +42 -0
  166. package/core/rules/presets/heuristics/typescript.ts +220 -0
  167. package/core/rules/presets/heuristics/vm.ts +23 -0
  168. package/core/rules/presets/index.test.ts +32 -0
  169. package/core/rules/presets/index.ts +8 -0
  170. package/core/rules/presets/iosEnterpriseRuleSet.ts +204 -0
  171. package/core/rules/presets/iosNonNegotiableRuleSet.ts +76 -0
  172. package/core/rules/presets/rulePackVersions.test.ts +21 -0
  173. package/core/rules/presets/rulePackVersions.ts +11 -0
  174. package/core/utils/stableStringify.ts +18 -0
  175. package/docs/API_REFERENCE.md +233 -0
  176. package/docs/ARCHITECTURE.md +190 -0
  177. package/docs/ARCHITECTURE_DETAILED.md +165 -0
  178. package/docs/AST_HEURISTICS_REINTRODUCTION_PLAN.md +88 -0
  179. package/docs/BRANCH_PROTECTION_GUIDE.md +50 -0
  180. package/docs/CODE_STANDARDS.md +73 -0
  181. package/docs/CONFIGURATION.md +132 -0
  182. package/docs/CONTRIBUTING.md +92 -0
  183. package/docs/DEPENDENCIES.md +54 -0
  184. package/docs/HOW_IT_WORKS.md +155 -0
  185. package/docs/INSTALLATION.md +172 -0
  186. package/docs/MCP_AGENT_CONTEXT_CONSUMPTION.md +189 -0
  187. package/docs/MCP_EVIDENCE_CONTEXT_SERVER.md +242 -0
  188. package/docs/MCP_SERVERS.md +114 -0
  189. package/docs/README.md +85 -0
  190. package/docs/REFRACTOR_PROGRESS.md +155 -0
  191. package/docs/RELEASE_NOTES.md +175 -0
  192. package/docs/TESTING.md +101 -0
  193. package/docs/TODO.md +692 -0
  194. package/docs/USAGE.md +259 -0
  195. package/docs/evidence-v2.1.md +49 -0
  196. package/docs/images/README.md +20 -0
  197. package/docs/rule-packs/README.md +45 -0
  198. package/docs/rule-packs/android.md +21 -0
  199. package/docs/rule-packs/backend.md +24 -0
  200. package/docs/rule-packs/frontend.md +22 -0
  201. package/docs/rule-packs/heuristics.md +1304 -0
  202. package/docs/rule-packs/ios.md +22 -0
  203. package/docs/skills-repo-enforcement-migration.md +73 -0
  204. package/docs/validation/README.md +82 -0
  205. package/docs/validation/adapter-hook-runtime-local-report.md +45 -0
  206. package/docs/validation/adapter-hook-runtime-validation.md +82 -0
  207. package/docs/validation/adapter-real-session-report-template.md +63 -0
  208. package/docs/validation/consumer-ci-startup-failure-playbook.md +184 -0
  209. package/docs/validation/consumer-startup-escalation-handoff-latest.md +237 -0
  210. package/docs/validation/enterprise-consumer-isolation-policy.md +45 -0
  211. package/docs/validation/github-support-ticket-template-startup-failure.md +84 -0
  212. package/docs/validation/mock-consumer-integration-runbook.md +89 -0
  213. package/docs/validation/phase5-execution-closure.md +227 -0
  214. package/docs/validation/phase8-external-rollout-pack.md +168 -0
  215. package/docs/validation/phase8-post-billing-reactivation-runbook.md +133 -0
  216. package/docs/validation/skills-rollout-consumer-repositories.md +124 -0
  217. package/index.js +15 -0
  218. package/integrations/config/compileSkillsLock.ts +231 -0
  219. package/integrations/config/heuristics.ts +18 -0
  220. package/integrations/config/loadProjectRules.ts +43 -0
  221. package/integrations/config/projectRules.ts +6 -0
  222. package/integrations/config/projectRulesSchema.ts +85 -0
  223. package/integrations/config/skillsCompilerTemplates.ts +151 -0
  224. package/integrations/config/skillsLock.ts +248 -0
  225. package/integrations/config/skillsPolicy.ts +178 -0
  226. package/integrations/config/skillsRuleSet.ts +188 -0
  227. package/integrations/config/skillsSources.ts +88 -0
  228. package/integrations/evidence/buildEvidence.ts +350 -0
  229. package/integrations/evidence/generateEvidence.ts +14 -0
  230. package/integrations/evidence/humanIntent.ts +115 -0
  231. package/integrations/evidence/readEvidence.ts +47 -0
  232. package/integrations/evidence/schema.ts +97 -0
  233. package/integrations/evidence/writeEvidence.ts +201 -0
  234. package/integrations/gate/stagePolicies.ts +295 -0
  235. package/integrations/git/EvidenceService.ts +111 -0
  236. package/integrations/git/GitService.ts +35 -0
  237. package/integrations/git/baselineRuleSets.ts +58 -0
  238. package/integrations/git/ciAndroid.cli.ts +4 -0
  239. package/integrations/git/ciAndroid.ts +1 -0
  240. package/integrations/git/ciBackend.cli.ts +4 -0
  241. package/integrations/git/ciBackend.ts +1 -0
  242. package/integrations/git/ciFrontend.cli.ts +4 -0
  243. package/integrations/git/ciFrontend.ts +1 -0
  244. package/integrations/git/ciIOS.cli.ts +4 -0
  245. package/integrations/git/ciIOS.ts +1 -0
  246. package/integrations/git/evaluateStagedIOS.ts +127 -0
  247. package/integrations/git/getCommitRangeFacts.ts +28 -0
  248. package/integrations/git/gitDiffUtils.ts +90 -0
  249. package/integrations/git/index.ts +13 -0
  250. package/integrations/git/preCommitAndroid.cli.ts +4 -0
  251. package/integrations/git/preCommitAndroid.ts +1 -0
  252. package/integrations/git/preCommitBackend.cli.ts +4 -0
  253. package/integrations/git/preCommitBackend.ts +1 -0
  254. package/integrations/git/preCommitFrontend.cli.ts +4 -0
  255. package/integrations/git/preCommitFrontend.ts +1 -0
  256. package/integrations/git/preCommitIOS.cli.ts +4 -0
  257. package/integrations/git/preCommitIOS.ts +1 -0
  258. package/integrations/git/prePushAndroid.cli.ts +4 -0
  259. package/integrations/git/prePushAndroid.ts +1 -0
  260. package/integrations/git/prePushBackend.cli.ts +4 -0
  261. package/integrations/git/prePushBackend.ts +1 -0
  262. package/integrations/git/prePushFrontend.cli.ts +4 -0
  263. package/integrations/git/prePushFrontend.ts +1 -0
  264. package/integrations/git/prePushIOS.cli.ts +4 -0
  265. package/integrations/git/prePushIOS.ts +1 -0
  266. package/integrations/git/resolveGitRefs.ts +51 -0
  267. package/integrations/git/runCliCommand.ts +11 -0
  268. package/integrations/git/runPlatformGate.ts +89 -0
  269. package/integrations/git/runPlatformGateEvaluation.ts +82 -0
  270. package/integrations/git/runPlatformGateEvidence.ts +41 -0
  271. package/integrations/git/runPlatformGateFacts.ts +34 -0
  272. package/integrations/git/runPlatformGateOutput.ts +11 -0
  273. package/integrations/git/stageRunners.ts +40 -0
  274. package/integrations/lifecycle/artifacts.ts +26 -0
  275. package/integrations/lifecycle/cli.ts +180 -0
  276. package/integrations/lifecycle/constants.ts +13 -0
  277. package/integrations/lifecycle/consumerPackage.ts +48 -0
  278. package/integrations/lifecycle/doctor.ts +90 -0
  279. package/integrations/lifecycle/gitService.ts +63 -0
  280. package/integrations/lifecycle/hookBlock.ts +93 -0
  281. package/integrations/lifecycle/hookManager.ts +107 -0
  282. package/integrations/lifecycle/index.ts +6 -0
  283. package/integrations/lifecycle/install.ts +44 -0
  284. package/integrations/lifecycle/npmService.ts +21 -0
  285. package/integrations/lifecycle/packageInfo.ts +5 -0
  286. package/integrations/lifecycle/remove.ts +95 -0
  287. package/integrations/lifecycle/state.ts +41 -0
  288. package/integrations/lifecycle/status.ts +30 -0
  289. package/integrations/lifecycle/uninstall.ts +36 -0
  290. package/integrations/lifecycle/update.ts +77 -0
  291. package/integrations/mcp/evidenceContextServer.cli.ts +16 -0
  292. package/integrations/mcp/evidenceContextServer.ts +152 -0
  293. package/integrations/mcp/evidenceFacets.ts +3 -0
  294. package/integrations/mcp/evidenceFacetsBase.ts +94 -0
  295. package/integrations/mcp/evidenceFacetsSnapshot.ts +104 -0
  296. package/integrations/mcp/evidenceFacetsSuppressed.ts +3 -0
  297. package/integrations/mcp/evidenceFacetsSuppressedBase.ts +221 -0
  298. package/integrations/mcp/evidenceFacetsSuppressedRelations.ts +263 -0
  299. package/integrations/mcp/evidenceFacetsSuppressedShare.ts +2 -0
  300. package/integrations/mcp/evidenceFacetsSuppressedShareCore.ts +442 -0
  301. package/integrations/mcp/evidenceFacetsSuppressedShareTriage.ts +487 -0
  302. package/integrations/mcp/evidencePayloadCollections.ts +37 -0
  303. package/integrations/mcp/evidencePayloadCollectionsFindings.ts +64 -0
  304. package/integrations/mcp/evidencePayloadCollectionsLedger.ts +69 -0
  305. package/integrations/mcp/evidencePayloadCollectionsPaging.ts +38 -0
  306. package/integrations/mcp/evidencePayloadCollectionsPlatforms.ts +49 -0
  307. package/integrations/mcp/evidencePayloadCollectionsRulesets.ts +50 -0
  308. package/integrations/mcp/evidencePayloadCollectionsSorters.ts +62 -0
  309. package/integrations/mcp/evidencePayloadConfig.ts +79 -0
  310. package/integrations/mcp/evidencePayloadSummary.ts +144 -0
  311. package/integrations/mcp/evidencePayloadSummarySuppressed.ts +361 -0
  312. package/integrations/mcp/evidencePayloads.ts +8 -0
  313. package/integrations/mcp/index.ts +1 -0
  314. package/integrations/platform/detectAndroid.ts +25 -0
  315. package/integrations/platform/detectBackend.ts +22 -0
  316. package/integrations/platform/detectFrontend.ts +29 -0
  317. package/integrations/platform/detectPlatforms.ts +69 -0
  318. package/package.json +218 -0
  319. package/scripts/adapter-readiness-cli-lib.ts +64 -0
  320. package/scripts/adapter-readiness-contract.ts +46 -0
  321. package/scripts/adapter-readiness-lib.ts +10 -0
  322. package/scripts/adapter-readiness-markdown-lib.ts +41 -0
  323. package/scripts/adapter-readiness-markdown-next-actions-lib.ts +33 -0
  324. package/scripts/adapter-readiness-markdown-sections-lib.ts +78 -0
  325. package/scripts/adapter-readiness-parser-lib.ts +30 -0
  326. package/scripts/adapter-readiness-summary-lib.ts +62 -0
  327. package/scripts/adapter-real-session-analysis-evaluation-lib.ts +49 -0
  328. package/scripts/adapter-real-session-analysis-lib.ts +8 -0
  329. package/scripts/adapter-real-session-analysis-messages-lib.ts +58 -0
  330. package/scripts/adapter-real-session-analysis-signals-lib.ts +59 -0
  331. package/scripts/adapter-real-session-analysis-status-lib.ts +29 -0
  332. package/scripts/adapter-real-session-arg-values-lib.ts +47 -0
  333. package/scripts/adapter-real-session-args-lib.ts +46 -0
  334. package/scripts/adapter-real-session-audit-snapshot-lib.ts +70 -0
  335. package/scripts/adapter-real-session-context-lib.ts +7 -0
  336. package/scripts/adapter-real-session-contract.ts +54 -0
  337. package/scripts/adapter-real-session-fs-lib.ts +36 -0
  338. package/scripts/adapter-real-session-git-lib.ts +13 -0
  339. package/scripts/adapter-real-session-hook-config-lib.ts +24 -0
  340. package/scripts/adapter-real-session-markdown-core-sections-lib.ts +11 -0
  341. package/scripts/adapter-real-session-markdown-lib.ts +25 -0
  342. package/scripts/adapter-real-session-markdown-sections-context-lib.ts +56 -0
  343. package/scripts/adapter-real-session-markdown-sections-evaluation-lib.ts +71 -0
  344. package/scripts/adapter-real-session-markdown-sections-lib.ts +34 -0
  345. package/scripts/adapter-real-session-markdown-snippet-section-lib.ts +44 -0
  346. package/scripts/adapter-real-session-markdown-snippets-lib.ts +19 -0
  347. package/scripts/adapter-real-session-markdown-value-formatters-lib.ts +10 -0
  348. package/scripts/adapter-real-session-report-lib.ts +16 -0
  349. package/scripts/adapter-real-session-status-parser-lib.ts +42 -0
  350. package/scripts/adapter-session-status-args-lib.ts +46 -0
  351. package/scripts/adapter-session-status-audit-latest-lib.ts +22 -0
  352. package/scripts/adapter-session-status-audit-tail-entries-lib.ts +78 -0
  353. package/scripts/adapter-session-status-audit-tail-lib.ts +15 -0
  354. package/scripts/adapter-session-status-command-lib.ts +49 -0
  355. package/scripts/adapter-session-status-contract.ts +55 -0
  356. package/scripts/adapter-session-status-hook-log-filter-lib.ts +38 -0
  357. package/scripts/adapter-session-status-lib.ts +25 -0
  358. package/scripts/adapter-session-status-log-filter-lib.ts +3 -0
  359. package/scripts/adapter-session-status-log-utils-lib.ts +23 -0
  360. package/scripts/adapter-session-status-markdown-lib.ts +65 -0
  361. package/scripts/adapter-session-status-report-lib.ts +21 -0
  362. package/scripts/adapter-session-status-tail-readers-lib.ts +58 -0
  363. package/scripts/adapter-session-status-verdict-lib.ts +43 -0
  364. package/scripts/adapter-session-status-writes-log-filter-lib.ts +25 -0
  365. package/scripts/build-adapter-readiness.ts +51 -0
  366. package/scripts/build-adapter-real-session-report.ts +58 -0
  367. package/scripts/build-adapter-session-status.ts +42 -0
  368. package/scripts/build-consumer-startup-failure-support-bundle.ts +22 -0
  369. package/scripts/build-consumer-startup-triage-arg-flags-lib.ts +26 -0
  370. package/scripts/build-consumer-startup-triage-arg-values-lib.ts +45 -0
  371. package/scripts/build-consumer-startup-triage-args-lib.ts +59 -0
  372. package/scripts/build-consumer-startup-triage-contract.ts +25 -0
  373. package/scripts/build-consumer-startup-triage-runner-lib.ts +59 -0
  374. package/scripts/build-consumer-startup-triage.ts +58 -0
  375. package/scripts/build-consumer-startup-unblock-status.ts +34 -0
  376. package/scripts/build-consumer-support-ticket-draft.ts +32 -0
  377. package/scripts/build-mock-consumer-ab-report.ts +34 -0
  378. package/scripts/build-mock-consumer-startup-triage.ts +71 -0
  379. package/scripts/build-phase5-blockers-readiness.ts +69 -0
  380. package/scripts/build-phase5-execution-closure-status-output-lib.ts +22 -0
  381. package/scripts/build-phase5-execution-closure-status-runner-lib.ts +61 -0
  382. package/scripts/build-phase5-execution-closure-status.ts +35 -0
  383. package/scripts/build-phase5-external-handoff-arg-flags-lib.ts +21 -0
  384. package/scripts/build-phase5-external-handoff-arg-handlers-lib.ts +48 -0
  385. package/scripts/build-phase5-external-handoff-arg-values-lib.ts +59 -0
  386. package/scripts/build-phase5-external-handoff-args-lib.ts +25 -0
  387. package/scripts/build-phase5-external-handoff-contract.ts +39 -0
  388. package/scripts/build-phase5-external-handoff-inputs-lib.ts +86 -0
  389. package/scripts/build-phase5-external-handoff.ts +71 -0
  390. package/scripts/build-phase5-support-portal-payload.sh +67 -0
  391. package/scripts/build-phase8-ready-handoff-summary.sh +66 -0
  392. package/scripts/check-consumer-ci-auth.ts +64 -0
  393. package/scripts/check-package-manifest.ts +54 -0
  394. package/scripts/check-phase5-escalation-ready-to-submit.sh +74 -0
  395. package/scripts/check-phase5-latest-ready-chain.sh +44 -0
  396. package/scripts/check-phase8-loop-guard-coverage.sh +44 -0
  397. package/scripts/check-phase8-loop-guard.sh +81 -0
  398. package/scripts/check-refactor-progress-single-active.sh +25 -0
  399. package/scripts/check-validation-docs-hygiene.ts +42 -0
  400. package/scripts/clean-validation-artifacts-cli-lib.ts +38 -0
  401. package/scripts/clean-validation-artifacts-lib.ts +64 -0
  402. package/scripts/clean-validation-artifacts-output-lib.ts +21 -0
  403. package/scripts/clean-validation-artifacts.ts +42 -0
  404. package/scripts/close-phase5-escalation-submission.sh +81 -0
  405. package/scripts/collect-consumer-ci-artifacts-args-lib.ts +61 -0
  406. package/scripts/collect-consumer-ci-artifacts-contract.ts +54 -0
  407. package/scripts/collect-consumer-ci-artifacts-gh-command-lib.ts +17 -0
  408. package/scripts/collect-consumer-ci-artifacts-gh-fetch-lib.ts +45 -0
  409. package/scripts/collect-consumer-ci-artifacts-gh-lib.ts +5 -0
  410. package/scripts/collect-consumer-ci-artifacts-gh-run-fetch-lib.ts +56 -0
  411. package/scripts/collect-consumer-ci-artifacts-markdown-lib.ts +69 -0
  412. package/scripts/collect-consumer-ci-artifacts.ts +30 -0
  413. package/scripts/compile-skills-lock-args-lib.ts +53 -0
  414. package/scripts/compile-skills-lock-runner-lib.ts +48 -0
  415. package/scripts/compile-skills-lock.ts +9 -0
  416. package/scripts/consumer-ci-auth-check-contract.ts +39 -0
  417. package/scripts/consumer-ci-auth-check-gh-lib.ts +54 -0
  418. package/scripts/consumer-ci-auth-check-lib.ts +15 -0
  419. package/scripts/consumer-ci-auth-check-markdown-header-status-lib.ts +32 -0
  420. package/scripts/consumer-ci-auth-check-markdown-json-lib.ts +19 -0
  421. package/scripts/consumer-ci-auth-check-markdown-lib.ts +30 -0
  422. package/scripts/consumer-ci-auth-check-markdown-remediation-lib.ts +36 -0
  423. package/scripts/consumer-ci-auth-check-markdown-sections-lib.ts +6 -0
  424. package/scripts/consumer-ci-auth-check-parse-lib.ts +65 -0
  425. package/scripts/consumer-startup-failure-support-bundle-lib.ts +58 -0
  426. package/scripts/consumer-startup-triage-command-builders-core-lib.ts +5 -0
  427. package/scripts/consumer-startup-triage-command-builders-core-required-lib.ts +40 -0
  428. package/scripts/consumer-startup-triage-command-builders-lib.ts +10 -0
  429. package/scripts/consumer-startup-triage-command-builders-support-bundle-lib.ts +26 -0
  430. package/scripts/consumer-startup-triage-command-builders-support-followup-lib.ts +53 -0
  431. package/scripts/consumer-startup-triage-command-builders-support-lib.ts +5 -0
  432. package/scripts/consumer-startup-triage-command-builders-workflow-lint-lib.ts +45 -0
  433. package/scripts/consumer-startup-triage-commands-lib.ts +64 -0
  434. package/scripts/consumer-startup-triage-contract.ts +41 -0
  435. package/scripts/consumer-startup-triage-lib.ts +9 -0
  436. package/scripts/consumer-startup-triage-markdown-lib.ts +63 -0
  437. package/scripts/consumer-startup-triage-outputs-lib.ts +19 -0
  438. package/scripts/consumer-startup-unblock-arg-setters-lib.ts +34 -0
  439. package/scripts/consumer-startup-unblock-args-contract.ts +17 -0
  440. package/scripts/consumer-startup-unblock-args-defaults-lib.ts +17 -0
  441. package/scripts/consumer-startup-unblock-args-lib.ts +49 -0
  442. package/scripts/consumer-startup-unblock-auth-lib.ts +16 -0
  443. package/scripts/consumer-startup-unblock-blockers-lib.ts +65 -0
  444. package/scripts/consumer-startup-unblock-cli-lib.ts +10 -0
  445. package/scripts/consumer-startup-unblock-contract.ts +42 -0
  446. package/scripts/consumer-startup-unblock-input-lib.ts +17 -0
  447. package/scripts/consumer-startup-unblock-markdown-lib.ts +47 -0
  448. package/scripts/consumer-startup-unblock-markdown-next-actions-lib.ts +37 -0
  449. package/scripts/consumer-startup-unblock-markdown-sections-lib.ts +53 -0
  450. package/scripts/consumer-startup-unblock-parser-lib.ts +24 -0
  451. package/scripts/consumer-startup-unblock-runner-lib.ts +69 -0
  452. package/scripts/consumer-startup-unblock-status-lib.ts +7 -0
  453. package/scripts/consumer-startup-unblock-summary-lib.ts +54 -0
  454. package/scripts/consumer-support-bundle-args-defaults-lib.ts +11 -0
  455. package/scripts/consumer-support-bundle-args-values-lib.ts +27 -0
  456. package/scripts/consumer-support-bundle-contract.ts +61 -0
  457. package/scripts/consumer-support-bundle-gh-auth-repo-lib.ts +51 -0
  458. package/scripts/consumer-support-bundle-gh-command-lib.ts +63 -0
  459. package/scripts/consumer-support-bundle-gh-diagnostics-collector-lib.ts +66 -0
  460. package/scripts/consumer-support-bundle-gh-diagnostics-fetch-lib.ts +36 -0
  461. package/scripts/consumer-support-bundle-gh-lib.ts +8 -0
  462. package/scripts/consumer-support-bundle-gh-loaders-lib.ts +7 -0
  463. package/scripts/consumer-support-bundle-gh-workflow-runs-lib.ts +30 -0
  464. package/scripts/consumer-support-bundle-markdown-context-lib.ts +49 -0
  465. package/scripts/consumer-support-bundle-markdown-lib.ts +44 -0
  466. package/scripts/consumer-support-bundle-markdown-run-sections-append-lib.ts +47 -0
  467. package/scripts/consumer-support-bundle-markdown-sections-append-lib.ts +51 -0
  468. package/scripts/consumer-support-bundle-markdown-sections-core-lib.ts +67 -0
  469. package/scripts/consumer-support-bundle-markdown-sections-lib.ts +7 -0
  470. package/scripts/consumer-support-bundle-markdown-sections-run-diagnostics-lib.ts +34 -0
  471. package/scripts/consumer-support-bundle-markdown-sections-support-payload-lib.ts +60 -0
  472. package/scripts/consumer-support-bundle-markdown-top-sections-append-lib.ts +55 -0
  473. package/scripts/consumer-support-bundle-markdown-top-sections-lib.ts +51 -0
  474. package/scripts/consumer-support-bundle-runner-lib.ts +49 -0
  475. package/scripts/consumer-support-ticket-cli-arg-setters-lib.ts +30 -0
  476. package/scripts/consumer-support-ticket-cli-contract.ts +14 -0
  477. package/scripts/consumer-support-ticket-cli-defaults-lib.ts +14 -0
  478. package/scripts/consumer-support-ticket-cli-lib.ts +63 -0
  479. package/scripts/consumer-support-ticket-draft-diagnostics-sections-lib.ts +67 -0
  480. package/scripts/consumer-support-ticket-draft-lib.ts +36 -0
  481. package/scripts/consumer-support-ticket-draft-primary-sections-lib.ts +51 -0
  482. package/scripts/consumer-support-ticket-draft-sections-lib.ts +10 -0
  483. package/scripts/consumer-support-ticket-lib.ts +3 -0
  484. package/scripts/consumer-support-ticket-parser-lib.ts +72 -0
  485. package/scripts/consumer-support-ticket-runner-lib.ts +42 -0
  486. package/scripts/consumer-workflow-lint-args-lib.ts +56 -0
  487. package/scripts/consumer-workflow-lint-command-lib.ts +60 -0
  488. package/scripts/consumer-workflow-lint-contract.ts +14 -0
  489. package/scripts/consumer-workflow-lint-markdown-lib.ts +39 -0
  490. package/scripts/consumer-workflow-lint-runner-lib.ts +52 -0
  491. package/scripts/fill-adapter-external-ide-replay-closeout.sh +90 -0
  492. package/scripts/framework-menu-action-contract.ts +17 -0
  493. package/scripts/framework-menu-actions-diagnostics-adapter-lib.ts +31 -0
  494. package/scripts/framework-menu-actions-diagnostics-ci-lib.ts +40 -0
  495. package/scripts/framework-menu-actions-diagnostics-maintenance-lib.ts +22 -0
  496. package/scripts/framework-menu-actions-diagnostics-support-core-lib.ts +40 -0
  497. package/scripts/framework-menu-actions-diagnostics-support-lib.ts +15 -0
  498. package/scripts/framework-menu-actions-diagnostics-support-triage-lib.ts +28 -0
  499. package/scripts/framework-menu-actions-diagnostics.ts +19 -0
  500. package/scripts/framework-menu-actions-gates-ci-lib.ts +30 -0
  501. package/scripts/framework-menu-actions-gates-stage-lib.ts +32 -0
  502. package/scripts/framework-menu-actions-gates-tools-lib.ts +26 -0
  503. package/scripts/framework-menu-actions-gates.ts +17 -0
  504. package/scripts/framework-menu-actions-phase5-exec-lib.ts +32 -0
  505. package/scripts/framework-menu-actions-phase5-exit-lib.ts +16 -0
  506. package/scripts/framework-menu-actions-phase5-reports-lib.ts +49 -0
  507. package/scripts/framework-menu-actions-phase5.ts +17 -0
  508. package/scripts/framework-menu-actions.ts +22 -0
  509. package/scripts/framework-menu-builders-adapter.ts +29 -0
  510. package/scripts/framework-menu-builders-consumer-contract.ts +19 -0
  511. package/scripts/framework-menu-builders-consumer-mock-ab-lib.ts +22 -0
  512. package/scripts/framework-menu-builders-consumer-triage-lib.ts +31 -0
  513. package/scripts/framework-menu-builders-consumer.ts +6 -0
  514. package/scripts/framework-menu-builders-maintenance.ts +24 -0
  515. package/scripts/framework-menu-builders-phase5-blockers-lib.ts +16 -0
  516. package/scripts/framework-menu-builders-phase5-closure-lib.ts +46 -0
  517. package/scripts/framework-menu-builders-phase5-contract.ts +43 -0
  518. package/scripts/framework-menu-builders-phase5-handoff-lib.ts +38 -0
  519. package/scripts/framework-menu-builders-phase5-status-lib.ts +24 -0
  520. package/scripts/framework-menu-builders-phase5.ts +12 -0
  521. package/scripts/framework-menu-builders-shared-lib.ts +3 -0
  522. package/scripts/framework-menu-builders.ts +19 -0
  523. package/scripts/framework-menu-gate-lib.ts +53 -0
  524. package/scripts/framework-menu-prompt-types.ts +12 -0
  525. package/scripts/framework-menu-prompts-adapter.ts +50 -0
  526. package/scripts/framework-menu-prompts-consumer-ci-lib.ts +36 -0
  527. package/scripts/framework-menu-prompts-consumer-contract.ts +46 -0
  528. package/scripts/framework-menu-prompts-consumer-startup-triage-lib.ts +69 -0
  529. package/scripts/framework-menu-prompts-consumer-support-bundle-lib.ts +20 -0
  530. package/scripts/framework-menu-prompts-consumer-support-ticket-lib.ts +27 -0
  531. package/scripts/framework-menu-prompts-consumer-unblock-status-lib.ts +33 -0
  532. package/scripts/framework-menu-prompts-consumer-workflow-lint-lib.ts +27 -0
  533. package/scripts/framework-menu-prompts-consumer.ts +26 -0
  534. package/scripts/framework-menu-prompts-phase5-blockers-lib.ts +24 -0
  535. package/scripts/framework-menu-prompts-phase5-closure-lib.ts +17 -0
  536. package/scripts/framework-menu-prompts-phase5-closure-live-lib.ts +51 -0
  537. package/scripts/framework-menu-prompts-phase5-closure-mock-lib.ts +23 -0
  538. package/scripts/framework-menu-prompts-phase5-closure-shared-lib.ts +24 -0
  539. package/scripts/framework-menu-prompts-phase5-contract.ts +48 -0
  540. package/scripts/framework-menu-prompts-phase5-handoff-lib.ts +54 -0
  541. package/scripts/framework-menu-prompts-phase5-mock-ab-lib.ts +36 -0
  542. package/scripts/framework-menu-prompts-phase5-status-lib.ts +31 -0
  543. package/scripts/framework-menu-prompts-phase5.ts +16 -0
  544. package/scripts/framework-menu-prompts.ts +32 -0
  545. package/scripts/framework-menu-runner-common.ts +13 -0
  546. package/scripts/framework-menu-runner-constants.ts +3 -0
  547. package/scripts/framework-menu-runner-evidence-lib.ts +14 -0
  548. package/scripts/framework-menu-runner-git-lib.ts +13 -0
  549. package/scripts/framework-menu-runner-path-lib.ts +12 -0
  550. package/scripts/framework-menu-runner-process-lib.ts +27 -0
  551. package/scripts/framework-menu-runners-adapter-contract.ts +13 -0
  552. package/scripts/framework-menu-runners-adapter-readiness-lib.ts +20 -0
  553. package/scripts/framework-menu-runners-adapter-real-session-lib.ts +20 -0
  554. package/scripts/framework-menu-runners-adapter-session-lib.ts +19 -0
  555. package/scripts/framework-menu-runners-adapter.ts +9 -0
  556. package/scripts/framework-menu-runners-consumer-artifacts-lib.ts +11 -0
  557. package/scripts/framework-menu-runners-consumer-auth-lib.ts +11 -0
  558. package/scripts/framework-menu-runners-consumer-contract.ts +55 -0
  559. package/scripts/framework-menu-runners-consumer-exec-lib.ts +13 -0
  560. package/scripts/framework-menu-runners-consumer-mock-ab-lib.ts +24 -0
  561. package/scripts/framework-menu-runners-consumer-startup-triage-lib.ts +24 -0
  562. package/scripts/framework-menu-runners-consumer-support-bundle-lib.ts +11 -0
  563. package/scripts/framework-menu-runners-consumer-support-ticket-lib.ts +20 -0
  564. package/scripts/framework-menu-runners-consumer-unblock-lib.ts +22 -0
  565. package/scripts/framework-menu-runners-consumer-workflow-lib.ts +18 -0
  566. package/scripts/framework-menu-runners-consumer.ts +21 -0
  567. package/scripts/framework-menu-runners-phase5-blockers-lib.ts +18 -0
  568. package/scripts/framework-menu-runners-phase5-closure-lib.ts +25 -0
  569. package/scripts/framework-menu-runners-phase5-contract.ts +39 -0
  570. package/scripts/framework-menu-runners-phase5-exec-lib.ts +25 -0
  571. package/scripts/framework-menu-runners-phase5-handoff-lib.ts +25 -0
  572. package/scripts/framework-menu-runners-phase5-status-lib.ts +20 -0
  573. package/scripts/framework-menu-runners-phase5.ts +12 -0
  574. package/scripts/framework-menu-runners-validation-cleanup-lib.ts +31 -0
  575. package/scripts/framework-menu-runners-validation-docs-lib.ts +20 -0
  576. package/scripts/framework-menu-runners-validation-skills-lib.ts +11 -0
  577. package/scripts/framework-menu-runners-validation.ts +4 -0
  578. package/scripts/framework-menu-runners.ts +37 -0
  579. package/scripts/framework-menu-skills-lib.ts +26 -0
  580. package/scripts/framework-menu.cli.ts +3 -0
  581. package/scripts/framework-menu.ts +67 -0
  582. package/scripts/lint-consumer-workflows.ts +29 -0
  583. package/scripts/mark-phase5-escalation-submitted.sh +49 -0
  584. package/scripts/mark-phase8-followup-posted-now.sh +33 -0
  585. package/scripts/mark-phase8-followup-replied-now.sh +52 -0
  586. package/scripts/mark-phase8-support-followup-state.sh +89 -0
  587. package/scripts/mock-consumer-ab-blockers-lib.ts +36 -0
  588. package/scripts/mock-consumer-ab-cli-arg-setters-lib.ts +46 -0
  589. package/scripts/mock-consumer-ab-cli-defaults-lib.ts +19 -0
  590. package/scripts/mock-consumer-ab-cli-lib.ts +46 -0
  591. package/scripts/mock-consumer-ab-contract.ts +30 -0
  592. package/scripts/mock-consumer-ab-evidence-lib.ts +50 -0
  593. package/scripts/mock-consumer-ab-markdown-assertions-lib.ts +24 -0
  594. package/scripts/mock-consumer-ab-markdown-blockers-lib.ts +9 -0
  595. package/scripts/mock-consumer-ab-markdown-contract.ts +16 -0
  596. package/scripts/mock-consumer-ab-markdown-header-inputs-lib.ts +21 -0
  597. package/scripts/mock-consumer-ab-markdown-lib.ts +24 -0
  598. package/scripts/mock-consumer-ab-markdown-next-actions-lib.ts +22 -0
  599. package/scripts/mock-consumer-ab-markdown-sections-lib.ts +21 -0
  600. package/scripts/mock-consumer-ab-report-lib.ts +12 -0
  601. package/scripts/mock-consumer-ab-runner-lib.ts +51 -0
  602. package/scripts/mock-consumer-smoke-contract.ts +14 -0
  603. package/scripts/mock-consumer-smoke-lib.ts +3 -0
  604. package/scripts/mock-consumer-smoke-summary-lib.ts +59 -0
  605. package/scripts/mock-consumer-smoke-verdict-lib.ts +27 -0
  606. package/scripts/mock-consumer-startup-triage-arg-flags-lib.ts +13 -0
  607. package/scripts/mock-consumer-startup-triage-arg-values-lib.ts +35 -0
  608. package/scripts/mock-consumer-startup-triage-cli-contract.ts +7 -0
  609. package/scripts/mock-consumer-startup-triage-cli-lib.ts +56 -0
  610. package/scripts/mock-consumer-startup-triage-lib.ts +2 -0
  611. package/scripts/mock-consumer-startup-triage-markdown-lib.ts +57 -0
  612. package/scripts/mock-consumer-startup-unblock-markdown-lib.ts +38 -0
  613. package/scripts/package-install-smoke-command-lib.ts +67 -0
  614. package/scripts/package-install-smoke-consumer-git-lib.ts +10 -0
  615. package/scripts/package-install-smoke-consumer-git-payload-lib.ts +45 -0
  616. package/scripts/package-install-smoke-consumer-git-repo-lib.ts +49 -0
  617. package/scripts/package-install-smoke-consumer-npm-lib.ts +47 -0
  618. package/scripts/package-install-smoke-consumer-repo-setup-lib.ts +31 -0
  619. package/scripts/package-install-smoke-contract.ts +6 -0
  620. package/scripts/package-install-smoke-execution-lib.ts +73 -0
  621. package/scripts/package-install-smoke-execution-steps-lib.ts +46 -0
  622. package/scripts/package-install-smoke-execution-summary-lib.ts +51 -0
  623. package/scripts/package-install-smoke-file-lib.ts +33 -0
  624. package/scripts/package-install-smoke-fixtures-content-lib.ts +57 -0
  625. package/scripts/package-install-smoke-fixtures-lib.ts +41 -0
  626. package/scripts/package-install-smoke-fixtures-write-lib.ts +14 -0
  627. package/scripts/package-install-smoke-gate-lib.ts +64 -0
  628. package/scripts/package-install-smoke-lib.ts +3 -0
  629. package/scripts/package-install-smoke-lifecycle-lib.ts +91 -0
  630. package/scripts/package-install-smoke-mode-lib.ts +31 -0
  631. package/scripts/package-install-smoke-repo-setup-lib.ts +2 -0
  632. package/scripts/package-install-smoke-runner-common.ts +12 -0
  633. package/scripts/package-install-smoke-tarball-lib.ts +34 -0
  634. package/scripts/package-install-smoke-workspace-contract.ts +11 -0
  635. package/scripts/package-install-smoke-workspace-factory-lib.ts +38 -0
  636. package/scripts/package-install-smoke-workspace-lib.ts +7 -0
  637. package/scripts/package-install-smoke-workspace-report-lib.ts +44 -0
  638. package/scripts/package-install-smoke.ts +7 -0
  639. package/scripts/package-manifest-lib.ts +44 -0
  640. package/scripts/phase5-blockers-contract.ts +36 -0
  641. package/scripts/phase5-blockers-detected-blockers-lib.ts +35 -0
  642. package/scripts/phase5-blockers-markdown-header-inputs-signals-lib.ts +48 -0
  643. package/scripts/phase5-blockers-markdown-lib.ts +51 -0
  644. package/scripts/phase5-blockers-markdown-list-utils-lib.ts +13 -0
  645. package/scripts/phase5-blockers-markdown-next-actions-blocked-lib.ts +46 -0
  646. package/scripts/phase5-blockers-markdown-next-actions-lib.ts +29 -0
  647. package/scripts/phase5-blockers-markdown-next-actions-ready-lib.ts +13 -0
  648. package/scripts/phase5-blockers-markdown-sections-lib.ts +7 -0
  649. package/scripts/phase5-blockers-markdown-static-sections-lib.ts +26 -0
  650. package/scripts/phase5-blockers-missing-inputs-lib.ts +16 -0
  651. package/scripts/phase5-blockers-parser-adapter-lib.ts +44 -0
  652. package/scripts/phase5-blockers-parser-consumer-lib.ts +32 -0
  653. package/scripts/phase5-blockers-parser-lib.ts +2 -0
  654. package/scripts/phase5-blockers-readiness-arg-flags-lib.ts +13 -0
  655. package/scripts/phase5-blockers-readiness-arg-values-lib.ts +27 -0
  656. package/scripts/phase5-blockers-readiness-cli-contract.ts +6 -0
  657. package/scripts/phase5-blockers-readiness-cli-lib.ts +55 -0
  658. package/scripts/phase5-blockers-readiness-input-lib.ts +17 -0
  659. package/scripts/phase5-blockers-readiness-lib.ts +8 -0
  660. package/scripts/phase5-blockers-summary-lib.ts +48 -0
  661. package/scripts/phase5-execution-closure-commands-lib.ts +32 -0
  662. package/scripts/phase5-execution-closure-lib.ts +2 -0
  663. package/scripts/phase5-execution-closure-outputs-lib.ts +25 -0
  664. package/scripts/phase5-execution-closure-plan-adapter-commands-lib.ts +41 -0
  665. package/scripts/phase5-execution-closure-plan-adapter-lib.ts +25 -0
  666. package/scripts/phase5-execution-closure-plan-consumer-lib.ts +5 -0
  667. package/scripts/phase5-execution-closure-plan-consumer-preflight-lib.ts +58 -0
  668. package/scripts/phase5-execution-closure-plan-consumer-triage-lib.ts +62 -0
  669. package/scripts/phase5-execution-closure-plan-contract.ts +42 -0
  670. package/scripts/phase5-execution-closure-plan-lib.ts +7 -0
  671. package/scripts/phase5-execution-closure-plan-phase5-args-lib.ts +52 -0
  672. package/scripts/phase5-execution-closure-plan-phase5-lib.ts +37 -0
  673. package/scripts/phase5-execution-closure-plan-validation-lib.ts +15 -0
  674. package/scripts/phase5-execution-closure-report-contract.ts +22 -0
  675. package/scripts/phase5-execution-closure-report-executions-lib.ts +35 -0
  676. package/scripts/phase5-execution-closure-report-header-lib.ts +38 -0
  677. package/scripts/phase5-execution-closure-report-lib.ts +31 -0
  678. package/scripts/phase5-execution-closure-report-next-actions-lib.ts +19 -0
  679. package/scripts/phase5-execution-closure-report-sections-lib.ts +51 -0
  680. package/scripts/phase5-execution-closure-runner-arg-flags-lib.ts +32 -0
  681. package/scripts/phase5-execution-closure-runner-arg-handlers-lib.ts +33 -0
  682. package/scripts/phase5-execution-closure-runner-arg-value-handlers-lib.ts +62 -0
  683. package/scripts/phase5-execution-closure-runner-arg-values-lib.ts +39 -0
  684. package/scripts/phase5-execution-closure-runner-contract.ts +31 -0
  685. package/scripts/phase5-execution-closure-runner-exec-command-lib.ts +20 -0
  686. package/scripts/phase5-execution-closure-runner-exec-error-lib.ts +32 -0
  687. package/scripts/phase5-execution-closure-runner-exec-lib.ts +35 -0
  688. package/scripts/phase5-execution-closure-runner-lib.ts +8 -0
  689. package/scripts/phase5-execution-closure-runner-mappers-lib.ts +30 -0
  690. package/scripts/phase5-execution-closure-runner-options-normalizer-lib.ts +19 -0
  691. package/scripts/phase5-execution-closure-runner-parse-lib.ts +23 -0
  692. package/scripts/phase5-execution-closure-runner-plan-lib.ts +14 -0
  693. package/scripts/phase5-execution-closure-runner-report-writer-lib.ts +12 -0
  694. package/scripts/phase5-execution-closure-status-arg-flags-lib.ts +13 -0
  695. package/scripts/phase5-execution-closure-status-arg-values-lib.ts +35 -0
  696. package/scripts/phase5-execution-closure-status-blockers-lib.ts +47 -0
  697. package/scripts/phase5-execution-closure-status-cli-contract.ts +24 -0
  698. package/scripts/phase5-execution-closure-status-cli-input-lib.ts +17 -0
  699. package/scripts/phase5-execution-closure-status-cli-lib.ts +10 -0
  700. package/scripts/phase5-execution-closure-status-cli-parse-lib.ts +59 -0
  701. package/scripts/phase5-execution-closure-status-contract.ts +48 -0
  702. package/scripts/phase5-execution-closure-status-lib.ts +8 -0
  703. package/scripts/phase5-execution-closure-status-markdown-lib.ts +22 -0
  704. package/scripts/phase5-execution-closure-status-markdown-list-lib.ts +16 -0
  705. package/scripts/phase5-execution-closure-status-markdown-next-actions-lib.ts +24 -0
  706. package/scripts/phase5-execution-closure-status-markdown-sections-lib.ts +7 -0
  707. package/scripts/phase5-execution-closure-status-markdown-static-sections-lib.ts +58 -0
  708. package/scripts/phase5-execution-closure-status-missing-inputs-lib.ts +19 -0
  709. package/scripts/phase5-execution-closure-status-parser-lib.ts +4 -0
  710. package/scripts/phase5-execution-closure-status-summary-helpers-lib.ts +6 -0
  711. package/scripts/phase5-execution-closure-status-summary-lib.ts +34 -0
  712. package/scripts/phase5-execution-closure-status-verdict-lib.ts +11 -0
  713. package/scripts/phase5-external-handoff-contract.ts +51 -0
  714. package/scripts/phase5-external-handoff-inputs-artifacts-lib.ts +45 -0
  715. package/scripts/phase5-external-handoff-lib.ts +3 -0
  716. package/scripts/phase5-external-handoff-markdown-core-sections-lib.ts +70 -0
  717. package/scripts/phase5-external-handoff-markdown-header-lib.ts +15 -0
  718. package/scripts/phase5-external-handoff-markdown-lib.ts +44 -0
  719. package/scripts/phase5-external-handoff-markdown-list-lib.ts +16 -0
  720. package/scripts/phase5-external-handoff-markdown-list-sections-lib.ts +54 -0
  721. package/scripts/phase5-external-handoff-markdown-next-actions-lib.ts +27 -0
  722. package/scripts/phase5-external-handoff-markdown-sections-append-lib.ts +69 -0
  723. package/scripts/phase5-external-handoff-markdown-sections-lib.ts +12 -0
  724. package/scripts/phase5-external-handoff-summary-helpers-lib.ts +9 -0
  725. package/scripts/phase5-external-handoff-summary-lib.ts +46 -0
  726. package/scripts/phase5-external-handoff-verdict-evaluators-lib.ts +67 -0
  727. package/scripts/prepare-adapter-external-ide-replay-closeout-auto.sh +100 -0
  728. package/scripts/prepare-phase5-escalation-submission.sh +21 -0
  729. package/scripts/refresh-phase5-latest-escalation.sh +94 -0
  730. package/scripts/run-phase5-execution-closure.ts +58 -0
  731. package/scripts/run-phase5-post-support-refresh.sh +25 -0
  732. package/scripts/run-phase8-after-billing-reactivation.sh +31 -0
  733. package/scripts/run-phase8-autopilot.sh +42 -0
  734. package/scripts/run-phase8-close-ready.sh +38 -0
  735. package/scripts/run-phase8-doctor.sh +61 -0
  736. package/scripts/run-phase8-next-step.sh +39 -0
  737. package/scripts/run-phase8-status-pack.sh +35 -0
  738. package/scripts/run-phase8-tick.sh +35 -0
  739. package/scripts/sync-codex-skills.sh +40 -0
  740. package/scripts/sync-phase5-latest-docs.sh +119 -0
  741. package/scripts/validation-docs-hygiene-lib.ts +46 -0
  742. package/skills.lock.json +178 -0
  743. package/skills.sources.json +33 -0
  744. package/tsconfig.json +39 -0
@@ -0,0 +1,168 @@
1
+ # Phase 8 External Rollout Pack
2
+
3
+ ## Purpose
4
+
5
+ Provide a single operational package to close external rollout blockers with deterministic artifacts and explicit handoff evidence.
6
+
7
+ This runbook is read-only with respect to framework behavior. It does not change core gate logic.
8
+
9
+ ## Preconditions
10
+
11
+ - Repository branch is up to date.
12
+ - Consumer repository access is confirmed (`repo` + `actions:read` scopes).
13
+ - Existing deterministic validation commands are available in this repository.
14
+
15
+ ## One-Shot Execution
16
+
17
+ Run the orchestration command:
18
+
19
+ ```bash
20
+ npm run validation:phase5-execution-closure -- \
21
+ --repo <owner>/<repo> \
22
+ --out-dir .audit-reports/phase5 \
23
+ --skip-workflow-lint
24
+ ```
25
+
26
+ Strict mode (adapter readiness required):
27
+
28
+ ```bash
29
+ npm run validation:phase5-execution-closure -- \
30
+ --repo <owner>/<repo> \
31
+ --out-dir .audit-reports/phase5 \
32
+ --repo-path /absolute/path/to/consumer-repo \
33
+ --actionlint-bin /tmp/actionlint-bin/actionlint \
34
+ --require-adapter-readiness
35
+ ```
36
+
37
+ ## Artifact Contract (Required)
38
+
39
+ The rollout is considered externally handoff-ready only when all artifacts exist and meet the required verdict.
40
+
41
+ | Artifact | Path | Required verdict |
42
+ | --- | --- | --- |
43
+ | Blockers readiness | `.audit-reports/phase5/phase5-blockers-readiness.md` | `READY` |
44
+ | Closure status | `.audit-reports/phase5/phase5-execution-closure-status.md` | `READY` |
45
+ | External handoff | `.audit-reports/phase5/phase5-external-handoff.md` | `READY` |
46
+ | Orchestration run report | `.audit-reports/phase5/phase5-execution-closure-run-report.md` | Informational |
47
+
48
+ Optional but recommended:
49
+
50
+ | Artifact | Path | Required verdict |
51
+ | --- | --- | --- |
52
+ | Adapter readiness | `.audit-reports/adapter/adapter-readiness.md` | `READY` |
53
+ | Adapter real-session report | `.audit-reports/adapter/adapter-real-session-report.md` | Informational |
54
+ | Mock consumer A/B report | `.audit-reports/phase5/mock-consumer-ab-report.md` | `READY` |
55
+
56
+ ## External Runtime Incident Gate
57
+
58
+ If external pre/post tool runtime still shows `node: command not found`:
59
+
60
+ 1. Execute `docs/validation/adapter-hook-runtime-validation.md`.
61
+ 2. Regenerate:
62
+ - `.audit-reports/adapter/adapter-session-status.md`
63
+ - `.audit-reports/adapter/adapter-real-session-report.md`
64
+ - `.audit-reports/adapter/adapter-readiness.md`
65
+ 3. Re-run Phase 5 execution closure command.
66
+
67
+ ## Handoff Template
68
+
69
+ Use the following template as final rollout note:
70
+
71
+ ```md
72
+ # Phase 8 External Rollout Handoff
73
+
74
+ - Date: <YYYY-MM-DD>
75
+ - Operator: <name>
76
+ - Consumer repo: <owner/repo>
77
+ - Branch/ref: <branch or sha>
78
+
79
+ ## Verification
80
+
81
+ - [ ] phase5-blockers-readiness => READY
82
+ - [ ] phase5-execution-closure-status => READY
83
+ - [ ] phase5-external-handoff => READY
84
+ - [ ] artifact URLs attached
85
+
86
+ ## Artifact URLs
87
+
88
+ 1. <url>
89
+ 2. <url>
90
+ 3. <url>
91
+
92
+ ## Notes
93
+
94
+ - <incident updates, if any>
95
+ ```
96
+
97
+ ## Exit Criteria
98
+
99
+ - All required artifact contract entries exist with required verdicts.
100
+ - Handoff template is filled and shared with artifact URLs.
101
+ - `docs/TODO.md` external rollout blocker items are updated.
102
+
103
+ ## Current Live Snapshot (2026-02-11)
104
+
105
+ Latest regenerated external evidence (`.audit-reports/phase5-latest/*`) remains blocked:
106
+
107
+ - `phase5-blockers-readiness.md`: `READY`
108
+ - `phase5-execution-closure-status.md`: `BLOCKED`
109
+ - `phase5-external-handoff.md`: `BLOCKED`
110
+ - `consumer-startup-unblock-status.md`: `BLOCKED`
111
+ - `consumer-startup-failure-support-bundle.md` signals:
112
+ - `startup_failure_runs: 0`
113
+ - `startup_stalled_runs: 8`
114
+ - `oldest_queued_run_age_minutes: 32`
115
+ - queued runs still show `jobs.total_count: 0` and `artifacts.total_count: 0`
116
+ - cancel attempts on queued runs return `HTTP 500`
117
+ - latest cancel request id sample: `86BD:50C44:E9BB08D:D8B86F4:698C4FC9`
118
+
119
+ Latest controlled probe run URL:
120
+
121
+ - `https://github.com/SwiftEnProfundidad/pumuki-actions-healthcheck-temp/actions/runs/21944339604`
122
+
123
+ ## Escalation Refresh Sequence (Phase5 Latest)
124
+
125
+ Use this sequence to refresh the latest escalation evidence before opening/continuing a support case:
126
+
127
+ ```bash
128
+ # one-shot helper (probe + closure + handoff + bundle checksum)
129
+ npm run validation:phase5-latest:refresh -- \
130
+ SwiftEnProfundidad/pumuki-actions-healthcheck-temp \
131
+ 8 \
132
+ .audit-reports/phase5-latest \
133
+ .audit-reports/phase5/mock-consumer-ab-report.md
134
+ ```
135
+
136
+ Equivalent explicit steps:
137
+
138
+ ```bash
139
+ # 1) Trigger a controlled probe run (consumer private repo)
140
+ gh workflow run health.yml --repo <owner>/<repo>
141
+
142
+ # 2) Recompute phase5 latest closure chain (consumer side only)
143
+ npx --yes tsx@4.21.0 scripts/run-phase5-execution-closure.ts \
144
+ --repo <owner>/<repo> \
145
+ --limit 5 \
146
+ --out-dir .audit-reports/phase5-latest \
147
+ --skip-adapter \
148
+ --skip-workflow-lint
149
+
150
+ # 3) Regenerate external handoff with explicit run URLs
151
+ npx --yes tsx@4.21.0 scripts/build-phase5-external-handoff.ts \
152
+ --repo <owner>/<repo> \
153
+ --phase5-status-report .audit-reports/phase5-latest/phase5-execution-closure-status.md \
154
+ --phase5-blockers-report .audit-reports/phase5-latest/phase5-blockers-readiness.md \
155
+ --consumer-unblock-report .audit-reports/phase5-latest/consumer-startup-unblock-status.md \
156
+ --mock-ab-report .audit-reports/phase5/mock-consumer-ab-report.md \
157
+ --run-report .audit-reports/phase5-latest/phase5-execution-closure-run-report.md \
158
+ --artifact-url <run_url_1> \
159
+ --artifact-url <run_url_2> \
160
+ --out .audit-reports/phase5-latest/phase5-external-handoff.md
161
+ ```
162
+
163
+ ## Related References
164
+
165
+ - `docs/validation/phase5-execution-closure.md`
166
+ - `docs/validation/consumer-ci-startup-failure-playbook.md`
167
+ - `docs/validation/adapter-hook-runtime-validation.md`
168
+ - `docs/REFRACTOR_PROGRESS.md`
@@ -0,0 +1,133 @@
1
+ # Phase 8 Post-Billing Reactivation Runbook
2
+
3
+ ## Purpose
4
+
5
+ Resume Phase 8 closure deterministically after billing is reactivated in the consumer GitHub account.
6
+
7
+ This runbook does not change framework logic; it only executes existing validation/orchestration commands.
8
+
9
+ ## Preconditions
10
+
11
+ - Billing for GitHub Actions is reactivated/healthy in the consumer account.
12
+ - Repository is on `enterprise-refactor` with latest changes.
13
+ - `gh auth status` is healthy for the operator account.
14
+
15
+ ## One-Shot Resume (Preferred)
16
+
17
+ ```bash
18
+ npm run validation:phase8:resume-after-billing -- \
19
+ SwiftEnProfundidad/pumuki-actions-healthcheck-temp \
20
+ 8 \
21
+ .audit-reports/phase5-latest \
22
+ .audit-reports/phase5/mock-consumer-ab-report.md
23
+ ```
24
+
25
+ Expected outcome:
26
+
27
+ - Exit code `0`
28
+ - `phase5-blockers-readiness`: `READY`
29
+ - `phase5-execution-closure-status`: `READY`
30
+ - `phase5-external-handoff`: `READY`
31
+ - `consumer-startup-unblock-status`: `READY`
32
+
33
+ ## Operator Quick Block (Copy/Paste)
34
+
35
+ Use this exact sequence right after billing is reactivated:
36
+
37
+ ```bash
38
+ npm run validation:phase8:resume-after-billing -- \
39
+ SwiftEnProfundidad/pumuki-actions-healthcheck-temp \
40
+ 8 \
41
+ .audit-reports/phase5-latest \
42
+ .audit-reports/phase5/mock-consumer-ab-report.md \
43
+ && npm run validation:phase5-latest:ready-check
44
+ ```
45
+
46
+ Interpretation:
47
+
48
+ - exit code `0`: Phase 8 chain is `READY` and you can continue with `P8-4`.
49
+ - exit code `1`: still blocked; follow `If Still Blocked`.
50
+
51
+ ## Deterministic Verification
52
+
53
+ Run the explicit gate check:
54
+
55
+ ```bash
56
+ npm run validation:phase5-latest:ready-check
57
+ ```
58
+
59
+ Expected:
60
+
61
+ - Exit code `0`
62
+ - No blocker report in `BLOCKED` state.
63
+
64
+ Optional status helper (prints the next deterministic command):
65
+
66
+ ```bash
67
+ npm run validation:phase8:next-step -- \
68
+ .audit-reports/phase5-latest \
69
+ SwiftEnProfundidad/pumuki-actions-healthcheck-temp \
70
+ 8 \
71
+ .audit-reports/phase5/mock-consumer-ab-report.md
72
+ ```
73
+
74
+ Optional diagnostics helper (signals + next command in one output):
75
+
76
+ ```bash
77
+ npm run validation:phase8:doctor -- \
78
+ .audit-reports/phase5-latest \
79
+ SwiftEnProfundidad/pumuki-actions-healthcheck-temp \
80
+ 8 \
81
+ .audit-reports/phase5/mock-consumer-ab-report.md
82
+ ```
83
+
84
+ Optional autopilot helper (doctor + conditional close-ready):
85
+
86
+ ```bash
87
+ npm run validation:phase8:autopilot -- \
88
+ .audit-reports/phase5-latest \
89
+ SwiftEnProfundidad/pumuki-actions-healthcheck-temp \
90
+ 8 \
91
+ .audit-reports/phase5/mock-consumer-ab-report.md
92
+ ```
93
+
94
+ Optional status pack helper (progress guardrail + doctor):
95
+
96
+ ```bash
97
+ npm run validation:phase8:status-pack -- \
98
+ .audit-reports/phase5-latest \
99
+ SwiftEnProfundidad/pumuki-actions-healthcheck-temp \
100
+ 8 \
101
+ .audit-reports/phase5/mock-consumer-ab-report.md
102
+ ```
103
+
104
+ Optional tick helper (refresh + status-pack in one command):
105
+
106
+ ```bash
107
+ npm run validation:phase8:tick -- \
108
+ SwiftEnProfundidad/pumuki-actions-healthcheck-temp \
109
+ 8 \
110
+ .audit-reports/phase5-latest \
111
+ .audit-reports/phase5/mock-consumer-ab-report.md
112
+ ```
113
+
114
+ ## If Still Blocked
115
+
116
+ 1. Refresh latest evidence:
117
+ - `npm run validation:phase5-latest:refresh -- SwiftEnProfundidad/pumuki-actions-healthcheck-temp 8 .audit-reports/phase5-latest .audit-reports/phase5/mock-consumer-ab-report.md`
118
+ 2. Confirm queued runs still show stalled signal (`jobs=0`, `artifacts=0`) or any new failure mode.
119
+ 3. Append latest run URLs and new counters in:
120
+ - `docs/validation/consumer-startup-escalation-handoff-latest.md`
121
+ 4. Re-open escalation cycle only if needed.
122
+
123
+ ## Phase 8 Closure
124
+
125
+ When all required reports are `READY`:
126
+
127
+ 1. Mark `P8-3` as done in `docs/REFRACTOR_PROGRESS.md`.
128
+ 2. Mark `P8-4` as in progress.
129
+ 3. Generate final ready-handoff summary/checklist:
130
+ - `npm run validation:phase8:ready-handoff -- .audit-reports/phase5-latest`
131
+ 4. Generate close-ready package (summary + READY reports):
132
+ - `npm run validation:phase8:close-ready -- .audit-reports/phase5-latest`
133
+ 5. Regenerate final handoff package and publish URLs.
@@ -0,0 +1,124 @@
1
+ # Skills Phase 5 Rollout Validation (Consumer Repositories)
2
+
3
+ ## Objective
4
+
5
+ Validate that repository-enforced skills (`skills.lock.json` + `skills.policy.json`) behave deterministically across `PRE_COMMIT`, `PRE_PUSH`, and `CI` in real consumer repositories.
6
+
7
+ ## Scope
8
+
9
+ - Framework line: `enterprise-refactor`
10
+ - Evidence contract: `.ai_evidence.json` with `version: "2.1"`
11
+ - Target platforms in consumer repos:
12
+ - iOS (`.swift`)
13
+ - Backend (`apps/backend/**/*.ts`)
14
+ - Frontend (`apps/frontend/**/*.{ts,tsx,js,jsx}`)
15
+ - Android (`.kt`, `.kts`)
16
+
17
+ ## Preconditions
18
+
19
+ 1. Consumer repository is pinned to a framework revision that includes:
20
+ - stage runners (`PRE_COMMIT`, `PRE_PUSH`, `CI`)
21
+ - deterministic evidence v2.1
22
+ - skills lock/policy integration
23
+ 2. `skills.lock.json`, `skills.policy.json`, and `skills.sources.json` are committed.
24
+ 3. Local runtime and CI use the same Node major version.
25
+ 4. Baseline checks are green:
26
+ - `npm ci`
27
+ - `npm run skills:lock:check`
28
+ - `npm run test:deterministic`
29
+
30
+ ## Validation Matrix
31
+
32
+ Use this table per consumer repository and append execution links/artifacts.
33
+
34
+ | Consumer Repo | Stage | Command | Expected Gate Behavior | Evidence Checks |
35
+ | --- | --- | --- | --- | --- |
36
+ | iOS consumer | PRE_COMMIT | `npx tsx integrations/git/preCommitIOS.cli.ts` | Blocks on `CRITICAL`, warns on `ERROR` | `snapshot.stage=PRE_COMMIT`, `version=2.1`, skills ruleset trace present |
37
+ | iOS consumer | PRE_PUSH | `npx tsx integrations/git/prePushIOS.cli.ts` | Blocks on `ERROR`, warns on `WARN` | `snapshot.stage=PRE_PUSH`, range scope reflected by findings |
38
+ | iOS consumer | CI | `npx tsx integrations/git/ciIOS.cli.ts` | Blocks on `ERROR`, warns on `WARN` | `snapshot.stage=CI`, deterministic rerun unchanged |
39
+ | Backend consumer | PRE_COMMIT | `npx tsx integrations/git/preCommitBackend.cli.ts` | Blocks on `CRITICAL`, warns on `ERROR` | `platforms.backend.detected=true` |
40
+ | Backend consumer | PRE_PUSH | `npx tsx integrations/git/prePushBackend.cli.ts` | Blocks on `ERROR`, warns on `WARN` | `snapshot.stage=PRE_PUSH` |
41
+ | Backend consumer | CI | `npx tsx integrations/git/ciBackend.cli.ts` | Blocks on `ERROR`, warns on `WARN` | CI artifact contains `.ai_evidence.json` |
42
+ | Frontend consumer | PRE_COMMIT | `npx tsx integrations/git/preCommitFrontend.cli.ts` | Blocks on `CRITICAL`, warns on `ERROR` | `platforms.frontend.detected=true` |
43
+ | Frontend consumer | PRE_PUSH | `npx tsx integrations/git/prePushFrontend.cli.ts` | Blocks on `ERROR`, warns on `WARN` | `snapshot.stage=PRE_PUSH` |
44
+ | Frontend consumer | CI | `npx tsx integrations/git/ciFrontend.cli.ts` | Blocks on `ERROR`, warns on `WARN` | CI artifact contains `.ai_evidence.json` |
45
+ | Android consumer | PRE_COMMIT | `npx tsx integrations/git/preCommitAndroid.cli.ts` | Blocks on `CRITICAL`, warns on `ERROR` | `platforms.android.detected=true` |
46
+ | Android consumer | PRE_PUSH | `npx tsx integrations/git/prePushAndroid.cli.ts` | Blocks on `ERROR`, warns on `WARN` | `snapshot.stage=PRE_PUSH` |
47
+ | Android consumer | CI | `npx tsx integrations/git/ciAndroid.cli.ts` | Blocks on `ERROR`, warns on `WARN` | CI artifact contains `.ai_evidence.json` |
48
+
49
+ ## Evidence Assertions
50
+
51
+ Validate each run with deterministic checks:
52
+
53
+ ```bash
54
+ jq -r '.version' .ai_evidence.json
55
+ jq -r '.snapshot.stage' .ai_evidence.json
56
+ jq -r '.snapshot.outcome' .ai_evidence.json
57
+ jq -r '.rulesets[]?.bundle' .ai_evidence.json
58
+ jq -r '.platforms | keys[]' .ai_evidence.json
59
+ ```
60
+
61
+ Expected:
62
+
63
+ - version equals `2.1`
64
+ - stage equals executed stage
65
+ - `rulesets[]` includes active baseline/project/skills bundles
66
+ - platform keys match detected facts
67
+
68
+ ## Determinism Check
69
+
70
+ Run the same stage twice without code changes:
71
+
72
+ 1. Execute stage command.
73
+ 2. Save `sha256` of `.ai_evidence.json` (raw).
74
+ 3. Execute stage command again.
75
+ 4. Compare normalized payloads with `timestamp` removed.
76
+
77
+ Why normalized compare:
78
+
79
+ - `timestamp` is expected to change between executions.
80
+ - Determinism target is stable semantic content (snapshot/findings/platforms/rulesets), not byte-identical wall-clock metadata.
81
+
82
+ Example:
83
+
84
+ ```bash
85
+ cp .ai_evidence.json /tmp/evidence-1.json
86
+ # re-run the same stage command
87
+ cp .ai_evidence.json /tmp/evidence-2.json
88
+
89
+ jq -S 'del(.timestamp)' /tmp/evidence-1.json > /tmp/evidence-1.normalized.json
90
+ jq -S 'del(.timestamp)' /tmp/evidence-2.json > /tmp/evidence-2.normalized.json
91
+ cmp -s /tmp/evidence-1.normalized.json /tmp/evidence-2.normalized.json
92
+ ```
93
+
94
+ ## Artifact Checklist (Per Consumer Repo)
95
+
96
+ - Command logs (`PRE_COMMIT`, `PRE_PUSH`, `CI`)
97
+ - `.ai_evidence.json` per stage
98
+ - Determinism hash comparison output
99
+ - CI artifact URL
100
+ - Commit SHA and branch evaluated
101
+
102
+ ## Current Execution Status
103
+
104
+ This runbook is prepared and versioned. Execution in external consumer repositories must be attached to this file (or sibling reports under `docs/validation/`) before marking Phase 5 rollout validation as complete.
105
+
106
+ ## Execution Reports
107
+
108
+ - `docs/validation/archive/skills-rollout-consumer-ci-artifacts.md` (consumer GitHub Actions artifact availability status)
109
+
110
+ Archived historical reports:
111
+
112
+ - `docs/validation/archive/skills-rollout-mock_consumer-report.md` (initial real-consumer checkpoint)
113
+ - `docs/validation/archive/skills-rollout-mock_consumer-multi-platform-report.md` (positive multi-platform detection across `PRE_COMMIT`, `PRE_PUSH`, and `CI`)
114
+ - `docs/validation/archive/skills-rollout-mock_consumer-workflow-lint.md` (semantic workflow lint findings linked to startup-failure triage)
115
+ - `docs/validation/archive/skills-rollout-mock_consumer-startup-fix-experiment.md` (branch-only remediation test outcome)
116
+ - `docs/validation/archive/private-actions-healthcheck.md` (account-level private Actions reproduction evidence)
117
+
118
+ Generated diagnostic outputs (not versioned by default):
119
+
120
+ - `.audit-reports/consumer-triage/consumer-ci-artifacts-report.md`
121
+ - `.audit-reports/consumer-triage/consumer-workflow-lint-report.md`
122
+ - `.audit-reports/consumer-triage/consumer-startup-failure-support-bundle.md`
123
+ - `.audit-reports/consumer-triage/consumer-ci-auth-check.md`
124
+ - `.audit-reports/consumer-triage/consumer-support-ticket-draft.md`
package/index.js ADDED
@@ -0,0 +1,15 @@
1
+ const pkg = require('./package.json');
2
+
3
+ module.exports = Object.freeze({
4
+ name: pkg.name,
5
+ version: pkg.version,
6
+ description: pkg.description,
7
+ cli: Object.freeze({
8
+ lifecycle: 'pumuki',
9
+ framework: 'pumuki-framework',
10
+ preCommit: 'pumuki-pre-commit',
11
+ prePush: 'pumuki-pre-push',
12
+ ci: 'pumuki-ci',
13
+ mcpEvidence: 'pumuki-mcp-evidence',
14
+ }),
15
+ });
@@ -0,0 +1,231 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { existsSync, readFileSync, writeFileSync } from 'node:fs';
3
+ import { resolve } from 'node:path';
4
+ import {
5
+ createSkillsLockDeterministicHash,
6
+ loadSkillsLock,
7
+ parseSkillsLock,
8
+ type SkillsCompiledRule,
9
+ type SkillsLockBundle,
10
+ type SkillsLockV1,
11
+ } from './skillsLock';
12
+ import {
13
+ SKILLS_LOCK_COMPILER_VERSION,
14
+ skillsCompilerTemplates,
15
+ type SkillsRuleTemplate,
16
+ } from './skillsCompilerTemplates';
17
+ import { loadSkillsSources, type SkillsSourceBundleV1 } from './skillsSources';
18
+
19
+ const DEFAULT_MANIFEST_FILE = 'skills.sources.json';
20
+ const DEFAULT_OUTPUT_FILE = 'skills.lock.json';
21
+
22
+ export type CompileSkillsLockParams = {
23
+ repoRoot?: string;
24
+ manifestFile?: string;
25
+ generatedAt?: string;
26
+ };
27
+
28
+ export type WriteSkillsLockParams = {
29
+ repoRoot?: string;
30
+ outputFile?: string;
31
+ };
32
+
33
+ export type SkillsLockCheckResult = {
34
+ status: 'fresh' | 'stale' | 'missing' | 'invalid';
35
+ details: string;
36
+ };
37
+
38
+ const isObject = (value: unknown): value is Record<string, unknown> => {
39
+ return typeof value === 'object' && value !== null;
40
+ };
41
+
42
+ const stableStringify = (value: unknown): string => {
43
+ if (Array.isArray(value)) {
44
+ return `[${value.map((item) => stableStringify(item)).join(',')}]`;
45
+ }
46
+
47
+ if (isObject(value)) {
48
+ const entries = Object.entries(value).sort(([left], [right]) => left.localeCompare(right));
49
+ return `{${entries
50
+ .map(([key, item]) => `${JSON.stringify(key)}:${stableStringify(item)}`)
51
+ .join(',')}}`;
52
+ }
53
+
54
+ return JSON.stringify(value) ?? 'null';
55
+ };
56
+
57
+ const toCompiledRule = (
58
+ rule: SkillsRuleTemplate,
59
+ sourceBundle: SkillsSourceBundleV1
60
+ ): SkillsCompiledRule => {
61
+ return {
62
+ ...rule,
63
+ sourceSkill: sourceBundle.name,
64
+ sourcePath: sourceBundle.sourcePath,
65
+ };
66
+ };
67
+
68
+ const buildBundleHash = (params: {
69
+ sourceBundle: SkillsSourceBundleV1;
70
+ sourceContent: string;
71
+ compiledRules: ReadonlyArray<SkillsCompiledRule>;
72
+ }): string => {
73
+ const normalized = {
74
+ name: params.sourceBundle.name,
75
+ version: params.sourceBundle.version,
76
+ template: params.sourceBundle.template,
77
+ sourcePath: params.sourceBundle.sourcePath,
78
+ sourceContentSha256: createHash('sha256').update(params.sourceContent).digest('hex'),
79
+ rules: [...params.compiledRules].sort((left, right) => left.id.localeCompare(right.id)),
80
+ };
81
+
82
+ return createHash('sha256').update(stableStringify(normalized)).digest('hex');
83
+ };
84
+
85
+ const compileBundle = (
86
+ sourceBundle: SkillsSourceBundleV1,
87
+ repoRoot: string
88
+ ): SkillsLockBundle => {
89
+ const template = skillsCompilerTemplates[sourceBundle.template];
90
+ if (!template) {
91
+ throw new Error(
92
+ `Unknown skills template \"${sourceBundle.template}\" for bundle \"${sourceBundle.name}\".`
93
+ );
94
+ }
95
+
96
+ const sourceFilePath = resolve(repoRoot, sourceBundle.sourcePath);
97
+ if (!existsSync(sourceFilePath)) {
98
+ throw new Error(
99
+ `Skills source file not found for bundle \"${sourceBundle.name}\": ${sourceBundle.sourcePath}`
100
+ );
101
+ }
102
+
103
+ const sourceContent = readFileSync(sourceFilePath, 'utf8');
104
+ const compiledRules = template.rules
105
+ .map((rule) => toCompiledRule(rule, sourceBundle))
106
+ .sort((left, right) => left.id.localeCompare(right.id));
107
+
108
+ const hash = buildBundleHash({
109
+ sourceBundle,
110
+ sourceContent,
111
+ compiledRules,
112
+ });
113
+
114
+ return {
115
+ name: sourceBundle.name,
116
+ version: sourceBundle.version,
117
+ source: sourceBundle.source ?? `file:${sourceBundle.sourcePath}`,
118
+ hash,
119
+ rules: compiledRules,
120
+ };
121
+ };
122
+
123
+ export const compileSkillsLock = (params: CompileSkillsLockParams = {}): SkillsLockV1 => {
124
+ const repoRoot = params.repoRoot ?? process.cwd();
125
+ const manifestFile = params.manifestFile ?? DEFAULT_MANIFEST_FILE;
126
+ const sources = loadSkillsSources(repoRoot, manifestFile);
127
+
128
+ if (!sources) {
129
+ throw new Error(
130
+ `Skills sources manifest not found or invalid: ${resolve(repoRoot, manifestFile)}`
131
+ );
132
+ }
133
+
134
+ const activeBundles = sources.bundles
135
+ .filter((bundle) => bundle.enabled !== false)
136
+ .map((bundle) => compileBundle(bundle, repoRoot))
137
+ .sort((left, right) => {
138
+ const byName = left.name.localeCompare(right.name);
139
+ if (byName !== 0) {
140
+ return byName;
141
+ }
142
+ return left.version.localeCompare(right.version);
143
+ });
144
+
145
+ return {
146
+ version: '1.0',
147
+ compilerVersion: SKILLS_LOCK_COMPILER_VERSION,
148
+ generatedAt: params.generatedAt ?? new Date().toISOString(),
149
+ bundles: activeBundles,
150
+ };
151
+ };
152
+
153
+ export const writeSkillsLock = (
154
+ lock: SkillsLockV1,
155
+ params: WriteSkillsLockParams = {}
156
+ ): string => {
157
+ const repoRoot = params.repoRoot ?? process.cwd();
158
+ const outputFile = params.outputFile ?? DEFAULT_OUTPUT_FILE;
159
+ const outputPath = resolve(repoRoot, outputFile);
160
+ writeFileSync(outputPath, `${JSON.stringify(lock, null, 2)}\n`, 'utf8');
161
+ return outputPath;
162
+ };
163
+
164
+ export const checkSkillsLockStatus = (
165
+ params: {
166
+ repoRoot?: string;
167
+ manifestFile?: string;
168
+ lockFile?: string;
169
+ } = {}
170
+ ): SkillsLockCheckResult => {
171
+ const repoRoot = params.repoRoot ?? process.cwd();
172
+ const lockFile = params.lockFile ?? DEFAULT_OUTPUT_FILE;
173
+ const lockPath = resolve(repoRoot, lockFile);
174
+
175
+ const existingLock =
176
+ lockFile === DEFAULT_OUTPUT_FILE
177
+ ? loadSkillsLock(repoRoot)
178
+ : (() => {
179
+ if (!existsSync(lockPath)) {
180
+ return undefined;
181
+ }
182
+ try {
183
+ const parsed: unknown = JSON.parse(readFileSync(lockPath, 'utf8'));
184
+ return parseSkillsLock(parsed);
185
+ } catch {
186
+ return undefined;
187
+ }
188
+ })();
189
+
190
+ if (!existsSync(lockPath)) {
191
+ return {
192
+ status: 'missing',
193
+ details: `${lockFile} is missing. Run skills lock compilation.`,
194
+ };
195
+ }
196
+
197
+ if (!existingLock || existingLock.version !== '1.0') {
198
+ return {
199
+ status: 'invalid',
200
+ details: `${lockFile} is invalid for SkillsLockV1.`,
201
+ };
202
+ }
203
+
204
+ try {
205
+ const compiled = compileSkillsLock({
206
+ repoRoot,
207
+ manifestFile: params.manifestFile,
208
+ generatedAt: existingLock.generatedAt,
209
+ });
210
+ const existingHash = createSkillsLockDeterministicHash(existingLock);
211
+ const compiledHash = createSkillsLockDeterministicHash(compiled);
212
+
213
+ if (existingHash === compiledHash) {
214
+ return {
215
+ status: 'fresh',
216
+ details: `${lockFile} is fresh.`,
217
+ };
218
+ }
219
+
220
+ return {
221
+ status: 'stale',
222
+ details: `${lockFile} is stale. Re-run skills lock compilation.`,
223
+ };
224
+ } catch (error) {
225
+ const message = error instanceof Error ? error.message : 'Unknown compilation error.';
226
+ return {
227
+ status: 'invalid',
228
+ details: message,
229
+ };
230
+ }
231
+ };
@@ -0,0 +1,18 @@
1
+ export type HeuristicsConfig = {
2
+ astSemanticEnabled: boolean;
3
+ };
4
+
5
+ const TRUE_VALUES = new Set(['1', 'true', 'yes', 'on']);
6
+
7
+ const parseBooleanFlag = (value: string | undefined): boolean => {
8
+ if (!value) {
9
+ return false;
10
+ }
11
+ return TRUE_VALUES.has(value.trim().toLowerCase());
12
+ };
13
+
14
+ export const loadHeuristicsConfig = (): HeuristicsConfig => {
15
+ return {
16
+ astSemanticEnabled: parseBooleanFlag(process.env.PUMUKI_ENABLE_AST_HEURISTICS),
17
+ };
18
+ };