Update checklist
Use this for your own reviewed engine maintenance, not a routine paragraph edit or an instruction to change the pinned showcase. No command here performs a production deployment. Paths are illustrative; inspect actual installations and approve selected revision/return plan first.
Baseline before any writes
Run inspection from the existing installation, preserving private output locally:
pwd
git rev-parse HEAD
git status --short
node --version
npm --version
| Confirm | Record |
|---|---|
| Engine | Current commit and selected next revision |
| Source | Dirty, untracked content, config and media |
| Customization | Reviewed template, style, implementation diffs |
| Runtime | Actual protected users path and sibling data |
| Service | Node path, working directory, bind and environment |
| Reader | Actual served output, root, subpath, cache |
| Publication | No running job; actual live and previous paths |
| Backup | Consistent protected snapshot and tested restore |
Do not print all environment values into a support channel. Record safe path labels/configuration choices separately from secrets. A clean Git status does not prove ignored runtime/media is backed up. Never overwrite an active installation with an unreviewed clone.
New disposable checkout
# First confirm this target does not exist or contain valuable files.
ls -ld MarkStackV2-next
# A separate new folder, not the live installation.
git clone https://github.com/KineticEnforcer/MarkStackV2.git MarkStackV2-next
cd MarkStackV2-next
git log -5 --oneline
git status --short
An expected “not found” from the first inspection does not authorize overwriting any other path. Stop if the destination exists unexpectedly. Inspect the selected revision using your review process and check out its exact approved commit before install. Branch head can change; cloning main is not a pin.
git rev-parse HEAD
node --version
npm ci
npm test
Use the new revision’s supported Node. Pinned handbook V2 requires 24+; a future revision’s requirements must be read. Install from its lockfile, retain actual result and do not proceed after failed install/tests. Tests alone do not prove your site’s compatibility or a production service restart.
Transfer site inputs without engine overlay
This example assumes the old site is ../MarkStackV2 and the current directory is the new disposable checkout. Verify both, expected files and no useful pre-existing staging data. Stop on any mismatch. It keeps stock sample content aside rather than deleting it.
pwd
git rev-parse HEAD
ls -ld content ../MarkStackV2/content
ls -l ../MarkStackV2/siteconfig.json
ls -ld content.stock-before-site
Only after those inspections confirm the intended staged destination and unused aside name:
mv content content.stock-before-site
cp -a ../MarkStackV2/content ./content
cp -a ../MarkStackV2/siteconfig.json ./siteconfig.json
Check each exit/result before continuing. If copy fails, preserve the partial result for diagnosis; do not build it as complete or rerun over unknown state. Restore/prepare the disposable checkout deliberately.
| Other input | Transfer rule |
|---|---|
| Public media | Only reviewed site-specific assets |
| Template, style | Port reviewed diff to new contracts |
| Whole static tree | Do not replace new engine assets blindly |
| Links, settings, icons | Protected staging data, explicit selection |
| Accounts, history | Separate rehearsal copy, not live file |
| Secrets, service files | Private approved operations process |
cp -a is a Unix template. Windows/ACL/ownership differences need platform tools and checks. Do not copy .markstack into a public artifact/repository. Do not point a test editor at production accounts merely because it uses a new port. Account tools and normal saves can still affect shared files.
Isolated build
For a staged checkout using default project content, make the build’s data/output choices explicit:
# Inspect the private staging-data folder and ensure output is disposable.
ls -ld /private-rehearsal/field-guide-data
ls -ld ./review-output
npm run build -- --data /private-rehearsal/field-guide-data --out ./review-output
The folder names are examples, not existing paths. Prepare a reviewed staging data copy before using them. Builder will remove/recreate selected output after route preflight; never use source/private data/project root as output. Selected content does not relocate installed templates/static/config.
Bundled npm run serve serves default dist, not this review-output. To use bundled preview in the staged checkout, build the intended default dist explicitly with the same data and check that disposable path first:
npm run build -- --data /private-rehearsal/field-guide-data
npm run serve
Alternatively serve the isolated artifact with your approved HTTP preview. Do not claim an old default output verified the new artifact. The public reader needs HTTP paths/resources, not file://.
Staging acceptance
| Area | Pass condition |
|---|---|
| Routes | Reviewed titles, collisions and old-link handling |
| Render | Frontmatter, Markdown, raw-HTML policy unchanged or reviewed |
| Search | Current page, heading targets and real queries |
| Media | Local fonts, images, downloads and actual diagram SVG |
| Controls | Copy, navigation, theme, drawer, focus and Escape |
| Layout | Long tables, code, titles fit phone and desktop |
| Audience | No private, server, account, runtime bytes served |
| Editor | Staging roles, grants, perimeter, save, publish, history |
| Host | Actual root, subpath, 404, TLS, cache and redirects |
Test source, artifact and host separately. Inspect real pixels and browser requests; a build success or HTTP 200 is insufficient. Use synthetic staging accounts and fresh/existing browser contexts. Dependency updates need globals/loader/notices/browser-target review as well as npm tests.
Cutover record before production
Name exactly what will switch: reader artifact, engine service, runtime or some combination. Agree the maintenance window, writer coordination, known compatible previous state and supported return procedure. Preserve last working code/output/private backup. Wait for publication completion before service/data replacement.
The operator executes the installed host/service procedure, then verifies actual live reader and editor as applicable. MarkStack does not automatically update DNS/TLS/proxies or restart a supervisor. Reader-only hosting needs no Node/editor process. Do not change authentication or account data for a static-only update.
| Unexpected state | Stop and inspect |
|---|---|
| New bind, path | Correct service, environment before exposing access |
| Missing accounts | Selected runtime path, not blanket password reset |
| Failed switch | Reported artifact, restore paths and actual live state |
| Stale content, index | Artifact, host mapping and cache |
| Missing history | Storage warning and original operation result |
| New security failure | Revert reviewed affected layer, not disable guard |
Return and close
Rollback uses the known prior compatible engine/config/source/runtime/artifact as required by the failed layer. Do not blindly overlay all old files or restore account state while newer writers run. Preserve failed evidence, coordinate writes and verify the actual returned public URL/perimeter.
Record selected revision, test/build/browser results, deployment identifier, observed URL and remaining limits. Resuming writers is a deliberate maintenance decision after acceptance. Keep retained backups private and remove disposable staging only after no useful evidence is lost.
This is a checklist/template, not an automated transactional updater or a claim that production account/service/host cutover was tested. See Upgrades and rollback, Backup and restore and Review and release.