@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,149 @@
1
+ #!/usr/bin/env python3
2
+ """Lint guard: ``module-management`` SKILL must stay framework-neutral.
3
+
4
+ Phase C Step 5 of road-to-configurable-modules. Refuses two regressions:
5
+
6
+ 1. ``framework:`` frontmatter key is back (locks the skill to one stack
7
+ again).
8
+ 2. ``app/Modules/`` literal appears outside the explicitly-labeled
9
+ "Laravel HMVC carve-out" section (drift back to a Laravel-only body).
10
+
11
+ Stack-specific paths inside their own carve-out sections (Laravel HMVC,
12
+ Symfony DDD-lite, Node monorepo, Python src layout, Go internal) are
13
+ allowed by construction \u2014 the section header is the carve-out boundary.
14
+
15
+ Exit codes:
16
+ 0 \u2014 file clean
17
+ 2 \u2014 lint violation (regression)
18
+ """
19
+ from __future__ import annotations
20
+
21
+ import re
22
+ import sys
23
+ from pathlib import Path
24
+
25
+ REPO_ROOT = Path(__file__).resolve().parent.parent
26
+ SKILL_PATH = (
27
+ REPO_ROOT
28
+ / "packages"
29
+ / "core"
30
+ / ".agent-src.uncondensed"
31
+ / "skills"
32
+ / "module-management"
33
+ / "SKILL.md"
34
+ )
35
+
36
+ CARVE_OUT_HEADER = "### Laravel HMVC carve-out"
37
+ FRONTMATTER_BANNED_KEYS = ("framework:",)
38
+ BODY_BANNED_PATTERNS = (
39
+ re.compile(r"\bapp/Modules/"),
40
+ re.compile(r"App\\\\Modules\\\\"),
41
+ )
42
+
43
+
44
+ def _split_frontmatter(text: str) -> tuple[str, str]:
45
+ """Return ``(frontmatter, body)`` \u2014 body starts after closing ``---``."""
46
+ if not text.startswith("---\n"):
47
+ return "", text
48
+ end = text.find("\n---\n", 4)
49
+ if end < 0:
50
+ return "", text
51
+ return text[4:end], text[end + 5:]
52
+
53
+
54
+ def _laravel_carveout_span(body: str) -> tuple[int, int] | None:
55
+ """Locate ``### Laravel HMVC carve-out`` and return ``(start, end)`` lines.
56
+
57
+ ``end`` is exclusive and points at the next ``### `` header (or EOF).
58
+ Returns ``None`` if the carve-out is missing.
59
+ """
60
+ lines = body.splitlines()
61
+ start: int | None = None
62
+ for idx, line in enumerate(lines):
63
+ if line.strip() == CARVE_OUT_HEADER:
64
+ start = idx
65
+ break
66
+ if start is None:
67
+ return None
68
+ end = len(lines)
69
+ for idx in range(start + 1, len(lines)):
70
+ if lines[idx].startswith("### "):
71
+ end = idx
72
+ break
73
+ return start, end
74
+
75
+
76
+ def _scan_body(body: str) -> list[str]:
77
+ """Return human-readable violations from the SKILL body."""
78
+ span = _laravel_carveout_span(body)
79
+ if span is None:
80
+ return [
81
+ "Laravel HMVC carve-out section "
82
+ f"({CARVE_OUT_HEADER!r}) missing \u2014 add it back before "
83
+ "moving Laravel-specific prose around."
84
+ ]
85
+ carve_start, carve_end = span
86
+ lines = body.splitlines()
87
+ violations: list[str] = []
88
+ for idx, line in enumerate(lines):
89
+ if carve_start <= idx < carve_end:
90
+ continue
91
+ for pattern in BODY_BANNED_PATTERNS:
92
+ if pattern.search(line):
93
+ violations.append(
94
+ f"line {idx + 1}: {pattern.pattern!r} outside the "
95
+ "Laravel HMVC carve-out section "
96
+ f"\u2014 {line.strip()!r}"
97
+ )
98
+ break
99
+ return violations
100
+
101
+
102
+ def _scan_frontmatter(fm: str) -> list[str]:
103
+ violations: list[str] = []
104
+ for line in fm.splitlines():
105
+ stripped = line.strip()
106
+ for banned in FRONTMATTER_BANNED_KEYS:
107
+ if stripped.startswith(banned):
108
+ violations.append(
109
+ f"frontmatter has banned key {banned!r} \u2014 "
110
+ "module-management is stack-agnostic; "
111
+ "stack hints live in body carve-outs"
112
+ )
113
+ return violations
114
+
115
+
116
+ def main() -> int:
117
+ if not SKILL_PATH.is_file():
118
+ print(
119
+ f"error: SKILL.md not found at {SKILL_PATH}",
120
+ file=sys.stderr,
121
+ )
122
+ return 2
123
+ text = SKILL_PATH.read_text(encoding="utf-8")
124
+ fm, body = _split_frontmatter(text)
125
+ issues = _scan_frontmatter(fm) + _scan_body(body)
126
+ if not issues:
127
+ print(
128
+ f"\u2705 {SKILL_PATH.relative_to(REPO_ROOT)} "
129
+ "framework-neutral check: clean"
130
+ )
131
+ return 0
132
+ print(
133
+ f"\u274c {SKILL_PATH.relative_to(REPO_ROOT)} "
134
+ "framework-neutral check: FAIL",
135
+ file=sys.stderr,
136
+ )
137
+ for issue in issues:
138
+ print(f" {issue}", file=sys.stderr)
139
+ print(
140
+ " Fix: keep stack-specific prose inside its labeled "
141
+ "carve-out section; do not put `framework:` back into "
142
+ "frontmatter.",
143
+ file=sys.stderr,
144
+ )
145
+ return 2
146
+
147
+
148
+ if __name__ == "__main__":
149
+ raise SystemExit(main())
@@ -10,7 +10,7 @@ Allowed: directory mentions (`agents/roadmaps/`, `agents/roadmaps/archive/`,
10
10
  `agents/roadmaps/skipped/`). Forbidden: specific `*.md` files inside those
11
11
  directories.
12
12
 
13
- Contract: .agent-src.uncompressed/rules/no-roadmap-references.md
13
+ Contract: .agent-src.uncondensed/rules/no-roadmap-references.md
14
14
 
15
15
  Exit codes: 0 = clean, 1 = violations, 3 = internal error.
16
16
  """
@@ -28,12 +28,12 @@ ROOT = Path(__file__).resolve().parent.parent
28
28
  # Stable artefact trees — every `*.md` below MUST be free of roadmap-file
29
29
  # citations. Directory mentions stay allowed (the regex below excludes them).
30
30
  STABLE_TREES = (
31
- ".agent-src.uncompressed/rules",
32
- ".agent-src.uncompressed/skills",
33
- ".agent-src.uncompressed/commands",
34
- ".agent-src.uncompressed/contexts",
35
- ".agent-src.uncompressed/templates",
36
- ".agent-src.uncompressed/personas",
31
+ ".agent-src.uncondensed/rules",
32
+ ".agent-src.uncondensed/skills",
33
+ ".agent-src.uncondensed/commands",
34
+ ".agent-src.uncondensed/contexts",
35
+ ".agent-src.uncondensed/templates",
36
+ ".agent-src.uncondensed/personas",
37
37
  "agents/settings/contexts",
38
38
  "docs/guidelines",
39
39
  "docs/contracts",
@@ -64,7 +64,7 @@ ROADMAP_FILE_RE = re.compile(
64
64
  # documentation purposes — the rule itself, the companion CI script docs,
65
65
  # and the contract doc that names the rule.
66
66
  SELF_DOCUMENTING_ALLOWLIST = frozenset({
67
- ".agent-src.uncompressed/rules/no-roadmap-references.md",
67
+ ".agent-src.uncondensed/rules/no-roadmap-references.md",
68
68
  "docs/guidelines/agent-infra/no-roadmap-references.md",
69
69
  })
70
70
 
@@ -129,7 +129,7 @@ def format_text(violations: list[Violation]) -> str:
129
129
  lines.append(f" 🔴 {v.file}:{v.line} → {v.match}")
130
130
  lines.append(
131
131
  "\nPromote the durable conclusion to agents/settings/contexts/ and cite that "
132
- "instead. See .agent-src.uncompressed/rules/no-roadmap-references.md."
132
+ "instead. See .agent-src.uncondensed/rules/no-roadmap-references.md."
133
133
  )
134
134
  return "\n".join(lines)
135
135
 
@@ -2,7 +2,7 @@
2
2
  """
3
3
  Portability checker for agent-config packages.
4
4
 
5
- Scans .agent-src/ and .agent-src.uncompressed/ for project-specific references
5
+ Scans .agent-src/ and .agent-src.uncondensed/ for project-specific references
6
6
  that violate package portability (the package must work in ANY project).
7
7
 
8
8
  Allowed: references to packages/libraries (laravel, pest, phpstan, etc.)
@@ -162,7 +162,7 @@ ALLOWLIST = [
162
162
  ]
163
163
 
164
164
  # Directories to scan (only package files, not project-specific agents/)
165
- SCAN_DIRS = [".agent-src", ".agent-src.uncompressed"]
165
+ SCAN_DIRS = [".agent-src", ".agent-src.uncondensed"]
166
166
 
167
167
  # Additional root-level files shipped by the package that must also stay
168
168
  # portable. These are read by agents working on the package itself and —
@@ -478,7 +478,7 @@ def scan_all(root: Path) -> tuple[List[Violation], list[str]]:
478
478
 
479
479
  Scanning has four layers:
480
480
  1. Auto-detected identifiers — applied to `.agent-src/` and
481
- `.agent-src.uncompressed/` only. The package's own root AGENTS.md and
481
+ `.agent-src.uncondensed/` only. The package's own root AGENTS.md and
482
482
  copilot-instructions.md are meta docs ABOUT the package, so the
483
483
  detector's own hits (e.g. "event4u", "agent-config") are expected.
484
484
  2. Optional FORBIDDEN_IDENTIFIERS from AGENT_CONFIG_BLOCKLIST —
@@ -4,12 +4,12 @@ Public-catalog link checker (regression guard for road-to-pr-34-followups 1.1).
4
4
 
5
5
  `docs/catalog.md` is the consumer-facing catalog rendered by
6
6
  `scripts/generate_index.py`. Consumers receive the package via npm /
7
- Composer / archive surfaces — `.agent-src.uncompressed/` is **not**
7
+ Composer / archive surfaces — `.agent-src.uncondensed/` is **not**
8
8
  shipped (see `package.json#files`). Every link in the public catalog
9
9
  must therefore resolve to a shipped surface.
10
10
 
11
11
  Checks:
12
- 1. No link href contains `.agent-src.uncompressed/`.
12
+ 1. No link href contains `.agent-src.uncondensed/`.
13
13
  2. Every link href resolves on disk.
14
14
  3. Every link href starts with a path declared in `package.json#files`
15
15
  (or one of the always-shipped root files).
@@ -34,7 +34,7 @@ CATALOG = ROOT / "docs" / "catalog.md"
34
34
  PACKAGE_JSON = ROOT / "package.json"
35
35
 
36
36
  LINK_RE = re.compile(r"\]\((?P<href>[^)\s]+)(?:\s+\"[^\"]*\")?\)")
37
- FORBIDDEN_PREFIX = ".agent-src.uncompressed/"
37
+ FORBIDDEN_PREFIX = ".agent-src.uncondensed/"
38
38
 
39
39
 
40
40
  def _shipped_roots() -> tuple[set[str], set[str]]:
@@ -103,7 +103,7 @@ def main() -> int:
103
103
 
104
104
  print(f"❌ docs/catalog.md — {total_violations} violation(s):")
105
105
  if forbidden:
106
- print(f"\n {len(forbidden)} link(s) point at unshipped `.agent-src.uncompressed/`:")
106
+ print(f"\n {len(forbidden)} link(s) point at unshipped `.agent-src.uncondensed/`:")
107
107
  for ln, href in forbidden[:10]:
108
108
  print(f" line {ln}: {href}")
109
109
  if len(forbidden) > 10:
@@ -39,6 +39,7 @@ SKIP_DIRS = [
39
39
  "agents/runtime/council/questions", # design Q&A trail — forward-refs to planned artifacts
40
40
  "agents/evidence/analysis", # plate-comparison working docs — forward-refs to planned artifacts
41
41
  "agents/runtime", # volatile / machine-generated artefacts (gitignored)
42
+ "agents/tmp", # transient working docs (gitignored) — pr-bodies, council questions, manual-step scratchpads
42
43
  ]
43
44
 
44
45
  # Per-file opt-out marker. When present in the first 10 lines of a .md
@@ -88,7 +89,7 @@ UNCHECKED_TODO_PATTERN = re.compile(r'^\s*[-*+]\s+\[[ ~]\]\s')
88
89
  _SKIP_NAMES = {"the", "a", "an", "this", "that", "your", "my", "no", "any", "each", "one",
89
90
  "always", "auto", "fail", "vue", "guidelines", "naming",
90
91
  "orderBy", "no-commit", "skill-linter", "skill-validator",
91
- "skill-refactor", "skill-caveman-compression", "skill-decompression",
92
+ "skill-refactor", "skill-telegraph-condensation", "skill-decondensation",
92
93
  "broad_scope", "composer"}
93
94
 
94
95
  # Paths that are clearly example/template placeholders (not real references)
@@ -118,7 +119,7 @@ EXAMPLE_PATH_PATTERNS = [
118
119
  re.compile(r"skills/[\w-]+\.md"), # short skill refs in examples (not SKILL.md path)
119
120
  re.compile(r"skills/[\w-]+/SKILL\.md"), # example skill paths in commands
120
121
  re.compile(r"\{"), # template placeholders like {module}
121
- re.compile(r"\.compression-hashes\.json"), # JSON file, not .md
122
+ re.compile(r"\.condensation-hashes\.json"), # JSON file, not .md
122
123
  re.compile(r"-foo\.(md|json|yml|yaml)$"), # `-foo.<ext>` placeholder examples
123
124
  re.compile(r"-bar\.(md|json|yml|yaml)$"), # `-bar.<ext>` placeholder examples
124
125
  # Forward references inside in-flight planning docs (road-to-
@@ -211,7 +212,7 @@ def _extract_personas_frontmatter(text: str) -> list[tuple[int, str]]:
211
212
 
212
213
  def _find_suggestion(path: str, root: Path) -> str:
213
214
  name = Path(path).name
214
- for d in [root / ".agent-src", root / ".agent-src.uncompressed", root / "agents"]:
215
+ for d in [root / ".agent-src", root / ".agent-src.uncondensed", root / "agents"]:
215
216
  if d.exists():
216
217
  for f in d.rglob(name):
217
218
  return str(f.relative_to(root))
@@ -313,18 +314,18 @@ def check_file(filepath: Path, artifacts: dict[str, set[str]], root: Path) -> Li
313
314
  else:
314
315
  # Strip leading ./ and try with prefixes
315
316
  ref = raw_ref.lstrip("./")
316
- for prefix in [root, root / ".agent-src", root / ".agent-src.uncompressed"]:
317
+ for prefix in [root, root / ".agent-src", root / ".agent-src.uncondensed"]:
317
318
  if (prefix / ref).exists():
318
319
  resolved = True
319
320
  break
320
321
  # `.augment/` is a local projection of `.agent-src/` (gitignored).
321
322
  # In CI the projection doesn't exist, so resolve `.augment/X`
322
323
  # against the canonical source at `.agent-src/X` (and the
323
- # uncompressed authoring tree as a fallback). Note: `raw_ref`
324
+ # uncondensed authoring tree as a fallback). Note: `raw_ref`
324
325
  # keeps the leading dot; `ref` above was stripped via lstrip.
325
326
  if not resolved and raw_ref.startswith(".augment/"):
326
327
  rel = raw_ref[len(".augment/") :]
327
- for prefix in [root / ".agent-src", root / ".agent-src.uncompressed"]:
328
+ for prefix in [root / ".agent-src", root / ".agent-src.uncondensed"]:
328
329
  if (prefix / rel).exists():
329
330
  resolved = True
330
331
  break
@@ -0,0 +1,112 @@
1
+ #!/usr/bin/env python3
2
+ """Release-PR shape checker — fail-closed gate for `docs/contracts/release-pr-gating.md`.
3
+
4
+ Given a PR number, fetches the file list via `gh pr diff <n> --name-only`
5
+ and asserts every changed file matches the version-bump allowlist:
6
+
7
+ * `package.json`
8
+ * `CHANGELOG.md`
9
+ * `.claude-plugin/marketplace.json`
10
+ * `packages/*/pack.yaml`
11
+ * `packages/*/README.md`
12
+
13
+ Exit codes:
14
+
15
+ 0 — every file matches; release-PR is shape-clean and the heavy install /
16
+ test matrices may skip per `release-pr-gating.md`.
17
+ 1 — at least one file outside the allowlist OR no files at all. Stdout
18
+ lists each offending entry one per line with an "OUT-OF-SHAPE: " prefix
19
+ so CI logs surface the precise reason.
20
+ 2 — usage / environment error (gh missing, invalid PR number, gh non-zero).
21
+
22
+ Design constraints from the roadmap:
23
+
24
+ * stdlib-only — no jsonschema, no requests, no PyYAML
25
+ * ≤ 150 LOC including this docstring
26
+ * deterministic — same diff in, same exit
27
+ """
28
+
29
+ from __future__ import annotations
30
+
31
+ import argparse
32
+ import fnmatch
33
+ import shutil
34
+ import subprocess
35
+ import sys
36
+
37
+ ALLOWLIST_GLOBS = (
38
+ "package.json",
39
+ "CHANGELOG.md",
40
+ ".claude-plugin/marketplace.json",
41
+ "packages/*/pack.yaml",
42
+ "packages/*/README.md",
43
+ )
44
+
45
+
46
+ def _matches(path: str) -> bool:
47
+ return any(fnmatch.fnmatch(path, pat) for pat in ALLOWLIST_GLOBS)
48
+
49
+
50
+ def _gh_diff_files(pr: str) -> list[str]:
51
+ """Return the list of files changed in `pr`, via `gh pr diff --name-only`."""
52
+ if shutil.which("gh") is None:
53
+ print("ERROR: gh CLI not on PATH; cannot fetch PR diff.", file=sys.stderr)
54
+ sys.exit(2)
55
+ try:
56
+ out = subprocess.run(
57
+ ["gh", "pr", "diff", pr, "--name-only"],
58
+ check=True,
59
+ capture_output=True,
60
+ text=True,
61
+ ).stdout
62
+ except subprocess.CalledProcessError as exc:
63
+ stderr = (exc.stderr or "").strip()
64
+ print(f"ERROR: gh pr diff {pr} failed: {stderr}", file=sys.stderr)
65
+ sys.exit(2)
66
+ return [line.strip() for line in out.splitlines() if line.strip()]
67
+
68
+
69
+ def check(files: list[str]) -> int:
70
+ """Return exit code; print per-file diff to stdout on failure."""
71
+ if not files:
72
+ print("OUT-OF-SHAPE: empty diff — release PR must touch at least one file.")
73
+ return 1
74
+ bad = [f for f in files if not _matches(f)]
75
+ if bad:
76
+ for f in bad:
77
+ print(f"OUT-OF-SHAPE: {f}")
78
+ return 1
79
+ print(f"SHAPE-CLEAN: {len(files)} file(s) — all within release-PR allowlist.")
80
+ for f in files:
81
+ print(f" ok: {f}")
82
+ return 0
83
+
84
+
85
+ def _read_files_arg(value: str) -> list[str]:
86
+ """`--files` accepts comma-separated paths or `-` to read stdin (one per line)."""
87
+ if value == "-":
88
+ return [line.strip() for line in sys.stdin.read().splitlines() if line.strip()]
89
+ return [v.strip() for v in value.split(",") if v.strip()]
90
+
91
+
92
+ def main(argv: list[str] | None = None) -> int:
93
+ parser = argparse.ArgumentParser(
94
+ description="Fail-closed shape checker for release PRs.",
95
+ )
96
+ src = parser.add_mutually_exclusive_group(required=True)
97
+ src.add_argument("--pr", help="GitHub PR number; uses `gh pr diff --name-only`.")
98
+ src.add_argument(
99
+ "--files",
100
+ help=(
101
+ "Comma-separated file list, or '-' to read one path per line from "
102
+ "stdin. Bypasses gh — useful for tests and local previews."
103
+ ),
104
+ )
105
+ args = parser.parse_args(argv)
106
+
107
+ files = _gh_diff_files(args.pr) if args.pr else _read_files_arg(args.files)
108
+ return check(files)
109
+
110
+
111
+ if __name__ == "__main__":
112
+ sys.exit(main())
@@ -99,11 +99,11 @@ def validate(text: str, strict: bool = False) -> tuple[int, str]:
99
99
 
100
100
 
101
101
  def cmd_scan_dir(root: Path) -> int:
102
- # If the requested root is the legacy ".agent-src.uncompressed" and it
102
+ # If the requested root is the legacy ".agent-src.uncondensed" and it
103
103
  # no longer exists (post-monorepo-move), fall back to artefact_roots()
104
- # so every packages/*/.agent-src.uncompressed/ is scanned.
104
+ # so every packages/*/.agent-src.uncondensed/ is scanned.
105
105
  if not root.is_dir():
106
- legacy = ROOT / ".agent-src.uncompressed"
106
+ legacy = ROOT / ".agent-src.uncondensed"
107
107
  if root.resolve() == legacy.resolve():
108
108
  roots = artefact_roots()
109
109
  if not roots:
@@ -28,7 +28,7 @@ import sys
28
28
  from pathlib import Path
29
29
 
30
30
  REPO_ROOT = Path(__file__).resolve().parent.parent
31
- RULES_DIR_REL = ".agent-src.uncompressed/rules"
31
+ RULES_DIR_REL = ".agent-src.uncondensed/rules"
32
32
  SAFETY_FLOOR = (
33
33
  "non-destructive-by-default.md",
34
34
  "commit-policy.md",
@@ -5,8 +5,8 @@ CI guard for P3.3 of road-to-portable-runtime-and-update-check.md.
5
5
 
6
6
  A release bump of ``package.json`` must update
7
7
  ``agent_config_version`` in
8
- ``.agent-src.uncompressed/templates/agents/agent-project-settings.example.yml``
9
- (and its compressed twin under ``.agent-src/``) in lockstep. Otherwise
8
+ ``.agent-src.uncondensed/templates/agents/agent-project-settings.example.yml``
9
+ (and its condensed twin under ``.agent-src/``) in lockstep. Otherwise
10
10
  a fresh ``init`` on a new project would bootstrap onto a stale pin,
11
11
  and the pin-resolver would re-exec back to the older version.
12
12
 
@@ -30,8 +30,8 @@ from _lib.agent_src import resolve_logical # noqa: E402
30
30
  PACKAGE_JSON = REPO_ROOT / "package.json"
31
31
 
32
32
  # Source-of-truth template lives under whichever artefact root owns it
33
- # (legacy .agent-src.uncompressed/ pre-move, packages/*/.agent-src.uncompressed/
34
- # post-ADR-017). Compressed twin always lands at the flat .agent-src/ surface.
33
+ # (legacy .agent-src.uncondensed/ pre-move, packages/*/.agent-src.uncondensed/
34
+ # post-ADR-017). Condensed twin always lands at the flat .agent-src/ surface.
35
35
  _TEMPLATE_LOGICAL = "templates/agents/agent-project-settings.example.yml"
36
36
 
37
37
 
@@ -41,7 +41,7 @@ def _template_files() -> tuple[Path, ...]:
41
41
  if src is not None:
42
42
  files.append(src)
43
43
  else:
44
- files.append(REPO_ROOT / ".agent-src.uncompressed" / _TEMPLATE_LOGICAL)
44
+ files.append(REPO_ROOT / ".agent-src.uncondensed" / _TEMPLATE_LOGICAL)
45
45
  files.append(REPO_ROOT / ".agent-src" / _TEMPLATE_LOGICAL)
46
46
  return tuple(files)
47
47
  PIN_LINE_RE = re.compile(r"^\s*agent_config_version\s*:\s*\"?([^\"\s#]*)\"?")
@@ -3,7 +3,7 @@
3
3
  Token-Optimizer freshness validator.
4
4
 
5
5
  Per `road-to-token-optimization.md` P1.3: parses the catalog table inside
6
- `.agent-src.uncompressed/skills/token-optimizer/SKILL.md`, verifies every
6
+ `.agent-src.uncondensed/skills/token-optimizer/SKILL.md`, verifies every
7
7
  cited internal asset exists, and `grep`s the trigger keywords against
8
8
  each target file. Fails on missing target OR keyword mismatch.
9
9
 
@@ -27,7 +27,7 @@ from _lib.agent_src import resolve_logical # noqa: E402
27
27
  # Post-ADR-017 the source-of-truth lives under whichever package owns
28
28
  # the skill; resolve_logical() walks every artefact root.
29
29
  SKILL = resolve_logical("skills/token-optimizer/SKILL.md") or (
30
- REPO_ROOT / ".agent-src.uncompressed" / "skills" / "token-optimizer" / "SKILL.md"
30
+ REPO_ROOT / ".agent-src.uncondensed" / "skills" / "token-optimizer" / "SKILL.md"
31
31
  )
32
32
 
33
33
  from _lib.agent_src import strip_source_prefix # noqa: E402
@@ -83,7 +83,7 @@ def resolve(path: str) -> Path | None:
83
83
  return None
84
84
  cleaned = path.strip().lstrip("`").rstrip("`")
85
85
  cleaned = cleaned.split(")")[0].lstrip("[(")
86
- # Catalog rows still cite the legacy .agent-src.uncompressed/ prefix
86
+ # Catalog rows still cite the legacy .agent-src.uncondensed/ prefix
87
87
  # for compactness; resolve those across every packages/* root.
88
88
  logical = strip_source_prefix(cleaned)
89
89
  if logical is not None: