Session-close gate
Înainte ca Wednesday să zică “ok, sesiune sigură, putem închide” sau să claim-uie “good state”, rulează un checklist obligatoriu. Nu e politicos, e infrastructural. Dacă sări peste el, următoarea sesiune bootează peste state inconsistent și gate 4 (State Drift) o oprește cu STALE. Aici e ce face gate-ul.
Ce este
Session-close gate = secvența standard de update + verificare care trebuie
trecută complet ÎNAINTE de orice claim de “session safe”. Codificată în două
locuri (durabil cross-conversation): CLAUDE.md la vault root +
feedback_session_close_protocol.md în memoria Cowork.
Triggered când:
- Operator semnalează închidere (“ne închidem”, “save state”, “good night”)
- Fază se termină (phase boundary)
- Mid-task handoff la alt runtime (rate limit, switch LLM)
NU e triggered la fiecare “ne luăm o pauză” scurt — doar la închidere reală.
Cum funcționează — pașii
1. Update runtime_state.json
Fișierul canonical de stare operațională. Trei câmpuri critice:
- top phase — faza curentă (ex: 338+19)
- last_meaningful_session — phase + date + 1-line summary ale ultimei sesiuni încheiate
- pending entries — trimite la 1-line, descriptive, fără verbozitate
Verbozitatea narativă se duce în runtime_state_notes.md (separat de Phase
330 round-4 ca să țină boot read-ul ≤15k tokens).
2. Append la runtime_notes_trail.json
Entry append-only cu shape strict: phase, date, note, runtime,
unpushed, plus opțional realignments: [] — quote-uri verbatim unde
operatorul a corectat abordarea Wednesday mid-session (“nu, nu așa”, “actually
Y”, “stop doing Z”). Pattern-ul myPKA “what user realigned” — viitoarele
sesiuni văd corecțiile reale, nu doar outcome-ul curatat.
3. Update scratchpad.md
last_updatedla azicurrent_focus= DOAR sesiunea curentă, 1-2 paragrafe MAX. Fără chain-uri precedente în body — alea se append-uiesc lascratchpad_archive.mdÎNAINTE de overwrite.pending_next_stepsinline, scurt
Regula durabilă: scratchpad-ul e short-range carry-over, NU diary. Dacă pare că devine istoric, se taie + arhivează.
4. Update pending_backlog.md (dacă e cazul)
Doar dacă s-a schimbat ceva operator-side (backlog de acțiuni umane).
5. Update Docker registries (dacă e cazul)
Dacă s-a schimbat state pe Gideon / Jarvis Docker: edit
_raw/it_tools/nas/docker_stack_registry.md +
jarvis_docker_stack_registry.md. Append la Operations Log la jos.
6. Update Task Handoff
Dacă sesiunea s-a încheiat mid-task: write task_handoff.md cu done steps +
next steps + context. Dacă task-ul e complet: clear (task: "—"). Asta e ce
prinde Gate 3.5 la următorul boot.
7. Voice hooks (cross-LLM, Phase 335)
- T3 vocab capture — extract termeni organici →
wednesday-vocab.md - Voice-gate self-check — Wednesday verifică propriul output împotriva Reject List
Spec: _infra/core/wednesday/doctrine/voice_and_tone.md § Session-Close
Voice Hooks. Aplică pe toate runtime-urile.
8. KG / Honcho update
Update Knowledge Graph + Honcho memory layer pentru lessons learned + facts noi descoperite. Honcho ține memorie longitudinală peer-to-peer.
9. Re-read + Drift Gate
Acum citește din nou toate fișierele updated + rulează cross-check de
consistență fazelor (same gate ca la boot, dar forward verification). Sau
direct: bash _infra/scripts/wednesday-state-gate.sh.
Exit 0 = clean. Exit 1 = warn (mai continui dar logează). Exit 2 = stale, OPREȘTE + corectează + re-rulează.
10. Skill review (background)
Dacă au apărut pattern-uri reusable noi (≥3 future uses probabile), mintează
skill via wednesday-skill-create.py. Săptămânal wednesday-skill-review.py
face tally + promote / kill.
De ce contează
Trei motive concrete, fiecare cu istorie de cost:
1. Drift compounding. O sesiune închisă cu state inconsistent → boot-ul următor citește scratchpad-ul vechi + runtime_state nou → confuzie context → Wednesday inventează istorie. Closing gate previne asta la sursă.
2. Token budget. Phase 330 round-4 a împărțit fișierele exact pentru
că scratchpad.md + runtime_state.json ajunseseră la ~12k tokens fiecare.
Closing gate forțează compactarea (current_focus = 1-2 paragrafe, restul la
archive).
3. Cross-LLM continuity. Dacă închizi pe Claude și bootezi pe Grok mâine, Grok citește aceleași fișiere. Dacă starea nu e curată, Grok pornește deja în drift. Closing gate e contractul cross-runtime.
Cum interacționez cu el
Tu, operator, NU trebuie să rulezi nimic manual. Wednesday face gate-ul automat când semnalezi închidere. Ce poți face însă:
- Verifică claim-ul. Dacă Wednesday zice “session safe” dar pare suspect,
spune: “run state gate”. Se rulează
wednesday-state-gate.shși raportează exit code. - Provocă realignments. Dacă într-o sesiune Wednesday merge în direcția
greșită și o corectezi, acel quote intră în
realignments: []— viitoarea sesiune vede corecția, nu doar outcome-ul. - “handoff” — comandă manuală de scriere
task_handoff.md. Wednesday întreabă: task name, done, next, context. Util când schimbi runtime intentional (Claude → Grok pentru cost) sau ai rate limit.
Limite / gotchas
- Closing gate nu rulează la fiecare pauză. Doar la închidere reală sau phase boundary. Dacă vrei să forțezi, spune explicit “close session”.
- Drift gate e bidirecțional. Aceeași verificare la boot (Gate 4) și la close. Dacă boot-ul prinde STALE, înseamnă că closing-ul anterior a fost sărit sau a eșuat — investighează acolo.
- Voice hooks pot fi zgomotoase. T3 vocab capture poate ridica false positives pe argou tehnic. Logging-ul e append-only — corectările manuale rămân vizibile.
- NU declara “session safe” peste un gate failed. Regula durabilă. Dacă Wednesday claim-uie state bun fără gate clean, e bug — semnalează.
Unde sunt documentate
CLAUDE.mdla vault root — § Session-Close Discipline (autoritativ)_infra/core/wednesday/feedback_session_close_protocol.md— protocol Cowork_infra/core/wednesday/wednesday.md§ Session close requires_infra/scripts/wednesday-state-gate.sh— verificare automată_infra/scripts/extract-wednesday-vocab.py— T3 capture_infra/scripts/voice-gate.py— voice-gate self-check_infra/scripts/wednesday-skill-review.py— skill promotion tally