@event4u/agent-config 1.12.0 → 1.14.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 (260) hide show
  1. package/.agent-src/commands/agent-handoff.md +3 -0
  2. package/.agent-src/commands/agent-status.md +3 -0
  3. package/.agent-src/commands/agents-audit.md +4 -0
  4. package/.agent-src/commands/agents-cleanup.md +6 -1
  5. package/.agent-src/commands/agents-prepare.md +3 -0
  6. package/.agent-src/commands/analyze-reference-repo.md +4 -0
  7. package/.agent-src/commands/bug-fix.md +5 -1
  8. package/.agent-src/commands/bug-investigate.md +4 -0
  9. package/.agent-src/commands/chat-history-checkpoint.md +126 -0
  10. package/.agent-src/commands/chat-history-clear.md +5 -0
  11. package/.agent-src/commands/chat-history-resume.md +5 -0
  12. package/.agent-src/commands/chat-history.md +5 -0
  13. package/.agent-src/commands/check-current-md.md +126 -0
  14. package/.agent-src/commands/commit-in-chunks.md +98 -0
  15. package/.agent-src/commands/commit.md +4 -0
  16. package/.agent-src/commands/compress.md +3 -0
  17. package/.agent-src/commands/context-create.md +4 -0
  18. package/.agent-src/commands/context-refactor.md +4 -0
  19. package/.agent-src/commands/copilot-agents-init.md +3 -0
  20. package/.agent-src/commands/copilot-agents-optimize.md +3 -0
  21. package/.agent-src/commands/create-pr-description.md +4 -0
  22. package/.agent-src/commands/create-pr.md +4 -0
  23. package/.agent-src/commands/do-and-judge.md +4 -1
  24. package/.agent-src/commands/do-in-steps.md +3 -0
  25. package/.agent-src/commands/e2e-heal.md +4 -0
  26. package/.agent-src/commands/e2e-plan.md +4 -0
  27. package/.agent-src/commands/estimate-ticket.md +4 -1
  28. package/.agent-src/commands/feature-dev.md +4 -0
  29. package/.agent-src/commands/feature-explore.md +4 -0
  30. package/.agent-src/commands/feature-plan.md +4 -0
  31. package/.agent-src/commands/feature-refactor.md +4 -0
  32. package/.agent-src/commands/feature-roadmap.md +6 -0
  33. package/.agent-src/commands/fix-ci.md +4 -0
  34. package/.agent-src/commands/fix-portability.md +3 -0
  35. package/.agent-src/commands/fix-pr-bot-comments.md +4 -0
  36. package/.agent-src/commands/fix-pr-comments.md +4 -0
  37. package/.agent-src/commands/fix-pr-developer-comments.md +4 -0
  38. package/.agent-src/commands/fix-references.md +3 -0
  39. package/.agent-src/commands/fix-seeder.md +4 -0
  40. package/.agent-src/commands/implement-ticket.md +39 -13
  41. package/.agent-src/commands/jira-ticket.md +4 -0
  42. package/.agent-src/commands/judge.md +3 -0
  43. package/.agent-src/commands/memory-add.md +5 -3
  44. package/.agent-src/commands/memory-full.md +5 -2
  45. package/.agent-src/commands/memory-promote.md +7 -6
  46. package/.agent-src/commands/mode.md +3 -0
  47. package/.agent-src/commands/module-create.md +4 -0
  48. package/.agent-src/commands/module-explore.md +4 -0
  49. package/.agent-src/commands/onboard.md +24 -0
  50. package/.agent-src/commands/optimize-agents.md +4 -0
  51. package/.agent-src/commands/optimize-augmentignore.md +3 -0
  52. package/.agent-src/commands/optimize-rtk-filters.md +3 -0
  53. package/.agent-src/commands/optimize-skills.md +4 -0
  54. package/.agent-src/commands/override-create.md +4 -0
  55. package/.agent-src/commands/override-manage.md +4 -0
  56. package/.agent-src/commands/package-reset.md +3 -0
  57. package/.agent-src/commands/package-test.md +3 -0
  58. package/.agent-src/commands/prepare-for-review.md +4 -0
  59. package/.agent-src/commands/project-analyze.md +4 -0
  60. package/.agent-src/commands/project-health.md +4 -0
  61. package/.agent-src/commands/propose-memory.md +6 -8
  62. package/.agent-src/commands/quality-fix.md +4 -0
  63. package/.agent-src/commands/refine-ticket.md +4 -1
  64. package/.agent-src/commands/review-changes.md +4 -0
  65. package/.agent-src/commands/review-routing.md +4 -0
  66. package/.agent-src/commands/roadmap-create.md +7 -0
  67. package/.agent-src/commands/roadmap-execute.md +12 -1
  68. package/.agent-src/commands/rule-compliance-audit.md +4 -0
  69. package/.agent-src/commands/set-cost-profile.md +3 -0
  70. package/.agent-src/commands/sync-agent-settings.md +3 -0
  71. package/.agent-src/commands/sync-gitignore.md +3 -0
  72. package/.agent-src/commands/tests-create.md +4 -0
  73. package/.agent-src/commands/tests-execute.md +4 -0
  74. package/.agent-src/commands/threat-model.md +4 -0
  75. package/.agent-src/commands/update-form-request-messages.md +4 -0
  76. package/.agent-src/commands/upstream-contribute.md +4 -0
  77. package/.agent-src/commands/work.md +161 -0
  78. package/.agent-src/guidelines/agent-infra/engineering-memory-data-format.md +2 -6
  79. package/.agent-src/guidelines/agent-infra/layered-settings.md +0 -1
  80. package/.agent-src/guidelines/agent-infra/memory-access.md +0 -7
  81. package/.agent-src/guidelines/agent-infra/role-contracts.md +2 -4
  82. package/.agent-src/guidelines/agent-infra/self-improvement-pipeline.md +0 -1
  83. package/.agent-src/guidelines/php/patterns/strategy.md +180 -2
  84. package/.agent-src/personas/README.md +0 -1
  85. package/.agent-src/rules/artifact-drafting-protocol.md +7 -2
  86. package/.agent-src/rules/artifact-engagement-recording.md +133 -0
  87. package/.agent-src/rules/ask-when-uncertain.md +18 -13
  88. package/.agent-src/rules/augment-portability.md +8 -0
  89. package/.agent-src/rules/autonomous-execution.md +158 -0
  90. package/.agent-src/rules/chat-history.md +147 -118
  91. package/.agent-src/rules/cli-output-handling.md +26 -3
  92. package/.agent-src/rules/command-suggestion.md +133 -0
  93. package/.agent-src/rules/commit-policy.md +99 -0
  94. package/.agent-src/rules/direct-answers.md +114 -0
  95. package/.agent-src/rules/docs-sync.md +36 -0
  96. package/.agent-src/rules/downstream-changes.md +10 -9
  97. package/.agent-src/rules/improve-before-implement.md +9 -6
  98. package/.agent-src/rules/language-and-tone.md +81 -6
  99. package/.agent-src/rules/non-destructive-by-default.md +117 -0
  100. package/.agent-src/rules/package-ci-checks.md +4 -0
  101. package/.agent-src/rules/preservation-guard.md +20 -0
  102. package/.agent-src/rules/roadmap-progress-sync.md +103 -30
  103. package/.agent-src/rules/scope-control.md +42 -1
  104. package/.agent-src/rules/size-enforcement.md +1 -3
  105. package/.agent-src/rules/skill-quality.md +3 -8
  106. package/.agent-src/rules/ui-audit-before-build.md +106 -0
  107. package/.agent-src/rules/user-interaction.md +81 -3
  108. package/.agent-src/scripts/update_roadmap_progress.py +48 -6
  109. package/.agent-src/skills/blade-ui/SKILL.md +30 -5
  110. package/.agent-src/skills/command-routing/SKILL.md +32 -0
  111. package/.agent-src/skills/command-writing/SKILL.md +41 -2
  112. package/.agent-src/skills/description-assist/SKILL.md +21 -0
  113. package/.agent-src/skills/estimate-ticket/SKILL.md +0 -1
  114. package/.agent-src/skills/existing-ui-audit/SKILL.md +187 -0
  115. package/.agent-src/skills/fe-design/SKILL.md +72 -60
  116. package/.agent-src/skills/finishing-a-development-branch/SKILL.md +4 -0
  117. package/.agent-src/skills/flux/SKILL.md +31 -4
  118. package/.agent-src/skills/guideline-writing/SKILL.md +24 -2
  119. package/.agent-src/skills/learning-to-rule-or-skill/SKILL.md +51 -9
  120. package/.agent-src/skills/livewire/SKILL.md +30 -4
  121. package/.agent-src/skills/md-language-check/SKILL.md +103 -0
  122. package/.agent-src/skills/php-coder/SKILL.md +24 -0
  123. package/.agent-src/skills/react-shadcn-ui/SKILL.md +121 -0
  124. package/.agent-src/skills/refine-prompt/SKILL.md +220 -0
  125. package/.agent-src/skills/refine-ticket/SKILL.md +2 -4
  126. package/.agent-src/skills/roadmap-management/SKILL.md +10 -3
  127. package/.agent-src/skills/rule-writing/SKILL.md +23 -1
  128. package/.agent-src/skills/skill-writing/SKILL.md +1 -3
  129. package/.agent-src/skills/upstream-contribute/SKILL.md +1 -1
  130. package/.agent-src/skills/using-git-worktrees/SKILL.md +3 -1
  131. package/.agent-src/templates/AGENTS.md +24 -6
  132. package/.agent-src/templates/agent-settings.md +149 -0
  133. package/.agent-src/templates/github-workflows/roadmap-progress-check.yml +63 -0
  134. package/.agent-src/templates/hooks/pre-commit-roadmap-progress +60 -0
  135. package/.agent-src/templates/roadmaps.md +8 -2
  136. package/.agent-src/templates/scripts/implement_ticket/__init__.py +63 -26
  137. package/.agent-src/templates/scripts/implement_ticket/__main__.py +8 -2
  138. package/.agent-src/templates/scripts/memory_lookup.py +382 -21
  139. package/.agent-src/templates/scripts/memory_status.py +110 -9
  140. package/.agent-src/templates/scripts/telemetry/__init__.py +42 -0
  141. package/.agent-src/templates/scripts/telemetry/aggregator.py +154 -0
  142. package/.agent-src/templates/scripts/telemetry/boundary.py +171 -0
  143. package/.agent-src/templates/scripts/telemetry/engagement.py +238 -0
  144. package/.agent-src/templates/scripts/telemetry/report_renderer.py +170 -0
  145. package/.agent-src/templates/scripts/telemetry/settings.py +112 -0
  146. package/.agent-src/templates/scripts/telemetry_record.py +166 -0
  147. package/.agent-src/templates/scripts/telemetry_report.py +161 -0
  148. package/.agent-src/templates/scripts/telemetry_status.py +142 -0
  149. package/.agent-src/templates/scripts/work_engine/__init__.py +58 -0
  150. package/.agent-src/templates/scripts/work_engine/__main__.py +9 -0
  151. package/.agent-src/templates/scripts/work_engine/cli.py +592 -0
  152. package/.agent-src/templates/scripts/{implement_ticket → work_engine}/delivery_state.py +7 -0
  153. package/.agent-src/templates/scripts/work_engine/directives/__init__.py +33 -0
  154. package/.agent-src/templates/scripts/work_engine/directives/backend/__init__.py +98 -0
  155. package/.agent-src/templates/scripts/{implement_ticket/steps → work_engine/directives/backend}/analyze.py +1 -1
  156. package/.agent-src/templates/scripts/{implement_ticket/steps → work_engine/directives/backend}/implement.py +2 -2
  157. package/.agent-src/templates/scripts/{implement_ticket/steps → work_engine/directives/backend}/memory.py +1 -1
  158. package/.agent-src/templates/scripts/{implement_ticket/steps → work_engine/directives/backend}/plan.py +1 -1
  159. package/.agent-src/templates/scripts/work_engine/directives/backend/refine.py +396 -0
  160. package/.agent-src/templates/scripts/{implement_ticket/steps → work_engine/directives/backend}/report.py +36 -4
  161. package/.agent-src/templates/scripts/{implement_ticket/steps → work_engine/directives/backend}/test.py +2 -2
  162. package/.agent-src/templates/scripts/{implement_ticket/steps → work_engine/directives/backend}/verify.py +2 -2
  163. package/.agent-src/templates/scripts/work_engine/directives/mixed/__init__.py +116 -0
  164. package/.agent-src/templates/scripts/work_engine/directives/mixed/contract.py +254 -0
  165. package/.agent-src/templates/scripts/work_engine/directives/mixed/stitch.py +229 -0
  166. package/.agent-src/templates/scripts/work_engine/directives/mixed/ui.py +231 -0
  167. package/.agent-src/templates/scripts/work_engine/directives/ui/__init__.py +113 -0
  168. package/.agent-src/templates/scripts/work_engine/directives/ui/_passthrough.py +44 -0
  169. package/.agent-src/templates/scripts/work_engine/directives/ui/apply.py +241 -0
  170. package/.agent-src/templates/scripts/work_engine/directives/ui/audit.py +414 -0
  171. package/.agent-src/templates/scripts/work_engine/directives/ui/design.py +335 -0
  172. package/.agent-src/templates/scripts/work_engine/directives/ui/polish.py +510 -0
  173. package/.agent-src/templates/scripts/work_engine/directives/ui/review.py +468 -0
  174. package/.agent-src/templates/scripts/work_engine/directives/ui_trivial/__init__.py +119 -0
  175. package/.agent-src/templates/scripts/work_engine/directives/ui_trivial/_skipped.py +37 -0
  176. package/.agent-src/templates/scripts/work_engine/directives/ui_trivial/apply.py +165 -0
  177. package/.agent-src/templates/scripts/work_engine/directives/ui_trivial/refine.py +66 -0
  178. package/.agent-src/templates/scripts/work_engine/directives/ui_trivial/report.py +62 -0
  179. package/.agent-src/templates/scripts/work_engine/directives/ui_trivial/test.py +115 -0
  180. package/.agent-src/templates/scripts/work_engine/dispatcher.py +331 -0
  181. package/.agent-src/templates/scripts/work_engine/hooks/__init__.py +54 -0
  182. package/.agent-src/templates/scripts/work_engine/hooks/builtin/__init__.py +32 -0
  183. package/.agent-src/templates/scripts/work_engine/hooks/builtin/_chat_history_base.py +103 -0
  184. package/.agent-src/templates/scripts/work_engine/hooks/builtin/chat_history_append.py +44 -0
  185. package/.agent-src/templates/scripts/work_engine/hooks/builtin/chat_history_halt_append.py +42 -0
  186. package/.agent-src/templates/scripts/work_engine/hooks/builtin/chat_history_heartbeat.py +50 -0
  187. package/.agent-src/templates/scripts/work_engine/hooks/builtin/chat_history_turn_check.py +49 -0
  188. package/.agent-src/templates/scripts/work_engine/hooks/builtin/directive_set_guard.py +53 -0
  189. package/.agent-src/templates/scripts/work_engine/hooks/builtin/halt_surface_audit.py +50 -0
  190. package/.agent-src/templates/scripts/work_engine/hooks/builtin/state_shape_validation.py +52 -0
  191. package/.agent-src/templates/scripts/work_engine/hooks/builtin/trace.py +84 -0
  192. package/.agent-src/templates/scripts/work_engine/hooks/context.py +66 -0
  193. package/.agent-src/templates/scripts/work_engine/hooks/events.py +44 -0
  194. package/.agent-src/templates/scripts/work_engine/hooks/exceptions.py +79 -0
  195. package/.agent-src/templates/scripts/work_engine/hooks/registry.py +60 -0
  196. package/.agent-src/templates/scripts/work_engine/hooks/runner.py +73 -0
  197. package/.agent-src/templates/scripts/work_engine/hooks/settings.py +141 -0
  198. package/.agent-src/templates/scripts/work_engine/intent/__init__.py +47 -0
  199. package/.agent-src/templates/scripts/work_engine/intent/classify.py +280 -0
  200. package/.agent-src/templates/scripts/work_engine/migration/__init__.py +8 -0
  201. package/.agent-src/templates/scripts/work_engine/migration/v0_to_v1.py +199 -0
  202. package/.agent-src/templates/scripts/work_engine/resolvers/__init__.py +22 -0
  203. package/.agent-src/templates/scripts/work_engine/resolvers/diff.py +106 -0
  204. package/.agent-src/templates/scripts/work_engine/resolvers/file.py +113 -0
  205. package/.agent-src/templates/scripts/work_engine/resolvers/prompt.py +90 -0
  206. package/.agent-src/templates/scripts/work_engine/scoring/__init__.py +14 -0
  207. package/.agent-src/templates/scripts/work_engine/scoring/confidence.py +300 -0
  208. package/.agent-src/templates/scripts/work_engine/stack/__init__.py +31 -0
  209. package/.agent-src/templates/scripts/work_engine/stack/detect.py +187 -0
  210. package/.agent-src/templates/scripts/work_engine/state.py +641 -0
  211. package/.claude-plugin/marketplace.json +105 -2
  212. package/AGENTS.md +36 -8
  213. package/CHANGELOG.md +558 -0
  214. package/README.md +146 -4
  215. package/composer.json +3 -0
  216. package/config/agent-settings.template.yml +45 -0
  217. package/config/gitignore-block.txt +4 -0
  218. package/docs/architecture.md +28 -1
  219. package/docs/development.md +1 -1
  220. package/docs/getting-started.md +3 -2
  221. package/docs/installation.md +86 -0
  222. package/docs/showcase.md +204 -0
  223. package/package.json +9 -1
  224. package/scripts/agent-config +274 -0
  225. package/scripts/audit_cloud_compatibility.py +288 -0
  226. package/scripts/build_cloud_bundle.py +458 -0
  227. package/scripts/build_linear_digest.py +263 -0
  228. package/scripts/chat_history.py +796 -7
  229. package/scripts/check_compression.py +139 -0
  230. package/scripts/check_iron_law_prominence.py +143 -0
  231. package/scripts/check_md_language.py +159 -0
  232. package/scripts/check_portability.py +36 -0
  233. package/scripts/check_reply_consistency.py +140 -0
  234. package/scripts/command_suggester/__init__.py +51 -0
  235. package/scripts/command_suggester/cooldown.py +132 -0
  236. package/scripts/command_suggester/loader.py +70 -0
  237. package/scripts/command_suggester/match.py +180 -0
  238. package/scripts/command_suggester/rank.py +120 -0
  239. package/scripts/command_suggester/render.py +86 -0
  240. package/scripts/command_suggester/sanitize.py +113 -0
  241. package/scripts/command_suggester/settings.py +125 -0
  242. package/scripts/command_suggester/types.py +78 -0
  243. package/scripts/hooks/augment-chat-history.sh +56 -0
  244. package/scripts/install-hooks.sh +67 -0
  245. package/scripts/install.py +150 -33
  246. package/scripts/lint_marketplace.py +27 -0
  247. package/scripts/memory_lookup.py +143 -7
  248. package/scripts/memory_status.py +76 -14
  249. package/scripts/migrate_command_suggestions.py +151 -0
  250. package/scripts/postinstall.sh +16 -0
  251. package/scripts/schemas/command.schema.json +41 -0
  252. package/scripts/skill_linter.py +67 -0
  253. package/scripts/sync_agent_settings.py +42 -12
  254. package/templates/consumer-settings/augment-cli-hooks.json +54 -0
  255. package/templates/consumer-settings/claude-settings.json +55 -1
  256. package/.agent-src/templates/scripts/implement_ticket/cli.py +0 -171
  257. package/.agent-src/templates/scripts/implement_ticket/dispatcher.py +0 -134
  258. package/.agent-src/templates/scripts/implement_ticket/steps/__init__.py +0 -49
  259. package/.agent-src/templates/scripts/implement_ticket/steps/refine.py +0 -140
  260. /package/.agent-src/templates/scripts/{implement_ticket → work_engine}/persona_policy.py +0 -0
@@ -0,0 +1,133 @@
1
+ ---
2
+ type: "auto"
3
+ alwaysApply: false
4
+ description: "After completing a /implement-ticket or /work phase-step (refine, memory, analyze, plan, implement, test, verify, report) or full task — emit one telemetry:record call with consulted+applied artefact ids when telemetry.artifact_engagement.enabled is true"
5
+ source: package
6
+ ---
7
+
8
+ <!-- cloud_safe: noop -->
9
+
10
+ # Artifact Engagement Recording
11
+
12
+ Records which **skills, rules, commands, guidelines, personas** the agent
13
+ actually consulted and applied during a `/implement-ticket` or `/work` run.
14
+ Default-off; opt-in via `.agent-settings.yml`. Zero overhead when disabled.
15
+
16
+ The schema, CLI, and storage layer are owned by
17
+ [`scripts/telemetry/`](../../../scripts/telemetry/) and the
18
+ `./agent-config telemetry:record` / `telemetry:status` commands shipped
19
+ in Phase 1+2 of the
20
+ [`road-to-artifact-engagement-telemetry`](../../../agents/roadmaps/road-to-artifact-engagement-telemetry.md)
21
+ roadmap. This rule says **when** to call the CLI, not how the file is
22
+ structured.
23
+
24
+ ## Activation gate — read settings ONCE per task, then cache
25
+
26
+ Before the first `/implement-ticket` or `/work` step runs, read
27
+ `telemetry.artifact_engagement.enabled` from `.agent-settings.yml`. Cache
28
+ the value (and `granularity`) for the whole task.
29
+
30
+ - `enabled: false` or section missing → rule is a **no-op**. Do not import
31
+ the script, do not open the log, do not mention recording. Skip the rest
32
+ of this rule.
33
+ - `enabled: true` → continue with the cadence below.
34
+
35
+ Use `./agent-config telemetry:status --format json` if the value is
36
+ not already in working memory; the call is read-only and never touches
37
+ the log file.
38
+
39
+ ## Cadence — depends on `granularity`
40
+
41
+ | `granularity` | When to emit | Coalescing |
42
+ |---|---|---|
43
+ | `task` *(default)* | Once, when the eight-step flow ends (success, blocked, partial — any terminal state) | All consulted/applied artefacts from refine through report merged into a single event |
44
+ | `phase-step` | At the close of each phase-step (refine, memory, analyze, plan, implement, test, verify, report) | One event per step; per-step consulted/applied lists only |
45
+
46
+ Within a single boundary, **dedupe** consulted and applied lists. A skill
47
+ consulted three times in the same boundary records once.
48
+
49
+ ## What counts as consulted vs applied
50
+
51
+ - **`consulted`** — the agent **read** the artefact this boundary: opened
52
+ its `SKILL.md`, scanned its rule body, viewed its frontmatter,
53
+ referenced its guideline, checked its persona contract, dispatched its
54
+ command. Reading does not imply behaviour change.
55
+ - **`applied`** — the artefact **influenced the output** this boundary:
56
+ its instructions changed how the agent answered, what code it wrote,
57
+ what tools it ran, or what halt surface it produced. Applied is a
58
+ strict subset of consulted.
59
+
60
+ When in doubt → record as `consulted` only. Over-recording `applied`
61
+ inflates the engagement signal and defeats the purpose.
62
+
63
+ ## What to record — id-only, no payload
64
+
65
+ ```bash
66
+ ./agent-config telemetry:record \
67
+ --task-id "$TASK_ID" \
68
+ --boundary task \
69
+ --consulted skills:php-coder \
70
+ --consulted skills:eloquent \
71
+ --consulted rules:scope-control \
72
+ --applied skills:php-coder \
73
+ --applied rules:scope-control
74
+ ```
75
+
76
+ - `--task-id` — the ticket key (`PROJ-123`) for `/implement-ticket`, or a
77
+ short opaque slug derived from the prompt for `/work`. **Never** a
78
+ branch name, a file path, or a free-text title.
79
+ - `--boundary` — `task` or `phase-step`, matching the cadence above.
80
+ - `--consulted <kind>:<id>` — repeat per artefact. `<kind>` is one of
81
+ `skills`, `rules`, `commands`, `guidelines`, `personas`.
82
+ - `--applied <kind>:<id>` — repeat per artefact actually applied.
83
+ - Exit `0` always when disabled (silent). Exit `1` on schema validation
84
+ failure (rule must NOT swallow this — surface to the user). Exit `2`
85
+ on IO failure.
86
+
87
+ ## Privacy contract — what NEVER goes into a record
88
+
89
+ The CLI rejects most violations on the input boundary, but the agent must
90
+ not even attempt these:
91
+
92
+ - ❌ File paths (`src/Foo.php`, `tests/...`) — id fields are
93
+ artefact identifiers only.
94
+ - ❌ Source code, prompt text, ticket body, AC text.
95
+ - ❌ Branch names, commit shas, PR numbers, URLs.
96
+ - ❌ Secrets, env vars, credentials, customer data.
97
+ - ❌ Free-text strings longer than 200 chars (CLI enforces; agent must
98
+ not generate).
99
+
100
+ When in doubt → **don't record**. A missing event is cheap; a leaked
101
+ prompt is not.
102
+
103
+ ## Failure modes — DO NOT block the user's task
104
+
105
+ - Schema rejection (CLI exit `1`) → log the message internally, continue
106
+ the user's task. Do **not** halt the dispatch loop.
107
+ - IO failure (CLI exit `2`) → same. The telemetry is **observation**, not
108
+ a delivery requirement.
109
+ - Settings malformed → already handled by the CLI: it falls back to
110
+ disabled and exits `0`. Agent treats it as "disabled this task".
111
+
112
+ The only error the agent surfaces is when the user explicitly asked for
113
+ recording (`telemetry:status` confirms enabled) but no event reached the
114
+ log — that is a real bug, not a swallowed error.
115
+
116
+ ## What this rule does NOT do
117
+
118
+ - Run when `enabled: false` (cost floor is zero — see
119
+ [`tests/telemetry/test_cost_floor.py`](../../../tests/telemetry/test_cost_floor.py)).
120
+ - Track the agent's tool calls, file reads, or token spend — that is
121
+ out of scope, see the roadmap's "out-of-scope" section.
122
+ - Decide retirement. Phase 4's aggregator + report renderer are the only
123
+ consumers that may interpret the JSONL.
124
+ - Run on cloud surfaces (Claude.ai Web, Skills API). The
125
+ `cloud_safe: noop` marker keeps it inert there.
126
+
127
+ ## See also
128
+
129
+ - [`road-to-artifact-engagement-telemetry`](../../../agents/roadmaps/road-to-artifact-engagement-telemetry.md) — phase contract
130
+ - [`agents/contexts/artifact-engagement-flow.md`](../../../agents/contexts/artifact-engagement-flow.md) — recording contract details
131
+ - [`/implement-ticket`](../commands/implement-ticket.md) and [`/work`](../commands/work.md) — boundary points where this rule fires
132
+ - [`scripts/telemetry/`](../../../scripts/telemetry/) — engine source
133
+ - [`agent-settings`](../templates/agent-settings.md) — `telemetry.artifact_engagement.*` reference
@@ -10,6 +10,20 @@ source: package
10
10
  **When in doubt, ask the user.** Do not guess, assume, or improvise.
11
11
  Asking one question too many is always better than a wrong assumption.
12
12
 
13
+ ## Iron Law — one question per turn, ALWAYS
14
+
15
+ ```
16
+ ONE QUESTION PER TURN. NO EXCEPTIONS.
17
+ ASK. WAIT FOR THE ANSWER. THEN ASK THE NEXT.
18
+ ```
19
+
20
+ This is absolute. Not a default, not a guideline, not "usually".
21
+ Every turn that contains a question contains **exactly one** question.
22
+ Even if the questions look trivial. Even if they look independent.
23
+ Even if they would fit on one screen. Even if batching "feels more
24
+ efficient". Full self-check, ordering, and handoff rules under
25
+ [How to ask](#how-to-ask).
26
+
13
27
  ## When to ask
14
28
 
15
29
  - Requirement is ambiguous or could be interpreted multiple ways
@@ -42,22 +56,13 @@ makes the answer unambiguous, proceed — but state the assumption explicitly.
42
56
 
43
57
  Be specific. Present numbered options (per `user-interaction`). Keep it short.
44
58
 
45
- ### The Iron Law one question per turn, ALWAYS
46
-
47
- ```
48
- ONE QUESTION PER TURN. NO EXCEPTIONS.
49
- ASK. WAIT FOR THE ANSWER. THEN ASK THE NEXT.
50
- ```
51
-
52
- This is absolute. Not a default, not a guideline, not "usually". Every
53
- turn that contains a question contains **exactly one** question. Even
54
- if the questions look trivial. Even if they look independent. Even if
55
- they would fit on one screen. Even if batching "feels more efficient".
59
+ The Iron Law (one question per turn) is at the top of this file.
60
+ This section adds the rationale, self-check, and ordering.
56
61
 
57
62
  The user must never have to track sub-numbers, scroll through stacked
58
63
  option blocks, or split their reply across multiple questions. One
59
- question, numbered options (per `user-interaction`), one short answer,
60
- next turn.
64
+ question, numbered options (per `user-interaction`), one short
65
+ answer, next turn.
61
66
 
62
67
  Rationale — why even "trivial" batches fail:
63
68
 
@@ -75,6 +75,14 @@ package repo, in consumer projects the scripts live under
75
75
  | `python3 .augment/scripts/update_roadmap_progress.py` | `./agent-config roadmap:progress` |
76
76
  | `python3 .augment/scripts/update_roadmap_progress.py --check` | `./agent-config roadmap:progress-check` |
77
77
  | `bash scripts/first-run.sh` | `./agent-config first-run` |
78
+ | `PYTHONPATH=… python3 -m implement_ticket` | `./agent-config implement-ticket` |
79
+ | `python3 scripts/memory_lookup.py` | `./agent-config memory:lookup` |
80
+ | `python3 scripts/memory_signal.py` | `./agent-config memory:signal` |
81
+ | `python3 scripts/memory_hash.py` | `./agent-config memory:hash` |
82
+ | `python3 scripts/check_memory.py` | `./agent-config memory:check` |
83
+ | `python3 scripts/check_memory_proposal.py` | `./agent-config memory:check-proposal` |
84
+ | `python3 scripts/check_proposal.py` | `./agent-config proposal:check` |
85
+ | `python3 scripts/refine_ticket_detect.py` | `./agent-config refine-ticket:detect` |
78
86
 
79
87
  Commands not covered by the CLI stay as direct script invocations
80
88
  (e.g. `bash scripts/compress.sh --sync`) — maintainer-only, not
@@ -0,0 +1,158 @@
1
+ ---
2
+ type: "always"
3
+ description: "Suppress trivial workflow questions and act on the obvious next step; defers to non-destructive-by-default for the safety floor; never commit and never ask about committing except via /commit-in-chunks or explicit user instruction"
4
+ alwaysApply: true
5
+ source: package
6
+ ---
7
+
8
+ # Autonomous Execution
9
+
10
+ User's time is the scarce resource. Trivial workflow questions are
11
+ noise. Defines **trivial** (just act), **blocking** (still ask), the
12
+ **hard floor** (always ask, no override), and the **commit default**
13
+ (never commit, never ask — review-first by design).
14
+
15
+ ## Hard Floor — see [`non-destructive-by-default`](non-destructive-by-default.md)
16
+
17
+ Universal safety floor (production-branch merges, deploys, pushes,
18
+ prod data/infra, whimsical bulk deletions, and commits containing
19
+ bulk deletions or infra changes) is governed by the canonical
20
+ [`non-destructive-by-default`](non-destructive-by-default.md) rule.
21
+
22
+ Applies regardless of `personal.autonomy`, a standing autonomy
23
+ directive (anchor list in [Opt-in detection](#opt-in-detection--match-by-intent-not-exact-string)),
24
+ or any roadmap authorization. Nothing in **this** rule lifts it. If a
25
+ trigger from that rule fires, stop and ask — every section below
26
+ assumes the floor has cleared.
27
+
28
+ ## Setting — `personal.autonomy`
29
+
30
+ | Value | Behavior |
31
+ |---|---|
32
+ | `on` | Suppress trivial questions. Act on obvious next step. Still ask on blocking decisions; ALWAYS ask on Hard-Floor triggers. |
33
+ | `off` | Ask trivial questions too. Use to check in on each workflow step. |
34
+ | `auto` (default) | Like `off` until user expresses "stop asking, just work" — then `on` for the rest of the chat. See **Opt-in detection** below; match by **intent**, not exact string. The flip never lifts the Hard Floor. |
35
+
36
+ Read once on first turn (per [`layered-settings`](../guidelines/agent-infra/layered-settings.md#section-aware-merge-rules))
37
+ and cache. Missing key → treat as `on`.
38
+
39
+ ## Opt-in detection — match by intent, not exact string
40
+
41
+ In `auto`, flip to `on` for the rest of the chat when the user expresses
42
+ **"stop asking on trivial steps, just work"**. Recognize the **intent**,
43
+ not the literal substring — semantic equivalent in either language.
44
+
45
+ Anchor examples (illustrative, not exhaustive):
46
+
47
+ - DE: "arbeite selbstständig" · "frag nicht jedes Mal" · "tue es einfach"
48
+ - EN: "work autonomously" · "don't ask" · "just do it"
49
+
50
+ Litmus test: standing permission to skip trivial questions? → flip.
51
+ Single-decision delegation ("you decide for this step") → handle that
52
+ step, do **not** flip standing mode.
53
+
54
+ ### Speech-act check — meta-instruction, not content
55
+
56
+ Before flipping, verify the phrase is **addressed to the agent as
57
+ guidance about how to work**, not a literal substring inside another
58
+ instruction. Do **not** flip when the phrase is:
59
+
60
+ - **Content / copy** — "Put the slogan 'just do it' on the landing page."
61
+ - **Quote / reference** — "Nike's tagline is 'just do it' — write a blog post."
62
+ - **Subject of a request** — "Write docs about the 'work autonomously' modes."
63
+ - **Code / data** — string literals, fixtures, translations, JSON.
64
+ - **About a third party** — "My colleague works autonomously."
65
+ - **Question / hypothetical** — "Should I set `don't ask` as the default?"
66
+
67
+ Heuristic: strip quotes, code blocks, embedded content. Read what's
68
+ **left**. Still a directive to the agent about its working style →
69
+ flip. Otherwise → don't.
70
+
71
+ Opt-out (reversed intent) flips back to `off`:
72
+
73
+ - DE: "frag mich wieder" · "frag mich erst" · "stop autonomous mode"
74
+ - EN: "ask me first" · "ask me again" · "stop being autonomous"
75
+
76
+ Same speech-act check applies.
77
+
78
+ Counter-examples — do **not** flip on meta-questions, self-descriptions,
79
+ or one-shot delegations: "why don't you ask that yourself?", "I'm
80
+ working autonomously right now", "can you decide that yourself?".
81
+
82
+ In doubt → keep current mode, no speculative flips.
83
+
84
+ ## Trivial — JUST ACT, do not ask
85
+
86
+ Examples (matches `personal.autonomy: on` or `auto`-after-opt-in):
87
+
88
+ - "Step 2 or Step 3?" — pick the obvious next roadmap step; if blocked, name the blocker, otherwise go.
89
+ - "Commit now or after the next change?" — answered by the commit-default below.
90
+ - "How should I split the commits?" — never asked; either `/commit-in-chunks` was invoked (split + commit) or it wasn't (don't commit).
91
+ - "Run linter / tests now or later?" — `verify-before-complete` decides; act.
92
+ - "Found 3 follow-ups — fix all or stop?" — if within scope and minimal-safe-diff allows, fix; if scope expands, stop and surface as list.
93
+ - "Filename `X.md` or `Y.md`?" when one matches convention — pick convention-matching one.
94
+ - "Verification table or paragraph?" — pick whichever fits; format isn't a decision worth a turn.
95
+ - "Show me a diff before regenerating output from a tracked source?"
96
+ — compression, code-gen, formatter passes, lock-file rebuilds — run
97
+ it and report the result. Reversibility comes from the source, not
98
+ from per-file confirmation. See [`non-destructive-by-default`](non-destructive-by-default.md#not-in-scope--deterministic-regeneration)
99
+ § Not in scope.
100
+
101
+ `personal.autonomy: off`: ask these. `on` or `auto`-after-opt-in: act.
102
+
103
+ ## Blocking — STILL ASK regardless of `personal.autonomy`
104
+
105
+ Beyond the Hard Floor, the autonomy setting also never overrides:
106
+
107
+ - **Vague-request triggers** in [`ask-when-uncertain`](ask-when-uncertain.md) — ambiguous stays ambiguous; pick-one-and-pray is wrong.
108
+ - **Architectural / structural choices** the codebase hasn't settled (multi-stack picks, library introductions).
109
+ - **Security-sensitive paths** — see [`security-sensitive-stop`](security-sensitive-stop.md).
110
+ - **Scope expansion** beyond stated task — see [`scope-control`](scope-control.md).
111
+ - **Remote-state ops** — push, merge, rebase, force-push, branch create/delete/switch, PR create/close/retarget, tag/release. Permission-gated by [`scope-control`](scope-control.md); the prod-trunk and deploy-tied subset is governed by [`non-destructive-by-default`](non-destructive-by-default.md).
112
+ - **Destructive ops** — see [`non-destructive-by-default`](non-destructive-by-default.md) for the full taxonomy (whimsical bulk deletions, content destruction, commits containing bulk deletions or infra changes).
113
+
114
+ In doubt → blocking. Ask.
115
+
116
+ ## Commit policy — see [`commit-policy`](commit-policy.md)
117
+
118
+ Committing is governed by [`commit-policy`](commit-policy.md), which
119
+ applies regardless of `personal.autonomy`. Summary:
120
+
121
+ - NEVER commit unless user said so this turn, a commit command was
122
+ invoked, a standing instruction is active, or the roadmap authorizes it.
123
+ - NEVER ask about committing.
124
+ - In autonomous mode, the **only** permitted commit-related question
125
+ is the one-shot pre-scan ask at the start of roadmap execution.
126
+
127
+ Push, merge, rebase, branch creation, PR ops, tags remain
128
+ permission-gated per [`scope-control`](scope-control.md#git-operations--permission-gated).
129
+
130
+ ## Failure modes
131
+
132
+ - Asking "Step 2 or Step 3?" when the roadmap orders them.
133
+ - "Should I run the CI checks?" — `verify-before-complete` decides; act.
134
+ - "Do we want to commit this?" — no, by default. Don't ask.
135
+ - Numbered-options block whose only difference is sequencing ("A then B" vs "B then A") with no real trade-off.
136
+ - Asking after user already issued a standing autonomy directive earlier (cache the opt-in for `auto`).
137
+
138
+ For Hard-Floor failure modes (treating autonomy as cover for a
139
+ floor-crossing action, reading a roadmap step as deploy authorization,
140
+ refusing task-aligned WIP deletions, committing bulk-deletion / infra
141
+ diffs without surfacing them) see
142
+ [`non-destructive-by-default`](non-destructive-by-default.md#failure-modes).
143
+
144
+ ## Cloud Behavior
145
+
146
+ Settings reads degrade gracefully on cloud platforms (no
147
+ `.agent-settings.yml`). Treat as `personal.autonomy: on` — user had to
148
+ deliberately ship a custom skill bundle and is unlikely to want
149
+ trivial-question friction.
150
+
151
+ ## See also
152
+
153
+ - [`non-destructive-by-default`](non-destructive-by-default.md) — universal safety floor; never overridden by autonomy
154
+ - [`scope-control`](scope-control.md) — git-ops permission gate (push/merge/branch/PR/tag stays explicit)
155
+ - [`ask-when-uncertain`](ask-when-uncertain.md) — vague-request triggers that always require asking
156
+ - [`direct-answers`](direct-answers.md) — Iron Laws on brevity and no-flattery (this rule extends to no-trivial-questions)
157
+ - [`/commit-in-chunks`](../commands/commit-in-chunks.md) — auto-split and commit without confirmation
158
+ - [`/commit`](../commands/commit.md) — split and commit with confirmation