@event4u/agent-config 3.3.0 → 4.2.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 (561) 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 +216 -3
  144. package/CONTRIBUTING.md +31 -12
  145. package/README.md +21 -12
  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/atomic.js +92 -0
  164. package/dist/install/atomic.js.map +1 -0
  165. package/dist/install/conflict.js +196 -0
  166. package/dist/install/conflict.js.map +1 -0
  167. package/dist/install/detect.js +218 -0
  168. package/dist/install/detect.js.map +1 -0
  169. package/dist/install/paths.js +82 -0
  170. package/dist/install/paths.js.map +1 -0
  171. package/dist/install/plan.js +157 -0
  172. package/dist/install/plan.js.map +1 -0
  173. package/dist/install/txlog.js +140 -0
  174. package/dist/install/txlog.js.map +1 -0
  175. package/dist/install/types.js +19 -0
  176. package/dist/install/types.js.map +1 -0
  177. package/dist/install/wizard-plan.js +184 -0
  178. package/dist/install/wizard-plan.js.map +1 -0
  179. package/dist/mcp/registry-manifest.json +4 -4
  180. package/dist/router.json +67 -19
  181. package/dist/server/app.js +6 -0
  182. package/dist/server/app.js.map +1 -1
  183. package/dist/server/routes/install.js +358 -0
  184. package/dist/server/routes/install.js.map +1 -0
  185. package/dist/server/routes/wizard.js +468 -32
  186. package/dist/server/routes/wizard.js.map +1 -1
  187. package/dist/server/routes/workspace.js +396 -0
  188. package/dist/server/routes/workspace.js.map +1 -0
  189. package/dist/server/schemas/settings.js +5 -3
  190. package/dist/server/schemas/settings.js.map +1 -1
  191. package/dist/ui/assets/index-BDAhhpDV.js +40 -0
  192. package/dist/ui/assets/index-BDAhhpDV.js.map +1 -0
  193. package/dist/ui/assets/index-BXZILUxe.css +1 -0
  194. package/dist/ui/index.html +2 -2
  195. package/docs/MIGRATION.md +1 -1
  196. package/docs/adrs/cost/0001-hard-stop-hook.md +1 -1
  197. package/docs/adrs/router/0001-three-tier-routing.md +4 -4
  198. package/docs/adrs/schema/0001-json-schema-frontmatter.md +1 -1
  199. package/docs/adrs/smoke/0001-per-tier-smoke-scripts.md +4 -4
  200. package/docs/adrs/{caveman → telegraph}/0001-default-off-until-bench.md +9 -9
  201. package/docs/adrs/telegraph/README.md +9 -0
  202. package/docs/architecture/augment-projection.md +4 -4
  203. package/docs/architecture/claude-bundle.md +1 -1
  204. package/docs/architecture/current-onboard-baseline.md +3 -3
  205. package/docs/architecture/multi-tool-projection.md +10 -10
  206. package/docs/architecture/source-projection.md +27 -27
  207. package/docs/architecture.md +19 -15
  208. package/docs/archive/CHANGELOG-pre-2.11.0.md +2 -2
  209. package/docs/archive/CHANGELOG-pre-2.15.0.md +3 -3
  210. package/docs/archive/CHANGELOG-pre-2.16.0.md +1 -1
  211. package/docs/archive/CHANGELOG-pre-2.2.0.md +70 -70
  212. package/docs/archive/CHANGELOG-pre-2.20.0.md +2 -2
  213. package/docs/archive/CHANGELOG-pre-2.25.0.md +15 -15
  214. package/docs/archive/CHANGELOG-pre-3.0.0.md +4 -4
  215. package/docs/archive/CHANGELOG-pre-3.1.0.md +2 -2
  216. package/docs/archive/CHANGELOG-pre-3.2.0.md +3 -3
  217. package/docs/benchmark.md +65 -0
  218. package/docs/benchmarks.md +16 -16
  219. package/docs/catalog.md +17 -15
  220. package/docs/contracts/CHANGELOG-conventions.md +1 -1
  221. package/docs/contracts/STABILITY.md +2 -2
  222. package/docs/contracts/adoption-signal-floor.md +110 -0
  223. package/docs/contracts/adr-chat-history-split.md +4 -4
  224. package/docs/contracts/adr-command-suggestion.md +4 -4
  225. package/docs/contracts/adr-gtm-context-spine.md +1 -1
  226. package/docs/contracts/adr-implement-ticket-runtime.md +4 -4
  227. package/docs/contracts/adr-install-user-type-axis.md +1 -1
  228. package/docs/contracts/adr-layout.md +2 -2
  229. package/docs/contracts/adr-product-ui-track.md +10 -10
  230. package/docs/contracts/adr-user-types-axis.md +3 -3
  231. package/docs/contracts/adr-wing4-context-spine.md +1 -1
  232. package/docs/contracts/agent-memory-contract.md +3 -3
  233. package/docs/contracts/agents-md-tech-stack.md +2 -2
  234. package/docs/contracts/ai-council-config.md +2 -2
  235. package/docs/contracts/at-rest-encryption.md +4 -0
  236. package/docs/contracts/audit-log-v1.md +1 -1
  237. package/docs/contracts/benchmark-ab-contract.md +101 -0
  238. package/docs/contracts/benchmark-corpus-spec.md +1 -1
  239. package/docs/contracts/branch-protection-policy.md +98 -0
  240. package/docs/contracts/ci-cost-budget.md +106 -0
  241. package/docs/contracts/ci-green-floor.md +141 -0
  242. package/docs/contracts/command-clusters.md +6 -6
  243. package/docs/contracts/command-surface-tiers.md +2 -2
  244. package/docs/contracts/command-taxonomy.md +2 -2
  245. package/docs/contracts/{compression-default-kill-criterion.md → condensation-default-kill-criterion.md} +29 -29
  246. package/docs/contracts/config-presets.md +1 -1
  247. package/docs/contracts/context-paths.md +3 -3
  248. package/docs/contracts/context-spine.md +1 -1
  249. package/docs/contracts/cost-summary-schema.md +12 -12
  250. package/docs/contracts/cross-wing-handoff.md +4 -4
  251. package/docs/contracts/daily-workspace.md +4 -0
  252. package/docs/contracts/decision-trace-v1.md +2 -2
  253. package/docs/contracts/discovery-manifest.md +4 -4
  254. package/docs/contracts/explain-modes.md +4 -0
  255. package/docs/contracts/file-ownership-matrix.json +3493 -3318
  256. package/docs/contracts/file-ownership-matrix.md +3 -3
  257. package/docs/contracts/frontmatter-contract.md +4 -4
  258. package/docs/contracts/ghostwriter-schema.md +3 -3
  259. package/docs/contracts/gui-wizard.md +110 -97
  260. package/docs/contracts/harness-expectations.md +123 -0
  261. package/docs/contracts/host-agent-protocol.md +4 -0
  262. package/docs/contracts/implement-ticket-flow.md +9 -9
  263. package/docs/contracts/install-scopes.md +77 -0
  264. package/docs/contracts/iron-law-overrides.txt +1 -1
  265. package/docs/contracts/kernel-membership.md +26 -26
  266. package/docs/contracts/linear-ai-rules-inclusion.md +1 -1
  267. package/docs/contracts/linter-structural-model.md +2 -2
  268. package/docs/contracts/load-context-budget-model.md +4 -4
  269. package/docs/contracts/load-context-schema.md +13 -13
  270. package/docs/contracts/local-analytics.md +4 -0
  271. package/docs/contracts/local-knowledge-ingestion.md +1 -1
  272. package/docs/contracts/mcp-cloud-scope.md +2 -2
  273. package/docs/contracts/mcp-phase-1-scope.md +3 -3
  274. package/docs/contracts/measurement-baseline.md +5 -5
  275. package/docs/contracts/mental-models.md +30 -30
  276. package/docs/contracts/multi-tool-projection-fidelity.md +4 -4
  277. package/docs/contracts/namespace.md +4 -4
  278. package/docs/contracts/orchestration-dsl-v1.md +7 -7
  279. package/docs/contracts/package-self-orientation.md +12 -12
  280. package/docs/contracts/persona-schema.md +6 -6
  281. package/docs/contracts/pilot/language-and-tone.md +1 -1
  282. package/docs/contracts/plain-language-surface.md +117 -0
  283. package/docs/contracts/profile-system.md +3 -3
  284. package/docs/contracts/release-pr-gating.md +103 -0
  285. package/docs/contracts/role-experience.md +3 -3
  286. package/docs/contracts/rule-classification.md +13 -13
  287. package/docs/contracts/rule-interactions.md +4 -4
  288. package/docs/contracts/rule-interactions.yml +30 -30
  289. package/docs/contracts/rule-priority-hierarchy.md +13 -13
  290. package/docs/contracts/rule-router.md +2 -2
  291. package/docs/contracts/safety-model.md +1 -1
  292. package/docs/contracts/skill-distribution-channels.md +61 -0
  293. package/docs/contracts/skill-domains.md +2 -2
  294. package/docs/contracts/smoke-contracts.md +5 -5
  295. package/docs/contracts/telegraph-telemetry.md +83 -0
  296. package/docs/contracts/trust-and-safety.md +5 -5
  297. package/docs/contracts/ui-stack-extension.md +7 -7
  298. package/docs/contracts/ui-track-flow.md +9 -9
  299. package/docs/contracts/user-type-schema.md +4 -4
  300. package/docs/contracts/workflow-packs.md +4 -4
  301. package/docs/contracts/workspace-documents.md +4 -0
  302. package/docs/customization.md +28 -8
  303. package/docs/decisions/ADR-001-kernel-swap-deferred.md +6 -6
  304. package/docs/decisions/ADR-002-kernel-bucket-overrides.md +11 -11
  305. package/docs/decisions/ADR-003-flat-cluster-subs-and-colon-syntax.md +2 -2
  306. package/docs/decisions/ADR-004-rule-governance-pruning.md +4 -4
  307. package/docs/decisions/ADR-005-subagent-worktrees.md +7 -7
  308. package/docs/decisions/ADR-011-domain-pack-readiness.md +6 -6
  309. package/docs/decisions/ADR-013-discovery-frontmatter-contract.md +3 -3
  310. package/docs/decisions/ADR-015-discovery-manifest-contract.md +3 -3
  311. package/docs/decisions/ADR-017-monorepo-physical-layout.md +10 -10
  312. package/docs/decisions/ADR-018-trust-and-safety-layer.md +6 -6
  313. package/docs/decisions/ADR-019-router-json-dist-location.md +2 -2
  314. package/docs/decisions/ADR-020-global-only-consumer-scope.md +2 -2
  315. package/docs/decisions/ADR-021-deployment-shape.md +3 -3
  316. package/docs/decisions/ADR-022-daily-workspace-decomposition.md +1 -1
  317. package/docs/decisions/ADR-027-changelog-machine-vs-manual.md +2 -2
  318. package/docs/decisions/ADR-028-root-layout.md +7 -7
  319. package/docs/decisions/ADR-029-multi-workspace-deferred.md +2 -2
  320. package/docs/decisions/ADR-rule-kernel-and-router.md +5 -5
  321. package/docs/deploy/connector-setup.md +2 -2
  322. package/docs/deploy/policy-cookbook.md +2 -2
  323. package/docs/deploy/team-deployment-posture.md +20 -0
  324. package/docs/development.md +17 -17
  325. package/docs/distribution/registries.md +32 -0
  326. package/docs/distribution/registry-submissions.md +85 -0
  327. package/docs/distribution/telemetry-schema.md +1 -1
  328. package/docs/getting-started-by-role.md +45 -3
  329. package/docs/getting-started.md +2 -2
  330. package/docs/guidelines/agent-infra/5w2h-analysis.md +3 -3
  331. package/docs/guidelines/agent-infra/ask-when-uncertain-demos.md +1 -1
  332. package/docs/guidelines/agent-infra/asking-and-brevity-examples.md +3 -3
  333. package/docs/guidelines/agent-infra/carve-out-predicates.md +3 -3
  334. package/docs/guidelines/agent-infra/critical-thinking.md +4 -4
  335. package/docs/guidelines/agent-infra/direct-answers-demos.md +1 -1
  336. package/docs/guidelines/agent-infra/first-principles.md +2 -2
  337. package/docs/guidelines/agent-infra/inversion-thinking.md +5 -5
  338. package/docs/guidelines/agent-infra/layered-settings.md +56 -2
  339. package/docs/guidelines/agent-infra/mental-models.md +3 -3
  340. package/docs/guidelines/agent-infra/roadmap-progress-mechanics.md +2 -2
  341. package/docs/guidelines/agent-infra/rule-type-governance.md +1 -1
  342. package/docs/guidelines/agent-infra/scqa-framework.md +5 -5
  343. package/docs/guidelines/agent-infra/self-improvement-pipeline.md +2 -2
  344. package/docs/guidelines/agent-infra/six-hats.md +3 -3
  345. package/docs/guidelines/agent-infra/skill-quality-checklist.md +5 -5
  346. package/docs/guidelines/agent-infra/systems-thinking.md +1 -1
  347. package/docs/guidelines/agent-infra/verify-before-complete-demos.md +1 -1
  348. package/docs/guidelines/augment-portability-patterns.md +4 -4
  349. package/docs/guidelines/cross-role-handoff.md +2 -2
  350. package/docs/guidelines/php/php-coding-patterns.md +1 -1
  351. package/docs/guidelines/prompt-templates.md +6 -6
  352. package/docs/maintainers/dev-mode.md +1 -1
  353. package/docs/mcp.md +1 -1
  354. package/docs/parity/bench.json +3 -3
  355. package/docs/parity/ruflo.md +2 -2
  356. package/docs/profiles.md +11 -11
  357. package/docs/quality.md +11 -11
  358. package/docs/safety.md +3 -3
  359. package/docs/setup/mcp-client-config.md +1 -1
  360. package/docs/setup/mcp-r2-bootstrap.md +1 -1
  361. package/docs/setup/mcp-server-docker.md +3 -3
  362. package/docs/setup/per-ide/windsurf.md +1 -1
  363. package/docs/skills-catalog.md +8 -7
  364. package/docs/troubleshooting.md +1 -1
  365. package/docs/walkthroughs/daily-workspace-a11y.md +87 -0
  366. package/llms.txt +7 -6
  367. package/package.json +1 -1
  368. package/scripts/__pycache__/validate_frontmatter.cpython-312.pyc +0 -0
  369. package/scripts/_archive/README.md +2 -2
  370. package/scripts/_archive/_backfill_skill_domains.py +3 -3
  371. package/scripts/_archive/_bootstrap_tier_frontmatter.py +3 -3
  372. package/scripts/_archive/_p43_bodies.py +10 -10
  373. package/scripts/_archive/{_p43_compress.py → _p43_condense.py} +5 -5
  374. package/scripts/_archive/_p4_migrate.py +7 -7
  375. package/scripts/_archive/_phase2_shim_helper.py +1 -1
  376. package/scripts/_archive/_pilot_council_question.py +5 -5
  377. package/scripts/_cli/explain_last/inputs.py +1 -1
  378. package/scripts/_lib/__pycache__/__init__.cpython-312.pyc +0 -0
  379. package/scripts/_lib/__pycache__/agent_src.cpython-312.pyc +0 -0
  380. package/scripts/_lib/agent_settings.py +195 -1
  381. package/scripts/_lib/agent_src.py +19 -19
  382. package/scripts/_lib/bench_ab_cache.py +162 -0
  383. package/scripts/_lib/bench_ab_scoring.py +209 -0
  384. package/scripts/_lib/{bench_caveman.py → bench_telegraph.py} +21 -21
  385. package/scripts/_lib/{bench_caveman_report.py → bench_telegraph_report.py} +21 -21
  386. package/scripts/_lib/claude_desktop_bundler.py +5 -5
  387. package/scripts/_lib/module_detection.py +223 -0
  388. package/scripts/_lib/scope_guard.sh +162 -0
  389. package/scripts/_phase4_bucket.py +3 -3
  390. package/scripts/_pilot_measure.py +4 -4
  391. package/scripts/_tmp_scan_framework_leakage.py +1 -1
  392. package/scripts/adoption_report.py +195 -0
  393. package/scripts/adoption_snapshot.py +219 -0
  394. package/scripts/adoption_status.py +166 -0
  395. package/scripts/ai-video/lib/parse-blueprint.sh +1 -1
  396. package/scripts/ai_council/advisors.py +5 -5
  397. package/scripts/ai_council/compile_corpus.py +1 -1
  398. package/scripts/ai_council/one_off_archive/2026-05/_one_off_budget_v2_audit.py +3 -3
  399. package/scripts/ai_council/one_off_archive/2026-05/_one_off_context_layer_v1_review.py +2 -2
  400. package/scripts/ai_council/one_off_archive/2026-05/_one_off_inject_quiet_flag.py +1 -1
  401. package/scripts/ai_council/one_off_archive/2026-05/_one_off_measure_v2.sh +1 -1
  402. package/scripts/ai_council/one_off_archive/2026-05/_one_off_measure_verbosity.sh +1 -1
  403. package/scripts/ai_council/one_off_archive/2026-05/_one_off_nondestructive_inline_audit.py +3 -3
  404. package/scripts/ai_council/one_off_archive/2026-05/_one_off_per_task.sh +1 -1
  405. package/scripts/ai_council/one_off_archive/2026-05/_one_off_phase6_trigger_jaccard.py +1 -1
  406. package/scripts/ai_council/one_off_archive/2026-05/_one_off_phase_2a_budget_rebalance.py +6 -6
  407. package/scripts/ai_council/one_off_archive/2026-05/_one_off_rebalancing_audit.py +1 -1
  408. package/scripts/ai_council/one_off_archive/2026-05/_one_off_tier_retrofit.py +6 -6
  409. package/scripts/annotate_discovery.py +13 -13
  410. package/scripts/apply_modules_config.py +290 -0
  411. package/scripts/audit_adr_coverage.py +2 -2
  412. package/scripts/audit_auto_rules.py +2 -2
  413. package/scripts/audit_cloud_compatibility.py +3 -3
  414. package/scripts/audit_command_surface.py +9 -9
  415. package/scripts/audit_likelihood.py +2 -2
  416. package/scripts/audit_user_type_axis.py +2 -2
  417. package/scripts/bench_ab_cache_dispatch.py +68 -0
  418. package/scripts/bench_ab_clone.py +170 -0
  419. package/scripts/bench_ab_diff.py +227 -0
  420. package/scripts/bench_ab_integrity.py +143 -0
  421. package/scripts/bench_ab_run.py +235 -0
  422. package/scripts/bench_ab_task_runner.py +369 -0
  423. package/scripts/bench_ab_tracka_run.py +202 -0
  424. package/scripts/{bench_compress_memory.py → bench_condense_memory.py} +16 -16
  425. package/scripts/bench_run.py +33 -33
  426. package/scripts/bench_runner.py +2 -2
  427. package/scripts/bootstrap.sh +99 -0
  428. package/scripts/build_cloud_bundle.py +6 -6
  429. package/scripts/build_discovery_manifest.py +7 -7
  430. package/scripts/build_linear_digest.py +3 -3
  431. package/scripts/build_rule_trigger_matrix.py +8 -8
  432. package/scripts/chat_history.py +5 -5
  433. package/scripts/check_always_budget.py +11 -5
  434. package/scripts/check_augment_description_cap.py +3 -3
  435. package/scripts/check_cluster_patterns.py +2 -2
  436. package/scripts/check_command_count_messaging.py +3 -3
  437. package/scripts/{check_compression.py → check_condensation.py} +34 -34
  438. package/scripts/{check_compressed_paths.py → check_condensed_paths.py} +8 -8
  439. package/scripts/check_context_paths.py +7 -7
  440. package/scripts/check_council_layout.py +2 -2
  441. package/scripts/check_council_references.py +9 -9
  442. package/scripts/check_iron_law_prominence.py +2 -2
  443. package/scripts/check_kernel_rule_bundle.py +2 -2
  444. package/scripts/check_module_management_neutral.py +149 -0
  445. package/scripts/check_no_roadmap_refs.py +9 -9
  446. package/scripts/check_portability.py +3 -3
  447. package/scripts/check_public_catalog_links.py +4 -4
  448. package/scripts/check_references.py +7 -6
  449. package/scripts/check_release_pr_shape.py +112 -0
  450. package/scripts/check_reply_consistency.py +3 -3
  451. package/scripts/check_safety_floor_untouched.py +1 -1
  452. package/scripts/check_template_pin_drift.py +5 -5
  453. package/scripts/check_token_optimizer_freshness.py +3 -3
  454. package/scripts/ci_status.py +301 -0
  455. package/scripts/ci_time_ratio.py +1 -1
  456. package/scripts/cleanup_other_scope.sh +146 -0
  457. package/scripts/compile_router.py +10 -10
  458. package/scripts/{compress.py → condense.py} +64 -64
  459. package/scripts/condense.sh +18 -0
  460. package/scripts/{compress_memory.py → condense_memory.py} +33 -33
  461. package/scripts/config/presets.py +2 -2
  462. package/scripts/config/profiles.py +1 -1
  463. package/scripts/cost_by_conversation.py +3 -3
  464. package/scripts/cost_summary.py +7 -7
  465. package/scripts/count_token_optimizer_usage.sh +1 -1
  466. package/scripts/gen_discovery_baseline.py +5 -5
  467. package/scripts/generate_index.py +6 -6
  468. package/scripts/generate_ownership_matrix.py +10 -10
  469. package/scripts/generate_pack_manifests.py +1 -1
  470. package/scripts/ghostwriter_fixture_allowlist.txt +1 -1
  471. package/scripts/install +3 -3
  472. package/scripts/install-hooks.sh +6 -6
  473. package/scripts/install.py +273 -45
  474. package/scripts/install.sh +187 -1
  475. package/scripts/inventory_frontmatter.py +2 -2
  476. package/scripts/iron_law_sha.py +3 -3
  477. package/scripts/lint_agents_layout.py +14 -7
  478. package/scripts/lint_agents_md.py +4 -4
  479. package/scripts/lint_archived_skills.py +3 -3
  480. package/scripts/lint_artefact_frontmatter.py +2 -2
  481. package/scripts/lint_bench_ab.py +172 -0
  482. package/scripts/lint_bench_corpus.py +1 -1
  483. package/scripts/lint_command_tiers.py +5 -5
  484. package/scripts/lint_context_spine_usage.py +1 -1
  485. package/scripts/lint_framework_leakage.py +7 -7
  486. package/scripts/lint_framework_leakage_allowlist.json +152 -84
  487. package/scripts/lint_ghostwriter_source.py +3 -3
  488. package/scripts/lint_handoffs.py +1 -1
  489. package/scripts/lint_load_context.py +11 -11
  490. package/scripts/lint_media_policy_linkage.py +5 -5
  491. package/scripts/lint_namespace.py +1 -1
  492. package/scripts/lint_no_new_atomic_commands.py +2 -2
  493. package/scripts/lint_orchestration_dsl.py +1 -1
  494. package/scripts/lint_pack_boundaries.py +2 -2
  495. package/scripts/lint_persona_governance.py +4 -4
  496. package/scripts/lint_role_experiences.py +237 -0
  497. package/scripts/lint_rule_interactions.py +2 -2
  498. package/scripts/lint_rule_tiers.py +1 -1
  499. package/scripts/lint_trust_coherence.py +2 -2
  500. package/scripts/mcp_registry_submit.sh +187 -0
  501. package/scripts/mcp_server/tools.py +1 -1
  502. package/scripts/measure_frugality_savings.py +10 -10
  503. package/scripts/measure_patterns.py +1 -1
  504. package/scripts/measure_projection_bytes.py +5 -5
  505. package/scripts/measure_rule_budget.py +3 -3
  506. package/scripts/measure_skill_reduction.py +1 -1
  507. package/scripts/memory_lookup.py +1 -1
  508. package/scripts/memory_status.py +2 -2
  509. package/scripts/migrate_command_suggestions.py +3 -3
  510. package/scripts/mine_session.py +1 -1
  511. package/scripts/move_artefact.py +3 -3
  512. package/scripts/new_skill.py +2 -2
  513. package/scripts/pack_mcp_content.py +9 -9
  514. package/scripts/plan_physical_move.py +6 -6
  515. package/scripts/print_required_checks.py +196 -0
  516. package/scripts/probe_skill_registration.py +413 -0
  517. package/scripts/propose_modules_config.py +145 -0
  518. package/scripts/prototype_lint_contradictions.py +1 -1
  519. package/scripts/recruit_preflight.sh +152 -0
  520. package/scripts/refine_ticket_detect.py +3 -3
  521. package/scripts/release.py +20 -0
  522. package/scripts/render_benchmark_md.py +308 -0
  523. package/scripts/roadmap_progress_hook.py +1 -1
  524. package/scripts/run_skill_evals.py +2 -2
  525. package/scripts/runtime_registry.py +4 -4
  526. package/scripts/schemas/command.schema.json +4 -4
  527. package/scripts/schemas/rule.schema.json +5 -5
  528. package/scripts/schemas/skill.schema.json +3 -3
  529. package/scripts/schemas/user-type.schema.json +1 -1
  530. package/scripts/score_skill_selection.py +1 -1
  531. package/scripts/skill_collision_clusters.py +2 -2
  532. package/scripts/skill_linter.py +81 -81
  533. package/scripts/skill_overlap.py +5 -5
  534. package/scripts/skill_tools/audit_persona_coverage.py +2 -2
  535. package/scripts/skill_tools/audit_user_type_coverage.py +2 -2
  536. package/scripts/skill_tools/run_block_d_eval.py +1 -1
  537. package/scripts/skill_tools/score_skill_relevance.py +1 -1
  538. package/scripts/skill_tools/suggest_skill_for_task.py +1 -1
  539. package/scripts/skill_trigger_eval.py +3 -3
  540. package/scripts/smoke/kernel.sh +7 -1
  541. package/scripts/smoke/router.sh +5 -5
  542. package/scripts/smoke/skills.sh +1 -1
  543. package/scripts/smoke_quickstart.py +1 -1
  544. package/scripts/snapshot_agent_outputs.py +3 -3
  545. package/scripts/spotcheck_thin_root.py +1 -1
  546. package/scripts/{caveman_stats.py → telegraph_stats.py} +18 -18
  547. package/scripts/update_counts.py +1 -1
  548. package/scripts/validate_decision_engine.py +1 -1
  549. package/scripts/validate_frontmatter.py +1 -1
  550. package/scripts/validate_safe_paths.py +3 -3
  551. package/scripts/{validate_caveman_carveouts.py → validate_telegraph_carveouts.py} +7 -7
  552. package/scripts/verify_roadmap_closure.py +6 -6
  553. package/templates/consumer-settings/ONBOARDING.md +41 -0
  554. package/.agent-src/commands/install-via-agent.md +0 -129
  555. package/.agent-src/skills/compress-memory/SKILL.md +0 -131
  556. package/dist/ui/assets/index-D-DY1ywI.js +0 -35
  557. package/dist/ui/assets/index-D-DY1ywI.js.map +0 -1
  558. package/dist/ui/assets/index-Dqfhmg-d.css +0 -1
  559. package/docs/adrs/caveman/README.md +0 -9
  560. package/docs/contracts/caveman-telemetry.md +0 -83
  561. package/scripts/compress.sh +0 -18
@@ -2,7 +2,7 @@
2
2
  """build_linear_digest.py — build the Linear AI rules digest.
3
3
 
4
4
  Concatenates a curated set of cloud-safe rules from
5
- `.agent-src.uncompressed/rules/` into three Markdown files under
5
+ `.agent-src.uncondensed/rules/` into three Markdown files under
6
6
  `dist/linear/`:
7
7
 
8
8
  workspace.md — universal coding posture (18 rules)
@@ -42,7 +42,7 @@ from dataclasses import dataclass, field
42
42
  from pathlib import Path
43
43
 
44
44
  ROOT = Path(__file__).resolve().parent.parent
45
- # Compressed source is the shipped form — denser, sharper section
45
+ # Condensed source is the shipped form — denser, sharper section
46
46
  # structure; better fit for a guidance field than the verbose authoring
47
47
  # layer. The inclusion list at docs/contracts/linear-ai-rules-inclusion.md
48
48
  # remains the human-readable spec.
@@ -165,7 +165,7 @@ def render_digest(layer: str, entries: list[RuleEntry]) -> tuple[str, dict]:
165
165
  parts.append(f"# event4u/agent-config — Linear AI {layer.title()} Digest\n")
166
166
  parts.append(
167
167
  "> Auto-generated by `scripts/build_linear_digest.py` from "
168
- "`.agent-src/rules/` (compressed source) plus the inclusion list "
168
+ "`.agent-src/rules/` (condensed source) plus the inclusion list "
169
169
  "at `docs/contracts/linear-ai-rules-inclusion.md`. Do not edit "
170
170
  "this file by hand — re-run `task build-linear-digest` to "
171
171
  "regenerate.\n"
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env python3
2
2
  """Build agents/settings/contexts/rule-trigger-matrix.md.
3
3
 
4
- Emits a single matrix mapping every rule in `.agent-src.uncompressed/rules/`
4
+ Emits a single matrix mapping every rule in `.agent-src.uncondensed/rules/`
5
5
  to its trigger event, observability, enforcement surface, hook-cost
6
6
  estimate, and Tier classification. Sourced from the Phase 1 inventory of
7
7
  `road-to-rule-hardening.md` plus `road-to-context-layer-maturity.md`
@@ -18,9 +18,9 @@ from pathlib import Path
18
18
  import yaml
19
19
 
20
20
  REPO_ROOT = Path(__file__).resolve().parents[1]
21
- SRC_RULES = REPO_ROOT / ".agent-src.uncompressed" / "rules"
21
+ SRC_RULES = REPO_ROOT / ".agent-src.uncondensed" / "rules"
22
22
  COMP_RULES = REPO_ROOT / ".agent-src" / "rules"
23
- SRC_PREFIX = ".agent-src.uncompressed/"
23
+ SRC_PREFIX = ".agent-src.uncondensed/"
24
24
  COMP_PREFIX = ".agent-src/"
25
25
  OUT = REPO_ROOT / "agents" / "contexts" / "rule-trigger-matrix.md"
26
26
 
@@ -80,7 +80,7 @@ add("roadmap-progress-sync.md", "file-edit on agents/roadmaps/**", "hook",
80
80
  add("context-hygiene.md", "turn counter / tool-loop / topic shift", "hook",
81
81
  "state", "medium", "1",
82
82
  notes="Per-turn counter + tool-call repetition detector. Cross-platform persistence is the cost driver.")
83
- add("size-enforcement.md", "file save on .agent-src.uncompressed/{skills,rules,commands}/**",
83
+ add("size-enforcement.md", "file save on .agent-src.uncondensed/{skills,rules,commands}/**",
84
84
  "mechanical-already", "tool-call", "NA-mechanical", "mechanical-already",
85
85
  notes="Enforced by skill_linter.py + check_always_budget.py")
86
86
  add("no-roadmap-references.md", "file save on stable artifacts", "mechanical-already",
@@ -127,7 +127,7 @@ add("cli-output-handling.md", "tool-call (verbose CLI)", "hook", "tool-call",
127
127
  "low", "2a", notes="Pre-tool-call marker on git/test/lint invocations")
128
128
  add("artifact-drafting-protocol.md", "skill/rule create or major rewrite",
129
129
  "hook", "output", "medium", "2a",
130
- notes="Marker on file-create in .agent-src.uncompressed/{skills,rules,commands}/")
130
+ notes="Marker on file-create in .agent-src.uncondensed/{skills,rules,commands}/")
131
131
  add("missing-tool-handling.md", "tool failure (command not found)", "hook",
132
132
  "output", "low", "2a", notes="Post-tool-failure marker — strong fit")
133
133
  add("token-efficiency.md", "every reply / verbose-tool invocation", "hook",
@@ -144,7 +144,7 @@ add("downstream-changes.md", "post-edit (callsite check)", "hook",
144
144
  add("ui-audit-gate.md", "pre-edit on UI files (settings.state.ui_audit empty)",
145
145
  "settings", "tool-call", "medium", "2b",
146
146
  notes="Block edit until state.ui_audit populated")
147
- add("preservation-guard.md", "skill/rule merge or compress", "hook",
147
+ add("preservation-guard.md", "skill/rule merge or condense", "hook",
148
148
  "tool-call", "medium", "2b",
149
149
  notes="Pre-merge structured check — diff-shape verifiable")
150
150
  add("minimal-safe-diff.md", "every diff", "hook", "tool-call",
@@ -258,7 +258,7 @@ def emit():
258
258
  lines.append("| Column | Meaning |")
259
259
  lines.append("|---|---|")
260
260
  lines.append("| `type` | Frontmatter `type` (`always` / `auto`) |")
261
- lines.append("| `raw` | Compressed rule size in chars (`.agent-src/rules/<name>`) |")
261
+ lines.append("| `raw` | Condensed rule size in chars (`.agent-src/rules/<name>`) |")
262
262
  lines.append("| `ext` | Extended size under Model (b): raw + transitive `load_context` |")
263
263
  lines.append("| `trigger` | Observable event that should activate the rule |")
264
264
  lines.append("| `obs` | Where the trigger is observable: `hook` (platform hook), `settings` (`.agent-settings.yml` state), `agent-only` (in-head), `mechanical-already` (precedent — already enforced by a script) |")
@@ -295,7 +295,7 @@ def emit():
295
295
  lines.append("## `load_context:` chains (CL Phase 1 inventory)")
296
296
  lines.append("")
297
297
  lines.append("Rules that load at least one context, with `rule → context → depth → chars`.")
298
- lines.append("Chars are measured on the compressed context file (Model (b) literal).")
298
+ lines.append("Chars are measured on the condensed context file (Model (b) literal).")
299
299
  lines.append("")
300
300
  lines.append("| Rule | Context | Depth | Chars |")
301
301
  lines.append("|---|---|---:|---:|")
@@ -47,7 +47,7 @@ DEFAULT_SETTINGS_FILE = ".agent-settings.yml"
47
47
  SCHEMA_VERSION = 4
48
48
  DEFAULT_MAX_SESSIONS = 5
49
49
  VALID_FREQS = {"per_turn", "per_phase", "per_tool"}
50
- VALID_OVERFLOW = {"rotate", "compress"}
50
+ VALID_OVERFLOW = {"rotate", "condense"}
51
51
 
52
52
  # Replay-mode signal — when set, every write to the on-disk transcript
53
53
  # is a no-op. Honoured per `docs/contracts/hook-architecture-v1.md`
@@ -905,7 +905,7 @@ def overflow_handle(max_kb: int, mode: str = "rotate", *,
905
905
  """Enforce max_kb. Returns {'action', 'kept', 'dropped'}.
906
906
 
907
907
  Rotate: drop oldest entries (keep header) until file ≤ max_kb.
908
- Compress: mark oldest 50% as stale and leave a `needs_compress`
908
+ Condense: mark oldest 50% as stale and leave a `needs_condense`
909
909
  marker entry for the agent to rewrite on next turn.
910
910
  """
911
911
  if mode not in VALID_OVERFLOW:
@@ -934,12 +934,12 @@ def overflow_handle(max_kb: int, mode: str = "rotate", *,
934
934
  _atomic_write_text(p, header_line + "".join(kept))
935
935
  return {"action": "rotate", "kept": len(kept), "dropped": dropped}
936
936
  marker = {
937
- "t": "needs_compress",
937
+ "t": "needs_condense",
938
938
  "ts": _now(),
939
- "reason": f"file exceeded {max_kb} KB, compress-mode requested",
939
+ "reason": f"file exceeded {max_kb} KB, condense-mode requested",
940
940
  }
941
941
  append(marker, path=p)
942
- return {"action": "compress_marked", "kept": len(entries), "dropped": 0}
942
+ return {"action": "condense_marked", "kept": len(entries), "dropped": 0}
943
943
 
944
944
 
945
945
  def hook_append(event: str, *,
@@ -32,7 +32,7 @@ import yaml
32
32
 
33
33
  REPO_ROOT = Path(__file__).resolve().parents[1]
34
34
  RULES_DIR = REPO_ROOT / ".agent-src" / "rules"
35
- SRC_PREFIX = ".agent-src.uncompressed/"
35
+ SRC_PREFIX = ".agent-src.uncondensed/"
36
36
  COMP_PREFIX = ".agent-src/"
37
37
 
38
38
  TOTAL_CAP = 49_000
@@ -49,7 +49,7 @@ CONCENTRATION_TOP3_PCT = 0.30
49
49
 
50
50
  # Transitional concentration allowlist — non-safety-floor rules whose
51
51
  # extended share exceeds CONCENTRATION_SINGLE_PCT after the kernel-trim
52
- # refactor (commit 4e771da `refactor(kernel): compress 8 kernel rules
52
+ # refactor (commit 4e771da `refactor(kernel): condense 8 kernel rules
53
53
  # per P2.2 playbook + lock kernel`). Trimming safety-floor rules shrank
54
54
  # the denominator, mechanically lifting non-floor rules' percentage
55
55
  # share even though their absolute size did not grow. Each entry pins
@@ -70,7 +70,13 @@ KNOWN_CONCENTRATION_BREACHES: dict[str, int] = {
70
70
  # scope-control-allowlisted + non-destructive-allowlisted) clears the
71
71
  # 30 % cap; the entry below pins the measured ceiling. Future trim
72
72
  # work drops this back to None (default 30 %).
73
- KNOWN_TOP3_CONCENTRATION_CEILING: int | None = 10_900
73
+ # Bumped 10_900 11_300 in v4.0.0: branch-drift commits (`d30d441e`,
74
+ # `d824408c`) raised the non-safety-floor top-3 sum
75
+ # (language-and-tone + no-cheap-questions + ask-when-uncertain) past
76
+ # the prior lock. Same rationale as the kernel-budget breach bump in
77
+ # `scripts/smoke/kernel.sh`: shrinkage belongs in a separate kernel-
78
+ # rule-edit PR per `scope-control § Kernel-rule edits` slow-rollout.
79
+ KNOWN_TOP3_CONCENTRATION_CEILING: int | None = 11_300
74
80
 
75
81
  # Q3=A locked safety-floor rules — out of scope for slimming and for the
76
82
  # concentration check. Their size is intentional (Iron Laws + obligation
@@ -175,7 +181,7 @@ def _load_context_paths(path: Path) -> list[str]:
175
181
  return out
176
182
 
177
183
 
178
- def _src_to_compressed(entry: str) -> Path:
184
+ def _src_to_condensed(entry: str) -> Path:
179
185
  if entry.startswith(SRC_PREFIX):
180
186
  return REPO_ROOT / (COMP_PREFIX + entry[len(SRC_PREFIX):])
181
187
  return REPO_ROOT / entry
@@ -189,7 +195,7 @@ def _walk_contexts(rule: Path) -> tuple[set[Path], list[tuple[str, str]]]:
189
195
  while stack:
190
196
  node, depth, chain = stack.pop()
191
197
  for entry in _load_context_paths(node):
192
- comp = _src_to_compressed(entry)
198
+ comp = _src_to_condensed(entry)
193
199
  new_chain = f"{chain} → {entry}"
194
200
  if depth + 1 > MAX_DEPTH:
195
201
  violations.append((rule.name, new_chain))
@@ -2,7 +2,7 @@
2
2
  """Auto-rule description-length CI gate (Phase 1.3 of
3
3
  road-to-augment-limit-fit).
4
4
 
5
- For every `type: auto` rule under `.agent-src.uncompressed/rules/`,
5
+ For every `type: auto` rule under `.agent-src.uncondensed/rules/`,
6
6
  fail CI when the frontmatter `description:` exceeds DESC_CAP chars.
7
7
 
8
8
  Why: Augment injects each auto-rule's description into the
@@ -10,7 +10,7 @@ workspace-guidelines registry stub. Empirical 2026-05-08 budget
10
10
  analysis showed this channel consuming 25 % of the 49,512-char
11
11
  ceiling. Capping descriptions guards future drift.
12
12
 
13
- Source of truth: `.agent-src.uncompressed/rules/`. The compressed
13
+ Source of truth: `.agent-src.uncondensed/rules/`. The condensed
14
14
  projection is regenerated; the source dictates what ships.
15
15
 
16
16
  Exit codes: 0 = pass, 1 = at least one rule over cap.
@@ -23,7 +23,7 @@ import sys
23
23
  from pathlib import Path
24
24
 
25
25
  REPO_ROOT = Path(__file__).resolve().parent.parent
26
- RULES_DIR = REPO_ROOT / ".agent-src.uncompressed" / "rules"
26
+ RULES_DIR = REPO_ROOT / ".agent-src.uncondensed" / "rules"
27
27
  DESC_CAP = 150
28
28
 
29
29
 
@@ -2,7 +2,7 @@
2
2
  """Cluster-pattern compliance check.
3
3
 
4
4
  Compares each cluster dispatcher under
5
- `.agent-src.uncompressed/commands/<cluster>.md` against the Phase 1
5
+ `.agent-src.uncondensed/commands/<cluster>.md` against the Phase 1
6
6
  reference patterns (`fix.md`, `optimize.md`, `feature.md`).
7
7
 
8
8
  Required structure:
@@ -49,7 +49,7 @@ def _resolve_command(cluster: str) -> Path:
49
49
  hit = resolve_logical(rel)
50
50
  if hit is not None:
51
51
  return hit
52
- return ROOT / ".agent-src.uncompressed" / rel
52
+ return ROOT / ".agent-src.uncondensed" / rel
53
53
 
54
54
  REQUIRED_SECTIONS = ["## Sub-commands", "## Dispatch", "## Rules"]
55
55
  TABLE_HEADER_RE = re.compile(
@@ -6,11 +6,11 @@ Public surfaces (README.md, AGENTS.md, docs/getting-started.md) advertise
6
6
  the size of the command catalog. PR #34 collapses atomic commands into
7
7
  clusters via deprecation shims — the externally meaningful number is the
8
8
  **active** command count (non-shim files), not the raw file count. This
9
- gate sources canonical counts from `.agent-src.uncompressed/commands/`
9
+ gate sources canonical counts from `.agent-src.uncondensed/commands/`
10
10
  frontmatter and fails when any documented number drifts from those.
11
11
 
12
12
  Canonical counts:
13
- total = number of *.md files under .agent-src.uncompressed/commands/
13
+ total = number of *.md files under .agent-src.uncondensed/commands/
14
14
  shims = files whose frontmatter declares `superseded_by:`
15
15
  active = total - shims
16
16
 
@@ -56,7 +56,7 @@ def _command_files() -> list[Path]:
56
56
  """Every command ``*.md`` file across all source roots (legacy + packages/*).
57
57
 
58
58
  Multi-root aware per ADR-017: post-move the commands live under
59
- ``packages/<pack>/.agent-src.uncompressed/commands/``, and the
59
+ ``packages/<pack>/.agent-src.uncondensed/commands/``, and the
60
60
  canonical count is the union across packs (deduped by logical path).
61
61
  """
62
62
  seen: dict[str, Path] = {}
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env python3
2
2
  """
3
- Compression quality checker for agent-config packages.
3
+ Condensation quality checker for agent-config packages.
4
4
 
5
- Compares .agent-src.uncompressed/ source files with their .agent-src/ compressed versions.
6
- Checks that compression preserved structural integrity:
7
- - All headings from source present in compressed
5
+ Compares .agent-src.uncondensed/ source files with their .agent-src/ condensed versions.
6
+ Checks that condensation preserved structural integrity:
7
+ - All headings from source present in condensed
8
8
  - All code blocks preserved exactly
9
9
  - YAML frontmatter identical
10
10
  - Word count reduction within healthy range (10-60%)
@@ -25,17 +25,17 @@ from pathlib import Path
25
25
  from typing import List, Literal
26
26
 
27
27
  # Import the rewriter so frontmatter comparison can normalise the source
28
- # side through the same path transformations the compressor applies. Without
28
+ # side through the same path transformations the condenseor applies. Without
29
29
  # this, every `load_context:` logical name (e.g. `contexts/foo.md`) and every
30
30
  # `../../docs/...` body link looks like a frontmatter / body mismatch even
31
31
  # though the rewriter is doing exactly what road-to-path-fixes.md P2/P3
32
32
  # specified.
33
33
  sys.path.insert(0, str(Path(__file__).resolve().parent))
34
- from compress import _rewrite_paths # noqa: E402
34
+ from condense import _rewrite_paths # noqa: E402
35
35
 
36
36
  Severity = Literal["error", "warning", "info"]
37
37
 
38
- SOURCE_DIR = Path(".agent-src.uncompressed")
38
+ SOURCE_DIR = Path(".agent-src.uncondensed")
39
39
  TARGET_DIR = Path(".agent-src")
40
40
 
41
41
 
@@ -83,8 +83,8 @@ def count_iron_law_structure(body: str) -> dict:
83
83
  """Count structural units in an Iron Law body.
84
84
 
85
85
  Returns counts of paragraphs (blank-line-separated prose blocks),
86
- list items (bullet + numbered), and fenced code blocks. Caveman
87
- compression may shorten word count freely; what must NOT change is
86
+ list items (bullet + numbered), and fenced code blocks. Telegraph
87
+ condensation may shorten word count freely; what must NOT change is
88
88
  the count of these structural units. Each represents a passage of
89
89
  the law that the source decided to keep.
90
90
 
@@ -168,45 +168,45 @@ def extract_iron_law_sections(text: str) -> list[tuple[str, int, str]]:
168
168
  return sections
169
169
 
170
170
 
171
- def check_pair(rel_path: str, source: str, compressed: str) -> List[Issue]:
172
- """Compare source and compressed versions of a file."""
171
+ def check_pair(rel_path: str, source: str, condensed: str) -> List[Issue]:
172
+ """Compare source and condensed versions of a file."""
173
173
  issues: List[Issue] = []
174
174
 
175
175
  # Frontmatter check
176
176
  src_fm = extract_frontmatter(source)
177
- cmp_fm = extract_frontmatter(compressed)
177
+ cmp_fm = extract_frontmatter(condensed)
178
178
  if src_fm and src_fm != cmp_fm:
179
179
  issues.append(Issue(rel_path, "frontmatter_mismatch", "error",
180
- "YAML frontmatter differs between source and compressed"))
180
+ "YAML frontmatter differs between source and condensed"))
181
181
 
182
- # Heading preservation — check H1 and H2 headings (H3+ may be merged during compression)
182
+ # Heading preservation — check H1 and H2 headings (H3+ may be merged during condensation)
183
183
  src_headings = extract_headings(source)
184
- cmp_headings = extract_headings(compressed)
184
+ cmp_headings = extract_headings(condensed)
185
185
  for h in src_headings:
186
186
  # Only check H1 and H2 (## level) — H3+ subheadings may be merged
187
187
  if h.startswith("# ") or (h.startswith("## ") and not h.startswith("### ")):
188
188
  if h not in cmp_headings:
189
189
  issues.append(Issue(rel_path, "missing_heading", "warning",
190
- f"H1/H2 heading lost during compression: {h}"))
190
+ f"H1/H2 heading lost during condensation: {h}"))
191
191
  # Also flag if comment lines inside code blocks are being treated as headings
192
192
  # Filter out false positives from code blocks
193
193
 
194
194
  # Code block preservation
195
195
  src_blocks = extract_code_blocks(source)
196
- cmp_blocks = extract_code_blocks(compressed)
196
+ cmp_blocks = extract_code_blocks(condensed)
197
197
  if len(src_blocks) > len(cmp_blocks):
198
198
  issues.append(Issue(rel_path, "lost_code_blocks", "error",
199
- f"Code blocks lost: source has {len(src_blocks)}, compressed has {len(cmp_blocks)}"))
199
+ f"Code blocks lost: source has {len(src_blocks)}, condensed has {len(cmp_blocks)}"))
200
200
  for i, block in enumerate(src_blocks):
201
201
  if i < len(cmp_blocks) and block.strip() != cmp_blocks[i].strip():
202
202
  # Only flag if content actually changed (not just whitespace)
203
203
  if block.replace(" ", "").replace("\n", "") != cmp_blocks[i].replace(" ", "").replace("\n", ""):
204
204
  issues.append(Issue(rel_path, "modified_code_block", "error",
205
- f"Code block {i+1} content changed during compression"))
205
+ f"Code block {i+1} content changed during condensation"))
206
206
 
207
207
  # Iron Law preservation — non-negotiable behavioral rules, see preservation-guard
208
208
  src_laws = extract_iron_law_sections(source)
209
- cmp_laws = extract_iron_law_sections(compressed)
209
+ cmp_laws = extract_iron_law_sections(condensed)
210
210
  cmp_law_map = {h: (lvl, body) for h, lvl, body in cmp_laws}
211
211
  # Build a level-agnostic lookup so we can detect heading-level downgrades
212
212
  # (`## Iron Law` → `### Iron Law`).
@@ -225,11 +225,11 @@ def check_pair(rel_path: str, source: str, compressed: str) -> List[Issue]:
225
225
  f"({src_heading.strip()})"))
226
226
  continue
227
227
  issues.append(Issue(rel_path, "iron_law_missing", "error",
228
- f"Iron Law section removed during compression: "
228
+ f"Iron Law section removed during condensation: "
229
229
  f"{src_heading.strip()}"))
230
230
  continue
231
231
  # Section exists at correct level — check structural-unit survival.
232
- # Caveman compression is fine (drop articles, terse phrasing); what
232
+ # Telegraph condensation is fine (drop articles, terse phrasing); what
233
233
  # must NOT change is the count of paragraphs, list items, and code
234
234
  # blocks. Each is a passage the source kept on purpose.
235
235
  _, cmp_body = cmp_law_map[src_heading]
@@ -246,23 +246,23 @@ def check_pair(rel_path: str, source: str, compressed: str) -> List[Issue]:
246
246
 
247
247
  # Word count ratio
248
248
  src_words = len(source.split())
249
- cmp_words = len(compressed.split())
249
+ cmp_words = len(condensed.split())
250
250
  if src_words > 0:
251
251
  reduction = (1 - cmp_words / src_words) * 100
252
252
  if reduction > 60:
253
253
  issues.append(Issue(rel_path, "excessive_reduction", "warning",
254
- f"Compression reduced {reduction:.0f}% — possible content loss "
254
+ f"Condensation reduced {reduction:.0f}% — possible content loss "
255
255
  f"({src_words} → {cmp_words} words)"))
256
256
  elif reduction < 5 and src_words > 100:
257
257
  issues.append(Issue(rel_path, "minimal_reduction", "info",
258
- f"Compression only reduced {reduction:.0f}% "
258
+ f"Condensation only reduced {reduction:.0f}% "
259
259
  f"({src_words} → {cmp_words} words)"))
260
260
 
261
261
  return issues
262
262
 
263
263
 
264
264
  def scan_all(root: Path) -> List[Issue]:
265
- """Scan all .md file pairs for compression quality issues."""
265
+ """Scan all .md file pairs for condensation quality issues."""
266
266
  issues: List[Issue] = []
267
267
  source_dir = root / SOURCE_DIR
268
268
  target_dir = root / TARGET_DIR
@@ -277,7 +277,7 @@ def scan_all(root: Path) -> List[Issue]:
277
277
  if not target_file.exists():
278
278
  continue # sync-check handles missing files
279
279
 
280
- # Skip commands — they are copied verbatim, not compressed
280
+ # Skip commands — they are copied verbatim, not condensed
281
281
  rel_str = str(rel)
282
282
  if rel_str.startswith("commands/"):
283
283
  continue
@@ -286,7 +286,7 @@ def scan_all(root: Path) -> List[Issue]:
286
286
  target_text = target_file.read_text(encoding="utf-8")
287
287
  # Normalise source through the path rewriter (idempotent) so logical
288
288
  # `load_context:` names and `../../docs/...` body links match the
289
- # depth-aware form the compressor produced. Compression word-count
289
+ # depth-aware form the condenseor produced. Condensation word-count
290
290
  # checks downstream are unaffected because rewriting only edits
291
291
  # frontmatter list values and link targets, not prose tokens.
292
292
  source_text = _rewrite_paths(source_text, rel_str)
@@ -297,9 +297,9 @@ def scan_all(root: Path) -> List[Issue]:
297
297
 
298
298
  def format_text(issues: List[Issue]) -> str:
299
299
  if not issues:
300
- return "✅ Compression quality check passed."
300
+ return "✅ Condensation quality check passed."
301
301
  icons = {"error": "🔴", "warning": "🟡", "info": "ℹ️"}
302
- lines = [f"Found {len(issues)} compression quality issue(s):\n"]
302
+ lines = [f"Found {len(issues)} condensation quality issue(s):\n"]
303
303
  for i in issues:
304
304
  lines.append(f" {icons[i.severity]} [{i.check}] {i.file}: {i.message}")
305
305
  errors = sum(1 for i in issues if i.severity == "error")
@@ -309,7 +309,7 @@ def format_text(issues: List[Issue]) -> str:
309
309
 
310
310
 
311
311
  def scan_summary(root: Path) -> str:
312
- """Generate per-category compression summary stats."""
312
+ """Generate per-category condensation summary stats."""
313
313
  source_dir = root / SOURCE_DIR
314
314
  target_dir = root / TARGET_DIR
315
315
  if not source_dir.exists() or not target_dir.exists():
@@ -327,7 +327,7 @@ def scan_summary(root: Path) -> str:
327
327
  cat = parts[0] if len(parts) > 1 else "root"
328
328
  categories.setdefault(cat, []).append((src_words, cmp_words))
329
329
 
330
- lines = ["Category | Files | Avg Source | Avg Compressed | Avg Reduction",
330
+ lines = ["Category | Files | Avg Source | Avg Condensed | Avg Reduction",
331
331
  "--- | --- | --- | --- | ---"]
332
332
  total_src = total_cmp = total_files = 0
333
333
  for cat in sorted(categories):
@@ -346,9 +346,9 @@ def scan_summary(root: Path) -> str:
346
346
 
347
347
 
348
348
  def main() -> int:
349
- parser = argparse.ArgumentParser(description="Check compression quality")
349
+ parser = argparse.ArgumentParser(description="Check condensation quality")
350
350
  parser.add_argument("--format", choices=["text", "json"], default="text")
351
- parser.add_argument("--summary", action="store_true", help="Show per-category compression stats")
351
+ parser.add_argument("--summary", action="store_true", help="Show per-category condensation stats")
352
352
  parser.add_argument("--root", type=Path, default=Path("."))
353
353
  args = parser.parse_args()
354
354
 
@@ -1,15 +1,15 @@
1
1
  #!/usr/bin/env python3
2
- """Validate compressed-output paths in `.agent-src/rules/*.md`.
2
+ """Validate condensed-output paths in `.agent-src/rules/*.md`.
3
3
 
4
- Runs after `scripts/compress.py` projects sources to `.agent-src/`. The
5
- rewriter in `compress.py` is the load-bearing primitive (road-to-path-fixes
4
+ Runs after `scripts/condense.py` projects sources to `.agent-src/`. The
5
+ rewriter in `condense.py` is the load-bearing primitive (road-to-path-fixes
6
6
  P1.2); this script is the post-condition gate (P5.1) — every `load_context:`
7
7
  entry in `.agent-src/rules/*.md` must resolve relative to the rule file's
8
8
  directory to an existing file, and forbidden substrings must not survive
9
9
  the rewrite (unless declared in `validator_ignore`).
10
10
 
11
11
  Forbidden substrings (load_context + body):
12
- - `.agent-src.uncompressed/` unless declared in validator_ignore
12
+ - `.agent-src.uncondensed/` unless declared in validator_ignore
13
13
  - `../../docs/` body-link two-up form (rewriter
14
14
  collapses to single-up)
15
15
  - `../../agents/` same shape, different root
@@ -25,7 +25,7 @@ Body-link checks (Council Decision 2, 2026-05-06):
25
25
  `validator_ignore:` frontmatter primitive:
26
26
  - Per-rule allowlist for rules that *describe* a forbidden substring as
27
27
  their subject matter (e.g. `augment-source-of-truth` documents the
28
- `.agent-src.uncompressed/` boundary). Each entry: `{type, pattern,
28
+ `.agent-src.uncondensed/` boundary). Each entry: `{type, pattern,
29
29
  reason}`. The validator emits an audit line per matched ignore so
30
30
  drift cannot hide.
31
31
 
@@ -46,7 +46,7 @@ ROOT = Path(__file__).resolve().parent.parent
46
46
  RULES_DIR = ROOT / ".agent-src" / "rules"
47
47
 
48
48
  FORBIDDEN_SUBSTRINGS = (
49
- ".agent-src.uncompressed/",
49
+ ".agent-src.uncondensed/",
50
50
  "../../docs/",
51
51
  "../../agents/",
52
52
  )
@@ -189,7 +189,7 @@ def _check_body(rule_file: Path, body: str, viols: list[Violation],
189
189
 
190
190
  def main() -> int:
191
191
  if not RULES_DIR.is_dir():
192
- print(f"❌ {RULES_DIR} not found — run compression first", file=sys.stderr)
192
+ print(f"❌ {RULES_DIR} not found — run condensation first", file=sys.stderr)
193
193
  return 3
194
194
  viols: list[Violation] = []
195
195
  audited: list[tuple[str, IgnoreEntry]] = []
@@ -213,7 +213,7 @@ def main() -> int:
213
213
  return 1
214
214
  rule_count = len(list(RULES_DIR.glob('*.md')))
215
215
  if not QUIET:
216
- print(f"✅ compressed-path check clean ({rule_count} rules, {len(audited)} ignore(s) audited)")
216
+ print(f"✅ condensed-path check clean ({rule_count} rules, {len(audited)} ignore(s) audited)")
217
217
  return 0
218
218
 
219
219
 
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env python3
2
2
  """Context-file path & orphan checker.
3
3
 
4
- Validates that every `*.md` under `.agent-src.uncompressed/contexts/`:
4
+ Validates that every `*.md` under `.agent-src.uncondensed/contexts/`:
5
5
 
6
6
  1. Lives in a locked sub-tree (or is one of six grandfathered root files).
7
7
  2. Does not collide on basename with another context file in another sub-tree.
@@ -22,7 +22,7 @@ from dataclasses import asdict, dataclass
22
22
  from pathlib import Path
23
23
 
24
24
  ROOT = Path(__file__).resolve().parent.parent
25
- CONTEXTS_ROOT = ROOT / ".agent-src.uncompressed" / "contexts"
25
+ CONTEXTS_ROOT = ROOT / ".agent-src.uncondensed" / "contexts"
26
26
 
27
27
  # Sub-trees that may contain context files. Update in lock-step with
28
28
  # docs/contracts/context-paths.md whenever a roadmap revision adds one.
@@ -56,10 +56,10 @@ GRANDFATHERED_ROOT_FILES = frozenset({
56
56
  # Without this scan dir, every newly-introduced context would orphan
57
57
  # until the consuming artefact lands, blocking phase-by-phase commits.
58
58
  REFERENCE_SCAN_DIRS = (
59
- ".agent-src.uncompressed/rules",
60
- ".agent-src.uncompressed/skills",
61
- ".agent-src.uncompressed/commands",
62
- ".agent-src.uncompressed/contexts",
59
+ ".agent-src.uncondensed/rules",
60
+ ".agent-src.uncondensed/skills",
61
+ ".agent-src.uncondensed/commands",
62
+ ".agent-src.uncondensed/contexts",
63
63
  "agents/roadmaps",
64
64
  )
65
65
 
@@ -139,7 +139,7 @@ def _build_reference_corpus(root: Path) -> str:
139
139
  def _check_orphans(contexts: list[Path], corpus: str, root: Path) -> list[Violation]:
140
140
  out: list[Violation] = []
141
141
  for ctx in contexts:
142
- rel_src = str(ctx.relative_to(root)) # .agent-src.uncompressed/contexts/...
142
+ rel_src = str(ctx.relative_to(root)) # .agent-src.uncondensed/contexts/...
143
143
  rel_short = rel_src.split("contexts/", 1)[-1] # judges/persona-voice-rubric.md
144
144
  candidates = (rel_src, f"contexts/{rel_short}", rel_short)
145
145
  # Exclude self-references: drop this file's own content from the
@@ -22,7 +22,7 @@ audit's evidence trail. `agents/runtime/` is exempt too — the
22
22
  canonical council dirs live at `agents/runtime/council/{questions,
23
23
  responses,sessions}/` and the whole `runtime/` tree is gitignored.
24
24
 
25
- Failure modes are enforced by `.agent-src.uncompressed/skills/ai-council/SKILL.md`
25
+ Failure modes are enforced by `.agent-src.uncondensed/skills/ai-council/SKILL.md`
26
26
  § "Output path convention".
27
27
 
28
28
  Exit codes:
@@ -112,7 +112,7 @@ def main() -> int:
112
112
  for f in findings:
113
113
  print(f" - {f}")
114
114
  print(
115
- "\nRule: .agent-src.uncompressed/skills/ai-council/SKILL.md "
115
+ "\nRule: .agent-src.uncondensed/skills/ai-council/SKILL.md "
116
116
  '§ "Output path convention"'
117
117
  )
118
118
  return 1
@@ -53,8 +53,8 @@ PATTERN = re.compile(
53
53
  # Only these durable surfaces are scanned. Archive, analysis, and the
54
54
  # council dirs themselves are excluded by design.
55
55
  #
56
- # Source roots (legacy `.agent-src.uncompressed/` and every
57
- # `packages/*/.agent-src.uncompressed/`) are discovered at runtime via
56
+ # Source roots (legacy `.agent-src.uncondensed/` and every
57
+ # `packages/*/.agent-src.uncondensed/`) are discovered at runtime via
58
58
  # `artefact_roots()` so the linter follows the monorepo physical layout.
59
59
  FIXED_SCAN_ROOTS = (
60
60
  "agents/roadmaps",
@@ -92,12 +92,12 @@ ALLOWLIST_PREFIXES: tuple[str, ...] = (
92
92
  # the SKIP_DIRS contract in scripts/check_references.py).
93
93
  "agents/evidence/analysis/",
94
94
  # The rule itself documents forbidden vs. allowed forms.
95
- ".agent-src.uncompressed/rules/no-roadmap-references.md",
95
+ ".agent-src.uncondensed/rules/no-roadmap-references.md",
96
96
  # ai-council skill documents the output-path schema.
97
- ".agent-src.uncompressed/skills/ai-council/",
97
+ ".agent-src.uncondensed/skills/ai-council/",
98
98
  # Council commands document the output-path schema.
99
- ".agent-src.uncompressed/commands/council/",
100
- ".agent-src.uncompressed/commands/council.md",
99
+ ".agent-src.uncondensed/commands/council/",
100
+ ".agent-src.uncondensed/commands/council.md",
101
101
  )
102
102
  # Top-level files that are also exempt (e.g. CHANGELOG with historical entries).
103
103
  ALLOWLIST_FILES: frozenset[str] = frozenset({
@@ -136,8 +136,8 @@ def _is_allowlisted(rel: str) -> bool:
136
136
  """Match a repo-relative POSIX path against the allowlist.
137
137
 
138
138
  Allowlist prefixes are written against the legacy
139
- ``.agent-src.uncompressed/`` layout. A physical hit under
140
- ``packages/*/.agent-src.uncompressed/`` is normalised to the same
139
+ ``.agent-src.uncondensed/`` layout. A physical hit under
140
+ ``packages/*/.agent-src.uncondensed/`` is normalised to the same
141
141
  logical path before matching so entries keep covering relocated files.
142
142
  """
143
143
  if rel in ALLOWLIST_FILES:
@@ -152,7 +152,7 @@ def _is_allowlisted(rel: str) -> bool:
152
152
  return False
153
153
 
154
154
 
155
- _LEGACY_PREFIX_STR = ".agent-src.uncompressed/"
155
+ _LEGACY_PREFIX_STR = ".agent-src.uncondensed/"
156
156
 
157
157
 
158
158
  def _is_structurally_allowed(source_rel: str, target_capture: str) -> bool:
@@ -107,8 +107,8 @@ def main() -> int:
107
107
  parser = argparse.ArgumentParser(description=__doc__)
108
108
  parser.add_argument(
109
109
  "paths", nargs="*",
110
- default=[".agent-src.uncompressed/rules"],
111
- help="Files or directories to scan (default: .agent-src.uncompressed/rules)",
110
+ default=[".agent-src.uncondensed/rules"],
111
+ help="Files or directories to scan (default: .agent-src.uncondensed/rules)",
112
112
  )
113
113
  parser.add_argument("--format", choices=["text", "json"], default="text")
114
114
  parser.add_argument("--quiet", action="store_true", help="Only print on failure")
@@ -2,7 +2,7 @@
2
2
  """check_kernel_rule_bundle — Phase 4.2 of road-to-always-budget-relief.
3
3
 
4
4
  Fails when a single PR (or commit range) modifies more than one
5
- kernel rule under `.agent-src.uncompressed/rules/`. Override via the
5
+ kernel rule under `.agent-src.uncondensed/rules/`. Override via the
6
6
  PR label `bundled-always-rules-acknowledged`.
7
7
 
8
8
  Kernel set is the locked 9-rule list in
@@ -43,7 +43,7 @@ KERNEL_RULES = frozenset({
43
43
  "verify-before-complete.md",
44
44
  })
45
45
 
46
- KERNEL_DIR = ".agent-src.uncompressed/rules"
46
+ KERNEL_DIR = ".agent-src.uncondensed/rules"
47
47
  DEFAULT_LABEL = "bundled-always-rules-acknowledged"
48
48
 
49
49