#!/usr/bin/env bash
set -euo pipefail

cat <<'SMOKE'
# Pi Session Continuity manual smoke checklist

Use this checklist in a clean Pi process after installing from a pinned GitHub ref.
Do not run external install/tag/release/publish steps without separate explicit approval.

Environment record:
- Pi version/commit:
- Node version:
- OS:
- Install command:
- Workspace:
- Config path:
- Artifact directory:

For each assertion, record PASS or FAIL, the command(s) run, and concrete evidence paths/output.

| ID | Assertion | Result | Evidence |
| --- | --- | --- | --- |
| settings-derive-native-tokens | `/continuity settings` previews fixed token values for the current model, preserves unrelated Pi settings, and requires restart. | PASS/FAIL | |
| native-threshold-enters-hook | Native threshold invokes `session_before_compact` with the configured token settings. | PASS/FAIL | |
| manual-checkpoint-writes-artifact | `/continuity checkpoint` writes a valid schema-v2 Continuity Brief with mandatory headings. | PASS/FAIL | |
| precompact-failure-cancels | Forced synthesis/write/settings failure cancels native compaction. | PASS/FAIL | |
| compaction-summary-is-disk-brief | The persisted custom summary and SHA-256 exactly match the saved pending Brief. | PASS/FAIL | |
| session-compact-archives | A matching `session_compact` archives the Brief; metadata/hash mismatch is refused. | PASS/FAIL | |
| threshold-continuation-uses-disk | Threshold continuation contains exact saved Brief content plus the fixed suffix. | PASS/FAIL | |
| overflow-no-duplicate-continuation | Native overflow retry receives the Brief summary without a second submitted user message. | PASS/FAIL | |
| manual-compact-no-auto-continuation | Manual `/compact` does not force a new run. | PASS/FAIL | |
| reload-stale-is-inert | Reload does not compact or inject a stale pending artifact; status reports it as inert. | PASS/FAIL | |
| model-change-display-only | Token settings remain fixed while status percentages change for a different model window. | PASS/FAIL | |
| cross-session-or-hash-mismatch-rejected | A foreign or modified artifact is never archived or used for continuation. | PASS/FAIL | |
| persistent-brief-does-not-imply-new-compaction | A Brief remaining in later-turn context is treated as historical evidence; without a new current-turn event or newer event/artifact identity, no new compaction is announced or acted on. | PASS/FAIL | |

Suggested transcript structure:

```text
[ASSERTION-ID]
command(s):
observed:
evidence path(s):
result: PASS|FAIL
```
SMOKE
