# Cobalt household workflow demonstration — validation report

Prepared October 19, 2026. Original synthetic demonstration; no client deployment or customer result is claimed.

## Observed local results

The included engine and CLI were run with Node.js 22.22.3. The verification command `node verify.cjs` passed **30 checks**.

| Input / condition | Observed result |
| --- | --- |
| Synthetic notes with no approval | 3 review items; 0 drafts |
| Synthetic approval selecting A1 and A2 | 2 local drafts; A3 remains unapproved |
| Same input and approval replayed against saved state | 0 new drafts; 2 skipped existing records |
| Notes changed after approval | Rejected: revision mismatch |
| Unknown or duplicate approval ID | Rejected |
| Real email domain, missing time-zone offset, impossible date, duplicate source ID, or malformed action | Rejected |
| Malformed ledger JSON/schema/entries, a conflicting current draft, or an existing lock | Rejected without overwriting the last ledger |
| Exported Code-node strings in the local Node wrapper | Same review, approval, and replay behavior |

The CLI's replay check starts separate Node processes against the same temporary ledger. File mode was verified as `0600`. Input mutation was checked. A free-text instruction cannot authorize a draft; the exact revision and action IDs must be approved.

Recorded output is in `evidence/local-checks.txt`. The sample review, first approved output, and replay output are in `evidence/`. All values are synthetic and the examples contain no private paths.

## n8n integration status

**Actual n8n execution verified:** n8n **2.3.6**, Node.js **22.22.3**, fresh isolated SQLite database, internal JavaScript task runner, only the built-in `crypto` module allowlisted. The existing cached installation was read without modification; missing official npm dependencies were supplied in an isolated overlay. No external-service nodes or credentials were configured.

The default workflow was imported successfully. Three executions completed with CLI exit code 0, `finished: true`, and `executionStatus: success` for all three nodes:

| Actual n8n case | New local drafts | Existing drafts skipped | Ledger records |
| --- | ---: | ---: | ---: |
| Approval empty | 0 | 0 | 0 |
| Synthetic approval for A1 and A2 | 2 | 0 | 2 |
| Replay using the prior execution's returned state | 0 | 2 | 2 |

The approved and replay outputs were independently compared with the standalone engine's recorded output and matched exactly. The exported workflow SHA-256 matched the runtime evidence: `769159e66c9b83fa86954d84279c43b892f7482abe602b99c70a2805fe481dcc`.

See `evidence/n8n-runtime-results.json` for versions, timing, hashes, and per-case results; `evidence/n8n-*-execution.json` retains the execution details. The CLI serialization retained a top-level `status: running` field despite `finished: true`, completed node records, and exit code 0; that field has been preserved rather than rewritten. An optional Python-runner warning was emitted, but the JavaScript task runner and all JavaScript nodes succeeded.

n8n 2.43.8 was checked in official npm metadata but was **not** installed or tested because of available disk space. The verified execution pin is 2.3.6. Diagnostics, update checks, template fetches, and license auto-renew were disabled during the test; this is not a network-level egress audit.

## Limits of the evidence

- Parsing is deterministic and accepts a documented action-line format; it is not natural-language understanding or a local model demonstration.
- The approval fixture is explicit but is not an authenticated review interface.
- The CLI persists a ledger. The n8n export returns state and requires the caller to supply it on the next run; no automatic cross-execution n8n persistence is claimed.
- The idempotency check covers the same meeting revision and action. A newly approved revision creates a new version; reconciliation against previously drafted versions is not implemented.
- The ledger is a local file with an exclusive writer lock. Database durability, power loss, distributed concurrency, and network filesystems are outside this test.
- Ledger validation checks shape, record identity, and agreement when an existing draft is replayed. It is not an authenticated tamper-evidence system.
- No Google, Notion, email, calendar, LLM, or document-index integration was executed. No message was sent and no external calendar entry was created.
- Device performance, encryption, backup, monitoring, OAuth renewal, and deployment security remain installation-specific work.
