@event4u/agent-config 1.13.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.
- package/.agent-src/commands/agent-handoff.md +3 -0
- package/.agent-src/commands/agent-status.md +3 -0
- package/.agent-src/commands/agents-audit.md +4 -0
- package/.agent-src/commands/agents-cleanup.md +6 -1
- package/.agent-src/commands/agents-prepare.md +3 -0
- package/.agent-src/commands/analyze-reference-repo.md +4 -0
- package/.agent-src/commands/bug-fix.md +5 -1
- package/.agent-src/commands/bug-investigate.md +4 -0
- package/.agent-src/commands/chat-history-checkpoint.md +126 -0
- package/.agent-src/commands/chat-history-clear.md +5 -0
- package/.agent-src/commands/chat-history-resume.md +5 -0
- package/.agent-src/commands/chat-history.md +5 -0
- package/.agent-src/commands/check-current-md.md +126 -0
- package/.agent-src/commands/commit-in-chunks.md +98 -0
- package/.agent-src/commands/commit.md +4 -0
- package/.agent-src/commands/compress.md +3 -0
- package/.agent-src/commands/context-create.md +4 -0
- package/.agent-src/commands/context-refactor.md +4 -0
- package/.agent-src/commands/copilot-agents-init.md +3 -0
- package/.agent-src/commands/copilot-agents-optimize.md +3 -0
- package/.agent-src/commands/create-pr-description.md +4 -0
- package/.agent-src/commands/create-pr.md +4 -0
- package/.agent-src/commands/do-and-judge.md +4 -1
- package/.agent-src/commands/do-in-steps.md +3 -0
- package/.agent-src/commands/e2e-heal.md +4 -0
- package/.agent-src/commands/e2e-plan.md +4 -0
- package/.agent-src/commands/estimate-ticket.md +4 -1
- package/.agent-src/commands/feature-dev.md +4 -0
- package/.agent-src/commands/feature-explore.md +4 -0
- package/.agent-src/commands/feature-plan.md +4 -0
- package/.agent-src/commands/feature-refactor.md +4 -0
- package/.agent-src/commands/feature-roadmap.md +6 -0
- package/.agent-src/commands/fix-ci.md +4 -0
- package/.agent-src/commands/fix-portability.md +3 -0
- package/.agent-src/commands/fix-pr-bot-comments.md +4 -0
- package/.agent-src/commands/fix-pr-comments.md +4 -0
- package/.agent-src/commands/fix-pr-developer-comments.md +4 -0
- package/.agent-src/commands/fix-references.md +3 -0
- package/.agent-src/commands/fix-seeder.md +4 -0
- package/.agent-src/commands/implement-ticket.md +39 -13
- package/.agent-src/commands/jira-ticket.md +4 -0
- package/.agent-src/commands/judge.md +3 -0
- package/.agent-src/commands/memory-add.md +5 -3
- package/.agent-src/commands/memory-full.md +5 -2
- package/.agent-src/commands/memory-promote.md +7 -6
- package/.agent-src/commands/mode.md +3 -0
- package/.agent-src/commands/module-create.md +4 -0
- package/.agent-src/commands/module-explore.md +4 -0
- package/.agent-src/commands/onboard.md +24 -0
- package/.agent-src/commands/optimize-agents.md +4 -0
- package/.agent-src/commands/optimize-augmentignore.md +3 -0
- package/.agent-src/commands/optimize-rtk-filters.md +3 -0
- package/.agent-src/commands/optimize-skills.md +4 -0
- package/.agent-src/commands/override-create.md +4 -0
- package/.agent-src/commands/override-manage.md +4 -0
- package/.agent-src/commands/package-reset.md +3 -0
- package/.agent-src/commands/package-test.md +3 -0
- package/.agent-src/commands/prepare-for-review.md +4 -0
- package/.agent-src/commands/project-analyze.md +4 -0
- package/.agent-src/commands/project-health.md +4 -0
- package/.agent-src/commands/propose-memory.md +6 -8
- package/.agent-src/commands/quality-fix.md +4 -0
- package/.agent-src/commands/refine-ticket.md +4 -1
- package/.agent-src/commands/review-changes.md +4 -0
- package/.agent-src/commands/review-routing.md +4 -0
- package/.agent-src/commands/roadmap-create.md +7 -0
- package/.agent-src/commands/roadmap-execute.md +12 -1
- package/.agent-src/commands/rule-compliance-audit.md +4 -0
- package/.agent-src/commands/set-cost-profile.md +3 -0
- package/.agent-src/commands/sync-agent-settings.md +3 -0
- package/.agent-src/commands/sync-gitignore.md +3 -0
- package/.agent-src/commands/tests-create.md +4 -0
- package/.agent-src/commands/tests-execute.md +4 -0
- package/.agent-src/commands/threat-model.md +4 -0
- package/.agent-src/commands/update-form-request-messages.md +4 -0
- package/.agent-src/commands/upstream-contribute.md +4 -0
- package/.agent-src/commands/work.md +161 -0
- package/.agent-src/guidelines/agent-infra/engineering-memory-data-format.md +2 -6
- package/.agent-src/guidelines/agent-infra/layered-settings.md +0 -1
- package/.agent-src/guidelines/agent-infra/memory-access.md +0 -7
- package/.agent-src/guidelines/agent-infra/role-contracts.md +2 -4
- package/.agent-src/guidelines/agent-infra/self-improvement-pipeline.md +0 -1
- package/.agent-src/guidelines/php/patterns/strategy.md +180 -2
- package/.agent-src/personas/README.md +0 -1
- package/.agent-src/rules/artifact-drafting-protocol.md +7 -2
- package/.agent-src/rules/artifact-engagement-recording.md +133 -0
- package/.agent-src/rules/ask-when-uncertain.md +18 -13
- package/.agent-src/rules/augment-portability.md +8 -0
- package/.agent-src/rules/autonomous-execution.md +158 -0
- package/.agent-src/rules/chat-history.md +147 -118
- package/.agent-src/rules/cli-output-handling.md +26 -3
- package/.agent-src/rules/command-suggestion.md +133 -0
- package/.agent-src/rules/commit-policy.md +99 -0
- package/.agent-src/rules/direct-answers.md +114 -0
- package/.agent-src/rules/docs-sync.md +36 -0
- package/.agent-src/rules/downstream-changes.md +10 -9
- package/.agent-src/rules/improve-before-implement.md +9 -6
- package/.agent-src/rules/language-and-tone.md +81 -6
- package/.agent-src/rules/non-destructive-by-default.md +117 -0
- package/.agent-src/rules/package-ci-checks.md +4 -0
- package/.agent-src/rules/preservation-guard.md +20 -0
- package/.agent-src/rules/roadmap-progress-sync.md +103 -30
- package/.agent-src/rules/scope-control.md +42 -1
- package/.agent-src/rules/size-enforcement.md +1 -3
- package/.agent-src/rules/skill-quality.md +3 -8
- package/.agent-src/rules/ui-audit-before-build.md +106 -0
- package/.agent-src/rules/user-interaction.md +82 -50
- package/.agent-src/scripts/update_roadmap_progress.py +17 -5
- package/.agent-src/skills/blade-ui/SKILL.md +30 -5
- package/.agent-src/skills/command-routing/SKILL.md +32 -0
- package/.agent-src/skills/command-writing/SKILL.md +41 -2
- package/.agent-src/skills/description-assist/SKILL.md +21 -0
- package/.agent-src/skills/estimate-ticket/SKILL.md +0 -1
- package/.agent-src/skills/existing-ui-audit/SKILL.md +187 -0
- package/.agent-src/skills/fe-design/SKILL.md +72 -60
- package/.agent-src/skills/finishing-a-development-branch/SKILL.md +4 -0
- package/.agent-src/skills/flux/SKILL.md +31 -4
- package/.agent-src/skills/guideline-writing/SKILL.md +24 -2
- package/.agent-src/skills/learning-to-rule-or-skill/SKILL.md +51 -9
- package/.agent-src/skills/livewire/SKILL.md +30 -4
- package/.agent-src/skills/md-language-check/SKILL.md +103 -0
- package/.agent-src/skills/php-coder/SKILL.md +24 -0
- package/.agent-src/skills/react-shadcn-ui/SKILL.md +121 -0
- package/.agent-src/skills/refine-prompt/SKILL.md +220 -0
- package/.agent-src/skills/refine-ticket/SKILL.md +2 -4
- package/.agent-src/skills/roadmap-management/SKILL.md +10 -3
- package/.agent-src/skills/rule-writing/SKILL.md +23 -1
- package/.agent-src/skills/skill-writing/SKILL.md +1 -3
- package/.agent-src/skills/upstream-contribute/SKILL.md +1 -1
- package/.agent-src/skills/using-git-worktrees/SKILL.md +3 -1
- package/.agent-src/templates/AGENTS.md +24 -6
- package/.agent-src/templates/agent-settings.md +149 -0
- package/.agent-src/templates/roadmaps.md +8 -2
- package/.agent-src/templates/scripts/implement_ticket/__init__.py +63 -26
- package/.agent-src/templates/scripts/implement_ticket/__main__.py +8 -2
- package/.agent-src/templates/scripts/telemetry/__init__.py +42 -0
- package/.agent-src/templates/scripts/telemetry/aggregator.py +154 -0
- package/.agent-src/templates/scripts/telemetry/boundary.py +171 -0
- package/.agent-src/templates/scripts/telemetry/engagement.py +238 -0
- package/.agent-src/templates/scripts/telemetry/report_renderer.py +170 -0
- package/.agent-src/templates/scripts/telemetry/settings.py +112 -0
- package/.agent-src/templates/scripts/telemetry_record.py +166 -0
- package/.agent-src/templates/scripts/telemetry_report.py +161 -0
- package/.agent-src/templates/scripts/telemetry_status.py +142 -0
- package/.agent-src/templates/scripts/work_engine/__init__.py +58 -0
- package/.agent-src/templates/scripts/work_engine/__main__.py +9 -0
- package/.agent-src/templates/scripts/work_engine/cli.py +592 -0
- package/.agent-src/templates/scripts/{implement_ticket → work_engine}/delivery_state.py +7 -0
- package/.agent-src/templates/scripts/work_engine/directives/__init__.py +33 -0
- package/.agent-src/templates/scripts/work_engine/directives/backend/__init__.py +98 -0
- package/.agent-src/templates/scripts/{implement_ticket/steps → work_engine/directives/backend}/analyze.py +1 -1
- package/.agent-src/templates/scripts/{implement_ticket/steps → work_engine/directives/backend}/implement.py +2 -2
- package/.agent-src/templates/scripts/{implement_ticket/steps → work_engine/directives/backend}/memory.py +1 -1
- package/.agent-src/templates/scripts/{implement_ticket/steps → work_engine/directives/backend}/plan.py +1 -1
- package/.agent-src/templates/scripts/work_engine/directives/backend/refine.py +396 -0
- package/.agent-src/templates/scripts/{implement_ticket/steps → work_engine/directives/backend}/report.py +36 -4
- package/.agent-src/templates/scripts/{implement_ticket/steps → work_engine/directives/backend}/test.py +2 -2
- package/.agent-src/templates/scripts/{implement_ticket/steps → work_engine/directives/backend}/verify.py +2 -2
- package/.agent-src/templates/scripts/work_engine/directives/mixed/__init__.py +116 -0
- package/.agent-src/templates/scripts/work_engine/directives/mixed/contract.py +254 -0
- package/.agent-src/templates/scripts/work_engine/directives/mixed/stitch.py +229 -0
- package/.agent-src/templates/scripts/work_engine/directives/mixed/ui.py +231 -0
- package/.agent-src/templates/scripts/work_engine/directives/ui/__init__.py +113 -0
- package/.agent-src/templates/scripts/work_engine/directives/ui/_passthrough.py +44 -0
- package/.agent-src/templates/scripts/work_engine/directives/ui/apply.py +241 -0
- package/.agent-src/templates/scripts/work_engine/directives/ui/audit.py +414 -0
- package/.agent-src/templates/scripts/work_engine/directives/ui/design.py +335 -0
- package/.agent-src/templates/scripts/work_engine/directives/ui/polish.py +510 -0
- package/.agent-src/templates/scripts/work_engine/directives/ui/review.py +468 -0
- package/.agent-src/templates/scripts/work_engine/directives/ui_trivial/__init__.py +119 -0
- package/.agent-src/templates/scripts/work_engine/directives/ui_trivial/_skipped.py +37 -0
- package/.agent-src/templates/scripts/work_engine/directives/ui_trivial/apply.py +165 -0
- package/.agent-src/templates/scripts/work_engine/directives/ui_trivial/refine.py +66 -0
- package/.agent-src/templates/scripts/work_engine/directives/ui_trivial/report.py +62 -0
- package/.agent-src/templates/scripts/work_engine/directives/ui_trivial/test.py +115 -0
- package/.agent-src/templates/scripts/work_engine/dispatcher.py +331 -0
- package/.agent-src/templates/scripts/work_engine/hooks/__init__.py +54 -0
- package/.agent-src/templates/scripts/work_engine/hooks/builtin/__init__.py +32 -0
- package/.agent-src/templates/scripts/work_engine/hooks/builtin/_chat_history_base.py +103 -0
- package/.agent-src/templates/scripts/work_engine/hooks/builtin/chat_history_append.py +44 -0
- package/.agent-src/templates/scripts/work_engine/hooks/builtin/chat_history_halt_append.py +42 -0
- package/.agent-src/templates/scripts/work_engine/hooks/builtin/chat_history_heartbeat.py +50 -0
- package/.agent-src/templates/scripts/work_engine/hooks/builtin/chat_history_turn_check.py +49 -0
- package/.agent-src/templates/scripts/work_engine/hooks/builtin/directive_set_guard.py +53 -0
- package/.agent-src/templates/scripts/work_engine/hooks/builtin/halt_surface_audit.py +50 -0
- package/.agent-src/templates/scripts/work_engine/hooks/builtin/state_shape_validation.py +52 -0
- package/.agent-src/templates/scripts/work_engine/hooks/builtin/trace.py +84 -0
- package/.agent-src/templates/scripts/work_engine/hooks/context.py +66 -0
- package/.agent-src/templates/scripts/work_engine/hooks/events.py +44 -0
- package/.agent-src/templates/scripts/work_engine/hooks/exceptions.py +79 -0
- package/.agent-src/templates/scripts/work_engine/hooks/registry.py +60 -0
- package/.agent-src/templates/scripts/work_engine/hooks/runner.py +73 -0
- package/.agent-src/templates/scripts/work_engine/hooks/settings.py +141 -0
- package/.agent-src/templates/scripts/work_engine/intent/__init__.py +47 -0
- package/.agent-src/templates/scripts/work_engine/intent/classify.py +280 -0
- package/.agent-src/templates/scripts/work_engine/migration/__init__.py +8 -0
- package/.agent-src/templates/scripts/work_engine/migration/v0_to_v1.py +199 -0
- package/.agent-src/templates/scripts/work_engine/resolvers/__init__.py +22 -0
- package/.agent-src/templates/scripts/work_engine/resolvers/diff.py +106 -0
- package/.agent-src/templates/scripts/work_engine/resolvers/file.py +113 -0
- package/.agent-src/templates/scripts/work_engine/resolvers/prompt.py +90 -0
- package/.agent-src/templates/scripts/work_engine/scoring/__init__.py +14 -0
- package/.agent-src/templates/scripts/work_engine/scoring/confidence.py +300 -0
- package/.agent-src/templates/scripts/work_engine/stack/__init__.py +31 -0
- package/.agent-src/templates/scripts/work_engine/stack/detect.py +187 -0
- package/.agent-src/templates/scripts/work_engine/state.py +641 -0
- package/.claude-plugin/marketplace.json +105 -2
- package/AGENTS.md +36 -8
- package/CHANGELOG.md +534 -0
- package/README.md +125 -4
- package/config/agent-settings.template.yml +45 -0
- package/config/gitignore-block.txt +4 -0
- package/docs/architecture.md +28 -1
- package/docs/development.md +1 -1
- package/docs/getting-started.md +2 -2
- package/docs/installation.md +86 -0
- package/docs/showcase.md +204 -0
- package/package.json +1 -1
- package/scripts/agent-config +199 -0
- package/scripts/audit_cloud_compatibility.py +288 -0
- package/scripts/build_cloud_bundle.py +458 -0
- package/scripts/build_linear_digest.py +263 -0
- package/scripts/chat_history.py +796 -7
- package/scripts/check_compression.py +139 -0
- package/scripts/check_iron_law_prominence.py +143 -0
- package/scripts/check_md_language.py +159 -0
- package/scripts/check_portability.py +36 -0
- package/scripts/check_reply_consistency.py +140 -0
- package/scripts/command_suggester/__init__.py +51 -0
- package/scripts/command_suggester/cooldown.py +132 -0
- package/scripts/command_suggester/loader.py +70 -0
- package/scripts/command_suggester/match.py +180 -0
- package/scripts/command_suggester/rank.py +120 -0
- package/scripts/command_suggester/render.py +86 -0
- package/scripts/command_suggester/sanitize.py +113 -0
- package/scripts/command_suggester/settings.py +125 -0
- package/scripts/command_suggester/types.py +78 -0
- package/scripts/hooks/augment-chat-history.sh +56 -0
- package/scripts/install-hooks.sh +67 -0
- package/scripts/install.py +150 -33
- package/scripts/lint_marketplace.py +27 -0
- package/scripts/migrate_command_suggestions.py +151 -0
- package/scripts/schemas/command.schema.json +41 -0
- package/scripts/skill_linter.py +67 -0
- package/scripts/sync_agent_settings.py +42 -12
- package/templates/consumer-settings/augment-cli-hooks.json +54 -0
- package/templates/consumer-settings/claude-settings.json +55 -1
- package/.agent-src/templates/scripts/implement_ticket/cli.py +0 -171
- package/.agent-src/templates/scripts/implement_ticket/dispatcher.py +0 -134
- package/.agent-src/templates/scripts/implement_ticket/steps/__init__.py +0 -49
- package/.agent-src/templates/scripts/implement_ticket/steps/refine.py +0 -140
- /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
|
-
|
|
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
|
|
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
|