You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Responds to field-test critique from 12-agent Rust fan-out (sprints
PR-X4 cascade / PR-X10..13 consolidation / PR-X12 codec):
- §16 Adoption Tiers (NEW). Tier-A (day-one minimum viable, 8 items),
Tier-B (savants + high-stakes only), Tier-C (project-overrideable
defaults), Tier-D (honest caveats). Encodes the field-tested 6-adopt
/ 3-modify-or-skip split rather than asserting the maximalist surface
is mandatory.
- §4.1 LD-3/4/5 adoption note: SHOULD-USE on savants every wave,
MAY-USE on workers selectively; not routine per-worker rotation.
- §6.1 honest caveat: Agent() tool does NOT expose a self-interrupt
API; detector is prompt-level only; catches in-LLM oscillation but
not OS hangs (wrap spawn in wall-clock timeout for that).
- §8.1 adoption note: Tier-1 defaults to coordinator-side (PP-13 runs
once on consolidated diff), not per-worker — 12-agent fan-out with
~1 GB Rust target dirs makes per-worker Tier-1 disk-prohibitive.
- §10 DoD: LD-1..LD-5 rotation language softened: every-wave on
savants, conditional on workers (when phase_reached=internalize or
output overconfident).
- §16.6 v0.2 prune targets: mark the four DoD checklists for slimming
after one real sprint with the framework.
EN + DE in lockstep.
Copy file name to clipboardExpand all lines: .claude/ATT/DE/anti-skim-agent-spec.md
+122-2Lines changed: 122 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -121,6 +121,12 @@ Billig zu teuer:
121
121
| LD-4 |**Negative-Knowledge-Test**| „Steht in File X etwas zu Thema Y?" — wobei Y NICHT drin ist | „nein, nicht enthalten" | halluziniert plausibel klingenden Inhalt zu Y |
122
122
| LD-5 |**Line-Range-Quote**| „Quote Zeilen N-M aus File X verbatim" | exakter Quote ODER „Range existiert nicht (File nur K Zeilen)" | paraphrasiert, weicht ab, oder verweigert ohne Grund |
123
123
124
+
> **Adoption-Note.** LD-3 / LD-4 / LD-5 sind SHOULD-USE auf Savants
125
+
> jede Wave, MAY-USE auf Workers selektiv — typisch wenn
126
+
> `phase_reached=internalize` geclaimt wird oder der Output
127
+
> overconfident wirkt. Per-Worker-per-Wave-Rotation ist Overkill
128
+
> für routinemäßige 200-LoC-Bundles. Siehe §16 Adoption-Tiers.
129
+
124
130
### §4.2 Trigger-Heuristik
125
131
126
132
| Worker-Antwort-Pattern | Lie-Detector |
@@ -243,6 +249,16 @@ Diese Regel wird auch von PP-13 brutally-honest-tester als
| §14 | Reading-Phasen per File + §14.5-Per-File-Kind-Minimum | Fängt „Agent claimt confident File-Content ohne zu lesen" — der häufigste Silent-Skim-Failure. |
829
+
| §15 | CA1..CA4 kognitive-Anti-Pattern-Framing | Die Linse, durch die ein Savant-Audit schon schaut; billig zu adopten. |
830
+
| §15.6 | 4-Savant-Council für P0-Review auf Consolidation-Sprints | High-Leverage-Audit; läuft auf Opus, einmal pro Sprint. |
831
+
| §4.1 LD-1 | Sentinel-Tokens |~50 LoC Ceremony pro Brief; fängt den trivialen „Agent hat das Brief nicht gelesen"-Fall. |
832
+
| §6 | Prompt-level Tool-Call-Loop-Instruction (best-effort, siehe §16.4) | Fängt In-LLM-Oszillation, wenn der Worker die Instruction honored. |
833
+
834
+
### §16.2 Tier-B — adopten nur für Savants / High-Stakes
835
+
836
+
Reserviere für Review-Agents (PP-13/14/15/16) und High-Stakes-Worker-
837
+
Spawns. Skip für routinemäßige 200-LoC-Skeleton-Fills.
838
+
839
+
| § | Was | Wann adopten |
840
+
|---|---|---|
841
+
| §4.1 LD-3 / LD-4 / LD-5 | 3-Section-Challenge / Negative-Knowledge / Line-Range-Quote | Auf Savants **jede Wave**. Auf routinemäßigen Workers **nur wenn**`phase_reached=internalize` geclaimt wird ODER der Output overconfident wirkt. Nicht als routinemäßige Per-Worker-per-Wave-Rotation. |
842
+
| §13 Skeleton-Fill (Protokoll A) |`todo!("SOURCE:")`-Marker erzwingen Read-Before-Fill | High-Stakes-Ports (Python→Rust-Transcode, x265→Rust-Codec) wo Source-Fidelity matters. Skip für Greenfield-Prose-Features. |
| §8.1 Tier-1-Toolchain | Coordinator-side (PP-13 fährt einmal auf konsolidiertem Diff) | Kleiner Workspace wo Per-Worker-Compile schnell ist |`tier_1_runner: per-worker`|
854
+
| §4.1 LD-3/4/5-Rotation | Spot-Check nur auf Savants + overconfident Workers | Projekt will Per-Worker-per-Wave-Rotation |`lie_detector_rotation: per-worker-per-wave`|
855
+
| §13 Skeleton-Fill | Opt-in pro Sprint via `preflight.skeleton: enabled`| Greenfield-Code ohne SOURCE-Referenz |`preflight.skeleton: disabled` (Default für Greenfield) |
856
+
| §14.5 Per-File-Kind-Minimum-Phase | INVARIANTS.md / Spec / Reference = internalize | Projekts INVARIANTS lebt woanders oder existiert nicht | Projekt-definiertes `file_kind_phase_map` in `INVARIANTS.md`|
| §6.1 In-Loop-Tool-Call-Detection | Das aktuelle Claude Code `Agent()`-Tool exponiert KEINE Interrupt-API. Der Detector lebt nur als prompt-level Instruction. Fängt In-LLM-Oszillation; fängt NICHT OS-Level-Hangs. Wrap jeden Spawn in einen Wall-Clock-Timeout auf der Orchestrator-Schicht für OS-Hangs. |
863
+
| §8.1 Per-Worker-Tier-1 | Auf Rust-Workspaces mit ~1 GB Per-Worker-`target/`-Dirs ist Per-Worker-Tier-1 bei 12-Agent-Fan-out disk-prohibitiv. Nutze den §16.3-Coordinator-side-Override. |
864
+
| §4.1 LD-1-Sentinel-Tokens | Slight Per-Brief-Ceremony (~50 LoC). Projekt DARF das Token auf Orchestrator-Level templaten statt per-worker Brief, um den Cost zu amortisieren. |
865
+
| Spec-Line-Count bei v0.1.0 DRAFT | Diese Spec ist intentional maximalistisch für die erste Revision. Plan einen v0.2-Prune der vier DoD-Checklisten (§10 / §13.6 / §14.8 / §15.7) nachdem ein realer Sprint mit dem Framework gelaufen ist — behalte nur Items, die Field-Bugs gefangen haben. |
Copy file name to clipboardExpand all lines: .claude/ATT/anti-skim-agent-spec.md
+120-3Lines changed: 120 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -115,6 +115,12 @@ Cheap to expensive:
115
115
| LD-4 |**Negative-Knowledge Test**| "Does file X say anything about topic Y?" — where Y is NOT in the file | "no, not contained" | hallucinates plausible-sounding content about Y |
116
116
| LD-5 |**Line-Range Quote**| "Quote lines N–M from file X verbatim" | exact quote OR "range does not exist (file only K lines)" | paraphrases, deviates, or refuses without reason |
117
117
118
+
> **Adoption note.** LD-3 / LD-4 / LD-5 are SHOULD-USE on savants
119
+
> every wave, MAY-USE on workers selectively — typically when
120
+
> `phase_reached=internalize` is claimed or the output looks
121
+
> overconfident. Per-worker-per-wave rotation is overkill for
122
+
> routine 200-LoC bundles. See §16 Adoption Tiers.
123
+
118
124
### §4.2 Trigger heuristic
119
125
120
126
| Worker answer pattern | Lie-Detector |
@@ -234,6 +240,16 @@ This rule is also enforced by PP-13 brutally-honest-tester as
| §8.1 Tier-1 toolchain | Coordinator-side (PP-13 runs once on consolidated diff) | Small workspace where per-worker compile is fast |`tier_1_runner: per-worker`|
831
+
| §4.1 LD-3/4/5 rotation | Spot-check only on savants + overconfident workers | Project wants per-worker per-wave rotation |`lie_detector_rotation: per-worker-per-wave`|
832
+
| §13 Skeleton-Fill | Opt-in per sprint via `preflight.skeleton: enabled`| Greenfield code with no SOURCE to reference |`preflight.skeleton: disabled` (default for greenfield) |
| §6.1 in-loop tool-call detection | The current Claude Code `Agent()` tool does NOT expose an interrupt API. The detector lives only as a prompt-level instruction. Catches in-LLM oscillation; does NOT catch OS-level hangs. Wrap each spawn in a wall-clock timeout at the orchestrator layer for OS hangs. |
840
+
| §8.1 per-worker Tier-1 | On Rust workspaces with ~1 GB per-worker `target/` dirs, per-worker Tier-1 at 12-agent fan-out is disk-prohibitive. Use the §16.3 coordinator-side override. |
841
+
| §4.1 LD-1 sentinel tokens | Slight per-brief ceremony (~50 LoC). Project MAY template the token at orchestrator level rather than per-worker brief to amortize the cost. |
842
+
| Spec line-count at v0.1.0 DRAFT | This spec is intentionally maximalist for the first revision. Plan a v0.2 prune of the four DoD checklists (§10 / §13.6 / §14.8 / §15.7) once one real sprint has run with the framework — keep only items that caught field bugs. |
843
+
844
+
### §16.5 Sprint-by-sprint adoption worked example
845
+
846
+
A 12-agent Rust fan-out doing cascade + codec + consolidation:
| PR-X12 codec (Rust port of x265 reference) | full | full §13 Skeleton-Fill (high-stakes source-fidelity port); LD-3/4/5 on consolidation worker |`tier_1_runner: coordinator`|
852
+
| PR-X10+11+13 consolidation review (savant pass) | n/a (review pass) | full §15.6 four-savant council on Opus | n/a |
853
+
854
+
### §16.6 v0.2 prune targets (slim once field-tested)
855
+
856
+
After one full sprint with this spec, slim the following sections to
857
+
items that produced field-tested catches:
858
+
859
+
| Section | Current items | Slim target |
860
+
|---|---:|---|
861
+
| §10 Definition of Done | 13 | keep ~5 that catch real bugs |
862
+
| §13.6 Skeleton-Fill DoD | 7 | keep ~3 |
863
+
| §14.8 per-file-read DoD | 5 | keep ~3 |
864
+
| §15.7 cognitive-hygiene DoD | 5 | keep ~3 |
865
+
| §8.1 / §8.2 / §8.3 Tier tables | full per-language matrix | slim to entries actually run in the field |
866
+
867
+
Goal: spec line-count drops 30-50% by v0.2 while preserving the
0 commit comments