@event4u/agent-config 14.23.0 → 15.0.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 (503) hide show
  1. package/.augment-plugin/marketplace.json +3 -3
  2. package/.augment-plugin/plugin.json +1 -1
  3. package/.claude-plugin/marketplace.json +1 -1
  4. package/CHANGELOG.md +198 -0
  5. package/README.md +1 -1
  6. package/dist/agent-src/commands/agent-handoff.md +8 -7
  7. package/dist/agent-src/commands/agents/init.md +1 -1
  8. package/dist/agent-src/commands/agents/user/accept.md +4 -4
  9. package/dist/agent-src/commands/agents/user/delete.md +2 -2
  10. package/dist/agent-src/commands/agents/user/init.md +3 -3
  11. package/dist/agent-src/commands/agents/user/review.md +3 -3
  12. package/dist/agent-src/commands/agents/user/show.md +3 -3
  13. package/dist/agent-src/commands/agents/user/update.md +2 -2
  14. package/dist/agent-src/commands/agents/user.md +6 -6
  15. package/dist/agent-src/commands/analytics/prune.md +1 -1
  16. package/dist/agent-src/commands/analytics/show.md +2 -2
  17. package/dist/agent-src/commands/analyze/decision.md +2 -2
  18. package/dist/agent-src/commands/analyze/inbox.md +5 -5
  19. package/dist/agent-src/commands/analyze/incident.md +3 -3
  20. package/dist/agent-src/commands/analyze/near-miss.md +3 -3
  21. package/dist/agent-src/commands/analyze/postmortem.md +4 -4
  22. package/dist/agent-src/commands/analyze/premortem.md +2 -2
  23. package/dist/agent-src/commands/analyze.md +2 -2
  24. package/dist/agent-src/commands/bug/fix.md +1 -1
  25. package/dist/agent-src/commands/bug/investigate.md +2 -2
  26. package/dist/agent-src/commands/cost/profile.md +3 -3
  27. package/dist/agent-src/commands/design.md +1 -1
  28. package/dist/agent-src/commands/feature/explore.md +1 -1
  29. package/dist/agent-src/commands/feature/plan.md +2 -2
  30. package/dist/agent-src/commands/feature/roadmap.md +2 -2
  31. package/dist/agent-src/commands/ghostwriter/fetch.md +4 -4
  32. package/dist/agent-src/commands/ghostwriter/list.md +1 -1
  33. package/dist/agent-src/commands/ghostwriter/show.md +1 -1
  34. package/dist/agent-src/commands/ghostwriter/write.md +9 -9
  35. package/dist/agent-src/commands/humanize.md +6 -6
  36. package/dist/agent-src/commands/jira-ticket.md +1 -1
  37. package/dist/agent-src/commands/judge/solo.md +1 -1
  38. package/dist/agent-src/commands/judge.md +1 -1
  39. package/dist/agent-src/commands/knowledge/cross-repo.md +1 -1
  40. package/dist/agent-src/commands/knowledge/forget.md +1 -1
  41. package/dist/agent-src/commands/knowledge/ingest.md +2 -2
  42. package/dist/agent-src/commands/knowledge/list.md +1 -1
  43. package/dist/agent-src/commands/memory/add.md +3 -3
  44. package/dist/agent-src/commands/memory/load.md +4 -4
  45. package/dist/agent-src/commands/memory/mine-session.md +1 -1
  46. package/dist/agent-src/commands/memory/promote.md +4 -4
  47. package/dist/agent-src/commands/memory/propose.md +2 -2
  48. package/dist/agent-src/commands/mode.md +5 -5
  49. package/dist/agent-src/commands/post-as/ghostwriter.md +3 -3
  50. package/dist/agent-src/commands/post-as/me.md +7 -7
  51. package/dist/agent-src/commands/pr/create.md +1 -1
  52. package/dist/agent-src/commands/pr/merge.md +1 -1
  53. package/dist/agent-src/commands/profile/activate.md +1 -1
  54. package/dist/agent-src/commands/profile/show.md +1 -1
  55. package/dist/agent-src/commands/research/deep.md +2 -2
  56. package/dist/agent-src/commands/research/report.md +2 -2
  57. package/dist/agent-src/commands/review/changes.md +1 -1
  58. package/dist/agent-src/commands/review/routing.md +1 -1
  59. package/dist/agent-src/commands/roadmap/create.md +1 -1
  60. package/dist/agent-src/commands/roadmap/materialize.md +2 -2
  61. package/dist/agent-src/commands/roadmap/next.md +1 -1
  62. package/dist/agent-src/commands/roadmap/process-full.md +2 -2
  63. package/dist/agent-src/commands/security-audit-config.md +3 -3
  64. package/dist/agent-src/commands/skill/preview.md +1 -1
  65. package/dist/agent-src/commands/skills/discover.md +1 -1
  66. package/dist/agent-src/commands/sync/agent-settings.md +2 -2
  67. package/dist/agent-src/commands/sync/gitignore/fix.md +1 -1
  68. package/dist/agent-src/commands/tests/create.md +1 -1
  69. package/dist/agent-src/commands/tests/e2e-heal.md +1 -1
  70. package/dist/agent-src/commands/tests/e2e-plan.md +1 -1
  71. package/dist/agent-src/contexts/authority/kernel-rule-edits.md +6 -6
  72. package/dist/agent-src/contexts/communication/rules-auto/slash-command-routing-policy-mechanics.md +1 -2
  73. package/dist/agent-src/contexts/communication/rules-auto/think-before-action-mechanics.md +2 -2
  74. package/dist/agent-src/contexts/communication/rules-auto/token-efficiency-mechanics.md +88 -1
  75. package/dist/agent-src/contexts/communication/rules-auto/user-interaction-mechanics.md +1 -1
  76. package/dist/agent-src/contexts/contracts/frugality-charter.md +1 -1
  77. package/dist/agent-src/contexts/execution/auto-dispatch-classification.md +1 -1
  78. package/dist/agent-src/contexts/execution/auto-orchestration-activation.md +1 -1
  79. package/dist/agent-src/contexts/execution/autonomy-mechanics.md +1 -1
  80. package/dist/agent-src/contexts/execution/cheap-question-mechanics.md +1 -1
  81. package/dist/agent-src/contexts/execution/contract-decision-sheet.md +3 -3
  82. package/dist/agent-src/contexts/execution/mandated-lines.md +1 -1
  83. package/dist/agent-src/contexts/execution/non-interactive-contract.md +1 -1
  84. package/dist/agent-src/contexts/execution/orchestration-telemetry.md +1 -1
  85. package/dist/agent-src/contexts/execution/plan-confidence-gate.md +5 -5
  86. package/dist/agent-src/contexts/execution/roadmap-execution-contract.md +1 -1
  87. package/dist/agent-src/contexts/execution/subagent-modes-detail.md +1 -1
  88. package/dist/agent-src/contexts/execution/subagent-routing.md +2 -2
  89. package/dist/agent-src/contexts/execution/subagent-spawn-contract.md +1 -1
  90. package/dist/agent-src/contexts/execution/user-memory-channels.md +3 -3
  91. package/dist/agent-src/contexts/execution/verification-mechanics.md +1 -1
  92. package/dist/agent-src/contexts/judges/persona-voice-rubric.md +2 -2
  93. package/dist/agent-src/guidelines/abstraction-thresholds.md +88 -0
  94. package/dist/agent-src/guidelines/agent-infra/5w2h-analysis.md +260 -0
  95. package/dist/agent-src/guidelines/agent-infra/active-remediation-mechanics.md +99 -0
  96. package/dist/agent-src/guidelines/agent-infra/agent-interaction-and-decision-quality.md +325 -0
  97. package/dist/agent-src/guidelines/agent-infra/api-cost-levers.md +177 -0
  98. package/dist/agent-src/guidelines/agent-infra/artifact-drafting-protocol-mechanics.md +222 -0
  99. package/dist/agent-src/guidelines/agent-infra/ask-when-uncertain-demos.md +134 -0
  100. package/dist/agent-src/guidelines/agent-infra/asking-and-brevity-examples.md +198 -0
  101. package/dist/agent-src/guidelines/agent-infra/break-glass-usage.md +113 -0
  102. package/dist/agent-src/guidelines/agent-infra/carve-out-predicates.md +17 -0
  103. package/dist/agent-src/guidelines/agent-infra/comparison-matrix.md +179 -0
  104. package/dist/agent-src/guidelines/agent-infra/context-hygiene-mechanics.md +165 -0
  105. package/dist/agent-src/guidelines/agent-infra/corpus-grounding-authoring.md +91 -0
  106. package/dist/agent-src/guidelines/agent-infra/critical-thinking.md +156 -0
  107. package/dist/agent-src/guidelines/agent-infra/cross-source-consistency-mechanics.md +109 -0
  108. package/dist/agent-src/guidelines/agent-infra/developer-judgment.md +82 -0
  109. package/dist/agent-src/guidelines/agent-infra/direct-answers-demos.md +142 -0
  110. package/dist/agent-src/guidelines/agent-infra/domain-adoption-gates.md +112 -0
  111. package/dist/agent-src/guidelines/agent-infra/domain-eval-anti-pattern.md +53 -0
  112. package/dist/agent-src/guidelines/agent-infra/domain-pack-architecture.md +56 -0
  113. package/dist/agent-src/guidelines/agent-infra/downstream-changes-mechanics.md +91 -0
  114. package/dist/agent-src/guidelines/agent-infra/emphasis-budget.md +45 -0
  115. package/dist/agent-src/guidelines/agent-infra/engineering-memory-data-format.md +210 -0
  116. package/dist/agent-src/guidelines/agent-infra/evaluator-independence-mechanics.md +92 -0
  117. package/dist/agent-src/guidelines/agent-infra/existence-question-verdicts.md +80 -0
  118. package/dist/agent-src/guidelines/agent-infra/failure-signatures.md +70 -0
  119. package/dist/agent-src/guidelines/agent-infra/false-green.md +233 -0
  120. package/dist/agent-src/guidelines/agent-infra/first-principles.md +192 -0
  121. package/dist/agent-src/guidelines/agent-infra/framework-neutrality-patterns.md +66 -0
  122. package/dist/agent-src/guidelines/agent-infra/frontier-reasoning-operating-profile.md +169 -0
  123. package/dist/agent-src/guidelines/agent-infra/gate-authoring.md +177 -0
  124. package/dist/agent-src/guidelines/agent-infra/guarded-baseline.md +39 -0
  125. package/dist/agent-src/guidelines/agent-infra/installed-tools-manifest.md +142 -0
  126. package/dist/agent-src/guidelines/agent-infra/inversion-thinking.md +388 -0
  127. package/dist/agent-src/guidelines/agent-infra/ios-simulator-guide.md +378 -0
  128. package/dist/agent-src/guidelines/agent-infra/language-and-tone-examples.md +141 -0
  129. package/dist/agent-src/guidelines/agent-infra/layered-settings.md +317 -0
  130. package/dist/agent-src/guidelines/agent-infra/linked-projects-onboarding-gate.md +80 -0
  131. package/dist/agent-src/guidelines/agent-infra/mcp-request-signing.md +197 -0
  132. package/dist/agent-src/guidelines/agent-infra/memory-access.md +149 -0
  133. package/dist/agent-src/guidelines/agent-infra/mental-models.md +314 -0
  134. package/dist/agent-src/guidelines/agent-infra/minimal-safe-diff-mechanics.md +241 -0
  135. package/dist/agent-src/guidelines/agent-infra/missing-tool-handling.md +66 -0
  136. package/dist/agent-src/guidelines/agent-infra/model-recommendation.md +101 -0
  137. package/dist/agent-src/guidelines/agent-infra/naming.md +69 -0
  138. package/dist/agent-src/guidelines/agent-infra/notes-horizon-mechanics.md +90 -0
  139. package/dist/agent-src/guidelines/agent-infra/output-patterns.md +117 -0
  140. package/dist/agent-src/guidelines/agent-infra/recurring-criticism-mechanics.md +96 -0
  141. package/dist/agent-src/guidelines/agent-infra/reuse-verdict-mechanics.md +71 -0
  142. package/dist/agent-src/guidelines/agent-infra/review-routing-data-format.md +143 -0
  143. package/dist/agent-src/guidelines/agent-infra/roadmap-deferred-resolution-provenance.md +54 -0
  144. package/dist/agent-src/guidelines/agent-infra/roadmap-progress-mechanics.md +274 -0
  145. package/dist/agent-src/guidelines/agent-infra/role-contracts.md +209 -0
  146. package/dist/agent-src/guidelines/agent-infra/role-mode-router.md +89 -0
  147. package/dist/agent-src/guidelines/agent-infra/rule-body-migration-inventory.md +241 -0
  148. package/dist/agent-src/guidelines/agent-infra/rule-type-governance.md +73 -0
  149. package/dist/agent-src/guidelines/agent-infra/runtime-layer.md +89 -0
  150. package/dist/agent-src/guidelines/agent-infra/scqa-framework.md +526 -0
  151. package/dist/agent-src/guidelines/agent-infra/security-lint-containment.md +121 -0
  152. package/dist/agent-src/guidelines/agent-infra/self-improvement-pipeline.md +134 -0
  153. package/dist/agent-src/guidelines/agent-infra/simplicity-and-goal-demos.md +211 -0
  154. package/dist/agent-src/guidelines/agent-infra/six-hats.md +353 -0
  155. package/dist/agent-src/guidelines/agent-infra/size-and-scope.md +229 -0
  156. package/dist/agent-src/guidelines/agent-infra/skill-quality-checklist.md +157 -0
  157. package/dist/agent-src/guidelines/agent-infra/source-confidentiality-mechanics.md +109 -0
  158. package/dist/agent-src/guidelines/agent-infra/symptom-driven-harvest-loop.md +104 -0
  159. package/dist/agent-src/guidelines/agent-infra/systems-thinking.md +220 -0
  160. package/dist/agent-src/guidelines/agent-infra/tool-description-as-policy.md +35 -0
  161. package/dist/agent-src/guidelines/agent-infra/tool-integration.md +73 -0
  162. package/dist/agent-src/guidelines/agent-infra/traceability-field-mechanics.md +50 -0
  163. package/dist/agent-src/guidelines/agent-infra/untrusted-input-spotlighting.md +166 -0
  164. package/dist/agent-src/guidelines/agent-infra/verify-before-complete-demos.md +128 -0
  165. package/dist/agent-src/guidelines/augment-portability-patterns.md +70 -0
  166. package/dist/agent-src/guidelines/code-clarity.md +350 -0
  167. package/dist/agent-src/guidelines/component-oriented-and-oop-development.md +189 -0
  168. package/dist/agent-src/guidelines/cross-role-handoff.md +127 -0
  169. package/dist/agent-src/guidelines/design-antipatterns-triggers.json +18 -0
  170. package/dist/agent-src/guidelines/design-antipatterns.md +327 -0
  171. package/dist/agent-src/guidelines/design-asset-discipline.md +38 -0
  172. package/dist/agent-src/guidelines/design-canon.md +63 -0
  173. package/dist/agent-src/guidelines/design-fidelity-mechanics.md +293 -0
  174. package/dist/agent-src/guidelines/design-fidelity-routing.md +78 -0
  175. package/dist/agent-src/guidelines/design-handover-extraction.md +117 -0
  176. package/dist/agent-src/guidelines/design-modes.md +143 -0
  177. package/dist/agent-src/guidelines/design-reconciliation.md +172 -0
  178. package/dist/agent-src/guidelines/docs/readme-size-and-splitting.md +209 -0
  179. package/dist/agent-src/guidelines/e2e/playwright.md +363 -0
  180. package/dist/agent-src/guidelines/gtm-handoff.md +114 -0
  181. package/dist/agent-src/guidelines/monorepo-antipatterns.md +141 -0
  182. package/dist/agent-src/guidelines/php/api-design.md +115 -0
  183. package/dist/agent-src/guidelines/php/artisan-commands.md +81 -0
  184. package/dist/agent-src/guidelines/php/blade-ui.md +78 -0
  185. package/dist/agent-src/guidelines/php/controllers.md +90 -0
  186. package/dist/agent-src/guidelines/php/database.md +194 -0
  187. package/dist/agent-src/guidelines/php/eloquent.md +208 -0
  188. package/dist/agent-src/guidelines/php/flux.md +80 -0
  189. package/dist/agent-src/guidelines/php/general.md +207 -0
  190. package/dist/agent-src/guidelines/php/git.md +164 -0
  191. package/dist/agent-src/guidelines/php/jobs.md +111 -0
  192. package/dist/agent-src/guidelines/php/livewire.md +71 -0
  193. package/dist/agent-src/guidelines/php/logging.md +79 -0
  194. package/dist/agent-src/guidelines/php/naming.md +89 -0
  195. package/dist/agent-src/guidelines/php/patterns/dependency-injection.md +57 -0
  196. package/dist/agent-src/guidelines/php/patterns/dtos.md +199 -0
  197. package/dist/agent-src/guidelines/php/patterns/events.md +67 -0
  198. package/dist/agent-src/guidelines/php/patterns/factory.md +53 -0
  199. package/dist/agent-src/guidelines/php/patterns/pipelines.md +66 -0
  200. package/dist/agent-src/guidelines/php/patterns/policies.md +66 -0
  201. package/dist/agent-src/guidelines/php/patterns/repositories.md +122 -0
  202. package/dist/agent-src/guidelines/php/patterns/service-layer.md +64 -0
  203. package/dist/agent-src/guidelines/php/patterns/strategy.md +247 -0
  204. package/dist/agent-src/guidelines/php/patterns.md +28 -0
  205. package/dist/agent-src/guidelines/php/performance.md +92 -0
  206. package/dist/agent-src/guidelines/php/php-coding-patterns.md +80 -0
  207. package/dist/agent-src/guidelines/php/resources.md +100 -0
  208. package/dist/agent-src/guidelines/php/security.md +110 -0
  209. package/dist/agent-src/guidelines/php/sql.md +97 -0
  210. package/dist/agent-src/guidelines/php/validations.md +119 -0
  211. package/dist/agent-src/guidelines/php/websocket.md +100 -0
  212. package/dist/agent-src/guidelines/prompt-templates.md +189 -0
  213. package/dist/agent-src/guidelines/redundancy-taxonomy.md +208 -0
  214. package/dist/agent-src/guidelines/wing4-handoff.md +127 -0
  215. package/dist/agent-src/personas/README.md +1 -1
  216. package/dist/agent-src/personas/_template-specialist/persona.md +1 -1
  217. package/dist/agent-src/personas/product-owner.md +1 -1
  218. package/dist/agent-src/rules/active-remediation.md +1 -1
  219. package/dist/agent-src/rules/architecture.md +2 -2
  220. package/dist/agent-src/rules/artifact-drafting-protocol.md +1 -1
  221. package/dist/agent-src/rules/ask-when-uncertain.md +2 -2
  222. package/dist/agent-src/rules/brand-source-of-truth.md +9 -7
  223. package/dist/agent-src/rules/code-comment-discipline.md +2 -2
  224. package/dist/agent-src/rules/code-provenance.md +1 -1
  225. package/dist/agent-src/rules/content-quoting-floor.md +1 -1
  226. package/dist/agent-src/rules/context-hygiene.md +5 -5
  227. package/dist/agent-src/rules/cross-source-consistency.md +1 -1
  228. package/dist/agent-src/rules/design-fidelity.md +36 -46
  229. package/dist/agent-src/rules/direct-answers.md +2 -2
  230. package/dist/agent-src/rules/domain-adoption-policy.md +1 -1
  231. package/dist/agent-src/rules/evaluator-independence.md +1 -1
  232. package/dist/agent-src/rules/framework-neutrality-in-generic-skills.md +1 -1
  233. package/dist/agent-src/rules/icon-consistency.md +5 -1
  234. package/dist/agent-src/rules/improve-before-implement.md +1 -1
  235. package/dist/agent-src/rules/language-and-tone.md +3 -3
  236. package/dist/agent-src/rules/minimal-safe-diff.md +1 -1
  237. package/dist/agent-src/rules/notes-first-reasoning.md +2 -2
  238. package/dist/agent-src/rules/recurring-criticism.md +1 -1
  239. package/dist/agent-src/rules/roadmap-progress-sync.md +1 -1
  240. package/dist/agent-src/rules/role-mode-adherence.md +2 -2
  241. package/dist/agent-src/rules/security-sensitive-stop.md +1 -1
  242. package/dist/agent-src/rules/size-enforcement.md +1 -1
  243. package/dist/agent-src/rules/source-confidentiality.md +2 -2
  244. package/dist/agent-src/rules/think-before-action.md +1 -1
  245. package/dist/agent-src/rules/token-efficiency.md +7 -5
  246. package/dist/agent-src/rules/ui-audit-gate.md +3 -2
  247. package/dist/agent-src/rules/untrusted-input-defense.md +3 -3
  248. package/dist/agent-src/skills/activation-design/SKILL.md +2 -2
  249. package/dist/agent-src/skills/adr-create/SKILL.md +5 -5
  250. package/dist/agent-src/skills/ai-council/SKILL.md +1 -1
  251. package/dist/agent-src/skills/ai-council/references/advanced-modes.md +1 -1
  252. package/dist/agent-src/skills/blade-ui/SKILL.md +1 -1
  253. package/dist/agent-src/skills/blast-radius-analyzer/SKILL.md +1 -1
  254. package/dist/agent-src/skills/brand-to-tokens/SKILL.md +24 -3
  255. package/dist/agent-src/skills/bug-analyzer/SKILL.md +1 -1
  256. package/dist/agent-src/skills/build-buy-partner/SKILL.md +1 -1
  257. package/dist/agent-src/skills/churn-prevention/SKILL.md +2 -2
  258. package/dist/agent-src/skills/code-refactoring/SKILL.md +3 -3
  259. package/dist/agent-src/skills/code-review/SKILL.md +3 -3
  260. package/dist/agent-src/skills/command-writing/SKILL.md +3 -3
  261. package/dist/agent-src/skills/comp-banding/SKILL.md +1 -1
  262. package/dist/agent-src/skills/competitive-moat-analysis/SKILL.md +1 -1
  263. package/dist/agent-src/skills/competitive-positioning/SKILL.md +2 -2
  264. package/dist/agent-src/skills/complexity-first-planning/SKILL.md +1 -1
  265. package/dist/agent-src/skills/condense-memory/SKILL.md +1 -1
  266. package/dist/agent-src/skills/content-funnel-design/SKILL.md +2 -2
  267. package/dist/agent-src/skills/contracts-cognition/SKILL.md +1 -1
  268. package/dist/agent-src/skills/copilot-agents-optimization/SKILL.md +2 -2
  269. package/dist/agent-src/skills/corpus-grounding/SKILL.md +2 -2
  270. package/dist/agent-src/skills/customer-research/SKILL.md +2 -2
  271. package/dist/agent-src/skills/dashboard-design/SKILL.md +1 -1
  272. package/dist/agent-src/skills/data-handling-judgment/SKILL.md +1 -1
  273. package/dist/agent-src/skills/deal-qualification-meddic/SKILL.md +2 -2
  274. package/dist/agent-src/skills/decision-record/SKILL.md +3 -3
  275. package/dist/agent-src/skills/decision-review/SKILL.md +8 -8
  276. package/dist/agent-src/skills/deep-reading-analyst/SKILL.md +22 -22
  277. package/dist/agent-src/skills/design-intelligence/SKILL.md +4 -4
  278. package/dist/agent-src/skills/design-intelligence/references/context-and-registers.md +2 -2
  279. package/dist/agent-src/skills/design-review/SKILL.md +4 -4
  280. package/dist/agent-src/skills/design-system-capture/references/design-system-json.md +20 -1
  281. package/dist/agent-src/skills/design-tokens/SKILL.md +17 -2
  282. package/dist/agent-src/skills/design-variations/SKILL.md +2 -2
  283. package/dist/agent-src/skills/developer-like-execution/SKILL.md +2 -2
  284. package/dist/agent-src/skills/discovery-interview/SKILL.md +2 -2
  285. package/dist/agent-src/skills/doc-coauthoring/SKILL.md +3 -3
  286. package/dist/agent-src/skills/editorial-calendar/SKILL.md +2 -2
  287. package/dist/agent-src/skills/existing-ui-audit/SKILL.md +44 -1
  288. package/dist/agent-src/skills/existing-ui-audit/references/anti-slop-cross-reference.md +2 -2
  289. package/dist/agent-src/skills/expansion-playbook/SKILL.md +2 -2
  290. package/dist/agent-src/skills/experiment-loop/SKILL.md +1 -1
  291. package/dist/agent-src/skills/experiment-loop/references/protocol.md +1 -1
  292. package/dist/agent-src/skills/fe-design/SKILL.md +3 -3
  293. package/dist/agent-src/skills/fe-design/references/design-patterns.md +1 -1
  294. package/dist/agent-src/skills/fe-design/references/design-read-and-memory.md +3 -3
  295. package/dist/agent-src/skills/fe-design/references/source-led-port.md +1 -1
  296. package/dist/agent-src/skills/feature-planning/SKILL.md +1 -1
  297. package/dist/agent-src/skills/flux/SKILL.md +1 -1
  298. package/dist/agent-src/skills/forecast-accuracy/SKILL.md +2 -2
  299. package/dist/agent-src/skills/forecasting/SKILL.md +2 -2
  300. package/dist/agent-src/skills/fundraising-narrative/SKILL.md +2 -2
  301. package/dist/agent-src/skills/funnel-analysis/SKILL.md +2 -2
  302. package/dist/agent-src/skills/gtm-launch/SKILL.md +2 -2
  303. package/dist/agent-src/skills/hiring-loop-design/SKILL.md +1 -1
  304. package/dist/agent-src/skills/html-deck/SKILL.md +5 -5
  305. package/dist/agent-src/skills/humanizer/SKILL.md +1 -1
  306. package/dist/agent-src/skills/humanizer/data/patterns.md +1 -1
  307. package/dist/agent-src/skills/iconography/SKILL.md +3 -3
  308. package/dist/agent-src/skills/judge-synthesis/SKILL.md +1 -1
  309. package/dist/agent-src/skills/laravel-api-endpoint/SKILL.md +2 -2
  310. package/dist/agent-src/skills/launch-readiness/SKILL.md +3 -3
  311. package/dist/agent-src/skills/learning-to-rule-or-skill/SKILL.md +6 -6
  312. package/dist/agent-src/skills/livewire/SKILL.md +1 -1
  313. package/dist/agent-src/skills/market-entry-analysis/SKILL.md +1 -1
  314. package/dist/agent-src/skills/mcp-builder/SKILL.md +1 -1
  315. package/dist/agent-src/skills/memory-consolidation/SKILL.md +3 -3
  316. package/dist/agent-src/skills/messaging-architecture/SKILL.md +2 -2
  317. package/dist/agent-src/skills/monorepo-workspace/SKILL.md +1 -1
  318. package/dist/agent-src/skills/onboarding-design/SKILL.md +2 -2
  319. package/dist/agent-src/skills/onboarding-program/SKILL.md +1 -1
  320. package/dist/agent-src/skills/one-on-one-cadence/SKILL.md +1 -1
  321. package/dist/agent-src/skills/org-design/SKILL.md +1 -1
  322. package/dist/agent-src/skills/overbuild-review-lens/SKILL.md +3 -3
  323. package/dist/agent-src/skills/override-management/SKILL.md +1 -1
  324. package/dist/agent-src/skills/perf-feedback-craft/SKILL.md +1 -1
  325. package/dist/agent-src/skills/persona-writing/SKILL.md +1 -1
  326. package/dist/agent-src/skills/php-coder/SKILL.md +1 -1
  327. package/dist/agent-src/skills/pipeline-strategy/SKILL.md +2 -2
  328. package/dist/agent-src/skills/playwright-testing/SKILL.md +3 -3
  329. package/dist/agent-src/skills/po-discovery/SKILL.md +1 -1
  330. package/dist/agent-src/skills/positioning-strategy/SKILL.md +2 -2
  331. package/dist/agent-src/skills/privacy-review/SKILL.md +1 -1
  332. package/dist/agent-src/skills/prompt-optimizer/SKILL.md +3 -3
  333. package/dist/agent-src/skills/react-shadcn-ui/SKILL.md +1 -1
  334. package/dist/agent-src/skills/reasoning-orchestrator/SKILL.md +2 -2
  335. package/dist/agent-src/skills/receiving-code-review/SKILL.md +1 -1
  336. package/dist/agent-src/skills/refine-ticket/SKILL.md +2 -2
  337. package/dist/agent-src/skills/release-comms/SKILL.md +2 -2
  338. package/dist/agent-src/skills/retention-loops/SKILL.md +2 -2
  339. package/dist/agent-src/skills/review-routing/SKILL.md +2 -2
  340. package/dist/agent-src/skills/roadmap-management/SKILL.md +1 -1
  341. package/dist/agent-src/skills/roadmap-management/references/archival.md +1 -1
  342. package/dist/agent-src/skills/roadmap-writing/SKILL.md +5 -5
  343. package/dist/agent-src/skills/rule-writing/SKILL.md +6 -6
  344. package/dist/agent-src/skills/runway-cognition/SKILL.md +2 -2
  345. package/dist/agent-src/skills/scenario-modeling/SKILL.md +2 -2
  346. package/dist/agent-src/skills/skill-writing/SKILL.md +2 -2
  347. package/dist/agent-src/skills/skill-writing/references/procedure.md +1 -1
  348. package/dist/agent-src/skills/skill-writing/references/section-patterns.md +3 -3
  349. package/dist/agent-src/skills/spreadsheet-authoring/SKILL.md +1 -1
  350. package/dist/agent-src/skills/stakeholder-tradeoff/SKILL.md +3 -3
  351. package/dist/agent-src/skills/subagent-orchestration/SKILL.md +1 -1
  352. package/dist/agent-src/skills/supply-chain-intake/SKILL.md +1 -1
  353. package/dist/agent-src/skills/systematic-debugging/SKILL.md +2 -2
  354. package/dist/agent-src/skills/tailwind-engineer/SKILL.md +11 -5
  355. package/dist/agent-src/skills/throughput-vs-morale-tradeoff/SKILL.md +1 -1
  356. package/dist/agent-src/skills/token-optimizer/SKILL.md +1 -1
  357. package/dist/agent-src/skills/typography-system/SKILL.md +2 -2
  358. package/dist/agent-src/skills/ui-component-architect/SKILL.md +28 -8
  359. package/dist/agent-src/skills/unit-economics-modeling/SKILL.md +2 -2
  360. package/dist/agent-src/skills/upstream-contribute/SKILL.md +1 -1
  361. package/dist/agent-src/skills/validate-feature-fit/SKILL.md +2 -2
  362. package/dist/agent-src/skills/verify-repair-loop/SKILL.md +2 -2
  363. package/dist/agent-src/skills/vision-articulation/SKILL.md +1 -1
  364. package/dist/agent-src/skills/voc-extract/SKILL.md +2 -2
  365. package/dist/agent-src/skills/voice-and-tone-design/SKILL.md +2 -2
  366. package/dist/agent-src/skills/wireframe/SKILL.md +1 -1
  367. package/dist/agent-src/skills/workspace-link/SKILL.md +1 -1
  368. package/dist/agent-src/templates/agent-settings.md +6 -6
  369. package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
  370. package/dist/agent-src/templates/contexts/knowledge-pages.md +2 -3
  371. package/dist/agent-src/templates/copilot-instructions.md +1 -1
  372. package/dist/agent-src/templates/roadmaps.md +1 -1
  373. package/dist/agent-src/templates/scripts/README.md +2 -2
  374. package/dist/agent-src/user-types/_template/user-type.md +1 -1
  375. package/dist/cli-delegate/check_update_banner.js +12 -1
  376. package/dist/cli-delegate/{chunk-NLP54U3J.js → chunk-2XY7ILBT.js} +13 -1
  377. package/dist/cli-delegate/{chunk-IAI3XL43.js → chunk-3FKR64R5.js} +22 -6
  378. package/dist/cli-delegate/{chunk-J3RFNKG4.js → chunk-55ACLDUE.js} +2 -2
  379. package/dist/cli-delegate/{chunk-PKOBQADP.js → chunk-57PN4GYJ.js} +1 -1
  380. package/dist/cli-delegate/{chunk-KCNTUSPI.js → chunk-AK6HODNQ.js} +4 -4
  381. package/dist/cli-delegate/{chunk-2FTMENJL.js → chunk-GYC3VRYN.js} +1 -1
  382. package/dist/cli-delegate/{chunk-LWTYTX6F.js → chunk-HZ52BRGG.js} +24 -18
  383. package/dist/cli-delegate/{chunk-6RJA2F5A.js → chunk-IVBPRCQO.js} +1 -1
  384. package/dist/cli-delegate/{chunk-I6RHFQEG.js → chunk-YUM5KURG.js} +17 -1
  385. package/dist/cli-delegate/cmd_analyze_session.js +1 -1
  386. package/dist/cli-delegate/cmd_brand_status.js +1 -1
  387. package/dist/cli-delegate/cmd_conformance.js +3 -3
  388. package/dist/cli-delegate/cmd_doctor.js +3 -3
  389. package/dist/cli-delegate/cmd_explain.js +2 -2
  390. package/dist/cli-delegate/cmd_export.js +4 -4
  391. package/dist/cli-delegate/cmd_handoff.js +4 -4
  392. package/dist/cli-delegate/cmd_mcp_available.js +1 -1
  393. package/dist/cli-delegate/cmd_memory_get.js +1 -1
  394. package/dist/cli-delegate/cmd_migrate.js +2 -2
  395. package/dist/cli-delegate/cmd_packs_active.js +2 -2
  396. package/dist/cli-delegate/cmd_prune.js +4 -4
  397. package/dist/cli-delegate/cmd_route_audit.js +3 -3
  398. package/dist/cli-delegate/cmd_route_explain.js +1 -1
  399. package/dist/cli-delegate/cmd_session_recycle.js +1 -1
  400. package/dist/cli-delegate/cmd_settings_get.js +15 -9
  401. package/dist/cli-delegate/cmd_settings_migrate.js +4 -4
  402. package/dist/cli-delegate/cmd_settings_set.js +41 -11
  403. package/dist/cli-delegate/cmd_sync.js +4 -4
  404. package/dist/cli-delegate/cmd_uninstall.js +4 -4
  405. package/dist/cli-delegate/cmd_update.js +1 -1
  406. package/dist/cli-delegate/cmd_upgrade.js +1 -1
  407. package/dist/cli-delegate/cmd_validate.js +4 -4
  408. package/dist/cli-delegate/cmd_versions.js +1 -1
  409. package/dist/discovery/deprecation-report.md +1 -1
  410. package/dist/discovery/discovery-manifest.json +22 -75
  411. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  412. package/dist/discovery/discovery-manifest.summary.md +3 -3
  413. package/dist/discovery/dormancy-report.md +1 -1
  414. package/dist/discovery/orphan-report.md +1 -1
  415. package/dist/discovery/packs.json +5 -7
  416. package/dist/discovery/trust-report.md +2 -2
  417. package/dist/discovery/workspaces.json +4 -6
  418. package/dist/hooks/dispatch.js +8607 -8930
  419. package/dist/install/install.mjs +35 -8
  420. package/dist/mcp/registry-manifest.json +3 -3
  421. package/dist/mcp/server.json +2 -2
  422. package/dist/mcp/server.mjs +1433 -1342
  423. package/dist/router.json +1 -1
  424. package/dist/scripts/_lib/agent_settings.js +73 -0
  425. package/dist/scripts/_lib/agent_src.js +20 -0
  426. package/dist/scripts/_lib/guidelines_lane.js +158 -0
  427. package/dist/scripts/condense.js +2 -5
  428. package/dist/server/io/yamlIO.js +125 -17
  429. package/dist/server/schemas/settings.js +18 -4
  430. package/dist/shared/settingsSurface.js +6 -1
  431. package/docs/contracts/settings-classes.md +18 -9
  432. package/docs/guidelines/abstraction-thresholds.md +35 -0
  433. package/docs/guidelines/agent-infra/active-remediation-mechanics.md +3 -3
  434. package/docs/guidelines/agent-infra/false-green.md +2 -2
  435. package/docs/guidelines/agent-infra/roadmap-progress-mechanics.md +1 -1
  436. package/docs/guidelines/agent-infra/skill-quality-checklist.md +1 -1
  437. package/docs/guidelines/design-fidelity-mechanics.md +4 -0
  438. package/docs/guidelines/design-fidelity-routing.md +78 -0
  439. package/docs/guidelines/design-reconciliation.md +172 -0
  440. package/docs/guidelines/gtm-handoff.md +2 -2
  441. package/docs/guidelines/wing4-handoff.md +2 -2
  442. package/package.json +7 -3
  443. package/src/config/agent-settings.template.yml +55 -8
  444. package/src/config/ci-local-parity.yml +34 -0
  445. package/src/config/continuity-surface.json +4 -32
  446. package/src/config/gate-coverage.yml +31 -8
  447. package/src/config/gate-reachability-exemptions.json +1 -0
  448. package/src/config/gate-violation-baselines.json +3 -3
  449. package/src/config/hook-token-budget.json +1 -1
  450. package/src/config/host-injection-effect.json +2 -2
  451. package/src/config/pack-size-budget.json +55 -4
  452. package/src/config/platform-anchor.json +47 -0
  453. package/src/config/preamble-payload-budget.json +2 -3
  454. package/src/config/publish-surface.json +4 -2
  455. package/src/config/ratification-policy.json +7 -0
  456. package/src/config/rule-stub-ceilings.json +16 -9
  457. package/src/scripts/_cli/cmd_settings_get.ts +22 -7
  458. package/src/scripts/_lib/agent_settings.ts +85 -0
  459. package/src/scripts/_lib/agent_src.ts +21 -0
  460. package/src/scripts/_lib/artifact_maturity.ts +242 -0
  461. package/src/scripts/_lib/conformance_report.ts +403 -0
  462. package/src/scripts/_lib/continuity_writer.ts +72 -13
  463. package/src/scripts/_lib/design_system_import.ts +20 -0
  464. package/src/scripts/_lib/design_tolerance.ts +281 -0
  465. package/src/scripts/_lib/guidelines_lane.ts +164 -0
  466. package/src/scripts/_lib/obligation_frequency.ts +2 -3
  467. package/src/scripts/_lib/platform_anchor.ts +1053 -0
  468. package/src/scripts/_lib/ratification_artifact.ts +278 -0
  469. package/src/scripts/_lib/security_lint.ts +23 -2
  470. package/src/scripts/_lib/self_repair.ts +21 -0
  471. package/src/scripts/_lib/session_index_trust.ts +42 -1
  472. package/src/scripts/_lib/standing_bound_ratchet.ts +103 -37
  473. package/src/scripts/_lib/tolerance_shadow.ts +177 -0
  474. package/src/scripts/ai_council/redact_low_impact_entry.ts +8 -0
  475. package/src/scripts/autonomy_friction_traffic.ts +379 -0
  476. package/src/scripts/check_kernel_edit_ratified.ts +462 -0
  477. package/src/scripts/check_loss_class_declared.ts +793 -46
  478. package/src/scripts/check_platform_anchor.ts +390 -0
  479. package/src/scripts/check_preamble_payload_budget.ts +292 -4
  480. package/src/scripts/check_projected_rule_routes.ts +395 -0
  481. package/src/scripts/code_graph/cli.ts +6 -0
  482. package/src/scripts/condense.ts +2 -6
  483. package/src/scripts/generate_host_cost_table.ts +354 -0
  484. package/src/scripts/hook_manifest.json +1 -1
  485. package/src/scripts/hook_manifest.yaml +35 -27
  486. package/src/scripts/hooks/category_a.ts +1 -1
  487. package/src/scripts/hooks/chain_nudge_hook.ts +311 -25
  488. package/src/scripts/hooks/session_eol_hook.ts +68 -154
  489. package/src/scripts/hooks/source_first_gate_hook.ts +12 -0
  490. package/src/scripts/hooks/ui_route_nudge_hook.ts +52 -15
  491. package/src/scripts/hot_context_hook.ts +41 -401
  492. package/src/scripts/lint_evidence_artifacts.ts +1 -0
  493. package/src/scripts/lint_knowledge_scale.ts +0 -26
  494. package/src/scripts/memory_lookup.ts +9 -9
  495. package/src/scripts/report_standing_payload_by_host.ts +7 -7
  496. package/src/scripts/session_memory_index.ts +5 -0
  497. package/src/scripts/sync_agent_settings.ts +270 -10
  498. package/src/server/io/yamlIO.ts +127 -17
  499. package/src/server/schemas/settings.ts +25 -5
  500. package/src/shared/settingsSurface.ts +13 -2
  501. package/src/templates/compact-instructions.md +8 -3
  502. package/dist/agent-src/commands/chat-history/import.md +0 -170
  503. package/dist/agent-src/commands/chat-history.md +0 -63
@@ -0,0 +1,172 @@
1
+ # Design reconciliation — artifact values against a project's own tokens
2
+
3
+ Split out of [`design-fidelity-mechanics`](design-fidelity-mechanics.md) on
4
+ 2026-09-09, and the reason is a real constraint rather than tidiness: that file
5
+ crossed `check_depth_budget`'s 16,000-character per-file ceiling, which is a
6
+ shrink-only growth ratchet. The subject splits cleanly — that guideline answers
7
+ *how do I port an artifact faithfully*, and this one answers *what happens when
8
+ the artifact's values meet a project that already has its own*. The two rules
9
+ that arbitrate between an artifact and a brand both point here, and neither can
10
+ hold the arbitration itself: a consumer receives `design-fidelity`
11
+ (`engineering-base`) or `brand-source-of-truth` (`brand`), rarely both.
12
+
13
+ ## Tolerance — why the mechanism ships and the number does not
14
+
15
+ `design-fidelity`'s `strict` mode says EVERY visible deviation needs explicit
16
+ confirmation. The owner directive that motivated
17
+ `road-to-design-intent-conformance` asks for an unprompted approximation within
18
+ a tolerance. Read literally, those contradict — and the contradiction is real
19
+ rather than a wording problem: `grep -cE 'reconcil|tolerance|approximat|nearest'`
20
+ over the rule and this guideline returned 0 / 0 before this section existed.
21
+
22
+ **The re-frame, and its condition.** A value inside a configured tolerance stops
23
+ being an unconfirmed deviation and becomes a **reported reconciliation**: the
24
+ project's token is written, and the distance from the artifact's own value is
25
+ reported on the row. Everything outside the tolerance stays confirmation-bound,
26
+ and structure — layout, control types, component set, ordering, breakpoints —
27
+ is never in scope at any setting, because it is not a value question.
28
+
29
+ **The condition is load-bearing, not a hedge.** `design.approximation` ships
30
+ `enabled: false` with `tolerance.color` and `tolerance.length` both `null`, so
31
+ in a default install the paragraph above describes nothing that happens: every
32
+ deviation stays confirmation-bound exactly as before, and no consumer default
33
+ moved. `hard-floor` disables the mechanism outright, so the strictest mode
34
+ cannot be loosened by configuring a tolerance under it.
35
+
36
+ **Why no threshold ships**, decided by the AI council on 2026-09-09 (anthropic +
37
+ openai, 2/2), and worth re-reading before adding one: *a number in a config
38
+ file, even flagged unmeasured, shapes behavior and creates path dependency.*
39
+ Zero of seven design-to-code benchmarks in the evidence set score token
40
+ conformance, so a shipped threshold would be a guess wearing a default's
41
+ authority. Two proposals were examined and rejected on their merits rather than
42
+ on caution — `±5 per RGB channel`, because RGB channel distance is not
43
+ perceptually uniform and "likely imperceptible" does not follow from it; and
44
+ `max(1px, 2%)`, because it grows steadily more permissive at large dimensions
45
+ with no evidence that this is wanted. GitHub Primer's ±1px spacing widening is
46
+ the one real measurement available and is recorded as an externally observed
47
+ **candidate**, not adopted.
48
+
49
+ **The metric IS fixed, and that is the half that could be settled.** Colour
50
+ distance is OKLab ΔEOK, length distance is absolute CSS pixels
51
+ (`src/scripts/_lib/design_tolerance.ts`). Fixing the method mattered before
52
+ fixing any number: RGB Euclidean, ΔE LAB, CIEDE2000 and OKLab/ΔEOK give
53
+ different numbers for the same pair, so a threshold quoted without its metric
54
+ is not a threshold.
55
+
56
+ **The distance is reported on every row regardless.** Preserved values carry it
57
+ too. That is what makes the deferred half decidable: a window over rows that
58
+ report distances yields a distribution, where a window over rows reporting only
59
+ "kept" or "changed" yields nothing to read a threshold off.
60
+
61
+ ## Artifact versus brand
62
+
63
+ Both `design-fidelity` and `brand-source-of-truth` point here rather than
64
+ carrying this arbitration themselves, and the pointers are **operative**: apply
65
+ this section before reconciling a value, not as a reference to consult if
66
+ curious. Two standing rules cannot each hold half of an arbitration between
67
+ them — a consumer receives one of them without the other, because
68
+ `design-fidelity` ships in `engineering-base` and `brand-source-of-truth` in
69
+ `brand` — so the split has to be somewhere both can reach.
70
+
71
+ **Values reconcile onto the brand token, with the distance reported.** Colour,
72
+ type and spacing are the axes where the field converges, unanimously and at
73
+ error severity, across the design systems surveyed. Where a registered brand
74
+ token exists, it wins, and the artifact's own value is not silently absorbed:
75
+ the distance between the two is reported on the same row, so what changed is
76
+ visible before it is cumulative.
77
+
78
+ **Structure is the artifact's, and is never adjusted to suit a token.** Layout,
79
+ control types, component set, ordering, breakpoints and behavior are not value
80
+ questions at all, and no brand token is evidence about any of them. A structural
81
+ deviation stays what `design-fidelity`'s Iron Law says it is: a proposal needing
82
+ explicit confirmation.
83
+
84
+ **A conflict is surfaced, never merged.** Where the artifact and the brand
85
+ genuinely disagree on something that is not resolvable by the two rules above —
86
+ an artifact whose type scale contradicts the brand's, say — the agent surfaces
87
+ both readings as a numbered choice and builds neither until the human picks.
88
+ Averaging them produces a third design nobody approved.
89
+
90
+ **Where no brand exists**, there is nothing to reconcile onto: the artifact's
91
+ values are the values, and `brand-source-of-truth`'s own "when NOT to fire"
92
+ already says so. The reconciliation above is a rule about *two* sources, not a
93
+ license to normalize one.
94
+
95
+ **What this section does NOT decide** is whether an in-tolerance value may be
96
+ reconciled *without asking*. That needs a tolerance to exist and a default to be
97
+ chosen, and both are recorded as open decisions rather than answered here —
98
+ `design.tolerance.*` ships empty and the approximation ships disabled.
99
+
100
+ ## Icons on a provided artifact
101
+
102
+ `icon-consistency` owns the icon axis and, until 2026-09-09, carried **zero**
103
+ occurrences of `artifact` / `artefact` / `provided` — so no surface in the
104
+ package handled a handed-over artifact's icons at all. Its "ad-hoc inline SVGs
105
+ alongside a chosen set" clause is exactly the shape a faithful port produces,
106
+ which made a port read as a violation of the rule it was obeying.
107
+
108
+ **The fix is a new rung, not a re-ordering.** Rung 1 of the iconography ladder
109
+ is the project's brand token, and the artifact does **not** outrank it. What the
110
+ carve-out changes is which findings are violations, not which source wins.
111
+
112
+ **The obligation that survives is traceability, not conformity.** An
113
+ artifact-sourced icon is legitimate when it traces to the artifact and that
114
+ provenance is stated. An inline `<svg>` that traces to neither the adopted icon
115
+ set nor a named artifact is untraceable, and still fires.
116
+
117
+ **A swap is still a deviation.** Replacing the artifact's icon with the
118
+ project's nearest equivalent is a substitution of a control the artifact
119
+ specified, so it needs the same explicit confirmation as any other deviation
120
+ under `design-fidelity`'s Iron Law. The carve-out permits keeping the
121
+ artifact's icon; it never permits changing it silently.
122
+
123
+ **What is deliberately NOT here:** an assertion that an artifact's icons are
124
+ *reconcilable* onto the project's set by default. `tailwind-engineer` carried
125
+ that claim in the opposite direction — icons "stay 1:1 with the artifact", with
126
+ no citation — and it was deleted rather than inverted. The contrary evidence and
127
+ the two conditions that would reverse the silence are recorded in
128
+ `road-to-design-intent-conformance` § The icon evidence.
129
+
130
+ ## The 2026-07-31 lock, and why its own reopening condition cannot discharge it
131
+
132
+ A council lock of 2026-07-31 names its reopening condition as *"a measured run
133
+ showing the polish loop still edits away from a provided artifact"*. No such run
134
+ exists, which makes running one look like the cheap way to close or reopen it.
135
+ **It is not, and this paragraph exists so the next reader meets the argument
136
+ instead of re-deriving it and spending the run.**
137
+
138
+ The mechanism is **structural, not probabilistic**. Three facts, each checkable:
139
+ `polish.ts:135-167` drops findings flagged `artifact_covered: true`;
140
+ `src/skills/design-tokens/SKILL.md` wired `token_violation` findings into the
141
+ same loop **without** setting that flag; and the paragraph above states that an
142
+ unmarked finding is treated as actionable. Those compose into a path that edits
143
+ away from the artifact whenever a token-violation finding fires on an
144
+ artifact-derived value. Nothing about that path is stochastic.
145
+
146
+ So a green measured run would establish *"this did not trigger in the sample"*
147
+ — it could never establish *"this cannot trigger"*, which is the claim the lock
148
+ would need to be discharged in the useful direction. A run whose only possible
149
+ informative outcome is the one nobody wants is not a measurement, it is a
150
+ lottery ticket, and it costs a real run to buy.
151
+
152
+ **The structural fix is the discharge, and it is `blocker:
153
+ findings-actionability-default`** on `road-to-design-intent-conformance`.
154
+ Resolved by the AI council on 2026-09-09 to option (b): set `artifact_covered`
155
+ on the `token_violation` path, changing no package-wide default. Option (a) —
156
+ inverting the default so a finding is non-actionable unless escalated — was
157
+ rejected on blast radius: it changes the meaning of every existing unmarked
158
+ finding across the package to fix one known producer.
159
+
160
+ **No measurement is scheduled against this lock.** If a later reader wants to
161
+ reopen it, the thing to change is the falsifiability of its condition, not the
162
+ sample size.
163
+
164
+ ## See also
165
+
166
+ - [`design-fidelity-mechanics`](design-fidelity-mechanics.md) — the porting
167
+ half, including § Provided-artifact precedence and the `artifact_covered`
168
+ flag whose default the lock section above turns on.
169
+ - [`design-fidelity-routing`](design-fidelity-routing.md) — how the rule's own
170
+ trigger set is authored, split out in the same change.
171
+ - `src/scripts/_lib/design_tolerance.ts` — the metric and the shipped-null
172
+ thresholds this file argues for.
@@ -12,7 +12,7 @@ the typed artifact looks like**, and **who owns the failure mode
12
12
  when the chain breaks**.
13
13
 
14
14
  Cycle / dangling / tier-mismatch enforcement is not duplicated here —
15
- `task lint-handoffs` (per cross-wing-handoff § 4) is the mechanical
15
+ The `lint-handoffs` task (per cross-wing-handoff § 4) is the mechanical
16
16
  gate.
17
17
 
18
18
  ## Chain 1 — brand → channel
@@ -101,7 +101,7 @@ the contract (O2 owns the interface; H10 only consumes it).
101
101
  ## See also
102
102
 
103
103
  - [`docs/contracts/cross-wing-handoff.md`](../contracts/cross-wing-handoff.md)
104
- — typed-handoff mechanical contract; `task lint-handoffs` enforces
104
+ — typed-handoff mechanical contract; the `lint-handoffs` task enforces
105
105
  cycles, dangling references, and tier mismatches over the graph.
106
106
  - [`docs/guidelines/cross-role-handoff.md`](cross-role-handoff.md)
107
107
  — when to hand off at all, how to phrase the routing, L4 / C8
@@ -15,7 +15,7 @@ artifact looks like**, and **who owns the failure mode when the
15
15
  chain breaks**.
16
16
 
17
17
  Cycle / dangling / tier-mismatch enforcement is not duplicated here —
18
- `task lint-handoffs` (per cross-wing-handoff § 4) is the mechanical
18
+ The `lint-handoffs` task (per cross-wing-handoff § 4) is the mechanical
19
19
  gate.
20
20
 
21
21
  ## Chain 1 — money → strategy
@@ -112,7 +112,7 @@ consumes it).
112
112
  ## See also
113
113
 
114
114
  - [`docs/contracts/cross-wing-handoff.md`](../contracts/cross-wing-handoff.md)
115
- — typed-handoff mechanical contract; `task lint-handoffs` enforces
115
+ — typed-handoff mechanical contract; the `lint-handoffs` task enforces
116
116
  cycles, dangling references, and tier mismatches over the graph.
117
117
  - [`docs/guidelines/cross-role-handoff.md`](cross-role-handoff.md)
118
118
  — when to hand off at all, how to phrase the routing, L4 / C8
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@event4u/agent-config",
3
3
  "mcpName": "io.github.event4u-app/agent-config",
4
- "version": "14.23.0",
4
+ "version": "15.0.0",
5
5
  "description": "Governed skills, rules and commands for AI coding tools (Claude Code, Cursor, Windsurf, Copilot) — every claim machine-checked, including the counts in these badges.",
6
6
  "license": "MIT",
7
7
  "private": false,
@@ -67,7 +67,9 @@
67
67
  "!src/**/*.test.ts",
68
68
  "!src/**/*.spec.ts",
69
69
  "!dist/agent-src/skills/**/evals/**",
70
- "!dist/**/*.map"
70
+ "!dist/**/*.map",
71
+ "!**/__pycache__/**",
72
+ "!**/*.pyc"
71
73
  ],
72
74
  "bin": {
73
75
  "agent-config": "dist/cli/agent-config.js"
@@ -80,6 +82,8 @@
80
82
  "build:install-bundle": "esbuild src/scripts/install.ts --bundle --platform=node --format=esm --target=node20 --define:__AGENT_CONFIG_BUNDLE__=true --outfile=dist/install/install.mjs --banner:js=\"import { createRequire as __acCreateRequire } from 'node:module'; const require = globalThis.require ?? __acCreateRequire(import.meta.url);\"",
81
83
  "build:hooks": "esbuild src/scripts/hooks/dispatch_entry.ts --bundle --platform=node --format=esm --target=node20 --define:__AGENT_CONFIG_BUNDLE__=true --outfile=dist/hooks/dispatch.js --banner:js=\"import { createRequire as __acCreateRequire } from 'node:module'; const require = globalThis.require ?? __acCreateRequire(import.meta.url); const __acPath = require('node:path'); const __acFs = require('node:fs'); const __acUrl = require('node:url'); const __acReal = (p) => { try { return __acFs.realpathSync(p); } catch { return p; } }; const __acSelf = __acReal(__acUrl.fileURLToPath(import.meta.url)); if (process.argv[1] !== undefined && __acReal(__acPath.resolve(process.argv[1])) === __acSelf) { globalThis.__AC_HOOKS_BUNDLE_DIRECT = true; process.argv = [process.argv[0], __acSelf + '.__direct__', ...process.argv.slice(2)]; }\"",
82
84
  "build:mcp-bundle": "esbuild src/scripts/mcp_server/__main__.ts --bundle --platform=node --format=esm --target=node20 --define:__AGENT_CONFIG_BUNDLE__=true --outfile=dist/mcp/server.mjs --banner:js=\"import { createRequire as __acCreateRequire } from 'node:module'; const require = globalThis.require ?? __acCreateRequire(import.meta.url); const __acPath = require('node:path'); const __acFs = require('node:fs'); const __acUrl = require('node:url'); const __acReal = (p) => { try { return __acFs.realpathSync(p); } catch { return p; } }; const __acSelf = __acReal(__acUrl.fileURLToPath(import.meta.url)); if (process.argv[1] !== undefined && __acReal(__acPath.resolve(process.argv[1])) === __acSelf) { globalThis.__AC_MCP_BUNDLE_DIRECT = true; process.argv = [process.argv[0], __acSelf + '.__direct__', ...process.argv.slice(2)]; }\"",
85
+ "clean:cli-delegate": "rm -rf dist/cli-delegate",
86
+ "build:delegates": "npm run clean:cli-delegate && npm run build:cli-delegate && npm run build:agent-src-delegate && npm run build:delegate-aux",
83
87
  "build:cli-delegate": "esbuild src/scripts/_cli/cmd_*.ts --bundle --splitting --platform=node --format=esm --target=node20 --define:__AGENT_CONFIG_BUNDLE__=true --define:__AGENT_CONFIG_CLI_DELEGATE__=true --outdir=dist/cli-delegate --banner:js=\"import { createRequire as __acCreateRequire } from 'node:module'; const require = globalThis.require ?? __acCreateRequire(import.meta.url);\"",
84
88
  "build:agent-src-delegate": "esbuild src/agent-src/scripts/*.ts --bundle --splitting --platform=node --format=esm --target=node20 --define:__AGENT_CONFIG_BUNDLE__=true --define:__AGENT_CONFIG_CLI_DELEGATE__=true --outdir=dist/cli-delegate --banner:js=\"import { createRequire as __acCreateRequire } from 'node:module'; const require = globalThis.require ?? __acCreateRequire(import.meta.url);\"",
85
89
  "build:delegate-aux": "esbuild src/scripts/_lib/pin_resolver.ts src/scripts/check_update_banner.ts --bundle --splitting --platform=node --format=esm --target=node20 --define:__AGENT_CONFIG_BUNDLE__=true --define:__AGENT_CONFIG_CLI_DELEGATE__=true --outbase=src/scripts --outdir=dist/cli-delegate --banner:js=\"import { createRequire as __acCreateRequire } from 'node:module'; const require = globalThis.require ?? __acCreateRequire(import.meta.url);\"",
@@ -89,7 +93,7 @@
89
93
  "build:discovery": "./scripts-run src/scripts/build_discovery_manifest --write --strict",
90
94
  "build:mcp-manifest": "./scripts-run src/scripts/build_mcp_registry_manifest --write --strict",
91
95
  "build:mcp-catalog": "./scripts-run src/scripts/build_mcp_catalog --write --strict",
92
- "build": "npm run build:cli && npm run build:install-bundle && npm run build:hooks && npm run build:mcp-bundle && npm run build:cli-delegate && npm run build:agent-src-delegate && npm run build:delegate-aux && npm run build:ui",
96
+ "build": "npm run build:cli && npm run build:install-bundle && npm run build:hooks && npm run build:mcp-bundle && npm run build:delegates && npm run build:ui",
93
97
  "typecheck": "tsc -p tsconfig.json --noEmit && tsc -p tsconfig.scripts.json",
94
98
  "lint:ts": "eslint --cache --max-warnings 0 'src/**/*.ts'",
95
99
  "test:ts": "vitest run",
@@ -738,6 +738,43 @@ design:
738
738
  # autonomy setting, roadmap, or standing instruction lifts it).
739
739
  fidelity_mode: strict
740
740
 
741
+ # Value reconciliation between a provided artifact and the project's own
742
+ # tokens. MEASUREMENT ships; BEHAVIOUR does not — AI council 2026-09-09
743
+ # (anthropic + openai, 2/2) on `blocker: approximation-tolerance`.
744
+ #
745
+ # The distance from the artifact's value to the nearest project token is
746
+ # computed and REPORTED on every value row regardless of these settings.
747
+ # What these decide is whether the agent may act on it without asking.
748
+ approximation:
749
+ # false ships. Turning it on lets a value INSIDE tolerance be replaced by
750
+ # the project's token without a per-value confirmation; outside tolerance
751
+ # the artifact's value is preserved either way. Shipping this enabled is a
752
+ # consumer-facing default flip and is owner-reserved — recorded in
753
+ # agents/roadmaps/stubs/road-to-frontend-power-default-flip.md, not decided
754
+ # here. `design.fidelity_mode: hard-floor` overrides it to off.
755
+ enabled: false
756
+
757
+ # Distance metric: OKLab ΔEOK for colour, absolute CSS pixels for length.
758
+ # The METHOD is fixed; the THRESHOLDS are deliberately absent.
759
+ #
760
+ # Both ship `null`, and `null` means "preserve and report", never
761
+ # "reconcile freely". No number is set because none is supported: zero of
762
+ # seven design-to-code benchmarks in the evidence set score token
763
+ # conformance, and a number in a config file — even flagged unmeasured —
764
+ # shapes behaviour and acquires the authority of a default.
765
+ #
766
+ # The one real measurement in the evidence set is GitHub Primer's spacing
767
+ # plugin, which widens each token's accepted set by ±1px and autofixes. It
768
+ # is recorded as an externally observed CANDIDATE in
769
+ # src/scripts/_lib/design_tolerance.ts and is not the shipped value.
770
+ tolerance:
771
+ # ΔEOK. Not an RGB channel delta — RGB distance is not perceptually
772
+ # uniform, which is why a `±5 per channel` proposal was rejected.
773
+ color: null
774
+ # CSS pixels, absolute. Not `max(1px, 2%)`, which grows more permissive
775
+ # at large dimensions with no evidence that this is wanted.
776
+ length: null
777
+
741
778
  # --- Cross-source consistency ---
742
779
  #
743
780
  # When the agent plans, refines, roadmaps, or implements from multiple
@@ -1119,20 +1156,30 @@ continuity:
1119
1156
  # (road-to-continuity-writer-activation Phase 1). When `on`, the session-eol
1120
1157
  # concern writes the `continuity_record` capsule variant on Stop for a
1121
1158
  # SUBSTANTIVE session that has claimed a roadmap — every field computed from
1122
- # on-disk state, no model spend, nothing shelled out. Default OFF: while the
1123
- # manual writer (`agent-config session:recycle`) is still the normal path,
1124
- # arming this by default would put a second producer on it before the parity
1125
- # evidence is in.
1126
- # off = (default) no automatic record; the tree behaves as it does today.
1127
- # on = write the record at session end.
1128
- auto_record: "off"
1159
+ # on-disk state, no model spend, nothing shelled out.
1160
+ #
1161
+ # Default ON since 2026-09-10 (step 3.2). It shipped `off` while the parity
1162
+ # evidence was outstanding; steps 1.1 and 1.3 discharged that, and an AI
1163
+ # council of 2026-09-10 (2 seats, convergent, under the owner's written
1164
+ # delegation) authorised the flip so the normal path has an automatic writer
1165
+ # instead of a human remembering a command. The same verdict REFUSED to
1166
+ # retire `agent-config session:recycle`, which stays as an explicit
1167
+ # affordance — the automatic writer is not a strict superset of it (see
1168
+ # `on` below).
1169
+ #
1170
+ # Existing installs are unaffected: a value already written here keeps it.
1171
+ # on = (default) write the record at session end. Not written for a
1172
+ # session that claimed no roadmap, and the `git status` anchors
1173
+ # `session:recycle` collects are omitted.
1174
+ # off = no automatic record; only `session:recycle` writes one.
1175
+ auto_record: "on"
1129
1176
 
1130
1177
  # Deterministic run-checkpoint production at session end
1131
1178
  # (road-to-continuity-writer-activation Phase 1.4). When `on`, a session
1132
1179
  # above the recycle threshold and inside a running roadmap contract leaves
1133
1180
  # agents/runtime/state/checkpoints/<run>.json behind, so a killed session can
1134
1181
  # be resumed by the watcher rather than by bookkeeping. Default ON: this is
1135
- # the behaviour the tree already had, and the switch exists so an operator can
1182
+ # the behavior the tree already had, and the switch exists so an operator can
1136
1183
  # disable checkpointing WITHOUT disabling continuity writing or the recycle
1137
1184
  # advisory.
1138
1185
  # on = (default) write the checkpoint.
@@ -275,6 +275,40 @@ ci_only:
275
275
  # worth remote enforcement, OR it should simply be added to a workflow. Prefer
276
276
  # adding it: a local-only gate is the direction that let real defects merge.
277
277
  local_only:
278
+ - id: check_platform_anchor
279
+ class: token-scope-unavailable
280
+ reason: >
281
+ Reads `repos/{owner}/{repo}/rulesets` to check that the forge actually
282
+ requires what the ratification mechanism claims it does — an active branch
283
+ ruleset over the default branch, an approving review, last-push approval,
284
+ deletion and force-push blocked, strict required checks, and no
285
+ unconditional bypass actor.
286
+
287
+ Local-only because the permission does not exist, not because remote
288
+ enforcement is unwanted — which is the opposite of the usual reason on this
289
+ list and is why the class says so. The rulesets endpoint needs the
290
+ repository `administration` scope, and a workflow `GITHUB_TOKEN` cannot be
291
+ granted it: `administration: read` was tried in `rule-backstops.yml` on
292
+ 2026-09-10 and actionlint refused it as an *"unknown permission scope"*,
293
+ listing the sixteen that do exist. None grants it.
294
+
295
+ Wiring it anyway would be worse than leaving it here. The gate fails closed
296
+ by design — a platform state it cannot read is `UNVERIFIABLE`, which is a
297
+ failure — so an unauthorised token would red every kernel and governance
298
+ pull request for a reason unrelated to the platform's actual state. The
299
+ three escapes were each rejected on the reasoning of the council that
300
+ commissioned the gate: `continue-on-error` makes it advisory, skipping when
301
+ unauthenticated makes it fail open, and putting it in `Sync + Generate Tools
302
+ Consistency` would freeze merges repository-wide on any red, since that
303
+ job's context is the ruleset's single required status check.
304
+
305
+ What moves it off this list: a PAT in a repository secret carrying
306
+ `administration: read`, then the workflow step. That is a human action and
307
+ is recorded as the open half of blocker `ratification-platform-anchor` in
308
+ `agents/roadmaps/road-to-typed-grants-that-persist.md`. Until then the gate
309
+ runs in `taskfiles/ci-fast.yml` — a real pre-push control, and not a CI one,
310
+ which is the honest description of its reach.
311
+
278
312
  - id: check_host_loadability_reach
279
313
  class: developer-machine-scoped
280
314
  reason: >
@@ -43,13 +43,6 @@
43
43
  "locus": "src/scripts/_lib/session_eol.ts:55",
44
44
  "reason": "The writer`s own bookkeeping, not a record a successor reads. It holds counters and advisory stamps used across Stops within one session; nothing restores a session from it."
45
45
  },
46
- {
47
- "id": "manual:run-session-recycle-before-clear",
48
- "axis": "normal_path_manual_actions",
49
- "disposition": "counted",
50
- "locus": "src/scripts/hooks/session_eol_hook.ts:258",
51
- "reason": "The advisory the stop slot injects past the recycle threshold instructs a human to run `agent-config session:recycle`, wait for the absolute path it prints, and only then `/clear`. That is a manual action on the normal path, and it exists precisely because no automatic writer does. It is what step 3.1 removes the need for."
52
- },
53
46
  {
54
47
  "id": ".dispatcher",
55
48
  "axis": "persistent_continuity_artefacts",
@@ -125,7 +118,7 @@
125
118
  "axis": "persistent_continuity_artefacts",
126
119
  "disposition": "counted",
127
120
  "locus": "src/scripts/hooks/session_eol_hook.ts:31",
128
- "reason": "Machine-readable fill level plus threshold state, overwritten every Stop. Written for later verification of whether the session crossed the recycle threshold. AUTHORISED FOR RETIREMENT and NOT RETIRED \u2014 the authorisation (AI council 2026-09-08 D1, resting on producer/no-consumer evidence) was obtained on incomplete facts. There is no consumer in code, but `agents/roadmaps/later/road-to-cost-parity-2-state-aware-dispatch.md` is a live parked roadmap whose open steps 1.1 and 1.4c read this file as a planned input, and 1.4c is specifically about bounding its staleness. The same council's own qualification anticipated this: \"no consumer in the tree\" proves no in-repository consumer, and a planned consumer inside the tree is a stronger objection than an external one because it is checkable. Retiring it is a decision for that roadmap's owner, not a side effect of this one. Blocker: `context-fill-retirement-has-a-parked-consumer`."
121
+ "reason": "Machine-readable fill level plus threshold state, overwritten every Stop. Written for later verification of whether the session crossed the recycle threshold. AUTHORISED FOR RETIREMENT and NOT RETIRED \u2014 the authorisation (AI council 2026-09-08 D1, resting on producer/no-consumer evidence) was obtained on incomplete facts. There is no consumer in code, but `agents/roadmaps/later/road-to-cost-parity-2-state-aware-dispatch.md` is a live parked roadmap whose open steps 1.1 and 1.4c read this file as a planned input, and 1.4c is specifically about bounding its staleness. The same council's own qualification anticipated this: \"no consumer in the tree\" proves no in-repository consumer, and a planned consumer inside the tree is a stronger objection than an external one because it is checkable. Retiring it is a decision for that roadmap's owner, not a side effect of this one. RETENTION DECIDED 2026-09-09 and this row is that decision, not a note about a pending one. An AI council under the owner's written delegation for the drain run (2 seats, anthropic + openai, quorum 2/2) resolved `context-fill-retirement-has-a-parked-consumer` as RETAIN: the file and `writeContextFill` stay, and this row stays `counted`. The named consumer is `agents/roadmaps/later/road-to-cost-parity-2-state-aware-dispatch.md` steps 1.1 and 1.4c. The alternative was re-anchoring those steps, which means editing a roadmap that is parked precisely because nobody is working on it \u2014 one small per-session write is the cheaper side of that trade. The artefact-axis reduction 5 to 4 is NOT claimed. Revisit when that roadmap is resumed, cancelled, or re-anchored onto another source. Blocker: `context-fill-retirement-has-a-parked-consumer`, resolved."
129
122
  },
130
123
  {
131
124
  "id": "context-hygiene.json",
@@ -204,13 +197,6 @@
204
197
  "locus": "src/scripts/_cli/cmd_handoff.ts:9",
205
198
  "reason": "A second, prose-shaped session handoff written by `agent-config handoff` and injected once at the next `session_start`. Same job as the record, different format and different lifecycle \u2014 a competing mental model, which is what the count exists to expose."
206
199
  },
207
- {
208
- "id": "hot-context.md",
209
- "axis": "persistent_continuity_artefacts",
210
- "disposition": "counted",
211
- "locus": "src/scripts/hot_context_hook.ts:11",
212
- "reason": "A working-memory cache rebuilt on stop/session_end/pre_compact and restored at session_start. Persisted state written for context restoration, so the behavioural rule counts it whatever it is called."
213
- },
214
200
  {
215
201
  "id": "injection-census.jsonl",
216
202
  "axis": "persistent_continuity_artefacts",
@@ -265,7 +251,7 @@
265
251
  "axis": "persistent_continuity_artefacts",
266
252
  "disposition": "counted",
267
253
  "locus": "src/scripts/_cli/cmd_session_recycle.ts:9",
268
- "reason": "The continuity record itself: written by `session:recycle`, resolved per session by `resolveContinuityRecord`, consumed once at `session_start` by the handoff-context concern. This is the artefact the whole roadmap is collapsing the others INTO \u2014 the surviving `1`."
254
+ "reason": "The continuity record itself: written by `session:recycle` and, since 2026-09-10, by the automatic writer in the session-eol concern (`src/scripts/_lib/continuity_writer.ts` via `writeContinuityRecord`), resolved per session by `resolveContinuityRecord`, consumed once at `session_start` by the handoff-context concern. This is the artefact the whole roadmap is collapsing the others INTO \u2014 the surviving `1`. The locus stays on the command because the command still writes it; the second producer is named here so a reader does not conclude from the locus that a human is still the only source."
269
255
  },
270
256
  {
271
257
  "id": "render",
@@ -482,14 +468,7 @@
482
468
  "axis": "public_continuity_commands",
483
469
  "disposition": "counted",
484
470
  "locus": "src/cli/registry.ts:73",
485
- "reason": "REQUIRED on the normal path today: it is the only writer of the continuity record in the tree, so continuity does not happen unless a human runs it. That is what makes it a continuity command rather than an affordance, and it is on the owner-authorised retirement set of 2026-09-06."
486
- },
487
- {
488
- "id": "command:chat-history",
489
- "axis": "session_resume_pickers",
490
- "disposition": "excluded",
491
- "locus": "src/domains/meta/chat-history/command.md:3",
492
- "reason": "The orchestrator shell that routes to the import picker; it presents no picker of its own. Counting both would double-count one surface. It is retired together with the picker it routes to, so the row disappears with it."
471
+ "reason": "RETAINED as an explicit affordance, and no longer the normal path. It was the ONLY writer of the continuity record until step 3.2 of road-to-continuity-writer-activation armed the automatic writer by default (2026-09-10), which is why this row's earlier reason called it REQUIRED. The same AI council (2 seats, convergent, under the owner's written delegation) REFUSED to retire the verb: removing a public callable contract is a different act from removing a manual step, and the automatic writer is not a strict superset of this command \u2014 it leaves no record for a session that claimed no roadmap, and it omits the `git status` anchor fields the command collects. So it stays COUNTED on this axis rather than excluded: it is a public continuity command that exists, the axis counts what exists, and the target of 0 is therefore not reachable while this decision stands. Recorded here rather than argued away, on the same terms as the `verb:handoff` exclusion note above."
493
472
  },
494
473
  {
495
474
  "id": "picker:agent-handoff",
@@ -498,19 +477,12 @@
498
477
  "locus": "src/domains/meta/agent-handoff/command.md:41",
499
478
  "reason": "A numbered-options block asking a human which prior session to resume. It is a picker by construction, and the parent`s target of 0 pickers is in tension with its preservation of this command \u2014 recorded here so the tension is visible in the count rather than argued away."
500
479
  },
501
- {
502
- "id": "picker:chat-history-import",
503
- "axis": "session_resume_pickers",
504
- "disposition": "counted",
505
- "locus": "src/domains/meta/chat-history/import/command.md:77",
506
- "reason": "A numbered-table session picker plus a resume offer \u2014 a second, competing answer to \"which prior session do I continue from\". On the owner-authorised retirement set of 2026-09-06."
507
- },
508
480
  {
509
481
  "id": "session-index-latch",
510
482
  "axis": "persistent_continuity_artefacts",
511
483
  "disposition": "excluded",
512
484
  "locus": "src/scripts/_lib/session_index_trust.ts:251",
513
- "reason": "A duplicate-suppression latch, not a record. It holds one file per session under agents/runtime/state/session-index-latch/ whose entire content is a claim timestamp, and nothing reads it to restore anything — a successor session that finds it learns only that THIS session already received the memory index, which is the opposite of resumable state. It exists because `session_start` can fire more than once for one session (resume, host reconnect, compaction boundary on some hosts) and two injections double a fixed cost while presenting two corpora as one session memory. Excluded on the same reasoning as schema:session-eol-state: the writer own bookkeeping, not a record a successor reads. Deleting the directory costs a session nothing but a possible second injection."
485
+ "reason": "A duplicate-suppression latch, not a record. It holds one file per session under agents/runtime/state/session-index-latch/ whose entire content is a claim timestamp, and nothing reads it to restore anything \u2014 a successor session that finds it learns only that THIS session already received the memory index, which is the opposite of resumable state. It exists because `session_start` can fire more than once for one session (resume, host reconnect, compaction boundary on some hosts) and two injections double a fixed cost while presenting two corpora as one session memory. Excluded on the same reasoning as schema:session-eol-state: the writer own bookkeeping, not a record a successor reads. Deleting the directory costs a session nothing but a possible second injection."
514
486
  }
515
487
  ]
516
488
  }
@@ -64,8 +64,8 @@
64
64
  # `road-to-candidate-moves-floor` was that addition. The number is re-measured
65
65
  # rather than the tolerance widened: a stated population that nobody re-measures
66
66
  # is the un-asserted count this whole manifest exists to refuse.)
67
- # **78 of them emit the machine-readable `scanned: <N>` line under their
68
- # CI-identical argv, and 75 of those 78 are listed below.** The manifest is
67
+ # **79 of them emit the machine-readable `scanned: <N>` line under their
68
+ # CI-identical argv, and 76 of those 79 are listed below.** The manifest is
69
69
  # complete for every gate that can carry a floor, covering ~25 % of the population.
70
70
  #
71
71
  # RECOUNTED 2026-09-07, on the change that adds `lint_agent_security` — the
@@ -2365,7 +2365,7 @@ gates:
2365
2365
  - id: check_loss_class_declared
2366
2366
  argv: []
2367
2367
  min_scanned: 45
2368
- corpus: "every hook-manifest concern whose script exists (53 at baseline); of those, the model-facing lossy subset is the gated population"
2368
+ corpus: "every hook-manifest concern whose script exists (53 at baseline, 58 on 2026-09-10); of those, the CONTEXT-EMITTING ones are walked through their relative module specifiers, and the modules that walk reaches whose code applies a lossy operation are the gated population. Measured 2026-09-10: 58 scanned, 7 emitters, 5 modules matched — 4 declaring a lossy class and 1 declaring `exact`. MATCHED IS NOT LOSSY: the detector establishes a match, the declaration says whether anything is lost, and an earlier version of this row said `5 lossy` and overstated the corpus by one. It read 0 between 2026-09-09 and 2026-09-10, when the hot-context cache retirement emptied the matched subset and the gate passed over nothing. A `loss_module:` pointer refilled it to 1 for part of 2026-09-10 and was superseded by the walk, whose two rejection premises were re-measured and did not hold — see docs/contracts/loss-classes.md."
2369
2369
  status: enforced
2370
2370
  canary:
2371
2371
  class: contract-violation
@@ -2389,11 +2389,14 @@ gates:
2389
2389
  has measurably never ratcheted. Both seats added the refinement adopted
2390
2390
  here: unknown reachability is classified as model-reaching.
2391
2391
 
2392
- MEASURED AT LANDING: **1** module qualifies — `hot_context_hook`, which is
2393
- exactly the `ephemeral-lossy` exemplar `docs/contracts/loss-classes.md`
2394
- classifies. A gated population of one is the honest state of this tree,
2395
- not a broken detector, and it is why the floor below is set on the SCANNED
2396
- corpus (53 hook scripts) rather than on the gated subset.
2392
+ MEASURED AT LANDING: **1** module qualified — `hot_context_hook`, the
2393
+ `ephemeral-lossy` exemplar `docs/contracts/loss-classes.md` classifies.
2394
+ MEASURED 2026-09-09, after step 3.1 of road-to-continuity-writer-activation
2395
+ retired that module's cache half: **0**. Setting the floor on the SCANNED
2396
+ corpus rather than the gated subset is what keeps this row meaningful
2397
+ through that drop — but a matched subset of zero means the gate currently
2398
+ proves nothing about any transform, which is tracked as blocker
2399
+ `loss-class-corpus-is-empty-after-hot-context`.
2397
2400
 
2398
2401
  THE DETECTOR READS CODE, NOT PROSE. Its first cut matched `truncat` inside
2399
2402
  three docblocks that describe truncation without performing any and
@@ -2777,3 +2780,23 @@ gates:
2777
2780
  What the ROW buys on top of that is `ci_invocation` — the census had a
2778
2781
  Taskfile target and no caller at all, so its removal would have been
2779
2782
  noticed by nothing.
2783
+
2784
+ - id: check_projected_rule_routes
2785
+ argv: []
2786
+ min_scanned: 100
2787
+ corpus: "dist/agent-src/rules/*.md (119 at baseline, 22 distinct `guideline:` targets)"
2788
+ status: enforced
2789
+ canary:
2790
+ class: contract-violation
2791
+ path: dist/agent-src/rules/zz-canary-projected-route.md
2792
+ content: |
2793
+ ---
2794
+ name: zz-canary-projected-route
2795
+ description: Canary planted by check_gate_coverage --canary; never ships.
2796
+ routes_to: guideline:zz-canary-target-that-does-not-exist
2797
+ ---
2798
+
2799
+ # zz-canary-projected-route
2800
+
2801
+ A projected rule routing to a guideline body the projection does not
2802
+ contain. The gate must fail on this and pass once it is removed.
@@ -5,6 +5,7 @@
5
5
  "exempt": {
6
6
  "ci-strict": "An ENTRY POINT, not a gate — the stricter sibling of `ci` itself, so wiring it into `ci` would be a cycle. Would run if strict became the default, which is a policy change rather than a wiring one.",
7
7
  "check-augment-budget": "Emits a MEASUREMENT, not a verdict; a gate that cannot fail is a report. Would run once a pre-registered threshold exists to fail on.",
8
+ "check-platform-anchor": "THE PERMISSION DOES NOT EXIST, which is a different reason from every other row here — the others are unwired by judgement, this one by platform capability. It reads `repos/{owner}/{repo}/rulesets` to check that the forge actually requires what the ratification mechanism claims, and that endpoint needs the repository `administration` scope. A workflow `GITHUB_TOKEN` cannot be granted it: `administration: read` was tried in `rule-backstops.yml` on 2026-09-10 and actionlint refused it as an \"unknown permission scope\", listing the sixteen that do exist. Wiring it with an unauthorised token is worse than leaving it manual, because the gate fails closed by design — an unreadable platform is UNVERIFIABLE, which is a failure — so it would red every kernel and governance PR for a reason unrelated to the platform's actual state. The three escapes were each rejected on the reasoning of the council that commissioned the gate: `continue-on-error` makes it advisory, skipping when unauthenticated makes it fail open, and `Sync + Generate Tools Consistency` would freeze merges repository-wide on any red since that job's context is the single required check. The script itself IS reachable pre-push via the `preflight` list in `taskfiles/ci-fast.yml`; this target is the on-demand `task check-platform-anchor` entry point beside it. WOULD RUN given a PAT in a repository secret carrying `administration: read` — a human action, recorded as the open half of blocker `ratification-platform-anchor`.",
8
9
  "check-corpus": "Requires council configuration, which is user-global (ADR-104) and absent in CI by construction. Would run against a fixture corpus that needs no configured council.",
9
10
  "check-media-deps": "Requires external media tooling not installed on runners. Would run with those dependencies in the runner image, or behind a skip-with-reason path.",
10
11
  "check-trunk-drift": "ADVISORY BY ITS OWN DOCSTRING — 'run it in the /create-pr pre-flight or wire into CI per your branch-protection policy'. Its red state is 'this branch is behind trunk', which is the normal state of an open PR, so wiring it would fail correct work. RECLASSIFIED from should-run during Phase 2 after reading what it asserts. Would run under a branch-protection policy that requires an up-to-date base.",