Archify Deliver vs Preview: Differences Between Production and Development CLI Commands
Both archify deliver and archify preview share an identical rendering pipeline, but deliver atomically commits a verified artifact while preview aborts before writing to disk.
The archify CLI provides two commands for generating architecture diagrams from JSON definitions. Understanding when to use each ensures you get production-ready outputs without polluting your repository during development. This guide compares these commands based on the tt-a1i/archify source code, covering atomicity guarantees, receipts, side effects, and typical workflows.
How the Rendering Pipeline Works
Both commands execute the same core stages: input validation, HTML rendering, quality checks, and artifact generation. The divergence occurs at the final commit step.
In archify/bin/archify.mjs, the CLI dispatcher routes to either command implementation. From there, deliver invokes a full delivery lifecycle while preview intercepts the process before the final write.
Archify Deliver: Production-Ready Atomic Output
The deliver command is designed for final, production-ready output with strict correctness guarantees.
Atomic Commit with Verification
According to archify/test/cli.test.mjs (lines 232–244), deliver uses a candidate → verified swap pattern:
- Renders the HTML artifact to a temporary location
- Runs all validation checks
- Only replaces the target file after verification passes
This atomic operation ensures that a failed check never leaves a corrupted or partial file in place.
Structured JSON Receipts
deliver emits a detailed receipt when using --json:
archify deliver architecture examples/arch.json out.html \
--quality showcase --json
The receipt includes:
- The executed command string
- SHA-256 hash of the generated artifact
- Diagnostic output from checks
- Optional
--openlaunch status
Safe for CI and Automation
The command supports --open for interactive environments and runs without side effects in headless mode. This makes it safe for CI pipelines, CD releases, and unattended agents.
Archify Preview: Interactive Debugging Without Side Effects
The preview command provides interactive authoring and debugging with identical visual output but no permanent changes.
Non-Destructive Execution
As shown in archify/test/preview.test.mjs (lines 261–304), preview executes the full pipeline then stops or drains the active delivery without publishing the artifact. The repository remains unchanged regardless of check results.
archify preview architecture examples/arch.json out.html --json
The receipt reflects the preview execution only—there is no permanent artifact to hash or reference.
Excluded from Watch Loops
Documentation in docs/research-next-delight-slice.md (lines 60–79) emphasizes that preview is intentionally independent from --watch flags. The command stays short-lived to support rapid iteration without long-running processes.
No File Opening
Unlike deliver, preview never invokes an opener. This prevents accidental browser launches during headless debugging sessions.
Key Differences Between Deliver and Preview
| Aspect | deliver |
preview |
|---|---|---|
| Commit behavior | Atomic candidate → verified swap | Aborted before final write; no changes persisted |
| Artifact output | Permanent HTML file with SHA-256 verification | No file written to disk |
| Receipt content | Full production receipt with artifact hash | Execution-only receipt reflecting preview run |
| Browser opening | Supports --open flag |
Never opens browser |
| CI/CD suitability | Fully supported | Not intended for automation |
| Watch mode | Can integrate with file watchers | Explicitly excluded from watch loops |
When to Use Each Command
Use deliver when:
- Publishing to production or staging environments
- Integrating with CI/CD pipelines
- Creating versioned, reproducible artifacts with receipts
- Running unattended automation
Use preview when:
- Rapidly iterating on diagram design locally
- Debugging validation failures without file pollution
- Conducting design reviews before final commit
- Testing quality settings before production run
Summary
deliverandpreviewshare identical rendering logic inarchify/bin/archify.mjsbut diverge at the commit stage.deliverperforms an atomic verified swap inarchify/test/cli.test.mjs, writing a permanent artifact with a SHA-256 receipt.previewstops or drains the delivery perarchify/test/preview.test.mjswithout modifying the filesystem.deliversupports--openand CI automation;previewis explicitly short-lived and independent perdocs/research-next-delight-slice.md.
Frequently Asked Questions
Does preview generate the same HTML as deliver?
Yes. Both commands execute the identical rendering pipeline including validation and quality checks. The HTML produced in memory is bit-for-bit equivalent; preview simply discards it before writing to disk.
Why does preview fail to write files even with --json?
The --json flag in preview emits an execution receipt, not an artifact reference. Since no file is committed, there is no SHA-256 hash or persistent path to include. This is intentional behavior to prevent accidental production contamination.
Can I use preview in a CI pipeline?
No. preview is explicitly designed out of watch loops and automation contexts per docs/research-next-delight-slice.md. Use deliver for any automated or unattended workflow requiring deterministic outputs.
What happens if checks fail during deliver?
The atomic candidate → verified swap ensures the previous artifact remains untouched. The receipt indicates failure status without leaving a partial or corrupted file. This safety guarantee is tested in archify/test/cli.test.mjs.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →