Skip to content

Scenarios

VAC34 edited this page Jul 28, 2026 · 14 revisions

Scenarios

66 behavioral conformance scenarios (CONFORMANCE.md row 1-66). Each tests a specific SAIPEN invariant.

Core scenarios (1-30)

# Scenario Invariant
1 Cold continuation Agent with zero history resumes from STATE
2 Corrupt STATE recovery Missing field triggers RECOVER
3 Dependency cycle Circular needs: detected and blocked
4 Dangling needs: reference Non-existent T-id in needs: = FAIL
5 Stale claim forfeiture Unrefreshed claim after 15min expires
6 Goal counter crash recovery goal_waves rebuilt from LOG lines
7 Manual-verify gate no-shell host asks human before SHIP
8 No-publish restriction git-less host skips tag/push, still ships
9 Read-only restriction read-only banned from INIT/PLAN/ADD/BUILD/SHIP/CLEAN/TRANSLATE
10 Board-empty maintenance DONE + empty TODO = auto HUNT
11 Goal objective exit goal_mode: false after mature ADD
12 Extension absence No extensions dir -> no SUBs, still works
13 Unresolved LOG parent WARN but not FAIL
14 Invalid phase transition REVIEW->SHIP PASS, INIT->SHIP FAIL
15 Mode-phase restrictions read-only + ADD = FAIL
16 Ticket-level BLOCKED Non-cycle failure, work continues on other tickets
17 Fresh INIT bootstrap From templates/ on first saipen set
18 Evolutionary ADD symmetry ADD follows priority order, never invents
19 Unclaimed DOING adoption Crash orphan -> next agent claims it
20 Clean tree after BLOCKED Stale work doesn't poison next ticket
21 Dirty tree on continuation Agent adopts uncommitted changes
22 Parallel TRANSLATE isolation Two translate runs don't stomp each other
23 Dual-location extension conflict root vs .saipen/ ext, never merged
24 Dual-location TRANSLATE conflict Same, isolated
25 Sub spawn on protected project Refuses if project has uncommitted claims
26 HUNT skip hash rule Exact HEAD match required, mtime doesn't count
27 MARKHUNT record-only Never fixes, never caps findings
28 VERIFY hysteresis Second block on same ticket -> escalates
29 SubSaipen STATE shape schema-valid, mode: read-only, no TRANSLATE
30 read-only reachable phases MARKHUNT/PREPARE/VALIDATE only

Advanced scenarios (31-66)

# Scenario Invariant
31 stop preserves goal counters stop doesn't reset waves/tickets
32 goal_waves not double-counted ADD->PLAN doesn't increment twice
33 Fixer subSaipen patch format Patch carries base_head + verified
34 BOOT.md cold-start Compact kernel, no rule definition
35 human_note optional One-line nudge, never required
36 Human digest ship/stop (over)write kitchen/digest.md
37 MARKHUNT closure self-test Verified against its own findings
38 LOG segmentation E-### unique across sealed+active segments
39 Shipped-library integrity validate.py checks shipped STATEs
40 Board soft cap BOARD.md kept readable
41 saipen status Answers real question, never re-runs validator
42 LOG timestamp sanity >3h future = FAIL, >5min inversion = WARN
43 Reserved Superseded by row 54
44 Checkpoint self-confirmation Read back STATE after writing
45 Returning agent stale memory Distrusts own recall, re-reads STATE
46 Safety valve is a pause goal_mode preserved, not exit
47 Determinism invariants Fixed action priority order
48 SubSaipen blocked not guessed status: blocked + exact question
49 next_action vocabulary Value must match prefix/category
50 One ticket at a time BOARD FAILs on 2+ DOING
51 Goal counters countable trace goal_waves LOG line required
52 MARKHUNT evidence Finding without cite = FAIL
53 OUTBOX well-formed status/summary/critical required
54 Deadlocked board FAIL DONE + empty TODO + WAIT: non-valve = FAIL
55 Tripped valve shape goal_mode: true, phase NOT BLOCKED
56 Duplicate section headings FAIL Two ## DONE blocks = FAIL
57 WAIT category token Closed 7-word vocabulary
58 Cross-document drift RFC vs schema vs validator agreement
59 Checkbox-section agreement [x] only under DONE, [ ] only under TODO/BLOCKED
60 Write confirmed by readback All 3 checkpoint files read back
61 Command =/= transition saipen ship recognized, direct SHIP blocked
62 Rule reaches emitting docs Every WAIT: in phase docs carries category
63 Guides teach current shape validate.py WARNs on stale guides
64 Portable floor not permissive validate.sh/ps1 probe all 9 fields
65 Both halves agree validate.sh and validate.ps1 same checks
66 CI workflow honest trigger Header states real trigger, names pre-commit hook

ДED Voice

"66 сценариев. Каждый проверяет одно правило. Никаких 'ну, это редко бывает'. Тест упал — значит что-то сломалось. Тест прошёл — значит работает. Агент не гадает. Агент проверяет."

Clone this wiki locally