@event4u/agent-config 1.17.0 → 1.18.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/rules/context-hygiene.md +6 -0
- package/.agent-src/rules/direct-answers.md +17 -26
- package/.agent-src/rules/no-cheap-questions.md +14 -21
- package/.agent-src/rules/onboarding-gate.md +7 -0
- package/.agent-src/rules/roadmap-progress-sync.md +27 -0
- package/.agent-src/rules/rule-type-governance.md +28 -0
- package/.agent-src/templates/roadmaps.md +4 -0
- package/.claude-plugin/marketplace.json +1 -1
- package/CHANGELOG.md +35 -0
- package/README.md +1 -1
- package/docs/architecture.md +1 -1
- package/docs/contracts/load-context-budget-model.md +80 -0
- package/docs/contracts/load-context-schema.md +20 -0
- package/docs/contracts/roadmap-complexity-standard.md +137 -0
- package/docs/guidelines/agent-infra/ask-when-uncertain-demos.md +134 -0
- package/docs/guidelines/agent-infra/direct-answers-demos.md +145 -0
- package/docs/guidelines/agent-infra/verify-before-complete-demos.md +128 -0
- package/package.json +1 -1
- package/scripts/agent-config +20 -0
- package/scripts/ai_council/one_off_archive/2026-05/README.md +45 -0
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_budget_v2_audit.py +206 -0
- package/scripts/build_rule_trigger_matrix.py +360 -0
- package/scripts/check_always_budget.py +39 -0
- package/scripts/check_one_off_location.py +81 -0
- package/scripts/check_references.py +6 -0
- package/scripts/compress.py +5 -2
- package/scripts/context_hygiene_hook.py +173 -0
- package/scripts/hooks/augment-context-hygiene.sh +55 -0
- package/scripts/hooks/augment-onboarding-gate.sh +55 -0
- package/scripts/install.py +58 -19
- package/scripts/lint_examples.py +98 -0
- package/scripts/lint_roadmap_complexity.py +127 -0
- package/scripts/onboarding_gate_hook.py +137 -0
- package/scripts/schemas/rule.schema.json +5 -0
- /package/scripts/ai_council/{_one_off_2a4_acceptance.py → one_off_archive/2026-05/_one_off_2a4_acceptance.py} +0 -0
- /package/scripts/ai_council/{_one_off_context_layer_v1_estimate.py → one_off_archive/2026-05/_one_off_context_layer_v1_estimate.py} +0 -0
- /package/scripts/ai_council/{_one_off_context_layer_v1_review.py → one_off_archive/2026-05/_one_off_context_layer_v1_review.py} +0 -0
- /package/scripts/ai_council/{_one_off_followups_review.py → one_off_archive/2026-05/_one_off_followups_review.py} +0 -0
- /package/scripts/ai_council/{_one_off_nondestructive_inline_audit.py → one_off_archive/2026-05/_one_off_nondestructive_inline_audit.py} +0 -0
- /package/scripts/{_one_off_phase4_dispatch_latency.py → ai_council/one_off_archive/2026-05/_one_off_phase4_dispatch_latency.py} +0 -0
- /package/scripts/{_one_off_phase6_trigger_jaccard.py → ai_council/one_off_archive/2026-05/_one_off_phase6_trigger_jaccard.py} +0 -0
- /package/scripts/ai_council/{_one_off_phase_2a_budget_rebalance.py → one_off_archive/2026-05/_one_off_phase_2a_budget_rebalance.py} +0 -0
- /package/scripts/ai_council/{_one_off_phase_2a_post_revert.py → one_off_archive/2026-05/_one_off_phase_2a_post_revert.py} +0 -0
- /package/scripts/ai_council/{_one_off_rebalancing_audit.py → one_off_archive/2026-05/_one_off_rebalancing_audit.py} +0 -0
- /package/scripts/ai_council/{_one_off_roundtrip.py → one_off_archive/2026-05/_one_off_roundtrip.py} +0 -0
- /package/scripts/ai_council/{_one_off_rule_hardening_v1.py → one_off_archive/2026-05/_one_off_rule_hardening_v1.py} +0 -0
- /package/scripts/ai_council/{_one_off_structural_open_questions.py → one_off_archive/2026-05/_one_off_structural_open_questions.py} +0 -0
- /package/scripts/ai_council/{_one_off_structural_optimization.py → one_off_archive/2026-05/_one_off_structural_optimization.py} +0 -0
- /package/scripts/ai_council/{_one_off_structural_v3_gaps.py → one_off_archive/2026-05/_one_off_structural_v3_gaps.py} +0 -0
- /package/scripts/ai_council/{_one_off_structural_v3_review.py → one_off_archive/2026-05/_one_off_structural_v3_review.py} +0 -0
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
---
|
|
2
|
+
demo_for: ask-when-uncertain
|
|
3
|
+
layer: pattern-memory
|
|
4
|
+
prose_delta:
|
|
5
|
+
rule_chars_before: 3893
|
|
6
|
+
rule_chars_after: 4267
|
|
7
|
+
measured_at: phase-3.3-cross-link-landing
|
|
8
|
+
note: "+374 chars from the Examples cross-link block; future prose-pruning rounds (out of scope for Phase 3) will pull pattern prose from the rule into this demo and drive the after-count below the before-count."
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# ask-when-uncertain — Pattern Memory
|
|
12
|
+
|
|
13
|
+
> Wrong / right / why demos for the `ask-when-uncertain` Iron Law
|
|
14
|
+
> (one question per turn, vague-request must ask). Linked from
|
|
15
|
+
> [`ask-when-uncertain`](../../.agent-src.uncompressed/rules/ask-when-uncertain.md)
|
|
16
|
+
> § Examples. Outcome baseline at
|
|
17
|
+
> [`tests/golden/outcomes/ask_when_uncertain.json`](../../tests/golden/outcomes/ask_when_uncertain.json).
|
|
18
|
+
|
|
19
|
+
## Demo 1 — Vague request, multi-question stack
|
|
20
|
+
|
|
21
|
+
### Wrong shape
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
User: improve this
|
|
25
|
+
|
|
26
|
+
Agent:
|
|
27
|
+
1. Should I optimize for readability or speed?
|
|
28
|
+
2. Refactor the function signature?
|
|
29
|
+
3. Add tests too?
|
|
30
|
+
4. Run PHPStan after?
|
|
31
|
+
|
|
32
|
+
Reply with a, b, c, d so I can pick.
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
**Failure mode:** four `?` aimed at the user, structured-answer
|
|
36
|
+
demand (`a, b, c, d`), no triage. Iron Law breach: a turn with a
|
|
37
|
+
question has *exactly one*. Compound thinking load — answer to Q1
|
|
38
|
+
reframes Q2.
|
|
39
|
+
|
|
40
|
+
### Right shape
|
|
41
|
+
|
|
42
|
+
```
|
|
43
|
+
User: improve this
|
|
44
|
+
|
|
45
|
+
Agent: Welche Achse soll "improve" treffen?
|
|
46
|
+
|
|
47
|
+
1. Lesbarkeit (Naming, Funktions-Splits)
|
|
48
|
+
2. Performance (Allokationen, N+1)
|
|
49
|
+
3. Robustheit (Error-Handling, Edge Cases)
|
|
50
|
+
|
|
51
|
+
Dann lege ich los.
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### Why it works
|
|
55
|
+
|
|
56
|
+
Single `?`, numbered options without compound asks, picks the
|
|
57
|
+
question whose answer reframes everything downstream. The follow-up
|
|
58
|
+
("tests? PHPStan?") rides on the next turn — its framing depends on
|
|
59
|
+
the answer here.
|
|
60
|
+
|
|
61
|
+
## Demo 2 — Drive-by execution on a vague trigger
|
|
62
|
+
|
|
63
|
+
### Wrong shape
|
|
64
|
+
|
|
65
|
+
```
|
|
66
|
+
User: clean up this file
|
|
67
|
+
|
|
68
|
+
Agent: [edits 12 files, removes 200 lines, reformats imports,
|
|
69
|
+
extracts 3 helpers, renames 5 variables]
|
|
70
|
+
Done.
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
**Failure mode:** "clean up" is a vague-request trigger
|
|
74
|
+
(`ask-when-uncertain` § Vague-request triggers). MUST-ask before
|
|
75
|
+
touching code. Without scope, the diff is a guess at the user's
|
|
76
|
+
intent.
|
|
77
|
+
|
|
78
|
+
### Right shape
|
|
79
|
+
|
|
80
|
+
```
|
|
81
|
+
User: clean up this file
|
|
82
|
+
|
|
83
|
+
Agent: Was bedeutet "clean up" hier?
|
|
84
|
+
|
|
85
|
+
1. Toten Code raus
|
|
86
|
+
2. Format / Imports sortieren
|
|
87
|
+
3. Refactor (Funktionen splitten)
|
|
88
|
+
|
|
89
|
+
Pick one — sonst ist der Diff Raten.
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### Why it works
|
|
93
|
+
|
|
94
|
+
Names the trigger explicitly ("vague-request"), surfaces the three
|
|
95
|
+
canonical interpretations from the rule's trigger table, and
|
|
96
|
+
declines to act without scope. The cost of asking once << cost of
|
|
97
|
+
ripping through 12 files in the wrong direction.
|
|
98
|
+
|
|
99
|
+
## Demo 3 — Stacked questions inside a handoff
|
|
100
|
+
|
|
101
|
+
### Wrong shape
|
|
102
|
+
|
|
103
|
+
```
|
|
104
|
+
Agent: Bevor ich die Roadmap übergebe:
|
|
105
|
+
|
|
106
|
+
- Welcher Branch?
|
|
107
|
+
- Soll ich PRs erwähnen?
|
|
108
|
+
- Welches Modell für die Fortsetzung?
|
|
109
|
+
- Soll ich .agent-chat-history zitieren?
|
|
110
|
+
|
|
111
|
+
Antworte als 1, 2, 3, 4.
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
**Failure mode:** four-question handoff block. Per § Ordering &
|
|
115
|
+
handoff: handoff questions ride LAST, after domain clarifications,
|
|
116
|
+
folded into the handoff prompt itself — not as a parallel quiz.
|
|
117
|
+
|
|
118
|
+
### Right shape
|
|
119
|
+
|
|
120
|
+
```
|
|
121
|
+
Agent: [delivers the handoff prompt with sensible defaults filled
|
|
122
|
+
in: current branch, PR link present if open, model
|
|
123
|
+
recommendation per `model-recommendation`, history reference
|
|
124
|
+
auto-included]
|
|
125
|
+
|
|
126
|
+
Welche der vier Defaults soll ich vor dem Übergeben anpassen?
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### Why it works
|
|
130
|
+
|
|
131
|
+
Defaults absorb three of the four "questions"; the remaining
|
|
132
|
+
question is the only one that genuinely needs user input — and it's
|
|
133
|
+
phrased so a one-word answer ("PR link" / "model" / "passt") closes
|
|
134
|
+
the loop.
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
---
|
|
2
|
+
demo_for: direct-answers
|
|
3
|
+
layer: pattern-memory
|
|
4
|
+
prose_delta:
|
|
5
|
+
rule_chars_before: 4098
|
|
6
|
+
rule_chars_after: 4514
|
|
7
|
+
measured_at: phase-3.3-cross-link-landing
|
|
8
|
+
note: "+416 chars from the Examples cross-link block; future prose-pruning rounds (out of scope for Phase 3) will pull pattern prose from the rule into this demo and drive the after-count below the before-count."
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# direct-answers — Pattern Memory
|
|
12
|
+
|
|
13
|
+
> Wrong / right / why demos for the three Iron Laws of
|
|
14
|
+
> `direct-answers` (no flattery, no invented facts, brevity by
|
|
15
|
+
> default). Linked from
|
|
16
|
+
> [`direct-answers`](../../.agent-src.uncompressed/rules/direct-answers.md)
|
|
17
|
+
> § Examples. Outcome baseline at
|
|
18
|
+
> [`tests/golden/outcomes/direct_answers.json`](../../tests/golden/outcomes/direct_answers.json).
|
|
19
|
+
|
|
20
|
+
## Demo 1 — Flattery opener (Iron Law 1)
|
|
21
|
+
|
|
22
|
+
### Wrong shape
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
User: Wie viele Always-Rules gibt es aktuell?
|
|
26
|
+
|
|
27
|
+
Agent: Sehr gute Frage! Das ist tatsächlich eine spannende
|
|
28
|
+
Eigenschaft des Systems. Lass mich das für dich aufschlüsseln —
|
|
29
|
+
aktuell sind es 38 Always-Rules.
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
**Failure mode:** flattery opener ("Sehr gute Frage!"), action
|
|
33
|
+
announcement ("Lass mich…"), then 30 Wörter Anlauf für eine
|
|
34
|
+
Ein-Wort-Antwort. Iron Law 1 + Iron Law 3 zusammen verletzt.
|
|
35
|
+
|
|
36
|
+
### Right shape
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
User: Wie viele Always-Rules gibt es aktuell?
|
|
40
|
+
|
|
41
|
+
Agent: 38.
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### Why it works
|
|
45
|
+
|
|
46
|
+
Eine Frage mit einer wahren Antwort = ein Satz. Kein Anlauf, kein
|
|
47
|
+
Kissen, kein "let me…". Die Zahl ist die ganze Antwort.
|
|
48
|
+
|
|
49
|
+
## Demo 2 — Hedged claim without verification (Iron Law 2)
|
|
50
|
+
|
|
51
|
+
### Wrong shape
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
User: Hat verify-before-complete ein "load_context"-Feld?
|
|
55
|
+
|
|
56
|
+
Agent: Ja, ich glaube schon — die meisten Always-Rules haben das
|
|
57
|
+
inzwischen. Sollte in der Frontmatter stehen.
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
**Failure mode:** load-bearing project-shape claim ohne Verify, mit
|
|
61
|
+
zwei Hedges ("ich glaube", "sollte"). Iron Law 2 § Severity-tiered:
|
|
62
|
+
project-shape claims müssen mit einem Tool-Call belegt werden, wenn
|
|
63
|
+
einer reicht — und hier reicht ein `view`/`grep` locker.
|
|
64
|
+
|
|
65
|
+
### Right shape
|
|
66
|
+
|
|
67
|
+
```
|
|
68
|
+
User: Hat verify-before-complete ein "load_context"-Feld?
|
|
69
|
+
|
|
70
|
+
Agent: [grept frontmatter]
|
|
71
|
+
Nein. `verify-before-complete.md` deklariert keinen load_context-
|
|
72
|
+
Eintrag (nur die anderen vier Safety-Floor-Rules tun das).
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### Why it works
|
|
76
|
+
|
|
77
|
+
Tool-Call vor Antwort, dann konkrete Aussage mit Begründung. Wenn
|
|
78
|
+
der Verify-Aufwand zu groß wäre → fragen, nicht raten. Hier kostet
|
|
79
|
+
ein `grep` zwei Sekunden, also Tool-Call ist Pflicht.
|
|
80
|
+
|
|
81
|
+
## Demo 3 — Post-hoc summary creep (Iron Law 3)
|
|
82
|
+
|
|
83
|
+
### Wrong shape
|
|
84
|
+
|
|
85
|
+
```
|
|
86
|
+
User: Wie öffne ich die VBC-Demos?
|
|
87
|
+
|
|
88
|
+
Agent: Hier der Pfad zur Datei:
|
|
89
|
+
|
|
90
|
+
`docs/guidelines/agent-infra/verify-before-complete-demos.md`
|
|
91
|
+
|
|
92
|
+
Zusammenfassend: das ist die Demo-Datei für die Iron Law des
|
|
93
|
+
verify-before-complete-Rule. Sie folgt dem wrong/right/why-Schema
|
|
94
|
+
und ist Teil der Phase 3 von road-to-context-layer-maturity.
|
|
95
|
+
Lass mich wissen, falls du Fragen dazu hast.
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
**Failure mode:** Nutzlose Zusammenfassung nach der Antwort, dann
|
|
99
|
+
Service-Floskel ("Lass mich wissen…"). Iron Law 3: kürzeste
|
|
100
|
+
vollständige Antwort gewinnt; Restaurierung von Kontext und
|
|
101
|
+
Closing-Floskel sind beide Failure-Modes.
|
|
102
|
+
|
|
103
|
+
### Right shape
|
|
104
|
+
|
|
105
|
+
```
|
|
106
|
+
User: Wie öffne ich die VBC-Demos?
|
|
107
|
+
|
|
108
|
+
Agent: `docs/guidelines/agent-infra/verify-before-complete-demos.md`
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### Why it works
|
|
112
|
+
|
|
113
|
+
Pfad ist die ganze Antwort. Kein Re-Frame der Frage, kein
|
|
114
|
+
"Zusammenfassend", kein angebotenes Follow-up. Wenn Matze mehr
|
|
115
|
+
will, fragt er.
|
|
116
|
+
|
|
117
|
+
## Demo 4 — Functional emoji vs prose flair
|
|
118
|
+
|
|
119
|
+
### Wrong shape
|
|
120
|
+
|
|
121
|
+
```
|
|
122
|
+
Agent: 🚀 Tests sind durch! ✨ Alle 47 grün 🎉 Bereit für den nächsten Schritt 💪
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
**Failure mode:** Emoji als Stil-Element, nicht als funktionaler
|
|
126
|
+
Marker. § Emoji Scope erlaubt nur die Whitelist (`📒` Heartbeat,
|
|
127
|
+
mode marker, `❌` `✅` `⚠️` mit Two-Space-Regel, Roadmap-`[x]/[~]/[-]`).
|
|
128
|
+
Alles andere ist Rauschen.
|
|
129
|
+
|
|
130
|
+
### Right shape
|
|
131
|
+
|
|
132
|
+
```
|
|
133
|
+
Agent: Tests durch:
|
|
134
|
+
|
|
135
|
+
$ vendor/bin/pest -q
|
|
136
|
+
............................................... 47 passed
|
|
137
|
+
|
|
138
|
+
✅ 47/47 grün, Exit 0.
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### Why it works
|
|
142
|
+
|
|
143
|
+
Genau ein Emoji aus der Whitelist (`✅` mit Two-Space), funktional
|
|
144
|
+
verwendet als Status-Marker neben dem CLI-Output. Keine Deko, keine
|
|
145
|
+
Reaktions-Emojis.
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
---
|
|
2
|
+
demo_for: verify-before-complete
|
|
3
|
+
layer: pattern-memory
|
|
4
|
+
prose_delta:
|
|
5
|
+
rule_chars_before: 2196
|
|
6
|
+
rule_chars_after: 2603
|
|
7
|
+
measured_at: phase-3.3-cross-link-landing
|
|
8
|
+
note: "+407 chars from the Examples cross-link block; future prose-pruning rounds (out of scope for Phase 3) will pull pattern prose from the rule into this demo and drive the after-count below the before-count."
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# verify-before-complete — Pattern Memory
|
|
12
|
+
|
|
13
|
+
> Wrong / right / why demos for the `verify-before-complete` Iron
|
|
14
|
+
> Law (no completion claim without fresh evidence in this message).
|
|
15
|
+
> Linked from
|
|
16
|
+
> [`verify-before-complete`](../../.agent-src.uncompressed/rules/verify-before-complete.md)
|
|
17
|
+
> § Examples. Outcome baseline at
|
|
18
|
+
> [`tests/golden/outcomes/verify_before_complete.json`](../../tests/golden/outcomes/verify_before_complete.json).
|
|
19
|
+
|
|
20
|
+
## Demo 1 — Hedged completion claim
|
|
21
|
+
|
|
22
|
+
### Wrong shape
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
User: ist der Fix fertig?
|
|
26
|
+
|
|
27
|
+
Agent: Ja, sollte jetzt durchlaufen — ich habe die fehlende
|
|
28
|
+
Bedingung ergänzt und die Tests müssten grün sein.
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
**Failure mode:** "sollte", "müssten" are red-flag hedges (§ Red
|
|
32
|
+
flags — STOP immediately). No fresh command output in this message.
|
|
33
|
+
The claim rides on inference, not evidence.
|
|
34
|
+
|
|
35
|
+
### Right shape
|
|
36
|
+
|
|
37
|
+
```
|
|
38
|
+
User: ist der Fix fertig?
|
|
39
|
+
|
|
40
|
+
Agent: Frisch gerade ausgeführt:
|
|
41
|
+
|
|
42
|
+
$ python3 -m pytest tests/test_load_context.py -v
|
|
43
|
+
============================== 7 passed in 0.07s ===============================
|
|
44
|
+
|
|
45
|
+
Exit code 0, 7/7 grün. Damit ist der Fix verifiziert.
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### Why it works
|
|
49
|
+
|
|
50
|
+
Literal command line, fresh output, exit code, pass count — all in
|
|
51
|
+
this message. The user can scroll up and see the same shape that
|
|
52
|
+
the test runner produced. No hedging vocabulary.
|
|
53
|
+
|
|
54
|
+
## Demo 2 — Trusting an earlier run
|
|
55
|
+
|
|
56
|
+
### Wrong shape
|
|
57
|
+
|
|
58
|
+
```
|
|
59
|
+
[12 messages earlier, agent ran tests — green]
|
|
60
|
+
|
|
61
|
+
User: also fertig zum committen?
|
|
62
|
+
|
|
63
|
+
Agent: Ja, die Tests waren ja grün vorhin. Du kannst committen.
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
**Failure mode:** "Trusting a previous run from earlier in the
|
|
67
|
+
conversation" — explicit red flag. Code drifted in the meantime;
|
|
68
|
+
the earlier run is stale evidence.
|
|
69
|
+
|
|
70
|
+
### Right shape
|
|
71
|
+
|
|
72
|
+
```
|
|
73
|
+
User: also fertig zum committen?
|
|
74
|
+
|
|
75
|
+
Agent: Ich verifiziere kurz — Tests laufen jetzt:
|
|
76
|
+
|
|
77
|
+
$ python3 -m pytest tests/ -q
|
|
78
|
+
... 47 passed in 2.31s
|
|
79
|
+
|
|
80
|
+
Grün. Plus ein quality-tools-Lauf:
|
|
81
|
+
|
|
82
|
+
$ task ci
|
|
83
|
+
... ✅ All checks passed
|
|
84
|
+
|
|
85
|
+
Jetzt ist der Stand sauber.
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### Why it works
|
|
89
|
+
|
|
90
|
+
Re-runs both gates *now*. The `quality-tools` skill handles the
|
|
91
|
+
specific commands; the rule only mandates "fresh in this message".
|
|
92
|
+
"Stand sauber" is anchored on actual exit codes, not on memory.
|
|
93
|
+
|
|
94
|
+
## Demo 3 — Partial verification claimed as complete
|
|
95
|
+
|
|
96
|
+
### Wrong shape
|
|
97
|
+
|
|
98
|
+
```
|
|
99
|
+
User: ready für den PR?
|
|
100
|
+
|
|
101
|
+
Agent: Tests sind grün, ich öffne den PR.
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
**Failure mode:** "Relying on partial verification (ran tests but
|
|
105
|
+
not PHPStan)" — explicit red flag. PR-readiness needs the full
|
|
106
|
+
gate, not a single channel.
|
|
107
|
+
|
|
108
|
+
### Right shape
|
|
109
|
+
|
|
110
|
+
```
|
|
111
|
+
User: ready für den PR?
|
|
112
|
+
|
|
113
|
+
Agent: Ich check beide Gates:
|
|
114
|
+
|
|
115
|
+
$ vendor/bin/pest
|
|
116
|
+
... 47 passed
|
|
117
|
+
$ vendor/bin/phpstan analyse
|
|
118
|
+
... [OK] No errors
|
|
119
|
+
|
|
120
|
+
Beide grün. Soll ich den PR jetzt erstellen?
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### Why it works
|
|
124
|
+
|
|
125
|
+
Both gates run fresh, both outputs in the message, exit summaries
|
|
126
|
+
visible. The follow-up question is permission-gated per
|
|
127
|
+
`scope-control` § Git operations — the verification is done
|
|
128
|
+
independently of the user's go-ahead.
|
package/package.json
CHANGED
package/scripts/agent-config
CHANGED
|
@@ -72,6 +72,10 @@ Commands:
|
|
|
72
72
|
(CHECKPOINT fallback for platforms without native hooks)
|
|
73
73
|
roadmap-progress:hook PostToolUse hook entry point (read JSON from stdin)
|
|
74
74
|
Regenerates roadmaps-progress.md when a tool wrote under agents/roadmaps/
|
|
75
|
+
onboarding-gate:hook Hook entry point (drains stdin)
|
|
76
|
+
Writes .augment/state/onboarding-gate.json from .agent-settings.yml
|
|
77
|
+
context-hygiene:hook PostToolUse hook entry point (read JSON from stdin)
|
|
78
|
+
Maintains .augment/state/context-hygiene.json (turn count, loop, freshness)
|
|
75
79
|
telemetry:record Append one artefact-engagement event (default-off)
|
|
76
80
|
telemetry:status Print artefact-engagement telemetry status (read-only)
|
|
77
81
|
telemetry:report Aggregate the engagement log into a quartile report
|
|
@@ -325,6 +329,20 @@ cmd_roadmap_progress_hook() {
|
|
|
325
329
|
exec python3 "$script" "$@"
|
|
326
330
|
}
|
|
327
331
|
|
|
332
|
+
cmd_onboarding_gate_hook() {
|
|
333
|
+
require_python3
|
|
334
|
+
local script
|
|
335
|
+
script="$(resolve_script "scripts/onboarding_gate_hook.py")" || return 1
|
|
336
|
+
exec python3 "$script" "$@"
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
cmd_context_hygiene_hook() {
|
|
340
|
+
require_python3
|
|
341
|
+
local script
|
|
342
|
+
script="$(resolve_script "scripts/context_hygiene_hook.py")" || return 1
|
|
343
|
+
exec python3 "$script" "$@"
|
|
344
|
+
}
|
|
345
|
+
|
|
328
346
|
cmd_chat_history_checkpoint() {
|
|
329
347
|
require_python3
|
|
330
348
|
local script
|
|
@@ -446,6 +464,8 @@ main() {
|
|
|
446
464
|
chat-history:hook) cmd_chat_history_hook "$@" ;;
|
|
447
465
|
chat-history:checkpoint) cmd_chat_history_checkpoint "$@" ;;
|
|
448
466
|
roadmap-progress:hook) cmd_roadmap_progress_hook "$@" ;;
|
|
467
|
+
onboarding-gate:hook) cmd_onboarding_gate_hook "$@" ;;
|
|
468
|
+
context-hygiene:hook) cmd_context_hygiene_hook "$@" ;;
|
|
449
469
|
telemetry:record) cmd_telemetry_record "$@" ;;
|
|
450
470
|
telemetry:status) cmd_telemetry_status "$@" ;;
|
|
451
471
|
telemetry:report) cmd_telemetry_report "$@" ;;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# One-off archive — 2026-05
|
|
2
|
+
|
|
3
|
+
> Archived per **Phase 0a.2** of `agents/roadmaps/road-to-rule-hardening.md`.
|
|
4
|
+
> Each script here was a single-purpose AI-council probe or measurement
|
|
5
|
+
> tied to a specific phase of `road-to-structural-optimization.md` (now
|
|
6
|
+
> archived) or `road-to-rule-hardening.md`. The session output lives
|
|
7
|
+
> under `agents/council-sessions/` (durable evidence) and the linter
|
|
8
|
+
> `scripts/check_one_off_location.py` enforces that no new
|
|
9
|
+
> `_one_off_*.py` lands outside this folder.
|
|
10
|
+
|
|
11
|
+
## Lifecycle rule (uniform — Phase 0.2 of context-layer-maturity)
|
|
12
|
+
|
|
13
|
+
> A one-off is **archived**, never deleted. The session manifest under
|
|
14
|
+
> `agents/council-sessions/` is the audit trail; the script itself is
|
|
15
|
+
> kept here so a future contributor can re-read intent, re-run a probe
|
|
16
|
+
> on a future branch, or extract a reusable helper.
|
|
17
|
+
|
|
18
|
+
## Inventory
|
|
19
|
+
|
|
20
|
+
| Script | Roadmap / Phase | Council session id |
|
|
21
|
+
|---|---|---|
|
|
22
|
+
| `_one_off_2a4_acceptance.py` | structural-optimization 2A.4 | various 2A sessions |
|
|
23
|
+
| `_one_off_context_layer_v1_estimate.py` | context-layer-maturity v1 cost estimate | `2026-05-03T17-56-21Z` |
|
|
24
|
+
| `_one_off_context_layer_v1_review.py` | context-layer-maturity v1 review | `2026-05-03T17-56-21Z` |
|
|
25
|
+
| `_one_off_followups_review.py` | road-to-1-16-followups review | session under `agents/council-sessions/` |
|
|
26
|
+
| `_one_off_nondestructive_inline_audit.py` | non-destructive-by-default audit | session under `agents/council-sessions/` |
|
|
27
|
+
| `_one_off_phase4_dispatch_latency.py` | structural-optimization 4.3.1 cluster latency benchmark | local benchmark, no council |
|
|
28
|
+
| `_one_off_phase6_trigger_jaccard.py` | structural-optimization Phase 6 trigger overlap | local measurement |
|
|
29
|
+
| `_one_off_phase_2a_budget_rebalance.py` | structural-optimization 2A budget rebalance | `2026-05-03T*` |
|
|
30
|
+
| `_one_off_phase_2a_post_revert.py` | structural-optimization 2A post-revert | `2026-05-03T*` |
|
|
31
|
+
| `_one_off_rebalancing_audit.py` | rebalancing roadmap audit | session under `agents/council-sessions/` |
|
|
32
|
+
| `_one_off_roundtrip.py` | council client roundtrip smoke test | local smoke test |
|
|
33
|
+
| `_one_off_rule_hardening_v1.py` | rule-hardening v1 review | `2026-05-03T19-16-25Z` |
|
|
34
|
+
| `_one_off_structural_open_questions.py` | structural-optimization open questions | session under `agents/council-sessions/` |
|
|
35
|
+
| `_one_off_structural_optimization.py` | structural-optimization initial review | session under `agents/council-sessions/` |
|
|
36
|
+
| `_one_off_structural_v3_gaps.py` | structural-optimization v3 gap audit | session under `agents/council-sessions/` |
|
|
37
|
+
| `_one_off_structural_v3_review.py` | structural-optimization v3 review | session under `agents/council-sessions/` |
|
|
38
|
+
|
|
39
|
+
## Re-running an archived script
|
|
40
|
+
|
|
41
|
+
Imports may have shifted (e.g. `scripts.ai_council.*`). If a probe
|
|
42
|
+
needs to be re-run against a current branch, copy it back to its
|
|
43
|
+
original location, fix imports, run, then move the working copy
|
|
44
|
+
back here. Do **not** edit in place — keep the archive immutable
|
|
45
|
+
beyond cosmetic README updates.
|