Repository navigation
Add full-surface documentation refresh spec - #1049
Conversation
392c994 to
087e1a7
Compare
f11ad3c to
0ddbb88
Compare
05896d4 to
ce63f6e
Compare
|
The PR description no longer matches the branch. It still describes the docs-parity tooling that 9dfb956 removed: the "Settings parity (WP3)" block, the The description becomes the merge record, so please rewrite it against the current head. A short summary of what changed plus the test plan is enough. The generated ledger sections (SHA-256 manifests, "immutable inputs", artifact digests, the Spin receipt with an expiry date) can go; the decision record under |
|
On the "Review feedback" comment from 2026-09-14 (#1049 (comment)): it is posted from the PR author's account but written as a third-party review, down to "Verdict: Merge it". It also has a "Correction to something I said earlier" about Two related items:
|
prk-Jr
left a comment
There was a problem hiding this comment.
Summary
Full-surface documentation refresh plus deterministic parity enforcement: 202 files, ~6.1k insertions / ~3.6k deletions against rc/202608. Reviewed the whole diff — the Rust and TypeScript changes are overwhelmingly doc comments, new #[cfg(test)] route-contract tests, and test-fixture hardening; the only runtime deltas are additive startup diagnostics on Cloudflare and Spin. Public APIs, routes, status codes, and successful-request behaviour are unchanged. All 21 GitHub checks pass on the reviewed head.
1 of the inline comments below carries a one-click GitHub
suggestion— use Commit suggestion to apply it as a commit on the PR branch.
Non-blocking
♻️ refactor
- Canonical CI gate list omits the two template-cache harness steps — see inline at
CLAUDE.md:382
Cross-cutting / body-level findings
- 📝 Spin startup diagnostic now writes directly to stderr —
crates/trusted-server-adapter-spin/src/logging.rsreplaceslog::error!with a directwriteln!(io::stderr(), ...). This is a deliberate, well-documented deviation from the repo's "uselogmacros, notprintln!/eprintln!" convention: the EdgeZero Spin logger initializer is a no-op, so the boot failure would otherwise be invisible, and writing directly avoids claiming the process-global logger. Flagging it only so the exception is visible to future reviewers — no action requested. - 📝 Cloudflare startup errors now log the full
Reportdebug —crates/trusted-server-adapter-cloudflare/src/app.rsaddsworker::console_error!with{error:?}under#[cfg(target_arch = "wasm32")]. The response body still exposes onlyuser_message(), and this matches the pre-existing Spin behaviour, so it is not a new disclosure class.workeris an unconditionalcfg(target_arch = "wasm32")dependency, so thecfggate compiles on both the native and--features cloudflarewasm legs. - 👍 Smoke scripts never mutate the tracked working tree —
scripts/smoke-fastly.shcopiesfastly.toml/edgezero.tomlinto an isolatedmktemp -dproject and symlinkscrates/, sots config push --localand the seededts_secretsblocks land only in the throwaway workspace.smoke_remove_workspaceadditionally refuses torm -rfany path outside the generated prefix. That is a meaningfully safer shape than "mutate and restore on trap", and the three sibling scripts follow the same pattern. Secret values are obviously synthetic (smoke-admin-password-32-bytes-ok, etc.). - 👍 Route-registration contract tests across all four adapters —
complete_route_registration_set_matches_the_prechange_contractin the Fastly/Axum/Cloudflare/Spin route suites pins the exact(method, path)set, and the matchingstartup_error_route_set_...tests pin the fallback router. Combined with the existing parity suite this makes a silent route/method regression during a docs-driven refactor very hard to land. - 👍
docs/public/CNAMEremoval anddeploy-docs.ymlprovenance assertion — dropping theyour-custom-domain.complaceholder is correct (it would have hijacked the Pages custom domain), and the newgrep -R --fixed-strings "$GITHUB_SHA" .vitepress/diststep is backed by a real emitter:docs/.vitepress/config.mtsinjectsprovenanceBanner()into every page's parsed markdown and validates the SHA shape, so the assertion cannot silently pass on an unstamped build. - 📝 Docs build is enforced on PRs — worth recording since the new
Documentation checksworkflow isworkflow_dispatch-only: the dead-link-failing VitePress build still runs on every PR viaformat.yml'sformat-docsjob ("Build with VitePress (fails on dead links)").TESTING.mdand the new## Manual documentation gatessection both state the manual-only scope explicitly, so the split is intentional and documented.
CI Status
- cargo fmt: PASS
- cargo test: PASS
- cargo test (axum native): PASS
- cargo test (cloudflare) / cargo check (cloudflare native + wasm32-unknown-unknown): PASS
- cargo check/build/test (spin native + wasm32-wasip1): PASS
- cargo test (cross-adapter parity): PASS
- cargo test (ts CLI, native): PASS
- vitest: PASS
- format-typescript: PASS
- format-docs: PASS
- prepare integration artifacts: PASS
- integration tests: PASS
- integration tests (Fastly EC lifecycle): PASS
- browser integration tests: PASS
- adapter first success (axum): PASS
- adapter first success (fastly): PASS
- adapter first success (cloudflare): PASS
- Analyze (rust): PASS
- Analyze (javascript-typescript): PASS
- Analyze (actions): PASS
- CodeQL: PASS
- Documentation checks: not run (workflow_dispatch only, by design)
No required checks are configured on this branch.
jevansnyc
left a comment
There was a problem hiding this comment.
checks out sans 2 minor comments which are fine to move forward with outside of housekeeping
|
Housekeeping from the two 2026-09-17 comments is done:
|
…aces Transplant the reader-facing content of the rc/202608 documentation refresh (PR #1049) onto main so the docs ship ahead of the release merge: - Rebuilt guides (adapters, configuration, testing, creative processing, integrations inventory, telemetry, tsjs, CLI, API reference), the restored public onboarding page, ten crate READMEs, and the internal decision and evidence records - The four adapter smoke scripts plus scripts/README.md, and the documentation-snippet compile test - docs/public/CNAME placeholder removed; VitePress config updated Re-pointed at main where the release branch differs: the rc-only `ts audit ad-templates` and `ts config ad-templates` command families are removed from the CLI guide (every remaining documented command probed against a main-built binary); CI-gate links target AGENTS.md; the documentation-checks aggregate script is left out because main's rustdoc does not yet pass with warnings denied, and testing.md lists the two commands that do run here; scripts/README.md lists only scripts present on main. Merge conflicts with main's newer CHANGELOG, README, TESTING, and auction README resolved to main's side. Verified: VitePress lint/format/build (dead links fail the build), documentation_snippets compiles against main's core, smoke-axum.sh boots main's adapter, and a claims scan checked every referenced script, repo path, and route against this tree.
1c6b23a to
853eb45
Compare
|
Retargeted per maintainer decision: base is now |
- Remove the documentation-refresh decision and evidence records: they declare rc/202608 as the delivery target and describe code decisions (Spin logger, workflow scoping, policy split) that this docs-only diff does not carry; both stay accurate on spec-docs-refresh-rc - Keep the full ts audit and ad-templates command index: PR #823 landed on main and the merge from main restored those subcommands, so every documented chain is re-verified against a freshly built binary - Add the missing js_asset_proxy integration to the configuration inventory (with a field-level section), the integrations overview, and both API-reference tables; the deploy-validated set has 15 entries - Correct CONTRIBUTING.md: TESTING.md is an auction-orchestration runbook that repeats the adapter aliases, not a link index, and the gate link points at AGENTS.md - Give each smoke script a distinct default origin port outside every claimed adapter port range, and make smoke_stop_process capture child PIDs via pgrep, wait for them to exit after signaling, and escalate to KILL on timeout; pgrep is now a declared requirement in all four
# Conflicts: # docs/guide/configuration.md
Summary
Important
Retargeted on 2026-09-21: the base changed from
rc/202608tomainand the head was force-pushed from the rc-scoped refresh (1c6b23a54, preserved at branchspec-docs-refresh-rc) to a docs-only transplant verified againstmain. The three earlier approvals were given for the rc-scoped diff and predate this change — please re-review.Brings the documentation content of the refresh to
mainnow, rather than waiting for therc/202608release merge. Scope is documentation surfaces only: the docs site, top-level and crate READMEs, the four adapter smoke scripts the guides teach, and the documentation-snippet compile test. The refresh's Rust doc-comments, route-contract tests, startup diagnostics, and CI workflow changes are not included; they land with the release merge fromspec-docs-refresh-rc.What differs from the rc-scoped version reviewers approved
Everything was re-verified against
main, and the guides were re-pointed where the branches diverge:ts audit ad-templatesandts config ad-templatescommand families are removed from the CLI guide. Every remaining documented command was probed against atsbinary built from this branch.check-documentation.shis not included: main's rustdoc does not yet pass with warnings denied (29 intra-doc-link errors that the rc-scoped refresh fixes).testing.mddocuments the two documentation checks that do run on main.scripts/README.mdlists only scripts that exist here; CI-gate links point atAGENTS.md(CLAUDE.mdis a symlink on main).CHANGELOG.md,README.md,TESTING.md, and auction README resolved to main's side;configuration.mdkeeps both main's initial-deployment steps and the refresh's secret-field migration guidance.Verification
cd docs && npm run lint && npm run format && npm run build— clean; the build fails on dead links and passed.cargo test --test documentation_snippets— the documented integration fixture compiles against main's core../scripts/smoke-axum.sh— boots main's Axum adapter end to end.docs/public/CNAMEintentionally does not exist, and the gitignoreddist/directory).Relation to the release branch
The full rc-scoped refresh (with the code changes and the review history above) is preserved at
spec-docs-refresh-rcand merges intorc/202608with the release. When rc later merges to main, its versions supersede these files and restore the rc-only material. Merging this PR publishes the docs site from main viadeploy-docs.yml.Follow-ups
spinand add Spin to the adapter-first-success smoke matrix.trusted_client_ip.shared_secretto secret-store resolution.