chore: queue the move to our own server as a change - #57
Conversation
There was a problem hiding this comment.
🟡 Changes recommended
Several multi-line inline code spans in tasks.md break CommonMark Markdown rendering and should be reformatted (plus one non-copyable CLI ellipsis in design.md).
Once you've addressed the issues Copilot identified, you can request another Copilot review.
Pull request overview
Queues the spec-driven change serve-the-docs-from-our-own-server as planning-only artifacts, describing an intended migration of the DocFX documentation site from GitHub Pages to the project’s own Plesk server (with skip_specs: true because this does not change published-package behavior).
Changes:
- Adds a change proposal describing the motivation, scope, and expected impacts of hosting docs at
stratara.tech. - Adds a design note capturing observed constraints, key decisions, and migration ordering/rollback considerations.
- Adds a task plan broken into ordered groups, including owner-only steps and verification proofs.
File summaries
| File | Description |
|---|---|
| openspec/changes/serve-the-docs-from-our-own-server/.openspec.yaml | Registers the change metadata and declares skip_specs: true. |
| openspec/changes/serve-the-docs-from-our-own-server/proposal.md | Documents the “why/what” and scope boundaries for the hosting move. |
| openspec/changes/serve-the-docs-from-our-own-server/design.md | Records context, decisions, risks, and the migration plan/rollback sequencing. |
| openspec/changes/serve-the-docs-from-our-own-server/tasks.md | Provides the step-by-step execution checklist with proofs and ordering constraints. |
Review details
Suppressed comments (2)
openspec/changes/serve-the-docs-from-our-own-server/tasks.md:43
- This rsync command is split across lines inside a single inline code span (backticks), which breaks Markdown rendering in CommonMark; keep the inline code on one line or use a fenced code block.
- [ ] 2.5 Deploy step: `rsync -az --delete --exclude='.well-known' -e 'ssh -i <key>'
docs/_site/ "${DEPLOY_USER}@${DEPLOY_HOST}:httpdocs/"`. The exclusion is decision 2 — without
it the ACME challenge directory is deleted on every deploy.
openspec/changes/serve-the-docs-from-our-own-server/tasks.md:61
- This curl example is split across lines inside a single inline code span (backticks), which breaks Markdown rendering in CommonMark; keep the inline code on one line or use a fenced code block.
- [ ] 3.2 Verify the redirect **before** any DNS moves, by asking the server directly with the
right `Host`: `curl -sI --resolve docs.stratara.tech:443:217.154.79.173
https://docs.stratara.tech/concepts/why-event-sourcing.html` returns `301` with a `Location`
of the same path on the apex.
- Files reviewed: 4/4 changed files
- Comments generated: 2
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
What this changes
Adds the change
serve-the-docs-from-our-own-serverto the queue — planning artifacts only, nothing implemented.skip_specs: true: where a documentation site is hosted is not something a consumer of a published package observes, so no capability changes.Today's attempt to move the site by pointing the apex at GitHub Pages was rolled back — too much else answers on that apex. The move is not abandoned but inverted: the site goes to the domain, by deploying to the Plesk vhost over rsync, the way
loomweaver.devalready does from GitHub Actions.Three things recorded so they are not rediscovered
stratara.tech_d4hk78khxihas/bin/falseas its login shell whereloomweaver.dev_1kv2wmu3zbchas/bin/bash. Until Plesk changes that, a deploy key authenticates and the session ends immediately.rsync --deletewould removehttpdocs/.well-known/. LoomWeaver survives that only because Plesk's nginx serves ACME challenges from the default document root — a bet on an implementation detail whose failure mode is a certificate silently expiring. The design excludes the directory instead.CNAMEfile in the artifact does not set the custom domain, but it does decide which hostname Pages answers for; and aCNAMEon an apex shadows theMX,TXTandNSrecords of the same name without deleting them, which broke mail to the address in the imprint until it was removed.The proposal opens with
> **Status:** proposed. Approval is the owner's.How it was verified
openspec validate --changes --strict— 1 passed, 0 failedopenspec status— all planning artifacts complete,specsskipped as declared