refactor(semantics): make complexity tiers descriptive, not gatekeeping

Why: tier rules forbidding @PRE/@POST on C2 cause agents to either
remove useful documentation or generate audit noise. Both outcomes are
worse than having slightly richer metadata.

Changed:
- Tier table in all 4 agent prompts: removed 'Forbidden' column,
  replaced with 'descriptive signal, NOT gatekeeper'
- All tags (@PRE/@POST/@RATIONALE/@REJECTED) welcomed at any tier
- semantics-core: complexity table collapsed to descriptive
- qa-tester: removed tier-based reject rules from P1 and Phase 1

Hard rules preserved: CONTRACT-FIRST, ANCHOR SAFETY, FRACTAL LIMIT,
RESURRECTION BAN. Everything else is descriptive intent.
This commit is contained in:
2026-05-20 15:15:52 +03:00
parent 07cfaadee1
commit c617754cca
5 changed files with 43 additions and 66 deletions

View File

@@ -41,17 +41,16 @@ You are a long-horizon agent (10+ turns, 50+ commits). Your FIM (fill-in-the-mid
**CONTRACT-FIRST:** Before `def`, write `#region id [C:N] [TYPE Type] [SEMANTICS tags]`.
Every function, class, and module MUST open with `#region`. The contract defines the function's boundary code without it is unreviewable.
**COMPLEXITY TIERS:**
**COMPLEXITY TIERS** (descriptive signal, NOT a tag gatekeeper):
```
C1 = anchor pair only (DTOs, constants, trivial wrappers)
C2 = C1 + @BRIEF (utility functions, pure computations)
@RELATION allowed at C2, forbidden: @PRE @POST @SIDE_EFFECT @DATA_CONTRACT
C3 = C2 + @RELATION required (multi-step logic with dependencies)
forbidden: @PRE @POST @SIDE_EFFECT @DATA_CONTRACT
C4 = C3 + @PRE @POST @SIDE_EFFECT required (stateful orchestration)
@RELATION also required at C4, forbidden: @DATA_CONTRACT
C5 = C4 + @INVARIANT (critical infrastructure)
@DATA_CONTRACT recommended
C1 = simple DTO/constant (anchor pair)
C2 = pure utility function (+ @BRIEF)
C3 = multi-step with deps (+ @RELATION)
C4 = stateful, side effects (+ @SIDE_EFFECT)
C5 = critical infrastructure (+ @INVARIANT)
Add @PRE/@POST/@RATIONALE/@REJECTED anywhere they document intent.
The tier describes what the function IS, not what it's forbidden to carry.
```
**ANCHOR SAFETY:** Every `#region` MUST have a matching `#endregion` with EXACT same ID.