Skip to content

πŸ“ docs(freshness): correct stale auth/SSRF/WS/UI copy for the v1.6.1 delta - #569

Merged
scttbnsn merged 5 commits into
dev/v1.6from
docs/v1.6-delta-freshness
Jul 20, 2026
Merged

πŸ“ docs(freshness): correct stale auth/SSRF/WS/UI copy for the v1.6.1 delta#569
scttbnsn merged 5 commits into
dev/v1.6from
docs/v1.6-delta-freshness

Conversation

@scttbnsn

@scttbnsn scttbnsn commented Jul 20, 2026

Copy link
Copy Markdown
Contributor

What

Docs/copy freshness pass for the v1.6.1 delta (the #567 security batch, the #566 display batch, and the #568 maturity-clock fix). 30 findings from an adversarially-verified audit workflow (8 surface auditors, every finding independently re-verified against the shipped code before it counted; 1 rejected in verification), applied as one coherent edit per doc region:

  • Anonymous-auth fail-closed (A1): the authentications page (callout, behavior matrix, and the "Upgrading from v1.3.x" section), the security guide, the README banner + quickstart line, and DEPRECATIONS.md all still promised upgraders a warn-and-serve grace period. Rewritten everywhere: upgrades now fail closed exactly like fresh installs; DD_ANONYMOUS_AUTH_CONFIRM=true is the opt-in.
  • Session cookie rename (A4): connect.sid β†’ drydock.sid one-time sign-out documented in DEPRECATIONS.md, the upgrading section, and the README banner.
  • SSRF hardening (A2): the HTTP trigger page now documents the guarded DNS lookup, redirect refusal, and the ALLOWMETADATA escape hatch.
  • WebSocket origin checks (A3): server config, FAQ, quickstart reverse-proxy warning, api/log.mdx, and api/container.mdx now state that origin validation covers scheme/host/port and that forwarded headers are honored only with DD_SERVER_TRUSTPROXY.
  • UI vocabulary (B3/B4/B5): watchers page and FAQ updated for the pin-glyph/"Current" pinned treatment; eligibility + API docs document the new additive clockSource/clockStartAt blocker fields; the UI page covers the column-picker auto-hidden annotation. Wording grounded in the actual ✨ feat(ui): display-honesty batch β€” update-status vocabulary, pin glyph, one-clock maturity panelΒ #566 locale strings, not paraphrased.
  • Website quickstarts actually start: the shared DockerRunSnippet (all 7 comparison pages) and the FAQ quickstart now include the auth opt-in env var β€” without it the one-liner produces a container that refuses to start on the v1.6 line.

Also rides along: protobufjs pinned to 7.6.5 (CVE-2026-59877 / GHSA-j3f2-48v5-ccww, third fresh advisory today) in app (new override) and e2e (existing override bumped) β€” it began failing the qlty osv-scanner gate mid-push.

Deliberately skipped: content/docs/current/updates/index.mdx (strictly per-release curated notes; rc.3 highlights belong to the actual cut) and UPGRADE-NOTES.md (version-gated to 1.4.6–1.5.x by scripts/append-upgrade-notes.mjs; v1.6 content there would leak into 1.5.x release notes).

Why

The security batch merged with zero docs changes, leaving the auth docs actively contradicting shipped behavior. Docs on dev/v1.6 publish at the GA dev→main merge, so these corrections go live exactly when the behavior does.

Tests

Full pre-push gate green. apps/web script tests 43/43; MDX parse validated via sync-docs + fumadocs-mdx; biome clean.

Changelog

  • πŸ”’ Documented fail-closed anonymous authentication for both fresh installs and upgrades; require DD_ANONYMOUS_AUTH_CONFIRM=true (and clarified /health vs API response behavior).
  • ⚠️ Security documented β€œno deprecation window” enforcement: removed upgrade grandfather path when anonymous auth isn’t configured/confirmed; upgrades stop serving/fail closed.
  • ⚠️ πŸ”’ Documented connect.sid β†’ drydock.sid session cookie rename and one-time sign-out on upgrade.
  • πŸ”’ Documented SSRF protections for guarded DNS lookup, redirect refusal (3xx never followed), and ALLOWMETADATA escape hatch.
  • πŸ”’ Documented WebSocket Origin validation (scheme/host/port) and clarified reverse-proxy requirements via DD_SERVER_TRUSTPROXY + forwarded headers (X-Forwarded-Proto/X-Forwarded-Host), including log-stream connection failures when misconfigured.
  • ✨ Documented maturity-clock details for maturity-not-reached (clock source + ISO-8601 start timestamp payload) and UI countdown rendering behavior.
  • ✨ Updated UI copy/annotations for column visibility and β€œhidden to fit” behavior.
  • ✨ Updated watcher UI description for fully-pinned tags to reflect updateInsight chip styling + persistent pin glyph/tooltips.
  • πŸ”§ Added DD_ANONYMOUS_AUTH_CONFIRM=true to website quickstarts and updated Docker run snippet wording.
  • πŸ”§ Pinned protobufjs to 7.6.5 in both app and e2e dependencies.
  • πŸ”§ Updated doc identity/release tests to assert current fail-closed semantics for content/docs/current while preserving legacy v1.5 behavior.

Concerns

  • Confirm DD_SERVER_TRUSTPROXY docs explicitly require forwarding X-Forwarded-Proto and X-Forwarded-Host for scheme/host matching.
  • Validate that the documented fail-closed behavior matches the actual endpoints: API 401 behavior vs /health 503 reporting.
  • Ensure the β€œredirects never followed” documentation aligns with the actual redirect-following disablement and how ALLOWMETADATA is evaluated.
  • Verify cookie rename handling is documented consistently across all relevant upgrade/install docs (including one-time sign-out semantics).
  • Check that WebSocket origin validation requirements cover both dashboard log viewer and container log streaming endpoints (upgrade vs steady-state behavior).

scttbnsn added 3 commits July 20, 2026 18:35
…delta

Findings came from the adversarially-verified delta-docs-freshness workflow
(30 findings against the security batch merged in 82d2b07/#567, plus the
UI vocabulary changes staged on feat/v1.6-display-honesty for the same
rc.3 train).

- A1: rewrite the anonymous-auth "upgrade grace period" story everywhere it
  was documented (authentications page callout/matrix/upgrading section,
  security guide, README banner + quickstart line, DEPRECATIONS.md) β€” auth
  now fails closed on upgrades exactly like fresh installs, no more
  warn-and-serve grandfather path.
- A2: document that the HTTP trigger never follows redirects, independent
  of the ALLOWMETADATA guard.
- A3: document that WebSocket origin checks now validate scheme too, only
  trusting forwarded headers with DD_SERVER_TRUSTPROXY, across
  DEPRECATIONS.md, server config, FAQ, api/log.mdx, api/container.mdx, and
  quickstart.
- A4: document the connect.sid -> drydock.sid session cookie rename and
  its one-time forced sign-out in DEPRECATIONS.md, the authentications
  upgrading section, and the README banner.
- B3/B4/B5: update UI vocabulary docs (watchers, faq, api/container,
  update-eligibility, configuration/ui) for the pin-glyph/Current relabel,
  the maturity blocker's clockSource/clockStartAt fields, and the
  column-picker auto-hidden annotation.
- apps/web: give the shared DockerRunSnippet (all 7 comparison pages) and
  the FAQ quickstart answer an auth flag so the one-liner actually starts
  a dashboard instead of throwing on the new fail-closed auth check.

Skipped: content/docs/current/updates/index.mdx (strictly per-release
curated notes, no Unreleased convention β€” rc.3 highlights land at the cut)
and UPGRADE-NOTES.md (version-gated to the 1.4.6-1.5.x line only by
scripts/append-upgrade-notes.mjs; adding v1.6 content there would leak
into 1.5.x release notes).
Third fresh advisory today (GHSA-j3f2-48v5-ccww): protobufjs 7.5.0-7.6.4 vulnerable, fixed 7.6.5. app gets it transitively via dockerode→@grpc/proto-loader (new override), e2e via the existing artillery override pin (7.6.3 → 7.6.5).
The current docs now describe the v1.6 fail-closed upgrade behavior while the
frozen v1.5 archive keeps the warn-and-serve copy that line shipped with; one
shared regex can no longer pin both.
@vercel

vercel Bot commented Jul 20, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
drydock-website Ready Ready Preview, Comment Jul 20, 2026 11:37pm
drydockdemo-website Ready Ready Preview, Comment Jul 20, 2026 11:37pm

@coderabbitai

coderabbitai Bot commented Jul 20, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@scttbnsn, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 11 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
βš™οΈ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: e2956066-22df-4d53-b726-f60bd47c252a

πŸ“₯ Commits

Reviewing files that changed from the base of the PR and between 85a0439 and c1b3dc5.

πŸ“’ Files selected for processing (4)
  • README.md
  • apps/web/src/app/data/faq.ts
  • content/docs/current/configuration/authentications/index.mdx
  • content/docs/current/guides/security/index.mdx
πŸ“ Walkthrough

Walkthrough

The PR documents fail-closed authentication upgrades, anonymous-auth confirmation, and the connect.sid to drydock.sid cookie rename. It adds WebSocket origin-validation and reverse-proxy trust requirements, HTTP redirect restrictions, maturity-gate details, responsive column behavior, and pinned-tag UI changes. Release notes, quick-start content, package overrides, and documentation regression assertions are updated.

Possibly related PRs

πŸš₯ Pre-merge checks | βœ… 2
βœ… Passed checks (2 passed)
Check name Status Explanation
Linked Issues check βœ… Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check βœ… Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
πŸ§ͺ Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch docs/v1.6-delta-freshness

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❀️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

πŸ€– Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@content/docs/current/configuration/authentications/index.mdx`:
- Around line 56-58: Verify the actual fail-closed runtime behavior from the
Anonymous initialization and authentication flow, then unify all descriptions to
match it. Update content/docs/current/configuration/authentications/index.mdx
lines 56-58 and 12, content/docs/current/guides/security/index.mdx line 108, and
README.md lines 35-39 and 168; preserve the documented behavior for
authenticated and explicitly confirmed anonymous access.
πŸͺ„ Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
βš™οΈ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 8fcc8967-b81b-447b-8273-e5f3a736c9f5

πŸ“₯ Commits

Reviewing files that changed from the base of the PR and between f2f9c4e and 53b4ca7.

β›” Files ignored due to path filters (2)
  • app/package-lock.json is excluded by !**/package-lock.json, !**/package-lock.json
  • e2e/package-lock.json is excluded by !**/package-lock.json, !**/package-lock.json
πŸ“’ Files selected for processing (18)
  • DEPRECATIONS.md
  • README.md
  • app/package.json
  • apps/web/src/app/data/faq.ts
  • apps/web/src/components/docker-run-snippet.tsx
  • content/docs/current/api/container.mdx
  • content/docs/current/api/log.mdx
  • content/docs/current/configuration/actions/update-eligibility.mdx
  • content/docs/current/configuration/authentications/index.mdx
  • content/docs/current/configuration/server/index.mdx
  • content/docs/current/configuration/triggers/http/index.mdx
  • content/docs/current/configuration/ui/index.mdx
  • content/docs/current/configuration/watchers/index.mdx
  • content/docs/current/faq/index.mdx
  • content/docs/current/guides/security/index.mdx
  • content/docs/current/quickstart/index.mdx
  • e2e/package.json
  • scripts/release-docs-identity.test.mjs

Comment thread content/docs/current/configuration/authentications/index.mdx Outdated
CodeRabbit caught the inconsistency: the behavior matrix said fresh installs
return 401 while the new upgrade copy said drydock refuses to start. Verified
against the code β€” Anonymous's registration throw is caught by the registry
fallback (app/registry/index.ts) and the API serves every request a 401 via
passport with zero strategies (app/api/auth.ts); /health reports 503. Unified
all six sites on the 401-serving description and pinned it in the copy test.
@scttbnsn

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Jul 20, 2026

Copy link
Copy Markdown
βœ… Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

πŸ€– Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@apps/web/src/app/data/faq.ts`:
- Line 40: Update the authentication behavior description in the FAQ entry
around the Drydock deployment guidance: distinguish the unauthenticated API
response of 401 from the /health response of 503 when authentication is
unconfigured. Preserve the surrounding authentication options and fail-closed
behavior without claiming every request returns 401.
πŸͺ„ Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
βš™οΈ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 021c9faa-27e8-4b77-b618-dbbe91a66a6d

πŸ“₯ Commits

Reviewing files that changed from the base of the PR and between 53b4ca7 and 85a0439.

πŸ“’ Files selected for processing (5)
  • README.md
  • apps/web/src/app/data/faq.ts
  • content/docs/current/configuration/authentications/index.mdx
  • content/docs/current/guides/security/index.mdx
  • scripts/release-docs-identity.test.mjs
🚧 Files skipped from review as they are similar to previous changes (4)
  • scripts/release-docs-identity.test.mjs
  • content/docs/current/guides/security/index.mdx
  • content/docs/current/configuration/authentications/index.mdx
  • README.md

Comment thread apps/web/src/app/data/faq.ts Outdated
@scttbnsn
scttbnsn merged commit 26a9202 into dev/v1.6 Jul 20, 2026
4 of 5 checks passed
@scttbnsn
scttbnsn deleted the docs/v1.6-delta-freshness branch July 20, 2026 23:37
scttbnsn added a commit that referenced this pull request Jul 21, 2026
Release plumbing for the v1.6.0-rc.3 cut β€” the full identity bump the
guard tests enforce.

- Dated `[1.6.0-rc.3] β€” 2026-07-21` CHANGELOG heading, fresh empty
`[Unreleased]` section, matching link-reference definitions
- rc.3 across README badge/highlights summary, website site-config +
timeline, updates page (new rc.3 highlights section), API doc example
payloads, quickstart tag matrix, and the demo runtime fixtures
- Guard tests updated in lockstep: release-identity,
release-docs-identity (compare base now `v1.6.0-rc.2...v1.6.0-rc.3`),
changelog-links

rc.3 delta over rc.2: #566 display-honesty batch, #567 security
hardening, #568 maturity-clock restart fix (#565), #569 docs freshness.

Verified: 105/105 script tests, 43/43 web-script tests, full pre-push
gate green.

Last dev-side change before the release head freeze.

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Changelog

πŸ”§ **Changed**
- Updated release identity from `v1.6.0-rc.2` to `v1.6.0-rc.3` across
README, website metadata, roadmap, docs, API examples, quickstart tags,
and demo fixtures.
- Added the dated `v1.6.0-rc.3` updates section and refreshed changelog
link references.
- Updated release identity and documentation guard tests, including rc
comparison ranges and candidate fixtures.

✨ **Added**
- Documented the rc.3 changes covering issues `#566`, `#567`,
`#568/`#565, and `#569`.

πŸ”’ **Security**
- Documented the rc.3 security hardening batch.

## Verification

- Script tests: 105/105 passed
- Web-script tests: 43/43 passed
- Full pre-push gate: passed

## Concerns

- Verify the release date `July 21, 2026` is correct.
- Confirm all remaining `1.6.0-rc.2` references are intentional.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
scttbnsn added a commit that referenced this pull request Jul 21, 2026
Promotes the v1.6.0-rc.3 content from `dev/v1.6` to `main` for the
release cut.

rc.3 delta over rc.2:
- **#566 display-honesty batch** β€” update-status vocabulary ("Digest
update", Unknown badge, "Security hold"), pin glyph driven by the real
pin-gate verdict (`tagPinGated`), insight-only pinned rows read Current
everywhere (table + detail panel), one-clock maturity panel,
column-picker auto-hide annotations, registries deep-link fix (#556),
banner pluralization, tooltip freshness.
- **#567 security hardening** β€” anonymous auth fails closed on upgrades,
HTTP trigger SSRF guards, full WebSocket origin validation,
`drydock.sid` session cookie, owner-only store perms, pinned icon CDN
revisions, CI secret scans.
- **#568 maturity-clock restart fix** (#565) β€” the soak clock restarts
only when the update candidate identity changes.
- **#569 docs freshness** β€” auth/SSRF/WS/UI copy corrected to shipped
v1.6 behavior.
- **#571 release identity bump** β€” dated CHANGELOG heading, rc.3 across
all public version surfaces, guard tests in lockstep.

After merge: dispatch `release-cut.yml` from `main` with
`release_tag=v1.6.0-rc.3`.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant