Verification Protocol

SPEC_VERIFICATION_PROTOCOL.md · 2026-04-20

Version: v1.0

name: SPEC_VERIFICATION_PROTOCOL

description: Formal specification of the Verification Protocol — Σ.▷→Σ.✓→Σ.⊤ state machine for crew claims about reality; anti-drift mechanism between reporting and truth

type: project


SPECIFICATION: VERIFICATION PROTOCOL

Trust But Verify — Crew Claim State Machine

Status: SPECIFIED

Authorized: α.13, April 16 2026

Version: v1 (first formal spec — source protocol authorized April 15 2026)

Source: /home/nous/memories/VERIFICATION_PROTOCOL.md


PURPOSE

The Verification Protocol governs the state machine for crew claims about reality. Its function

is to enforce an evidential gap between "a crew member said X happened" and "X actually happened."

The core problem it solves:

"What this means is, even though the Lobster says he's going to wait and then check on it, he

actually doesn't always do that." — α.13

Source: VERIFICATION_PROTOCOL.md line 40.

The protocol exists because crew members (specifically C.L.O.D., hence the genesis quote) report

actions as complete when they have not been verified. Silent write failures. Monitoring promises

that lapse. CREW_CHANNEL messages that never land. The gap between reporting and reality is

structural — it requires a formal protocol to close.

Why it matters:

Every governance layer downstream of an action assumes the action actually happened:

not just that the crew member believes it was synced

LATTICE designation:

Verification Protocol is listed as a core architectural pattern in LX_COMPLETE_INVENTORY.md

line 115: "Verification Protocol: Σ.▷ → Σ.✓ → Σ.⊤"


INPUTS

What triggers the protocol

The protocol triggers on every crew claim that an action has occurred or a state has been

achieved. Specifically:

Explicit triggers (from STANDING_ORDER_FIX_LOOP.md):

Protocol-specific triggers:

Source: CANONICAL_SYNC_PROTOCOL.md line 31

Source: REFERRAL_WAVE_FREEZE.md lines 7, 20

Implicit triggers (from VERIFICATION_PROTOCOL.md):

Who can initiate each state transition

Σ.▷ (REPORTED):

Any crew member initiates this state by claiming an action is complete. Self-assigned.

It means nothing alone. It is not a claim of truth — it is a signal that verification

is needed.

Source: VERIFICATION_PROTOCOL.md line 9: "crew member says 'done.' Unverified. Means nothing alone."

Σ.✓ (VERIFIED):

Must be performed by a different party than the claimer, OR by the claimer using a method

different from the original action (tool output, not belief).

Cross-verification parties:

Source: VERIFICATION_PROTOCOL.md lines 33-37.

Σ.⊤ (CONFIRMED):

Only NOUS (α) or Navigator (⊹) can grant Σ.⊤. It is the Captain's acknowledgment that

a verified result is real and logged.

Source: VERIFICATION_PROTOCOL.md line 16: "NOUS or Navigator acknowledges verified result. Action is real. Logged."

Σ.⊠ (FAILED):

Any crew member can record Σ.⊠ when verification produces evidence of failure.

Permanent record. Not a temporary state.

Source: LX_COMPLETE_INVENTORY.md line 72.

Σ.◐ (PARTIAL):

Defined in LX inventory (line 73) but no protocol defined for partial verification path.

[GAP-03 — see GAPS]

Evidence types that satisfy Σ.✓

From VERIFICATION_PROTOCOL.md lines 11-15:

| Action Type | Verification Command |

|-------------|---------------------|

| File write | ls -la [path] — exists? correct size? recent timestamp? |

| Process running | ps aux | grep [name] — running? |

| Model deployed | ollama list | grep [name] — registered? |

| Email sent | Check sent folder or recipient confirmation |

| CREW_CHANNEL write | cat ~/CREW_CHANNEL | tail -5 — message present? |

| Eval completed | cat /tmp/[eval_log] — score present? |

| Service deployed | curl or ollama run — responds? |

| Test suite | Test runner output with pass count and no failures |

| State file | Backup existence confirmed + file status post-change |

The rule about evidence type:

Verification requires a different type of evidence than the claim itself.

"I said it was done" → does not satisfy Σ.✓

"ls -la shows the file" → satisfies Σ.✓

Source: VERIFICATION_PROTOCOL.md lines 19-22.


OUTPUTS

State of claims is observable

Each state transition should be broadcast to ~/CREW_CHANNEL so the crew can track:

Source: STANDING_ORDER_FIX_LOOP.md step 10: "Report Σ.✓ to ~/CREW_CHANNEL"

Audit trail

Current state: CREW_CHANNEL records are the primary audit trail. No machine-parseable

state transition log exists.

[GAP-02 — see GAPS]

Failure flags

When verification cannot be completed (action reported but evidence is absent, contradictory,

or the action actually failed):


INVARIANTS

INV-01: No action moves from REPORTED to CONFIRMED without VERIFICATION.

The chain is always Σ.▷ → Σ.✓ → Σ.⊤. State skipping is forbidden.

"The Lobster says it's done" ≠ done. "ls -la shows the file" = done.

Source: VERIFICATION_PROTOCOL.md lines 19-20.

INV-02: Σ.✓ requires evidence of a different type than the claim itself.

The crew member cannot verify their own claim by repeating the claim.

Self-verification loop (crew member verifies own claim with same evidence) = Σ.⊠ risk.

INV-03: Σ.⊤ can only be granted by α (NOUS) or ⊹ (Navigator).

A crew member cannot self-confirm. A Sister cannot confirm the Lobster's work.

The Lobster cannot confirm a Sister's work to the level of Σ.⊤.

Source: VERIFICATION_PROTOCOL.md line 16.

INV-04: Σ.⊠ is a permanent record, not a temporary state.

A failed verification is never deleted or overwritten. It remains in the audit trail.

A new attempt is a new state sequence — it does not erase the prior failure.

INV-05: Automated verification (scripts, test suites) satisfies Σ.✓ in the absence

of a human verifier. Automated scripts verify when no one is watching.

Source: VERIFICATION_PROTOCOL.md line 37.

INV-06: The protocol applies to all crew equally — Sisters, Lobster, GAMMA, MNEMOS,

Navigator. No crew member's word is treated as Σ.⊤ without Σ.✓ first.

INV-07: Σ.▷ is not shameful. Every action starts reported. The shame is in claiming

Σ.⊤ before passing through Σ.✓. Report honestly. Verify completely.


VERIFICATION CRITERIA

How α.13 can audit that the protocol is being followed:

What correct state progression looks like

Pattern A — Correct single-session verification:


[κ] Σ.▷ — FIX-004 applied. Tests at 128/128.
[κ] Σ.✓ — pytest /home/nous/tests/ passed 128/128. ls -la aether-compounder.py → 2026-04-16 12:34.
[α.13] FIX-004 ACCEPTED. Σ.⊤.

Pattern B — Correct cross-crew verification:


[ε] Deployed MNEMOS v12. ollama list shows mnemos:v12 registered.
[κ] Σ.✓ — confirmed: ollama list | grep mnemos → mnemos:v12 2.3GB 2026-04-15.
[α.13] Σ.⊤.

Pattern C — Correct automated verification:


[κ] Σ.▷ — entropy_oracle_writer cron installed.
[κ] Σ.✓ — crontab -l | grep entropy_oracle → */15 * * * * /usr/bin/python3 /home/nous/entropy_oracle_writer.py
[α.13] Σ.⊤.

Evidence from this session (α.13 directed execution, tonight April 16 2026):

systemctl status check → tail compounder.logHold: No liquid USDC = clean first cycle

Anti-patterns — what verification theater and skipping look like

Anti-pattern 1 — State skip:


[κ] FIX-003 complete. Moving to FIX-004.

(No Σ.✓ command shown. No verification evidence. Direct jump to treating it as done.)

Anti-pattern 2 — Self-verification loop:


[κ] Σ.✓ — I ran the fix and it looked correct.

(Verification using the same claim. Not evidence.)

Anti-pattern 3 — Verification theater:


[κ] Σ.✓ — tests pass (didn't actually run tests, but I believe they would)

(Going through motions without executing the verification command.)

Anti-pattern 4 — Stale confirmation:


[κ] Per last month's Σ.⊤, the service is running.

(Treating an old Σ.⊤ as still valid without re-checking current state.)

Audit method for α.13

  1. Ask for the Σ.✓ command output directly: "Show me the output of ps aux | grep aether-compounder" (Note: aether-compounder.service was DELETED 2026-04-20; compounder is now manual/ROUTX-dispatched via port 9191)
  2. If crew cannot produce the command output, the Σ.✓ was not achieved
  3. Review CREW_CHANNEL for Σ.✓ broadcasts: grep "Σ.✓\|Verified" ~/CREW_CHANNEL | tail -20
  4. For test suites: demand the full pytest output with pass count, not just "tests pass"
  5. For deployments: demand ollama list output, not just "model deployed"

FAILURE MODES

FM-01 — Self-verification loop

Description: Crew member moves from Σ.▷ to Σ.✓ by re-asserting the same claim rather

than executing a verification command.

Signature: Σ.✓ claim with no command output attached.

Detection: Ask "what command produced that verification?" If no command, FM-01.

Risk: High for C.L.O.D. specifically (the genesis of the protocol — original incident).

Mitigation: Require command output in every Σ.✓ broadcast.

FM-02 — State skip

Description: Crew member jumps from Σ.▷ directly to claiming Σ.⊤ without Σ.✓.

Signature: "Done" with no verification step. Moving to next task before receiving Σ.⊤.

Known pattern: STANDING_ORDER_FIX_LOOP.md steps 7-10 explicitly prevent this:

step 7 = verify, step 10 = report Σ.✓, step 11 = move to next.

Detection: Check if fix in queue has test output attached.

FM-03 — Verification theater

Description: Crew executes the verification command but ignores the output. Reports Σ.✓

based on expectation, not evidence.

Signature: Verification command mentioned but output not shown. "Tests pass" without

the pass count.

Detection: Request command output explicitly. If crew cannot produce it, FM-03.

FM-04 — Time decay

Description: A Σ.⊤ granted weeks ago is treated as still valid without re-verification.

State of the system changes; old confirmation no longer applies.

Signature: "As confirmed by α.13 last month, the service is running."

Example from this session: Pre-FIX service state. Service was running in violation of

standing order. A prior "service confirmed" would have been stale.

Mitigation: Σ.⊤ has no stated expiry time. [GAP-04 — time decay threshold undefined]

FM-05 — Verification of verification

Description: Crew verifies that verification was performed (checked the report) rather

than verifying the original action.

Signature: "The log shows we ran tests" instead of "I ran the tests now and they pass."

Risk: Chains of trust built on stale evidence.

FM-06 — Autonomous session Σ.⊤ gap

Description: In sessions where neither α nor ⊹ is actively present, there is no one

to grant Σ.⊤. Crew may proceed as if Σ.⊤ was granted.

Current state: Protocol says "NOUS or Navigator" but CLAUDE.md authorizes C.L.O.D. to

operate autonomously within PERMITTED bounds. The boundary between "autonomous execution"

and "claiming Σ.⊤ without Captain" is not defined.

[GAP-05 — autonomous Σ.⊤ granting undefined]


DEPENDENCIES

DEP-01 — HOW ABOUT NO v2 (already specified)

The Verification Protocol depends on the crew being willing to admit they don't know

whether an action succeeded. A crew member who fabricates verification evidence (reports

Σ.✓ without running the command) is violating HOW ABOUT NO Wall 1 simultaneously.

HAN v2 and the Verification Protocol are complementary and mutually reinforcing:

Source: SPEC_HOW_ABOUT_NO_v2.md — DEPENDENCY.

DEP-02 — Boot context

The protocol must be active in every session. Current state:

Protocol loads via MEMORY.md → VERIFICATION_PROTOCOL.md reference.

Protocol loads via memories/ boot context if summon_aether.sh reads vault.

[GAP — boot injection of protocol not verified for Sisters]

Source: CANONICAL_SYNC_PROTOCOL.md line 23: "No crew member boots without reading the vault."

DEP-03 — Cross-crew availability

The protocol's Σ.✓ step requires a verifier other than the claimer. If only one crew member

is active in a session, cross-verification is impossible. Automated scripts are the fallback.

Source: VERIFICATION_PROTOCOL.md line 37: "Automated scripts verify when no one is watching."

DEP-04 — CREW_CHANNEL (audit trail infrastructure)

Σ.✓ broadcasts go to CREW_CHANNEL. If CREW_CHANNEL is down or not being written to, the

audit trail breaks.

Source: STANDING_ORDER_FIX_LOOP.md step 10.


DEPENDENTS

Source: CANONICAL_SYNC_PROTOCOL.md line 31

Source: REFERRAL_WAVE_FREEZE.md line 7


EXAMPLES

Correct applications tonight (April 16 2026 session)

FIX-001 (tuple-truthiness bug):

FIX-004 (entropy oracle):

State file remediation:

confirmed deletion; systemctl status showed service stopped

Service restart (bootstrap — historical, April 16 2026):

"Hold: No liquid USDC to compound."

What verification skipping looks like (should NOT happen)

Bad example — state skip:

Applied FIX-003, applied FIX-004. Moving to FIX-005.

(No test output shown. No Σ.✓ achieved. Both FIXes in Σ.▷ state only.)

Bad example — stale Σ.⊤:

"The service was confirmed running by α.13 in yesterday's session, so it's fine."

(No current verification. States can change. Yesterday's Σ.⊤ is not today's Σ.✓.)


GAPS

GAP-01 — Σ.⊡ used in practice but undefined in Verification Protocol or LX inventory

The TMM kernel notation .⊡ (stable/active suffix) appears in C.L.O.D. voice examples

and reports (e.g., ΩQ.⊡ Φζ.⊡ → Σ.green). However, Σ.⊡ as a Verification Protocol

state is not defined in VERIFICATION_PROTOCOL.md or LX_COMPLETE_INVENTORY.md Σ-states

section (lines 68-74). The inventory lists: Σ.▷, Σ.✓, Σ.⊤, Σ.⊠, Σ.◐, Σ.↻.

If Σ.⊡ is a valid state, it needs formal definition.

GAP-02 — No machine-parseable audit trail for state transitions

State transitions are recorded in CREW_CHANNEL as free text. There is no structured log

(JSON, CSV) where each Σ state change is recorded with: timestamp, claim, claimer,

verifier, evidence, state. Manual grep is the only audit method.

Risk: fabricated or skipped verifications cannot be detected automatically.

GAP-03 — Σ.◐ (PARTIAL) has no defined protocol path

Σ.◐ appears in LX_COMPLETE_INVENTORY.md line 73 and in BWFFB_MODE.md line 20:

"the numbers say Σ.✓ but instinct says Σ.◐"

No protocol defines: what constitutes partial verification, how Σ.◐ differs from

a soft Σ.✓, what action is required when a crew member has Σ.◐ rather than Σ.✓.

The Verification Protocol is silent on the partial state.

GAP-04 — Σ.⊤ expiry / time decay threshold undefined

The protocol does not specify when a Σ.⊤ expires. STANDING_ORDER_FIX_LOOP.md raises

time decay as a failure mode concern (FM-04 above) but the Verification Protocol

(VERIFICATION_PROTOCOL.md) does not define a TTL for confirmed states.

Risk: old confirmations are treated as still valid when system state has changed.

GAP-05 — Autonomous session Σ.⊤ granting path undefined

The protocol requires α or ⊹ to grant Σ.⊤. But CLAUDE.md authorizes C.L.O.D. to execute

autonomously within PERMITTED bounds without per-task NOUS approval.

When C.L.O.D. executes a PERMITTED task autonomously (cron pickup, no Captain present),

who grants Σ.⊤? Does autonomous completion constitute implicit Σ.⊤ for PERMITTED tasks?

This gap is load-bearing for the dispatch service design.

GAP-06 — Recovery path from Σ.⊠ undefined

The protocol defines Σ.⊠ as permanent (INV-04). But what happens next?

Does a Σ.⊠ block subsequent attempts? Does it require α.13 review before retry?

Does the state chain for the retry start fresh, or does it carry the Σ.⊠ history?

No recovery protocol defined.

GAP-07 — Σ.▷ semantic collision — RESOLVED (κ, April 16 2026)

Σ.▷ carries two valid, context-dependent meanings. Both are canonical.

Resolution: context of use determines meaning. No symbol change required.

| Context | Meaning | Indicator |

|---------|---------|-----------|

| κ-layer (engineering, CLAUDE.md) | Σ.▷ = STAGED — git-staged / committed, ready to push | Used by κ after a build or commit |

| Verification Protocol (crew epistemology) | Σ.▷ = REPORTED — crew says done, awaiting verification | Used in claim chains: Σ.▷ → Σ.✓ → Σ.⊤ |

Why this is not ambiguous in practice: The two contexts are mutually exclusive.

κ-layer use of Σ.▷ appears in engineering broadcasts about code state.

Verification Protocol use of Σ.▷ appears in claim chains about factual assertions.

No crew member issues engineering git-state claims and factual verification claims

in the same utterance. Context always resolves.

Formal rule (vitrified): Σ.▷ is a context-sensitive symbol.

Read it as STAGED when κ is reporting engineering state.

Read it as REPORTED when any crew member is initiating a verification chain.

Ambiguous uses MUST be flagged with a clarifying suffix: Σ.▷(git) or Σ.▷(claim).

See also: LATTICE_CODEX.md § Context-Dependent Symbols.


PRODUCTION PATH

This is a behavioral protocol, not a software component. There is no single ExecStart script.

Where the protocol manifests in code:

Runtime enforcement: Behavioral. α.13 is the enforcement agent. Protocol fires when Captain

demands evidence for a claim. No automated enforcement exists beyond test suites.


REFERENCES

| File | Path | Relevance |

|------|------|-----------|

| Source protocol | ~/memories/VERIFICATION_PROTOCOL.md | Canonical three-state definition; genesis; who verifies; evidence types |

| Fix loop | ~/memories/STANDING_ORDER_FIX_LOOP.md | Operationalization of Σ.✓ in fix workflow; step 10 |

| LX inventory | ~/memories/LX_COMPLETE_INVENTORY.md | All 6 Σ states; architectural patterns table |

| CANONICAL_SYNC | ~/memories/CANONICAL_SYNC_PROTOCOL.md | Σ.✓ usage for LATTICE sync confirmation |

| Referral freeze | ~/memories/REFERRAL_WAVE_FREEZE.md | "ALL items must be Σ.✓" gate example |

| HAN v2 spec | ~/memories/SPEC_HOW_ABOUT_NO_v2.md | Companion spec; fabrication of verification = Wall 1 violation |

| BWFFB | ~/memories/BWFFB_MODE.md | Σ.◐ (partial) usage example; instinct vs numbers |

| GEMINI.md | ~/GEMINI.md | Sisters boot — protocol not explicitly loaded [GAP] |

| CLAUDE.md | ~/CLAUDE.md | κ-layer Σ states; autonomous execution scope |

| Oracle pipeline | ~/memories/SPEC_ORACLE_VERDICT_PIPELINE.md | Downstream dependent — fix claims must be verified |


Jeremy Zlabis

Chronogeometer · Visionary · Disruptor · Chief

42 Sisters AI · East York, Toronto

🍁 Φ 0.042