Review and release
A build can generate technically valid HTML containing wrong instructions, a missing download, a public secret or an obsolete route. A deploy can report success while serving an old index or a soft404. Treat source review, artifact review, browser behavior and live host acceptance as separate gates.
This procedure applies to CLI-built static artifacts and the administrator publisher. V2 provides no Git review/approval workflow, external deployment coordinator or sitewide prose fact checker. Choose your reviewer and audience outside the editor. Saving a page is not publication; publishing is not remote host deployment unless your installed deployment process supplies that step.
Gate map
| Gate | Required evidence |
|---|---|
| Inputs | Correct engine, source, config, data and reviewed changes |
| Tests | Selected revision’s supported Node result |
| Build | Successful isolated generation; actual artifact |
| Links, index | Internal destinations and heading targets exist |
| Audience | Only intended public bytes |
| Reader | Real controls, media, routes and layouts |
| Host | Current live artifact, status, resources and cache |
| Return path | Known prior artifact and rehearsed switch |
A failed gate holds its affected release. Do not compensate by deleting safeguards, skipping tests or making private folders publicly readable. Record the reason and continue independent review where useful.
Review source inputs
| Input | Questions |
|---|---|
| Markdown | Exact claims, examples, titles, hierarchy, frontmatter |
| Routes | Renames, collisions, incoming links and redirects |
| Config | Root, subpath, identity, raw-HTML policy |
| Runtime | Intended settings, links, visibility and cached icons |
| Assets | Provenance, licenses, remote resources and audience |
| Engine | Approved pin, dependencies and customization |
Inspect diffs, not only the rendered summary. An explicit title change can move the generated route and section descendants. Hidden sections remain generated/searchable. Dot-prefixed source exclusion is not a substitute for separate private storage. A local image/download may carry unrelated metadata or confidential bytes.
Check that all included content is intended for the reader audience. Editor authentication and assigned sections restrict editing, not public reader access. If reading must be private, verify an external reader gate for the entire output/resources/index. Search prose can disclose hidden content even without a sidebar row.
File-only allowRawHtml changes the authored-content security contract. Treat changes to templates/scripts/raw-HTML policy as engine/security review, not ordinary text. The public showcase keeps pinned engine untouched and deploys no optional editor.
Examples and claims
| Example type | Validation |
|---|---|
| Markdown dialect | Literal input plus actual rendered output |
| Local command | Disposable path preflight, exit and resulting state |
| Destructive command | Isolated fixture and recovery; never live experiment |
| Host, service config | Current official syntax plus staging acceptance |
| Permission claim | Enforcing implementation, test, not client button alone |
| Performance | Measured environment, workload; no general SLA |
Use synthetic names/domains/accounts and no secrets in command lines or logs. A shell snippet with placeholders is a template, not executed production evidence. A config parser accepts syntax, not necessarily working TLS, DNS, cookies or resource access. State that limit beside the example.
For current external provider rules, read its official documentation before publication. Record the checked source/date. The pinned V2 engine determines product behavior; a library’s latest general documentation does not establish every feature exposed through that pin.
Artifact checks
- Build into a new dedicated output and confirm it is the output being reviewed.
- Compare generated route/page inventory with intended content, including home/404.
- Resolve all internal links, heading anchors, local images/downloads and search targets.
- Inspect actual copied static files, not just their extensions or names.
- Confirm no users/runtime/editor/server/dependency files or secrets are served.
- Retain counts and hashes of the reviewed artifact with the input/build recipe.
V2 search indexes pages and H2-H4 headings. The builder’s “pages” index log includes headings, not a Markdown page total. Avoid false count comparisons. Descriptions are metadata, not a separate search field. The marker uses source metadata fingerprints, not cryptographic content integrity. A badge or index count alone cannot prove freshness.
Browser acceptance
| Area | Exercise |
|---|---|
| Navigation | Home, deep reload, tree, current row and previous-next |
| Heading rail | At least two H2s, anchor navigation and back, forward |
| Search | Title, heading, prose result, keyboard and correct deep target |
| Copy | Supported code, table control and actual clipboard |
| Media | Loaded image, download, real Mermaid SVG |
| Theme | Dark, light, persistence and new context |
| Mobile | Drawer, overlay, readable tables, code, no page overflow |
| Keyboard | Focus, Escape, supported shortcuts, visible state |
| Errors | Console, network failures and true missing-page behavior |
Inspect pixels, not only element existence. Test the longest real table/value/code sample at 320 and 390px and a desktop width, plus an intermediate layout. Keep qualifications visible with the facts. Recompose wide content rather than reducing normal text or hiding warnings.
A local Chrome emulation check is not physical iPhone/Safari, accessibility certification or every browser. Test your supported devices and assistive-use requirements separately. Record observed versions and limits. Clipboard permissions/network conditions can affect a control without changing the generated text.
Deployment gate
| Path | What completes it |
|---|---|
| CLI static host | Reviewed whole artifact copied, switched, then live verified |
| Editor publisher | Staged job outcome and actual live output, then host checked |
| Connected Git host | Intended commit, branch, deployment status and live artifact |
| Subpath host | Generated resources plus authored links at actual prefix |
Keep old files out of the new artifact unless deliberately retained. Synchronizing without deletion can leave removed pages public; deletion in a shared/unverified target can destroy another site. Verify target and dry-run your selected tool before any replacement.
Do not serve the checkout root. The static host needs complete reader output, not Node/editor/users files. V2 editor’s staged two-rename switch can have a gap and restoration failure. It is not guaranteed zero downtime. Follow reported paths and preserve the previous artifact; see Publishing stages.
Live acceptance and rollback
Open the actual public URL after deployment. Verify current distinctive content, a deep page, search target, media/diagram, vendor resources,404 status and HTTPS/redirect/cache behavior. A committed file or provider success alone is progress, not acceptance. Check a fresh browser and existing cache.
If acceptance fails, identify whether the bad layer is artifact, host mapping, cache or source. Return to a known compatible artifact through the supported host procedure, then verify the live result. A content rollback need not roll back accounts. Account/source restores require coordinated writers and compatibility review.
Release record
| Record | Purpose |
|---|---|
| Engine, Node, lockfile | Reproduce generator, dependencies |
| Source, config, data selection | Identify reviewed inputs without public secrets |
| Tests, checks, limits | Distinguish measured gates from unchecked templates |
| Artifact hashes, counts | Identify reviewed bytes, routes, index |
| Deployment commit, status, URL | Connect approval to live output |
| Previous artifact, route map | Return path and old-link handling |
| Time, reviewer | Accountability and freshness |
Keep private paths/account details out of public release notes. Record the actual acceptance result, failed gate and remaining caveat. Validation limits describes this handbook’s measured local scope; it is not permission to claim your production environment passed the same checks.