Completeness Protocol (ZAKON #11) ZAKON #11 — Completeness Protocol NIKAD "evo cijela slika" bez POTPUNE slike. Date: 2026-02-24 Origin: Alem repeatedly had to say "nemaš cijelu sliku" 3+ times before John gathered all data. Root cause: 67 hooks enforce code/deploy/sync verification but ZERO enforce information completeness in CEO briefings. Rule Before ANY briefing, status update, or email summary to CEO: Check ALL sources — not just the first one that returns results NEVER present partial data as complete — "evo šta imam do sad" ≠ "evo cijela slika" Explicitly state known unknowns — what you COULD NOT check and why Read previous session context — when CEO asks about past topics, FIRST read session logs Briefing Completeness Checklist Before answering ANY CEO question about status, emails, people, or follow-ups: # Source Command Required? 1 Email — john mail-native.js unread --account john + sent --account john YES 2 Email — info mail-native.js unread --account info + sent --account info YES 3 Email — alem mail-native.js unread --account alem + sent --account alem YES 4 Email — alai mail-native.js unread --account alai + sent --account alai YES 5 Email — dev mail-native.js unread --account dev + sent --account dev YES 6 MC tasks — Alem's mc.js list --owner alem --status open YES 7 MC tasks — Blocked mc.js list --status blocked YES 8 Session logs session-search.sh topic or keyword When topic-specific 9 HiveMind hivemind.js query "" or semantic-query "" When topic-specific 10 Email briefing ~/system/logs/email-briefing-latest.md YES Shortcut: node ~/system/tools/ceo-briefing.js --full runs ALL of the above. "Known Unknowns" Protocol EVERY briefing MUST end with a "Known Unknowns" section: ## Known Unknowns - [source I couldn't check] — [why] - [information gap] — [what would resolve it] If all sources were checked: ## Known Unknowns: None — all sources checked. Session Context Rule When CEO asks about something from a previous session: FIRST run session-search.sh topic "" or keyword "" READ the relevant session file(s) THEN check current state (emails, MC tasks) Present: What we discussed → What changed since → Current state CEO Briefing Output Format Use the structured format from ceo-briefing.js : # CEO Briefing — {date} {time} ## DECISIONS NEEDED (your call required) ## ACTION REQUIRED (only you can do this) ## WAITING FOR (sent, no response yet) ## COMPLETED SINCE LAST SESSION ## OPEN THREADS (context from previous sessions) ## KNOWN UNKNOWNS Anti-Patterns (NEVER do these) "Provjerio sam email" → Which account? ALL accounts? Inbox AND sent? "Nema ništa novo" → Checked where? When? All 5 accounts? "Evo cijela slika" → Did you check sessions, HiveMind, MC tasks, ALL emails? Answering from memory → ALWAYS verify with tools. Memory is unreliable across sessions. Checking 1-2 accounts → ALL 5 accounts (john, info, alem, alai, dev) or explicit statement about what was skipped "Čeka odgovor X sati" → Did you verify the THREAD? Subject changes ("Re: ... — new topic") prove replies exist. Inbox DB status can be stale. ALWAYS check thread chain before reporting email as unanswered. (Added 2026-03-01, ZAKON #10 violation) Enforcement Hook: briefing-completeness in universal-post-dispatcher — warns when only 1-2 email accounts checked Tool: ceo-briefing.js — deterministic all-source sweep Boot: Quick context sweep runs on every session start Ljestvica (ZAKON #1) This is a RULE + TOOL + HOOK fix (3 layers): Rule: This document (behavioral standard) Tool: ceo-briefing.js (makes completeness easy) Hook: briefing-completeness (enforcement reminder)