@event4u/agent-config 3.3.0 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (585) hide show
  1. package/.agent-src/README.md +2 -2
  2. package/.agent-src/commands/agent-handoff.md +31 -2
  3. package/.agent-src/commands/agent-status.md +5 -5
  4. package/.agent-src/commands/agents/audit.md +8 -8
  5. package/.agent-src/commands/agents/init.md +25 -1
  6. package/.agent-src/commands/agents/optimize.md +3 -3
  7. package/.agent-src/commands/agents/user.md +1 -1
  8. package/.agent-src/commands/agents.md +1 -1
  9. package/.agent-src/commands/analyze-reference-repo.md +1 -1
  10. package/.agent-src/commands/check-current-md.md +8 -8
  11. package/.agent-src/commands/{compress.md → condense.md} +55 -55
  12. package/.agent-src/commands/context/create.md +7 -4
  13. package/.agent-src/commands/context/refactor.md +3 -1
  14. package/.agent-src/commands/feature/dev.md +1 -1
  15. package/.agent-src/commands/feature/explore.md +1 -1
  16. package/.agent-src/commands/feature/plan.md +10 -8
  17. package/.agent-src/commands/feature/refactor.md +3 -1
  18. package/.agent-src/commands/feature/roadmap.md +7 -4
  19. package/.agent-src/commands/fix/portability.md +3 -3
  20. package/.agent-src/commands/fix/refs.md +4 -4
  21. package/.agent-src/commands/ghostwriter.md +2 -2
  22. package/.agent-src/commands/memory/learn-low-impact.md +3 -3
  23. package/.agent-src/commands/module/explore.md +34 -8
  24. package/.agent-src/commands/optimize/agents-dir.md +9 -7
  25. package/.agent-src/commands/optimize/augmentignore.md +2 -2
  26. package/.agent-src/commands/optimize/skills.md +9 -9
  27. package/.agent-src/commands/post-as.md +1 -1
  28. package/.agent-src/commands/project-analyze.md +2 -2
  29. package/.agent-src/commands/project-health.md +3 -2
  30. package/.agent-src/commands/research/deep.md +1 -1
  31. package/.agent-src/commands/research/report.md +1 -1
  32. package/.agent-src/commands/research.md +1 -1
  33. package/.agent-src/commands/roadmap/ai-council.md +1 -1
  34. package/.agent-src/commands/roadmap/create.md +9 -4
  35. package/.agent-src/commands/rule-compliance-audit.md +1 -1
  36. package/.agent-src/commands/upstream-contribute.md +14 -14
  37. package/.agent-src/commands/video/from-script.md +1 -1
  38. package/.agent-src/commands/video/scene.md +1 -1
  39. package/.agent-src/commands/video/stitch.md +1 -1
  40. package/.agent-src/commands/video/storyboard.md +1 -1
  41. package/.agent-src/commands/video.md +1 -1
  42. package/.agent-src/contexts/augment-infrastructure.md +1 -1
  43. package/.agent-src/contexts/authority/commit-mechanics.md +15 -0
  44. package/.agent-src/contexts/authority/kernel-rule-edits.md +3 -3
  45. package/.agent-src/contexts/authority/scope-mechanics.md +1 -1
  46. package/.agent-src/contexts/communication/rules-auto/augment-source-of-truth-mechanics.md +28 -28
  47. package/.agent-src/contexts/communication/rules-auto/skill-quality-mechanics.md +4 -4
  48. package/.agent-src/contexts/communication/rules-auto/think-before-action-mechanics.md +2 -2
  49. package/.agent-src/contexts/contracts/artifact-engagement-flow.md +6 -6
  50. package/.agent-src/contexts/contracts/command-suggestion-flow.md +3 -3
  51. package/.agent-src/contexts/contracts/emergency-triage-block.md +4 -4
  52. package/.agent-src/contexts/contracts/frugality-charter.md +3 -3
  53. package/.agent-src/contexts/documentation-hierarchy.md +14 -7
  54. package/.agent-src/contexts/execution/autonomy-examples.md +1 -1
  55. package/.agent-src/contexts/execution/cheap-question-mechanics.md +39 -2
  56. package/.agent-src/contexts/execution/roadmap-process-loop.md +28 -5
  57. package/.agent-src/contexts/override-system.md +5 -5
  58. package/.agent-src/ghostwriter/fictional-fixture-v1.md +1 -1
  59. package/.agent-src/personas/advisors/first-principles.md +1 -1
  60. package/.agent-src/personas/hollywood-director.md +1 -1
  61. package/.agent-src/rules/architecture.md +5 -1
  62. package/.agent-src/rules/augment-edit-discipline.md +5 -5
  63. package/.agent-src/rules/augment-source-of-truth.md +15 -15
  64. package/.agent-src/rules/commit-conventions.md +1 -1
  65. package/.agent-src/rules/commit-policy.md +10 -0
  66. package/.agent-src/rules/domain-adoption-policy.md +3 -3
  67. package/.agent-src/rules/fast-path-marker-visibility.md +3 -3
  68. package/.agent-src/rules/finance-safety-floor.md +1 -1
  69. package/.agent-src/rules/framework-neutrality-in-generic-skills.md +8 -8
  70. package/.agent-src/rules/git-history-discipline.md +1 -1
  71. package/.agent-src/rules/improve-before-implement.md +2 -2
  72. package/.agent-src/rules/language-and-tone.md +2 -2
  73. package/.agent-src/rules/media-governance-routing.md +5 -5
  74. package/.agent-src/rules/no-attribution-footers.md +1 -0
  75. package/.agent-src/rules/no-cheap-questions.md +3 -0
  76. package/.agent-src/rules/no-decorative-emojis-in-git-surfaces.md +111 -0
  77. package/.agent-src/rules/no-pr-progress-comments.md +118 -0
  78. package/.agent-src/rules/no-roadmap-references.md +3 -3
  79. package/.agent-src/rules/non-destructive-by-default.md +1 -1
  80. package/.agent-src/rules/persona-governance.md +3 -3
  81. package/.agent-src/rules/preservation-guard.md +15 -15
  82. package/.agent-src/rules/roadmap-ci-steps-policy.md +7 -3
  83. package/.agent-src/rules/rule-type-governance.md +1 -1
  84. package/.agent-src/rules/skill-quality.md +1 -1
  85. package/.agent-src/rules/{caveman-speak.md → telegraph-speak.md} +15 -15
  86. package/.agent-src/rules/token-optimizer-maintenance.md +6 -6
  87. package/.agent-src/skills/agent-docs-writing/SKILL.md +17 -11
  88. package/.agent-src/skills/agents-md-thin-root/SKILL.md +9 -9
  89. package/.agent-src/skills/check-refs/SKILL.md +2 -2
  90. package/.agent-src/skills/code-refactoring/SKILL.md +2 -2
  91. package/.agent-src/skills/command-writing/SKILL.md +19 -19
  92. package/.agent-src/skills/comp-banding/SKILL.md +1 -1
  93. package/.agent-src/skills/condense-memory/SKILL.md +131 -0
  94. package/.agent-src/skills/context-authoring/SKILL.md +2 -2
  95. package/.agent-src/skills/context-document/SKILL.md +5 -3
  96. package/.agent-src/skills/copilot-agents-optimization/SKILL.md +3 -3
  97. package/.agent-src/skills/description-assist/SKILL.md +2 -2
  98. package/.agent-src/skills/git-workflow/SKILL.md +1 -1
  99. package/.agent-src/skills/guideline-writing/SKILL.md +5 -5
  100. package/.agent-src/skills/learning-to-rule-or-skill/SKILL.md +4 -4
  101. package/.agent-src/skills/lint-skills/SKILL.md +3 -3
  102. package/.agent-src/skills/md-language-check/SKILL.md +2 -2
  103. package/.agent-src/skills/module-detect-on-the-fly/SKILL.md +138 -0
  104. package/.agent-src/skills/module-management/SKILL.md +166 -94
  105. package/.agent-src/skills/override-management/SKILL.md +1 -1
  106. package/.agent-src/skills/persona-writing/SKILL.md +5 -5
  107. package/.agent-src/skills/positioning-strategy/SKILL.md +1 -1
  108. package/.agent-src/skills/project-docs/SKILL.md +6 -4
  109. package/.agent-src/skills/readme-reviewer/SKILL.md +2 -2
  110. package/.agent-src/skills/roadmap-management/SKILL.md +13 -1
  111. package/.agent-src/skills/roadmap-writing/SKILL.md +4 -2
  112. package/.agent-src/skills/rule-refactor/SKILL.md +5 -5
  113. package/.agent-src/skills/rule-writing/SKILL.md +18 -18
  114. package/.agent-src/skills/script-writing/SKILL.md +1 -1
  115. package/.agent-src/skills/skill-improvement-pipeline/SKILL.md +6 -6
  116. package/.agent-src/skills/skill-management/SKILL.md +21 -21
  117. package/.agent-src/skills/skill-reviewer/SKILL.md +2 -2
  118. package/.agent-src/skills/skill-writing/SKILL.md +8 -8
  119. package/.agent-src/skills/skill-writing/evals/triggers.json +1 -1
  120. package/.agent-src/skills/token-optimizer/SKILL.md +4 -4
  121. package/.agent-src/skills/unit-economics-modeling/SKILL.md +1 -1
  122. package/.agent-src/skills/upstream-contribute/SKILL.md +17 -17
  123. package/.agent-src/templates/AGENTS.md +1 -0
  124. package/.agent-src/templates/agent-settings.md +24 -13
  125. package/.agent-src/templates/agents/agent-project-settings.example.yml +61 -2
  126. package/.agent-src/templates/command.md +5 -5
  127. package/.agent-src/templates/contexts.md +1 -1
  128. package/.agent-src/templates/copilot-instructions.md +8 -8
  129. package/.agent-src/templates/features.md +1 -1
  130. package/.agent-src/templates/hooks/pre-commit-frontmatter +2 -2
  131. package/.agent-src/templates/hooks/pre-commit-roadmap-progress +3 -3
  132. package/.agent-src/templates/persona.md +2 -2
  133. package/.agent-src/templates/roadmaps.md +1 -1
  134. package/.agent-src/templates/rule.md +13 -13
  135. package/.agent-src/templates/scripts/memory_lookup.py +1 -1
  136. package/.agent-src/templates/scripts/memory_status.py +2 -2
  137. package/.agent-src/templates/scripts/work_engine/_lib/agent_settings.py +195 -1
  138. package/.agent-src/templates/scripts/work_engine/orchestration.py +1 -1
  139. package/.agent-src/templates/skill-archive-note.md +5 -5
  140. package/.agent-src/templates/skill.md +1 -1
  141. package/.claude-plugin/marketplace.json +4 -4
  142. package/AGENTS.md +16 -17
  143. package/CHANGELOG.md +181 -3
  144. package/CONTRIBUTING.md +31 -12
  145. package/README.md +18 -10
  146. package/config/agent-settings.template.yml +22 -2
  147. package/config/discovery/unassigned-artefacts.yml +24 -24
  148. package/config/profiles/full.ini +1 -1
  149. package/dist/cli/agent-config.js +52 -3
  150. package/dist/cli/agent-config.js.map +1 -1
  151. package/dist/cli/commands/uiServe.js +9 -0
  152. package/dist/cli/commands/uiServe.js.map +1 -1
  153. package/dist/cli/registry.js +2 -1
  154. package/dist/cli/registry.js.map +1 -1
  155. package/dist/discovery/deprecation-report.md +1 -1
  156. package/dist/discovery/discovery-manifest.json +649 -606
  157. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  158. package/dist/discovery/discovery-manifest.summary.md +4 -4
  159. package/dist/discovery/orphan-report.md +1 -1
  160. package/dist/discovery/packs.json +439 -437
  161. package/dist/discovery/trust-report.md +5 -5
  162. package/dist/discovery/workspaces.json +450 -448
  163. package/dist/install/apply.js +238 -0
  164. package/dist/install/apply.js.map +1 -0
  165. package/dist/install/atomic.js +92 -0
  166. package/dist/install/atomic.js.map +1 -0
  167. package/dist/install/bridges/augment.js +20 -0
  168. package/dist/install/bridges/augment.js.map +1 -0
  169. package/dist/install/bridges/claude.js +44 -0
  170. package/dist/install/bridges/claude.js.map +1 -0
  171. package/dist/install/bridges/cline.js +69 -0
  172. package/dist/install/bridges/cline.js.map +1 -0
  173. package/dist/install/bridges/copilot.js +28 -0
  174. package/dist/install/bridges/copilot.js.map +1 -0
  175. package/dist/install/bridges/cursor.js +34 -0
  176. package/dist/install/bridges/cursor.js.map +1 -0
  177. package/dist/install/bridges/gemini.js +39 -0
  178. package/dist/install/bridges/gemini.js.map +1 -0
  179. package/dist/install/bridges/index.js +88 -0
  180. package/dist/install/bridges/index.js.map +1 -0
  181. package/dist/install/bridges/marker-content.js +153 -0
  182. package/dist/install/bridges/marker-content.js.map +1 -0
  183. package/dist/install/bridges/markers.js +42 -0
  184. package/dist/install/bridges/markers.js.map +1 -0
  185. package/dist/install/bridges/types.js +31 -0
  186. package/dist/install/bridges/types.js.map +1 -0
  187. package/dist/install/bridges/vscode.js +26 -0
  188. package/dist/install/bridges/vscode.js.map +1 -0
  189. package/dist/install/bridges/windsurf.js +35 -0
  190. package/dist/install/bridges/windsurf.js.map +1 -0
  191. package/dist/install/conflict.js +196 -0
  192. package/dist/install/conflict.js.map +1 -0
  193. package/dist/install/detect.js +218 -0
  194. package/dist/install/detect.js.map +1 -0
  195. package/dist/install/paths.js +82 -0
  196. package/dist/install/paths.js.map +1 -0
  197. package/dist/install/plan.js +157 -0
  198. package/dist/install/plan.js.map +1 -0
  199. package/dist/install/txlog.js +140 -0
  200. package/dist/install/txlog.js.map +1 -0
  201. package/dist/install/types.js +19 -0
  202. package/dist/install/types.js.map +1 -0
  203. package/dist/install/wizard-plan.js +184 -0
  204. package/dist/install/wizard-plan.js.map +1 -0
  205. package/dist/mcp/registry-manifest.json +4 -4
  206. package/dist/router.json +67 -19
  207. package/dist/server/app.js +6 -0
  208. package/dist/server/app.js.map +1 -1
  209. package/dist/server/routes/install.js +547 -0
  210. package/dist/server/routes/install.js.map +1 -0
  211. package/dist/server/routes/wizard.js +301 -6
  212. package/dist/server/routes/wizard.js.map +1 -1
  213. package/dist/server/routes/workspace.js +396 -0
  214. package/dist/server/routes/workspace.js.map +1 -0
  215. package/dist/server/schemas/settings.js +4 -3
  216. package/dist/server/schemas/settings.js.map +1 -1
  217. package/dist/ui/assets/index-BXZILUxe.css +1 -0
  218. package/dist/ui/assets/index-DLEuEW1V.js +35 -0
  219. package/dist/ui/assets/index-DLEuEW1V.js.map +1 -0
  220. package/dist/ui/index.html +2 -2
  221. package/docs/MIGRATION.md +1 -1
  222. package/docs/adrs/cost/0001-hard-stop-hook.md +1 -1
  223. package/docs/adrs/router/0001-three-tier-routing.md +4 -4
  224. package/docs/adrs/schema/0001-json-schema-frontmatter.md +1 -1
  225. package/docs/adrs/smoke/0001-per-tier-smoke-scripts.md +4 -4
  226. package/docs/adrs/{caveman → telegraph}/0001-default-off-until-bench.md +9 -9
  227. package/docs/adrs/telegraph/README.md +9 -0
  228. package/docs/architecture/augment-projection.md +4 -4
  229. package/docs/architecture/claude-bundle.md +1 -1
  230. package/docs/architecture/current-onboard-baseline.md +3 -3
  231. package/docs/architecture/multi-tool-projection.md +10 -10
  232. package/docs/architecture/source-projection.md +27 -27
  233. package/docs/architecture.md +19 -15
  234. package/docs/archive/CHANGELOG-pre-2.11.0.md +2 -2
  235. package/docs/archive/CHANGELOG-pre-2.15.0.md +3 -3
  236. package/docs/archive/CHANGELOG-pre-2.16.0.md +1 -1
  237. package/docs/archive/CHANGELOG-pre-2.2.0.md +70 -70
  238. package/docs/archive/CHANGELOG-pre-2.20.0.md +2 -2
  239. package/docs/archive/CHANGELOG-pre-2.25.0.md +15 -15
  240. package/docs/archive/CHANGELOG-pre-3.0.0.md +4 -4
  241. package/docs/archive/CHANGELOG-pre-3.1.0.md +2 -2
  242. package/docs/archive/CHANGELOG-pre-3.2.0.md +3 -3
  243. package/docs/benchmark.md +65 -0
  244. package/docs/benchmarks.md +16 -16
  245. package/docs/catalog.md +17 -15
  246. package/docs/contracts/CHANGELOG-conventions.md +1 -1
  247. package/docs/contracts/STABILITY.md +2 -2
  248. package/docs/contracts/adoption-signal-floor.md +110 -0
  249. package/docs/contracts/adr-chat-history-split.md +4 -4
  250. package/docs/contracts/adr-command-suggestion.md +4 -4
  251. package/docs/contracts/adr-gtm-context-spine.md +1 -1
  252. package/docs/contracts/adr-implement-ticket-runtime.md +4 -4
  253. package/docs/contracts/adr-install-user-type-axis.md +1 -1
  254. package/docs/contracts/adr-layout.md +2 -2
  255. package/docs/contracts/adr-product-ui-track.md +10 -10
  256. package/docs/contracts/adr-user-types-axis.md +3 -3
  257. package/docs/contracts/adr-wing4-context-spine.md +1 -1
  258. package/docs/contracts/agent-memory-contract.md +3 -3
  259. package/docs/contracts/agents-md-tech-stack.md +2 -2
  260. package/docs/contracts/ai-council-config.md +2 -2
  261. package/docs/contracts/at-rest-encryption.md +4 -0
  262. package/docs/contracts/audit-log-v1.md +1 -1
  263. package/docs/contracts/benchmark-ab-contract.md +101 -0
  264. package/docs/contracts/benchmark-corpus-spec.md +1 -1
  265. package/docs/contracts/branch-protection-policy.md +98 -0
  266. package/docs/contracts/ci-cost-budget.md +106 -0
  267. package/docs/contracts/ci-green-floor.md +141 -0
  268. package/docs/contracts/command-clusters.md +6 -6
  269. package/docs/contracts/command-surface-tiers.md +2 -2
  270. package/docs/contracts/command-taxonomy.md +2 -2
  271. package/docs/contracts/{compression-default-kill-criterion.md → condensation-default-kill-criterion.md} +29 -29
  272. package/docs/contracts/config-presets.md +1 -1
  273. package/docs/contracts/context-paths.md +3 -3
  274. package/docs/contracts/context-spine.md +1 -1
  275. package/docs/contracts/cost-summary-schema.md +12 -12
  276. package/docs/contracts/cross-wing-handoff.md +4 -4
  277. package/docs/contracts/daily-workspace.md +4 -0
  278. package/docs/contracts/decision-trace-v1.md +2 -2
  279. package/docs/contracts/discovery-manifest.md +4 -4
  280. package/docs/contracts/explain-modes.md +4 -0
  281. package/docs/contracts/file-ownership-matrix.json +3493 -3318
  282. package/docs/contracts/file-ownership-matrix.md +3 -3
  283. package/docs/contracts/frontmatter-contract.md +4 -4
  284. package/docs/contracts/ghostwriter-schema.md +3 -3
  285. package/docs/contracts/gui-wizard.md +1 -1
  286. package/docs/contracts/harness-expectations.md +123 -0
  287. package/docs/contracts/host-agent-protocol.md +4 -0
  288. package/docs/contracts/implement-ticket-flow.md +9 -9
  289. package/docs/contracts/install-scopes.md +77 -0
  290. package/docs/contracts/iron-law-overrides.txt +1 -1
  291. package/docs/contracts/kernel-membership.md +26 -26
  292. package/docs/contracts/linear-ai-rules-inclusion.md +1 -1
  293. package/docs/contracts/linter-structural-model.md +2 -2
  294. package/docs/contracts/load-context-budget-model.md +4 -4
  295. package/docs/contracts/load-context-schema.md +13 -13
  296. package/docs/contracts/local-analytics.md +4 -0
  297. package/docs/contracts/local-knowledge-ingestion.md +1 -1
  298. package/docs/contracts/mcp-cloud-scope.md +2 -2
  299. package/docs/contracts/mcp-phase-1-scope.md +3 -3
  300. package/docs/contracts/measurement-baseline.md +5 -5
  301. package/docs/contracts/mental-models.md +30 -30
  302. package/docs/contracts/multi-tool-projection-fidelity.md +4 -4
  303. package/docs/contracts/namespace.md +4 -4
  304. package/docs/contracts/orchestration-dsl-v1.md +7 -7
  305. package/docs/contracts/package-self-orientation.md +12 -12
  306. package/docs/contracts/persona-schema.md +6 -6
  307. package/docs/contracts/pilot/language-and-tone.md +1 -1
  308. package/docs/contracts/plain-language-surface.md +117 -0
  309. package/docs/contracts/profile-system.md +3 -3
  310. package/docs/contracts/release-pr-gating.md +103 -0
  311. package/docs/contracts/role-experience.md +3 -3
  312. package/docs/contracts/rule-classification.md +13 -13
  313. package/docs/contracts/rule-interactions.md +4 -4
  314. package/docs/contracts/rule-interactions.yml +30 -30
  315. package/docs/contracts/rule-priority-hierarchy.md +13 -13
  316. package/docs/contracts/rule-router.md +2 -2
  317. package/docs/contracts/safety-model.md +1 -1
  318. package/docs/contracts/skill-distribution-channels.md +61 -0
  319. package/docs/contracts/skill-domains.md +2 -2
  320. package/docs/contracts/smoke-contracts.md +5 -5
  321. package/docs/contracts/telegraph-telemetry.md +83 -0
  322. package/docs/contracts/trust-and-safety.md +5 -5
  323. package/docs/contracts/ui-stack-extension.md +7 -7
  324. package/docs/contracts/ui-track-flow.md +9 -9
  325. package/docs/contracts/user-type-schema.md +4 -4
  326. package/docs/contracts/workflow-packs.md +4 -4
  327. package/docs/contracts/workspace-documents.md +4 -0
  328. package/docs/customization.md +28 -8
  329. package/docs/decisions/ADR-001-kernel-swap-deferred.md +6 -6
  330. package/docs/decisions/ADR-002-kernel-bucket-overrides.md +11 -11
  331. package/docs/decisions/ADR-003-flat-cluster-subs-and-colon-syntax.md +2 -2
  332. package/docs/decisions/ADR-004-rule-governance-pruning.md +4 -4
  333. package/docs/decisions/ADR-005-subagent-worktrees.md +7 -7
  334. package/docs/decisions/ADR-011-domain-pack-readiness.md +6 -6
  335. package/docs/decisions/ADR-013-discovery-frontmatter-contract.md +3 -3
  336. package/docs/decisions/ADR-015-discovery-manifest-contract.md +3 -3
  337. package/docs/decisions/ADR-017-monorepo-physical-layout.md +10 -10
  338. package/docs/decisions/ADR-018-trust-and-safety-layer.md +6 -6
  339. package/docs/decisions/ADR-019-router-json-dist-location.md +2 -2
  340. package/docs/decisions/ADR-020-global-only-consumer-scope.md +2 -2
  341. package/docs/decisions/ADR-021-deployment-shape.md +1 -1
  342. package/docs/decisions/ADR-022-daily-workspace-decomposition.md +1 -1
  343. package/docs/decisions/ADR-027-changelog-machine-vs-manual.md +2 -2
  344. package/docs/decisions/ADR-028-root-layout.md +7 -7
  345. package/docs/decisions/ADR-029-multi-workspace-deferred.md +2 -2
  346. package/docs/decisions/ADR-rule-kernel-and-router.md +5 -5
  347. package/docs/deploy/team-deployment-posture.md +20 -0
  348. package/docs/development.md +17 -17
  349. package/docs/distribution/registries.md +32 -0
  350. package/docs/distribution/registry-submissions.md +85 -0
  351. package/docs/distribution/telemetry-schema.md +1 -1
  352. package/docs/getting-started-by-role.md +45 -3
  353. package/docs/getting-started.md +2 -2
  354. package/docs/guidelines/agent-infra/5w2h-analysis.md +3 -3
  355. package/docs/guidelines/agent-infra/ask-when-uncertain-demos.md +1 -1
  356. package/docs/guidelines/agent-infra/asking-and-brevity-examples.md +3 -3
  357. package/docs/guidelines/agent-infra/carve-out-predicates.md +3 -3
  358. package/docs/guidelines/agent-infra/critical-thinking.md +4 -4
  359. package/docs/guidelines/agent-infra/direct-answers-demos.md +1 -1
  360. package/docs/guidelines/agent-infra/first-principles.md +2 -2
  361. package/docs/guidelines/agent-infra/inversion-thinking.md +5 -5
  362. package/docs/guidelines/agent-infra/layered-settings.md +56 -2
  363. package/docs/guidelines/agent-infra/mental-models.md +3 -3
  364. package/docs/guidelines/agent-infra/roadmap-progress-mechanics.md +2 -2
  365. package/docs/guidelines/agent-infra/rule-type-governance.md +1 -1
  366. package/docs/guidelines/agent-infra/scqa-framework.md +5 -5
  367. package/docs/guidelines/agent-infra/self-improvement-pipeline.md +2 -2
  368. package/docs/guidelines/agent-infra/six-hats.md +3 -3
  369. package/docs/guidelines/agent-infra/skill-quality-checklist.md +5 -5
  370. package/docs/guidelines/agent-infra/systems-thinking.md +1 -1
  371. package/docs/guidelines/agent-infra/verify-before-complete-demos.md +1 -1
  372. package/docs/guidelines/augment-portability-patterns.md +4 -4
  373. package/docs/guidelines/cross-role-handoff.md +2 -2
  374. package/docs/guidelines/php/php-coding-patterns.md +1 -1
  375. package/docs/guidelines/prompt-templates.md +6 -6
  376. package/docs/maintainers/dev-mode.md +1 -1
  377. package/docs/mcp.md +1 -1
  378. package/docs/parity/bench.json +3 -3
  379. package/docs/parity/ruflo.md +2 -2
  380. package/docs/profiles.md +11 -11
  381. package/docs/quality.md +11 -11
  382. package/docs/safety.md +3 -3
  383. package/docs/setup/mcp-client-config.md +1 -1
  384. package/docs/setup/mcp-r2-bootstrap.md +1 -1
  385. package/docs/setup/mcp-server-docker.md +3 -3
  386. package/docs/setup/per-ide/windsurf.md +1 -1
  387. package/docs/skills-catalog.md +8 -7
  388. package/docs/troubleshooting.md +1 -1
  389. package/docs/walkthroughs/daily-workspace-a11y.md +87 -0
  390. package/llms.txt +7 -6
  391. package/package.json +1 -1
  392. package/scripts/__pycache__/validate_frontmatter.cpython-312.pyc +0 -0
  393. package/scripts/_archive/README.md +2 -2
  394. package/scripts/_archive/_backfill_skill_domains.py +3 -3
  395. package/scripts/_archive/_bootstrap_tier_frontmatter.py +3 -3
  396. package/scripts/_archive/_p43_bodies.py +10 -10
  397. package/scripts/_archive/{_p43_compress.py → _p43_condense.py} +5 -5
  398. package/scripts/_archive/_p4_migrate.py +7 -7
  399. package/scripts/_archive/_phase2_shim_helper.py +1 -1
  400. package/scripts/_archive/_pilot_council_question.py +5 -5
  401. package/scripts/_cli/explain_last/inputs.py +1 -1
  402. package/scripts/_lib/__pycache__/__init__.cpython-312.pyc +0 -0
  403. package/scripts/_lib/__pycache__/agent_src.cpython-312.pyc +0 -0
  404. package/scripts/_lib/agent_settings.py +195 -1
  405. package/scripts/_lib/agent_src.py +19 -19
  406. package/scripts/_lib/bench_ab_cache.py +162 -0
  407. package/scripts/_lib/bench_ab_scoring.py +209 -0
  408. package/scripts/_lib/{bench_caveman.py → bench_telegraph.py} +21 -21
  409. package/scripts/_lib/{bench_caveman_report.py → bench_telegraph_report.py} +21 -21
  410. package/scripts/_lib/claude_desktop_bundler.py +5 -5
  411. package/scripts/_lib/module_detection.py +223 -0
  412. package/scripts/_lib/scope_guard.sh +162 -0
  413. package/scripts/_phase4_bucket.py +3 -3
  414. package/scripts/_pilot_measure.py +4 -4
  415. package/scripts/_tmp_scan_framework_leakage.py +1 -1
  416. package/scripts/adoption_report.py +195 -0
  417. package/scripts/adoption_snapshot.py +219 -0
  418. package/scripts/adoption_status.py +166 -0
  419. package/scripts/ai-video/lib/parse-blueprint.sh +1 -1
  420. package/scripts/ai_council/advisors.py +5 -5
  421. package/scripts/ai_council/compile_corpus.py +1 -1
  422. package/scripts/ai_council/one_off_archive/2026-05/_one_off_budget_v2_audit.py +3 -3
  423. package/scripts/ai_council/one_off_archive/2026-05/_one_off_context_layer_v1_review.py +2 -2
  424. package/scripts/ai_council/one_off_archive/2026-05/_one_off_inject_quiet_flag.py +1 -1
  425. package/scripts/ai_council/one_off_archive/2026-05/_one_off_measure_v2.sh +1 -1
  426. package/scripts/ai_council/one_off_archive/2026-05/_one_off_measure_verbosity.sh +1 -1
  427. package/scripts/ai_council/one_off_archive/2026-05/_one_off_nondestructive_inline_audit.py +3 -3
  428. package/scripts/ai_council/one_off_archive/2026-05/_one_off_per_task.sh +1 -1
  429. package/scripts/ai_council/one_off_archive/2026-05/_one_off_phase6_trigger_jaccard.py +1 -1
  430. package/scripts/ai_council/one_off_archive/2026-05/_one_off_phase_2a_budget_rebalance.py +6 -6
  431. package/scripts/ai_council/one_off_archive/2026-05/_one_off_rebalancing_audit.py +1 -1
  432. package/scripts/ai_council/one_off_archive/2026-05/_one_off_tier_retrofit.py +6 -6
  433. package/scripts/annotate_discovery.py +13 -13
  434. package/scripts/apply_modules_config.py +290 -0
  435. package/scripts/audit_adr_coverage.py +2 -2
  436. package/scripts/audit_auto_rules.py +2 -2
  437. package/scripts/audit_cloud_compatibility.py +3 -3
  438. package/scripts/audit_command_surface.py +9 -9
  439. package/scripts/audit_likelihood.py +2 -2
  440. package/scripts/audit_user_type_axis.py +2 -2
  441. package/scripts/bench_ab_cache_dispatch.py +68 -0
  442. package/scripts/bench_ab_clone.py +170 -0
  443. package/scripts/bench_ab_diff.py +227 -0
  444. package/scripts/bench_ab_integrity.py +143 -0
  445. package/scripts/bench_ab_run.py +235 -0
  446. package/scripts/bench_ab_task_runner.py +369 -0
  447. package/scripts/bench_ab_tracka_run.py +202 -0
  448. package/scripts/{bench_compress_memory.py → bench_condense_memory.py} +16 -16
  449. package/scripts/bench_run.py +33 -33
  450. package/scripts/bench_runner.py +2 -2
  451. package/scripts/bootstrap.sh +99 -0
  452. package/scripts/build_cloud_bundle.py +6 -6
  453. package/scripts/build_discovery_manifest.py +7 -7
  454. package/scripts/build_linear_digest.py +3 -3
  455. package/scripts/build_rule_trigger_matrix.py +8 -8
  456. package/scripts/chat_history.py +5 -5
  457. package/scripts/check_always_budget.py +11 -5
  458. package/scripts/check_augment_description_cap.py +3 -3
  459. package/scripts/check_cluster_patterns.py +2 -2
  460. package/scripts/check_command_count_messaging.py +3 -3
  461. package/scripts/{check_compression.py → check_condensation.py} +34 -34
  462. package/scripts/{check_compressed_paths.py → check_condensed_paths.py} +8 -8
  463. package/scripts/check_context_paths.py +7 -7
  464. package/scripts/check_council_layout.py +2 -2
  465. package/scripts/check_council_references.py +9 -9
  466. package/scripts/check_iron_law_prominence.py +2 -2
  467. package/scripts/check_kernel_rule_bundle.py +2 -2
  468. package/scripts/check_module_management_neutral.py +149 -0
  469. package/scripts/check_no_roadmap_refs.py +9 -9
  470. package/scripts/check_portability.py +3 -3
  471. package/scripts/check_public_catalog_links.py +4 -4
  472. package/scripts/check_references.py +7 -6
  473. package/scripts/check_release_pr_shape.py +112 -0
  474. package/scripts/check_reply_consistency.py +3 -3
  475. package/scripts/check_safety_floor_untouched.py +1 -1
  476. package/scripts/check_template_pin_drift.py +5 -5
  477. package/scripts/check_token_optimizer_freshness.py +3 -3
  478. package/scripts/ci_status.py +301 -0
  479. package/scripts/ci_time_ratio.py +1 -1
  480. package/scripts/cleanup_other_scope.sh +146 -0
  481. package/scripts/compile_router.py +10 -10
  482. package/scripts/{compress.py → condense.py} +64 -64
  483. package/scripts/condense.sh +18 -0
  484. package/scripts/{compress_memory.py → condense_memory.py} +33 -33
  485. package/scripts/config/presets.py +2 -2
  486. package/scripts/config/profiles.py +1 -1
  487. package/scripts/cost_by_conversation.py +3 -3
  488. package/scripts/cost_summary.py +7 -7
  489. package/scripts/count_token_optimizer_usage.sh +1 -1
  490. package/scripts/gen_discovery_baseline.py +5 -5
  491. package/scripts/generate_index.py +6 -6
  492. package/scripts/generate_ownership_matrix.py +10 -10
  493. package/scripts/generate_pack_manifests.py +1 -1
  494. package/scripts/ghostwriter_fixture_allowlist.txt +1 -1
  495. package/scripts/install +3 -3
  496. package/scripts/install-hooks.sh +6 -6
  497. package/scripts/install.py +76 -11
  498. package/scripts/install.sh +187 -1
  499. package/scripts/inventory_frontmatter.py +2 -2
  500. package/scripts/iron_law_sha.py +3 -3
  501. package/scripts/lint_agents_layout.py +14 -7
  502. package/scripts/lint_agents_md.py +4 -4
  503. package/scripts/lint_archived_skills.py +3 -3
  504. package/scripts/lint_artefact_frontmatter.py +2 -2
  505. package/scripts/lint_bench_ab.py +172 -0
  506. package/scripts/lint_bench_corpus.py +1 -1
  507. package/scripts/lint_command_tiers.py +5 -5
  508. package/scripts/lint_context_spine_usage.py +1 -1
  509. package/scripts/lint_framework_leakage.py +7 -7
  510. package/scripts/lint_framework_leakage_allowlist.json +144 -84
  511. package/scripts/lint_ghostwriter_source.py +3 -3
  512. package/scripts/lint_handoffs.py +1 -1
  513. package/scripts/lint_load_context.py +11 -11
  514. package/scripts/lint_media_policy_linkage.py +5 -5
  515. package/scripts/lint_namespace.py +1 -1
  516. package/scripts/lint_no_new_atomic_commands.py +2 -2
  517. package/scripts/lint_orchestration_dsl.py +1 -1
  518. package/scripts/lint_pack_boundaries.py +2 -2
  519. package/scripts/lint_persona_governance.py +4 -4
  520. package/scripts/lint_role_experiences.py +237 -0
  521. package/scripts/lint_rule_interactions.py +2 -2
  522. package/scripts/lint_rule_tiers.py +1 -1
  523. package/scripts/lint_trust_coherence.py +2 -2
  524. package/scripts/mcp_registry_submit.sh +187 -0
  525. package/scripts/mcp_server/tools.py +1 -1
  526. package/scripts/measure_frugality_savings.py +10 -10
  527. package/scripts/measure_patterns.py +1 -1
  528. package/scripts/measure_projection_bytes.py +5 -5
  529. package/scripts/measure_rule_budget.py +3 -3
  530. package/scripts/measure_skill_reduction.py +1 -1
  531. package/scripts/memory_lookup.py +1 -1
  532. package/scripts/memory_status.py +2 -2
  533. package/scripts/migrate_command_suggestions.py +3 -3
  534. package/scripts/mine_session.py +1 -1
  535. package/scripts/move_artefact.py +3 -3
  536. package/scripts/new_skill.py +2 -2
  537. package/scripts/pack_mcp_content.py +9 -9
  538. package/scripts/plan_physical_move.py +6 -6
  539. package/scripts/print_required_checks.py +196 -0
  540. package/scripts/probe_skill_registration.py +413 -0
  541. package/scripts/propose_modules_config.py +145 -0
  542. package/scripts/prototype_lint_contradictions.py +1 -1
  543. package/scripts/recruit_preflight.sh +152 -0
  544. package/scripts/refine_ticket_detect.py +3 -3
  545. package/scripts/release.py +20 -0
  546. package/scripts/render_benchmark_md.py +308 -0
  547. package/scripts/roadmap_progress_hook.py +1 -1
  548. package/scripts/run_skill_evals.py +2 -2
  549. package/scripts/runtime_registry.py +4 -4
  550. package/scripts/schemas/command.schema.json +4 -4
  551. package/scripts/schemas/rule.schema.json +5 -5
  552. package/scripts/schemas/skill.schema.json +3 -3
  553. package/scripts/schemas/user-type.schema.json +1 -1
  554. package/scripts/score_skill_selection.py +1 -1
  555. package/scripts/skill_collision_clusters.py +2 -2
  556. package/scripts/skill_linter.py +81 -81
  557. package/scripts/skill_overlap.py +5 -5
  558. package/scripts/skill_tools/audit_persona_coverage.py +2 -2
  559. package/scripts/skill_tools/audit_user_type_coverage.py +2 -2
  560. package/scripts/skill_tools/run_block_d_eval.py +1 -1
  561. package/scripts/skill_tools/score_skill_relevance.py +1 -1
  562. package/scripts/skill_tools/suggest_skill_for_task.py +1 -1
  563. package/scripts/skill_trigger_eval.py +3 -3
  564. package/scripts/smoke/kernel.sh +7 -1
  565. package/scripts/smoke/router.sh +5 -5
  566. package/scripts/smoke/skills.sh +1 -1
  567. package/scripts/smoke_quickstart.py +1 -1
  568. package/scripts/snapshot_agent_outputs.py +3 -3
  569. package/scripts/spotcheck_thin_root.py +1 -1
  570. package/scripts/{caveman_stats.py → telegraph_stats.py} +18 -18
  571. package/scripts/update_counts.py +1 -1
  572. package/scripts/validate_decision_engine.py +1 -1
  573. package/scripts/validate_frontmatter.py +1 -1
  574. package/scripts/validate_safe_paths.py +3 -3
  575. package/scripts/{validate_caveman_carveouts.py → validate_telegraph_carveouts.py} +7 -7
  576. package/scripts/verify_roadmap_closure.py +6 -6
  577. package/templates/consumer-settings/ONBOARDING.md +41 -0
  578. package/.agent-src/commands/install-via-agent.md +0 -129
  579. package/.agent-src/skills/compress-memory/SKILL.md +0 -131
  580. package/dist/ui/assets/index-D-DY1ywI.js +0 -35
  581. package/dist/ui/assets/index-D-DY1ywI.js.map +0 -1
  582. package/dist/ui/assets/index-Dqfhmg-d.css +0 -1
  583. package/docs/adrs/caveman/README.md +0 -9
  584. package/docs/contracts/caveman-telemetry.md +0 -83
  585. package/scripts/compress.sh +0 -18
@@ -0,0 +1,301 @@
1
+ #!/usr/bin/env python3
2
+ """Wrap ``gh run list`` and assert the required-check set is green.
3
+
4
+ Phase A Step 6 of ``road-to-adoption-proof-and-ci-green.md``. Sits
5
+ between the maintainer and the GitHub UI so a one-line
6
+ ``task ci:status`` shows whether the required-check floor (as defined
7
+ in ``docs/contracts/branch-protection-policy.md`` § Per-PR-shape
8
+ required-check matrix) is green on the branch passed via ``--branch``.
9
+
10
+ Phantom 0-job runs are filtered before the tally — they are listed
11
+ under "advisory / phantom" in ``docs/contracts/ci-green-floor.md`` and
12
+ must not freeze merges (the ``--strict`` flag honours this).
13
+
14
+ CLI:
15
+
16
+ scripts/ci_status.py [--branch main] [--limit 30] [--strict]
17
+ [--shape feature|release|docs] [--json]
18
+
19
+ Exit codes:
20
+
21
+ 0 — every required check on the most recent run is success
22
+ (or the matching workflow simply has not run yet under
23
+ ``--strict``; the gate distinguishes "missing" from "red").
24
+ 1 — at least one required-check workflow is red or in a
25
+ terminal-non-success state.
26
+ 2 — invalid arguments / unreachable gh CLI.
27
+
28
+ The required-check shape vocabulary mirrors
29
+ ``branch-protection-policy.md`` exactly so a future ruleset edit in
30
+ one place stays single-sourced.
31
+ """
32
+ from __future__ import annotations
33
+
34
+ import argparse
35
+ import json
36
+ import shutil
37
+ import subprocess
38
+ import sys
39
+ from dataclasses import dataclass
40
+
41
+
42
+ # Source-of-truth for the per-shape required-check set. Anchored to
43
+ # the matrix in docs/contracts/branch-protection-policy.md § Per-PR-shape
44
+ # required-check matrix. When that doc changes, this dict changes in
45
+ # lockstep — a CI-side linter cross-checks the two surfaces.
46
+ REQUIRED_CHECKS_BY_SHAPE: dict[str, set[str]] = {
47
+ "feature": {
48
+ "Consistency",
49
+ "Smoke Contracts",
50
+ "Skill Lint",
51
+ "Tests",
52
+ "Python Version Sweep",
53
+ "Public Install Smoke",
54
+ },
55
+ "release": {
56
+ "Consistency",
57
+ "Smoke Contracts",
58
+ "Release Validation",
59
+ },
60
+ "docs": {
61
+ "Consistency",
62
+ "Smoke Contracts",
63
+ },
64
+ }
65
+
66
+
67
+ @dataclass(frozen=True)
68
+ class Run:
69
+ name: str
70
+ conclusion: str
71
+ status: str
72
+ jobs: int
73
+
74
+
75
+ def fetch_runs(branch: str, limit: int) -> list[Run]:
76
+ """Call `gh run list` and return parsed Run records."""
77
+ if shutil.which("gh") is None:
78
+ raise SystemExit("error: gh CLI not found in PATH")
79
+ cmd = [
80
+ "gh",
81
+ "run",
82
+ "list",
83
+ "--branch",
84
+ branch,
85
+ "--limit",
86
+ str(limit),
87
+ "--json",
88
+ "databaseId,name,status,conclusion",
89
+ ]
90
+ try:
91
+ proc = subprocess.run(cmd, capture_output=True, text=True, check=True)
92
+ except subprocess.CalledProcessError as exc:
93
+ raise SystemExit(f"error: gh run list failed — {exc.stderr.strip()}")
94
+ raw = json.loads(proc.stdout or "[]")
95
+ runs: list[Run] = []
96
+ for r in raw:
97
+ # `gh run list` does not surface Jobs count — we need a second
98
+ # call per run id to find phantom 0-job runs. Keep that call to
99
+ # the runs that *would* be counted (non-success terminal) so the
100
+ # cost is bounded by the number of red runs, not the full window.
101
+ runs.append(
102
+ Run(
103
+ name=r.get("name", ""),
104
+ conclusion=r.get("conclusion", ""),
105
+ status=r.get("status", ""),
106
+ jobs=-1, # unknown — resolved lazily for non-success runs
107
+ )
108
+ )
109
+ return runs
110
+
111
+
112
+ def resolve_jobs_count(run_id: int) -> int:
113
+ """Return the number of jobs for a single run id (for phantom filter)."""
114
+ cmd = [
115
+ "gh",
116
+ "run",
117
+ "view",
118
+ str(run_id),
119
+ "--json",
120
+ "jobs",
121
+ ]
122
+ proc = subprocess.run(cmd, capture_output=True, text=True)
123
+ if proc.returncode != 0:
124
+ return -1
125
+ data = json.loads(proc.stdout or "{}")
126
+ return len(data.get("jobs", []))
127
+
128
+
129
+ def is_phantom(run: Run) -> bool:
130
+ """True when the run has 0 jobs AND its conclusion is `failure`."""
131
+ if run.conclusion != "failure":
132
+ return False
133
+ if run.jobs == 0:
134
+ return True
135
+ return False
136
+
137
+
138
+ def latest_per_workflow(runs: list[Run]) -> dict[str, Run]:
139
+ """Pick the latest run per workflow name (input order is mtime-desc)."""
140
+ out: dict[str, Run] = {}
141
+ for r in runs:
142
+ if r.name in out:
143
+ continue
144
+ if r.status != "completed":
145
+ # In-progress / queued runs are pending; treat as unknown.
146
+ continue
147
+ out[r.name] = r
148
+ return out
149
+
150
+
151
+ def compute_status(
152
+ runs: list[Run],
153
+ required: set[str],
154
+ resolve_jobs: bool = True,
155
+ ) -> tuple[list[tuple[str, Run]], list[str], list[tuple[str, Run]]]:
156
+ """Return (greens, missing, reds-after-phantom-filter)."""
157
+ by_name = latest_per_workflow(runs)
158
+ greens: list[tuple[str, Run]] = []
159
+ reds: list[tuple[str, Run]] = []
160
+ missing: list[str] = []
161
+ for name in sorted(required):
162
+ run = by_name.get(name)
163
+ if run is None:
164
+ missing.append(name)
165
+ continue
166
+ if run.conclusion == "success":
167
+ greens.append((name, run))
168
+ continue
169
+ # Non-success — check for phantom 0-job.
170
+ if resolve_jobs and run.jobs < 0:
171
+ # Resolve the jobs count for this single run lazily.
172
+ # We don't have the database id in our Run records (the JSON
173
+ # field is `databaseId` and we dropped it for brevity); refetch
174
+ # the latest red run for this workflow by name.
175
+ run_id = _latest_run_id_for_workflow(name, run)
176
+ jobs_count = resolve_jobs_count(run_id) if run_id else -1
177
+ run = Run(
178
+ name=run.name,
179
+ conclusion=run.conclusion,
180
+ status=run.status,
181
+ jobs=jobs_count,
182
+ )
183
+ if is_phantom(run):
184
+ # Phantom — filter out; treat as success-equivalent for gating.
185
+ greens.append((name, run))
186
+ else:
187
+ reds.append((name, run))
188
+ return greens, missing, reds
189
+
190
+
191
+ # Cache for the lazy run-id lookup; keyed by workflow name + conclusion.
192
+ _RUN_ID_CACHE: dict[tuple[str, str], int | None] = {}
193
+
194
+
195
+ def _latest_run_id_for_workflow(name: str, run: Run) -> int | None:
196
+ """Refetch the latest run id for a workflow whose top-of-list run is non-success."""
197
+ key = (name, run.conclusion)
198
+ if key in _RUN_ID_CACHE:
199
+ return _RUN_ID_CACHE[key]
200
+ cmd = [
201
+ "gh",
202
+ "run",
203
+ "list",
204
+ "--workflow",
205
+ name,
206
+ "--limit",
207
+ "1",
208
+ "--json",
209
+ "databaseId",
210
+ ]
211
+ proc = subprocess.run(cmd, capture_output=True, text=True)
212
+ if proc.returncode != 0:
213
+ _RUN_ID_CACHE[key] = None
214
+ return None
215
+ data = json.loads(proc.stdout or "[]")
216
+ if not data:
217
+ _RUN_ID_CACHE[key] = None
218
+ return None
219
+ rid = int(data[0].get("databaseId", 0)) or None
220
+ _RUN_ID_CACHE[key] = rid
221
+ return rid
222
+
223
+
224
+ def parse_args(argv: list[str] | None = None) -> argparse.Namespace:
225
+ p = argparse.ArgumentParser(
226
+ prog="ci_status",
227
+ description="Assert the required-check set is green on a branch.",
228
+ )
229
+ p.add_argument(
230
+ "--branch",
231
+ default="main",
232
+ help="Branch to check (default: main).",
233
+ )
234
+ p.add_argument(
235
+ "--limit",
236
+ type=int,
237
+ default=30,
238
+ help="Number of recent runs to scan (default: 30).",
239
+ )
240
+ p.add_argument(
241
+ "--shape",
242
+ choices=["feature", "release", "docs"],
243
+ default="feature",
244
+ help="PR shape (default: feature) — picks the required-check set.",
245
+ )
246
+ p.add_argument(
247
+ "--strict",
248
+ action="store_true",
249
+ help="Exit non-zero if any required check is missing (not just red).",
250
+ )
251
+ p.add_argument(
252
+ "--json",
253
+ action="store_true",
254
+ help="Emit JSON instead of human-readable text.",
255
+ )
256
+ p.add_argument(
257
+ "--no-phantom-resolve",
258
+ action="store_true",
259
+ help="Skip the lazy 0-job lookup (faster but lets phantoms through).",
260
+ )
261
+ return p.parse_args(argv)
262
+
263
+
264
+ def main(argv: list[str] | None = None) -> int:
265
+ args = parse_args(argv)
266
+ required = REQUIRED_CHECKS_BY_SHAPE[args.shape]
267
+ runs = fetch_runs(args.branch, args.limit)
268
+ greens, missing, reds = compute_status(
269
+ runs,
270
+ required,
271
+ resolve_jobs=not args.no_phantom_resolve,
272
+ )
273
+
274
+ if args.json:
275
+ out = {
276
+ "branch": args.branch,
277
+ "shape": args.shape,
278
+ "required": sorted(required),
279
+ "green": [name for name, _ in greens],
280
+ "missing": missing,
281
+ "red": [{"name": name, "conclusion": run.conclusion} for name, run in reds],
282
+ }
283
+ print(json.dumps(out, indent=2))
284
+ else:
285
+ print(f"branch={args.branch} shape={args.shape} required={len(required)}")
286
+ for name, _ in greens:
287
+ print(f" ✅ {name}")
288
+ for name in missing:
289
+ print(f" ⚠️ {name} — no run found on this branch (last {args.limit})")
290
+ for name, run in reds:
291
+ print(f" ❌ {name} — {run.conclusion}")
292
+
293
+ if reds:
294
+ return 1
295
+ if args.strict and missing:
296
+ return 1
297
+ return 0
298
+
299
+
300
+ if __name__ == "__main__":
301
+ sys.exit(main())
@@ -62,7 +62,7 @@ def classify(sha: str) -> str:
62
62
  if not files:
63
63
  return "empty"
64
64
  doc = sum(1 for f in files if f.startswith("docs/") or f.endswith(".md"))
65
- skill = sum(1 for f in files if "/skills/" in f or f.startswith(".agent-src.uncompressed/skills/"))
65
+ skill = sum(1 for f in files if "/skills/" in f or f.startswith(".agent-src.uncondensed/skills/"))
66
66
  test = sum(1 for f in files if f.startswith("tests/") or "/tests/" in f)
67
67
  meta = sum(1 for f in files if f.startswith(("Taskfile", "scripts/", ".github/", "pyproject", "package")))
68
68
  total = len(files)
@@ -0,0 +1,146 @@
1
+ #!/usr/bin/env bash
2
+ # cleanup_other_scope.sh — remove a stale agent-config install at the OTHER
3
+ # scope (typically ~/.claude/skills/ when working in a project-local install).
4
+ #
5
+ # Roadmap: road-to-clean-skill-distribution-channels.md, Phase B Step 5.
6
+ # Companion to scripts/_lib/scope_guard.sh. Refuses to run without --confirm
7
+ # per `non-destructive-by-default`.
8
+ #
9
+ # Usage:
10
+ # bash scripts/cleanup_other_scope.sh # dry-run, list what would be removed
11
+ # bash scripts/cleanup_other_scope.sh --confirm # actually delete
12
+ # bash scripts/cleanup_other_scope.sh --confirm --user # default — remove user-global tree
13
+ # bash scripts/cleanup_other_scope.sh --confirm --project /path/to/proj
14
+ # # remove from a specific project root
15
+ #
16
+ # What it removes (subject to --tools selection):
17
+ # .claude/skills/ — Claude project-local skill tree
18
+ # .augment/ — Augment substrate
19
+ # .cursor/rules/ — Cursor rules tree
20
+ # .clinerules/ — Cline rules tree
21
+ # .windsurf/rules/ — Windsurf rules tree
22
+ # .github/copilot-instructions.md — Copilot single-file
23
+ #
24
+ # What it NEVER removes without explicit overrides:
25
+ # .agent-settings.yml — settings the operator may have edited
26
+ # agents/ — project-local content authored by the user
27
+ # any path outside the scoped roots
28
+
29
+ set -euo pipefail
30
+
31
+ SCOPE="user"
32
+ SCOPE_ROOT=""
33
+ TOOLS_FILTER="all"
34
+ DRY_RUN=true
35
+
36
+ usage() {
37
+ cat <<'EOF'
38
+ Usage: bash scripts/cleanup_other_scope.sh [--confirm] [--user | --project <dir>] [--tools <list>]
39
+
40
+ Removes a stale agent-config install at the OTHER scope (user-global by default).
41
+ Refuses to delete anything without --confirm.
42
+
43
+ Options:
44
+ --confirm Actually remove files. Default is dry-run (lists only).
45
+ --user Operate on $HOME (user-global scope). Default.
46
+ --project <dir> Operate on a specific project root.
47
+ --tools <list> Comma-separated tool IDs (default: all).
48
+ Choices: claude-code, augment, cursor, cline, windsurf, copilot.
49
+ --help, -h Show this help.
50
+
51
+ Examples:
52
+ bash scripts/cleanup_other_scope.sh # dry-run, user scope
53
+ bash scripts/cleanup_other_scope.sh --confirm # delete user-global tree
54
+ bash scripts/cleanup_other_scope.sh --confirm --tools=claude-code # delete only ~/.claude/skills/
55
+ EOF
56
+ }
57
+
58
+ while [[ $# -gt 0 ]]; do
59
+ case "$1" in
60
+ --confirm) DRY_RUN=false; shift ;;
61
+ --user) SCOPE="user"; shift ;;
62
+ --project)
63
+ if [[ $# -lt 2 ]] || [[ "$2" == --* ]]; then
64
+ echo "❌ --project requires a path argument." >&2
65
+ exit 1
66
+ fi
67
+ SCOPE="project"; SCOPE_ROOT="$2"; shift 2 ;;
68
+ --project=*) SCOPE="project"; SCOPE_ROOT="${1#*=}"; shift ;;
69
+ --tools) TOOLS_FILTER="$2"; shift 2 ;;
70
+ --tools=*) TOOLS_FILTER="${1#*=}"; shift ;;
71
+ --help|-h) usage; exit 0 ;;
72
+ *) echo "Unknown argument: $1" >&2; usage >&2; exit 1 ;;
73
+ esac
74
+ done
75
+
76
+ is_tool() {
77
+ [[ "$TOOLS_FILTER" == "all" ]] && return 0
78
+ case ",$TOOLS_FILTER," in
79
+ *,"$1",*) return 0 ;;
80
+ esac
81
+ return 1
82
+ }
83
+
84
+ # Resolve scope root.
85
+ if [[ "$SCOPE" == "user" ]]; then
86
+ SCOPE_ROOT="${HOME:-/tmp}"
87
+ elif [[ -z "$SCOPE_ROOT" ]]; then
88
+ echo "❌ --project requires a path." >&2
89
+ exit 1
90
+ fi
91
+ if [[ ! -d "$SCOPE_ROOT" ]]; then
92
+ echo "❌ Scope root not found: $SCOPE_ROOT" >&2
93
+ exit 1
94
+ fi
95
+
96
+ declare -a targets=()
97
+ is_tool claude-code && {
98
+ targets+=("$SCOPE_ROOT/.claude/skills")
99
+ targets+=("$SCOPE_ROOT/.claude/rules")
100
+ targets+=("$SCOPE_ROOT/.claude-plugin/marketplace.json")
101
+ }
102
+ is_tool augment && {
103
+ targets+=("$SCOPE_ROOT/.augment")
104
+ targets+=("$SCOPE_ROOT/.augment-plugin")
105
+ }
106
+ is_tool cursor && targets+=("$SCOPE_ROOT/.cursor/rules")
107
+ is_tool cline && targets+=("$SCOPE_ROOT/.clinerules")
108
+ is_tool windsurf && {
109
+ targets+=("$SCOPE_ROOT/.windsurf/rules")
110
+ targets+=("$SCOPE_ROOT/.windsurfrules")
111
+ }
112
+ is_tool copilot && targets+=("$SCOPE_ROOT/.github/copilot-instructions.md")
113
+
114
+ if [[ ${#targets[@]} -eq 0 ]]; then
115
+ echo "❌ No tools selected (--tools=$TOOLS_FILTER)." >&2
116
+ exit 1
117
+ fi
118
+
119
+ echo "Scope: $SCOPE ($SCOPE_ROOT)"
120
+ echo "Tools: $TOOLS_FILTER"
121
+ echo "Mode: $($DRY_RUN && echo 'DRY RUN (use --confirm to delete)' || echo 'DELETE')"
122
+ echo ""
123
+
124
+ removed=0
125
+ skipped=0
126
+ for t in "${targets[@]}"; do
127
+ if [[ -e "$t" ]] || [[ -L "$t" ]]; then
128
+ if $DRY_RUN; then
129
+ echo " would remove: $t"
130
+ else
131
+ rm -rf "$t"
132
+ echo " removed: $t"
133
+ fi
134
+ ((removed++)) || true
135
+ else
136
+ ((skipped++)) || true
137
+ fi
138
+ done
139
+
140
+ echo ""
141
+ if $DRY_RUN; then
142
+ echo "✅ Dry-run complete: $removed entries would be removed, $skipped already absent."
143
+ echo " Re-run with --confirm to apply."
144
+ else
145
+ echo "✅ Cleanup complete: $removed entries removed, $skipped already absent."
146
+ fi
@@ -1,12 +1,12 @@
1
1
  #!/usr/bin/env python3
2
2
  """Compile rule frontmatter into ``router.json``.
3
3
 
4
- Reads ``.agent-src.uncompressed/rules/*.md``; produces deterministic JSON
4
+ Reads ``.agent-src.uncondensed/rules/*.md``; produces deterministic JSON
5
5
  mapping kernel + tier-1 + tier-2 rules to their triggers and routed
6
6
  artifacts, per ``docs/contracts/rule-router.md``.
7
7
 
8
8
  Stdlib-only, deterministic (sorted keys + sorted lists), idempotent.
9
- Wired into ``task generate-tools`` after the compress step.
9
+ Wired into ``task generate-tools`` after the condense step.
10
10
  """
11
11
  from __future__ import annotations
12
12
 
@@ -16,20 +16,20 @@ from pathlib import Path
16
16
 
17
17
  ROOT = Path(__file__).resolve().parent.parent
18
18
  # ADR-017: rules now live across multiple source roots. Legacy
19
- # .agent-src.uncompressed/rules/ is kept as a fallback for the
20
- # pure-compressed consumer projection.
21
- RULES_DIR = ROOT / ".agent-src.uncompressed" / "rules"
19
+ # .agent-src.uncondensed/rules/ is kept as a fallback for the
20
+ # pure-condensed consumer projection.
21
+ RULES_DIR = ROOT / ".agent-src.uncondensed" / "rules"
22
22
  OUT_PATH = ROOT / "dist" / "router.json"
23
23
  SETTINGS_PATH = ROOT / ".agent-settings.yml"
24
24
  SCHEMA_VERSION = 1
25
25
 
26
26
  # Compile-time rule toggles. Maps rule-id → settings predicate.
27
27
  # Rule omitted from router.json when predicate returns False.
28
- # Per road-to-token-frugality § Phase 8.2 — caveman.speak compile-time toggle.
28
+ # Per road-to-token-frugality § Phase 8.2 — telegraph.speak compile-time toggle.
29
29
  COMPILE_TIME_TOGGLES = {
30
- "caveman-speak": lambda s: bool(
31
- s.get("caveman", {}).get("enabled", True)
32
- ) and bool(s.get("caveman", {}).get("speak", True)),
30
+ "telegraph-speak": lambda s: bool(
31
+ s.get("telegraph", {}).get("enabled", True)
32
+ ) and bool(s.get("telegraph", {}).get("speak", True)),
33
33
  }
34
34
 
35
35
  # Maps legacy tier values to the router-canonical names. See
@@ -132,7 +132,7 @@ def _iter_rule_files() -> list[Path]:
132
132
  seen: dict[str, Path] = {}
133
133
  roots = artefact_roots()
134
134
  if not roots:
135
- # Pure-compressed fallback for consumer projections that vendor
135
+ # Pure-condensed fallback for consumer projections that vendor
136
136
  # the flat .agent-src/ tree without sources.
137
137
  if RULES_DIR.exists():
138
138
  for path in sorted(RULES_DIR.glob("*.md")):