Skip to content

openlogos smoke

Validate deployment health by reading smoke test results from a JSONL file, comparing against defined smoke case IDs in logos/resources/test/smoke/, and generating a smoke report. This is the Gate 3.8 quality check — run after deployment execution (Phase 3-7).

Terminal window
openlogos smoke [--format json] [--environment <name>]

Must be run from the project root.

OptionDescription
--format jsonOutput machine-readable JSON envelope (includes sandbox diagnostics).
--environment <name>Tag the smoke report with an environment label (e.g., staging, production).
  1. Reads logos.config.json for smoke configuration (smoke.command, smoke.result_path, smoke.report_path)
  2. If smoke.command is configured, executes it (optionally sandboxed)
  3. Reads smoke results from logos/resources/verify/smoke-results.jsonl (or custom path)
  4. Scans logos/resources/test/smoke/*.md for defined smoke case IDs (pattern: SMOKE-<name>-<number>)
  5. Compares results against defined cases — calculates coverage, pass rate
  6. Generates logos/resources/verify/smoke-report.md
  7. Writes proposal markers (SMOKE_PASS / SMOKE_FAIL) if an active change proposal exists

Configure in logos/logos.config.json:

{
"smoke": {
"command": "cd website && npm run build && node scripts/smoke-releases.mjs",
"result_path": "logos/resources/verify/smoke-results.jsonl",
"report_path": "logos/resources/verify/smoke-report.md",
"sandbox_mode": "auto",
"sandbox_root": "/private/tmp",
"sandbox_deny_workspace_write": true
}
}
FieldDefaultDescription
command(none)Shell command to run smoke tests (writes results to result_path)
result_pathlogos/resources/verify/smoke-results.jsonlPath to smoke results JSONL
report_pathlogos/resources/verify/smoke-report.mdPath to generated report
sandbox_modeautoSandbox isolation mode (off / auto / always)

Both conditions must be met:

ConditionDescription
Zero failed casesNo smoke result has status: "fail"
100% coverageEvery ID defined in smoke specs has a corresponding result

If either condition fails, the command exits with code 1.

The command scans logos/resources/test/smoke/*.md for IDs matching:

SMOKE-releases-01 (Smoke test, releases domain, case 01)
SMOKE-cli-install-02 (Smoke test, cli-install domain, case 02)

The regex: /\bSMOKE-[A-Za-z0-9-]+-\d{2,3}\b/

Each line in smoke-results.jsonl is a JSON object:

{"id":"SMOKE-releases-01","status":"pass","duration_ms":1200,"timestamp":"2026-05-28T10:00:00Z"}
{"id":"SMOKE-releases-02","status":"fail","error":"Expected 200, got 404","duration_ms":500}
FieldRequiredValuesDescription
idYesSMOKE-*-XXSmoke case ID matching the spec
statusYespass, fail, skipTest result
duration_msNonumberExecution time
timestampNoISO 8601When the test ran
errorNostringError message (for failed cases)

When an active change proposal exists (.openlogos-guard), openlogos smoke writes markers:

Gate resultMarker written
PASSlogos/changes/<slug>/SMOKE_PASS
FAILlogos/changes/<slug>/SMOKE_FAIL

These markers advance the proposal step:

  • SMOKE_PASS → proposal is ready to archive
  • SMOKE_FAIL → fix deployment issues and re-run smoke
🔎 OpenLogos Smoke Verification
Environment: staging
Defined: 5
Executed: 5
Passed: 5
Failed: 0
Skipped: 0
Coverage: 100%
Pass rate: 100%
✅ Gate 3.8: PASS
📄 Report: logos/resources/verify/smoke-report.md
🔎 OpenLogos Smoke Verification
Defined: 5
Executed: 4
Passed: 3
Failed: 1
Skipped: 0
Coverage: 80%
Pass rate: 75%
Failed smoke cases:
SMOKE-releases-03 Expected 200, got 404
Uncovered smoke cases:
SMOKE-cli-install-02
❌ Gate 3.8: FAIL
📄 Report: logos/resources/verify/smoke-report.md
ErrorCauseFix
logos/logos.config.json not foundNot in project rootcd to project root
No smoke results found at ...JSONL file doesn’t existRun smoke tests first (or configure smoke.command)
No smoke case specs foundlogos/resources/test/smoke/ is emptyWrite smoke test case specs first (deployment-designer Skill)
  • verify — Test acceptance verification (Gate 3.5, run before deployment)
  • status — Shows smoke gate status in proposal lifecycle
  • archive — Archive proposal after smoke passes