Skip to content

docs: document Certified infrastructure — CGS, PDSs (HYPER-282)#118

Merged
aspiers merged 10 commits intomainfrom
adam/hyper-282-document-various-certified-infrastructure-services
Apr 12, 2026
Merged

docs: document Certified infrastructure — CGS, PDSs (HYPER-282)#118
aspiers merged 10 commits intomainfrom
adam/hyper-282-document-various-certified-infrastructure-services

Conversation

@aspiers
Copy link
Copy Markdown
Contributor

@aspiers aspiers commented Apr 9, 2026

Fixes HYPER-282.

Summary

Covers the HYPER-282 checklist with two new pages, a cross-linking pass, and cleanup.

New: pages/reference/certified-services.md — "Certified PDSs"

Documents the Certified-operated ePDS instances and which to use in which scenario:

  • certified.one — production ePDS
  • dev.certified.app — staging ePDS (recommended for app developers' staging envs)
  • *.test.certified.app — bleeding-edge test instances, with:
    • epds1.test.certified.app active
    • pds1.test.certified.app active, currently used as the backing PDS for the hosted CGS
    • pds-eu-west4.test.certified.app deprecated

Additional content on the page:

  • Clarifies the distinction between certified.one (the prod ePDS backend) and certified.app (the frontend app for managing identities)
  • Handle-suffix explainer callout
  • Short "Auth services" section
  • Status pages section linking certified.instatus.com and test-certified.instatus.com
  • "Group-governed PDSs" section linking the new CGS architecture page, with a callout noting that groups created via the hosted CGS currently land on a test PDS

New: pages/architecture/certified-group-service.md — "Certified Group Service (CGS)"

A dedicated architecture page for CGS:

  • System overview diagram and proxying model (atproto-proxy via the user's PDS)
  • Integration pattern for apps, including the custom-NSIDs gotcha (app.certified.group.repo.* vs com.atproto.repo.*)
  • Authentication pipeline (signature, audience, lxm, token lifetime, nonce replay prevention)
  • RBAC model: hierarchical roles, permission matrix, and special rules (last-owner protection, self-removal, authorship-based delete)
  • PDS proxying and credential storage (AES-256-GCM, agent pool, blob streaming)
  • Audit logging
  • Group lifecycle (group.register flow)
  • Storage model
  • "Future directions" section covering customizable roles, finer-grained permissions, group-level governance, time-bound roles, credential-based membership, and multi-PDS support
  • Notes the current architectural constraint that one CGS deployment is bound to a single backing PDS via GROUP_PDS_URL

Cross-linking pass

Wired the two new pages into existing docs so they're reachable from natural entry points:

  • Glossary: added new ePDS and CGS entries, updated the PDS entry to link to the Certified PDSs page, and sorted the glossary alphabetically.
  • Architecture overview: mentions CGS as the governance layer for multi-identity repositories.
  • ePDS page: adds Certified PDSs and CGS links under Further reading.
  • Account & Identity: adds a "Role-based governance with CGS" subsection inside Organization accounts, framing CGS as the principled alternative to shared app passwords.
  • Certified Identity: adds a short paragraph noting certified.app as the frontend where Certified identities are managed day-to-day, talking to certified.one under the hood.
  • Testing & Deployment: notes dev.certified.app as an alternative to self-hosting a local PDS.

Handle corrections

Certified handles issued by certified.one end in .certified.one, not .certified.app. Corrected examples in:

  • getting-started/quickstart.md
  • tools/scaffold.md, tools/hyperboards.md, tools/hypercerts-cli.md
  • architecture/epds.md (code examples)
  • architecture/account-and-identity.md (handle example + initial random handle example)
  • core-concepts/certified-identity.md
  • reference/certified-services.md — rewrote the "Reading handles" callout

Cleanup of existing mentions

  • pages/tools/scaffold.md: stop recommending the deprecated pds-eu-west4.test.certified.app; point at dev.certified.app and cross-link to the new page
  • pages/architecture/epds.md: cross-link to the new services reference
  • pages/roadmap.md: the 'Hypercerts PDS' table listed pds1 / pds2.certified.app which don't exist — updated to reflect that certified.one is the production ePDS

Nav

Adds both new pages to lib/navigation.js:

  • "Certified PDSs" in the Reference section, above Glossary
  • "Certified Group Service (CGS)" in the Architecture section, after ePDS

Bundled bug fix

components/LastUpdated.js imperatively appended a .last-updated element and early-returned when a page had no entry in lastUpdated.json, leaving the previous route's element stranded. Now cleans up before deciding whether to append.

HYPER-282 checklist status

  • Dedicated section documenting the ePDS instances
  • Fix current mentions of pds-eu-west4 and related hostnames
  • Document the CGS
  • Document certified.app (as the identity management frontend, and its relationship to certified.one)
  • Cross-linking from existing mentions to the new sections
  • Link to both Instatus pages
  • Document the indexers (deferred — current wording on architecture/indexers-and-discovery and tools/hyperindex is acceptable for now)
  • Document hyperscan.dev (deferred — someone else will update)

Test plan

  • `pnpm dev` renders both new pages without markdoc errors
  • "Certified PDSs" appears in the Reference sidebar above Glossary
  • "Certified Group Service (CGS)" appears in the Architecture sidebar after ePDS
  • Cross-links between the two new pages, and from epds / scaffold / overview / account-and-identity / certified-identity / testing-and-deployment / glossary, resolve correctly
  • Glossary renders in alphabetical order with new ePDS and CGS entries
  • Handle examples across the docs show .certified.one, not .certified.app
  • Search index and sitemap include both new pages
  • LastUpdated element no longer persists across routes on pages without a git date

Summary by CodeRabbit

Release Notes

  • New Features

    • Added documentation for Certified Group Service (CGS), enabling role-based governance for multi-user repository access with audit logging
    • Added reference page documenting Certified-operated PDS environments (production, staging, test)
  • Documentation

    • Updated all examples to use production domain (certified.one) and clarified distinction between frontend (certified.app) and PDS
    • Added guidance on using Certified's staging environment for development and testing
    • Reorganized glossary with new entries
  • Bug Fixes

    • Fixed stale DOM element removal on route changes

Add a new reference page documenting the Certified-operated ePDS
instances — certified.one (production), dev.certified.app (staging),
and the *.test.certified.app test instances — and which to use in
which scenario.

Also fix existing mentions that were misleading or out of date:

- pages/tools/scaffold.md: stop recommending the deprecated
  pds-eu-west4.test.certified.app as an example PDS URL; point at
  dev.certified.app (staging) and cross-link to the new page.
- pages/architecture/epds.md: replace the single-instance mention of
  certified.one with a pointer to the full services reference.
- pages/roadmap.md: the 'Hypercerts PDS' table referenced
  pds1/pds2.certified.app which don't exist; certified.one is the
  production ePDS, so update the table to reflect current reality.
- lib/navigation.js: add the new page to the Reference sidebar.
@vercel
Copy link
Copy Markdown
Contributor

vercel bot commented Apr 9, 2026

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

Project Deployment Actions Updated (UTC)
hypercerts-atproto-documentation Ready Ready Preview, Comment Apr 12, 2026 5:08pm
hypercerts-v0.2-documentation Ready Ready Preview, Comment Apr 12, 2026 5:08pm

Request Review

@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Apr 9, 2026

Warning

Rate limit exceeded

@aspiers has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 4 minutes and 46 seconds before requesting another review.

Your organization is not enrolled in usage-based pricing. Contact your admin to enable usage-based pricing to continue reviews beyond the rate limit, or try again in 4 minutes and 46 seconds.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: d5b8eac9-f699-492d-a65f-064c38242d3b

📥 Commits

Reviewing files that changed from the base of the PR and between 4904c0a and c4467d2.

📒 Files selected for processing (8)
  • lib/lastUpdated.json
  • pages/architecture/account-and-identity.md
  • pages/getting-started/testing-and-deployment.md
  • pages/reference/glossary.md
  • public/raw/architecture/account-and-identity.md
  • public/raw/getting-started/testing-and-deployment.md
  • public/raw/reference/glossary.md
  • public/search-index.json
📝 Walkthrough

Walkthrough

This PR introduces comprehensive documentation for Certified Group Service (CGS), a role-based multi-identity governance layer for AT Protocol. It adds two new documentation pages explaining CGS architecture and Certified-operated ePDS services, updates example handles from certified.app to certified.one across 15+ documentation files, reorganizes the glossary with new terms (CGS, ePDS, Certified), and fixes a DOM cleanup bug in the LastUpdated component. Navigation entries and site metadata (timestamps, sitemap) are updated accordingly.

Changes

Cohort / File(s) Summary
Code Fix
components/LastUpdated.js
Reordered effect control flow to remove stale .last-updated DOM elements before early return when no date exists, ensuring proper cleanup on every route change.
Navigation & Metadata
lib/navigation.js, lib/lastUpdated.json, public/sitemap.xml
Added navigation entries for /architecture/certified-group-service and /reference/certified-services; updated timestamps to 2026-04-09 across multiple routes; added new sitemap entries with priority 0.6.
New CGS Architecture Documentation
pages/architecture/certified-group-service.md, public/raw/architecture/certified-group-service.md
Added comprehensive 148-line documentation pages explaining CGS architecture, JWT authentication, RBAC model (member/admin/owner), PDS proxying, audit logging, group lifecycle, and deployment details.
New Certified Services Reference
pages/reference/certified-services.md, public/raw/reference/certified-services.md
Added comprehensive 88-line documentation pages describing Certified-operated ePDS instances (production certified.one, staging dev.certified.app, test *.test.certified.app), auth endpoints, and service-selection scenarios.
Handle Domain Updates
pages/architecture/account-and-identity.md, pages/core-concepts/certified-identity.md, pages/getting-started/quickstart.md, pages/tools/..., public/raw/...
Systematically updated example ATProto handles from *.certified.app to *.certified.one across 16 documentation files to reflect production domain; mirrored changes in both main and raw documentation directories.
Architecture Docs with New References
pages/architecture/epds.md, pages/architecture/overview.md, public/raw/architecture/epds.md, public/raw/architecture/overview.md
Updated ePDS documentation to reference multiple Certified environments instead of single hostname; added CGS reference to Data layer description; added links to new Certified services and CGS pages.
Glossary Reorganization
pages/reference/glossary.md, public/raw/reference/glossary.md
Reordered glossary entries and added new terms: "Certified" (identity provider capabilities), "CGS (Certified Group Service)" (RBAC/audit semantics), "ePDS (extended PDS)" (email/OAuth extension); updated PDS description to reference Certified-operated instances.
Roadmap Content Replacement
pages/roadmap.md, public/raw/roadmap.md
Replaced "Hypercerts PDS" table with consolidated paragraph directing users to reference Certified services documentation for complete ePDS list.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

Suggested reviewers

  • s-adamantine

Poem

🐰 CGS hops with roles so grand,
Member, admin, owner stand,
From .app to .one we bound,
Governance and trust are found! ✨

🚥 Pre-merge checks | ✅ 2 | ❌ 3

❌ Failed checks (2 warnings, 1 inconclusive)

Check name Status Explanation Resolution
Linked Issues check ⚠️ Warning The linked issue #39 requires focus-visible styles, header height reduction, and GitHub icon addition; the PR contains only documentation changes and a LastUpdated.js bug fix unrelated to these requirements. Address issue #39 requirements: add focus-visible styles to interactive header elements, reduce header height from 64px to 56px, and add GitHub icon link next to theme toggle.
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Out of Scope Changes check ❓ Inconclusive The PR includes a legitimate bug fix to LastUpdated.js that is outside the documented scope of HYPER-282 but is a genuine necessary correction for the routing behavior. Clarify whether the LastUpdated.js bug fix was intentionally bundled as part of this PR or if it should be separated into a distinct issue/PR for independent review and merging.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The PR title clearly summarizes the main objective: documenting Certified infrastructure (CGS and PDSs) with a specific issue reference.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch adam/hyper-282-document-various-certified-infrastructure-services

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 and usage tips.

…ER-282)

- scaffold.md: drop example hostnames from NEXT_PUBLIC_PDS_URL/EPDS_URL
  rows and explain the distinction between the two vars (standard OAuth
  target vs. optional email-login ePDS target).
- roadmap.md: collapse the Hypercerts PDS table into prose that
  cross-links to the Certified services reference page.
holkexyz added 2 commits April 9, 2026 21:03
- New architecture page for the Certified Group Service (CGS),
  covering authentication, RBAC, PDS proxying, audit logging,
  group lifecycle, the single-backing-PDS constraint, and
  future directions for governance.
- Rename "Certified services" to "Certified PDSs" and move the
  entry above Glossary in the Reference sidebar.
- Expand the Certified PDSs page with a handle-suffix explainer,
  an auth services section, status page links, cross-links to
  the new CGS page, and a callout that groups created via the
  hosted CGS currently land on a test PDS.
- Add pds1.test.certified.app to the test instances table and
  note it is the current backing PDS for the hosted CGS.
The LastUpdated component appended a <p class="last-updated">
to the article imperatively, bypassing React reconciliation.
When navigating to a page whose route was missing from the
lastUpdated map, the effect early-returned before removing
the previous element, leaving it stranded at the top of the
new page's article.

Always remove any existing .last-updated element on route
change, before deciding whether to append a new one.
@holkexyz holkexyz changed the title docs: add Certified services reference page (HYPER-282) docs: document Certified infrastructure — CGS, PDSs (HYPER-282) Apr 10, 2026
Cross-linking pass from existing pages to the new CGS and
Certified PDSs pages:

- Glossary: add new "ePDS (extended PDS)" and "CGS (Certified
  Group Service)" entries, update the "PDS" entry to link to
  the Certified PDSs page, and sort the whole glossary
  alphabetically.
- Architecture overview: mention CGS as the governance layer
  for multi-identity repositories.
- ePDS page: add Certified PDSs and CGS links under Further
  reading.
- Account & Identity: add a "Role-based governance with CGS"
  subsection inside Organization accounts, framing CGS as the
  principled alternative to shared app passwords.
- Testing & Deployment: note dev.certified.app as an
  alternative to self-hosting a local PDS.

Also correct Certified handle examples across the docs. Handles
issued by the production Certified PDS (`certified.one`) end in
`.certified.one`, not `.certified.app`. Updated:

- getting-started/quickstart.md
- tools/scaffold.md
- tools/hyperboards.md
- tools/hypercerts-cli.md
- architecture/epds.md (code examples)
- architecture/account-and-identity.md (handle example + initial
  random handle example)
- core-concepts/certified-identity.md
- reference/certified-services.md (rewrite the "Reading handles"
  callout, which previously claimed the hostname and handle
  suffix were decoupled)

Derived artifacts (public/raw, search index) regenerated.

Sitemap intentionally not re-staged — it contains unrelated
whitespace/timestamp-only churn.
…d (HYPER-282)

Adds a short paragraph to the "Certified: the reference identity
provider" section of the Certified Identity page, clarifying
that certified.app is where users manage their Certified
identity day-to-day (sign up/in, profile, handle, groups,
passwords) and that it talks to the production PDS at
certified.one under the hood.
Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 3

🧹 Nitpick comments (4)
components/LastUpdated.js (1)

15-17: Scope stale-element cleanup to the injected node only.

Line 15 removes the first .last-updated globally, which risks deleting unrelated page content sharing that class. Prefer a dedicated data marker for the imperatively inserted element.

Safer selector scoping
-    const existing = document.querySelector('.last-updated');
+    const existing = document.querySelector('[data-last-updated="true"]');
     if (existing) existing.remove();
@@
     const el = document.createElement('p');
     el.className = 'last-updated';
+    el.dataset.lastUpdated = 'true';

Also applies to: 23-25

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@components/LastUpdated.js` around lines 15 - 17, The code currently uses
document.querySelector('.last-updated') and removes the first matching element
globally, which can delete unrelated DOM nodes; change the cleanup and selection
logic to target only the imperatively inserted node by using a unique data
marker (e.g., data-injected="last-updated") when creating the element and then
query/remove via that attribute (replace document.querySelector('.last-updated')
and the similar block at lines 23-25 with
document.querySelector('[data-injected="last-updated"]') and ensure the created
node (in the function that builds the .last-updated element) sets the same
data-injected attribute so only the injected element is removed.
pages/roadmap.md (1)

93-93: Align operator wording with the Certified services docs.

Line 93 currently attributes operation to “Hypercerts,” while related docs describe these as Certified-operated services. Consider using one operator term consistently to avoid identity/ownership ambiguity.

Proposed wording tweak
-General users can use any existing ATProto PDS such as `pds.bsky.app`. Hypercerts also operates its own production, staging, and test ePDS instances for apps that want to offer "Sign in with Certified" — see [Certified services](/reference/certified-services) for the full list.
+General users can use any existing ATProto PDS such as `pds.bsky.app`. Certified operates production, staging, and test ePDS instances for apps that want to offer "Sign in with Certified" — see [Certified services](/reference/certified-services) for the full list.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@pages/roadmap.md` at line 93, The sentence in pages/roadmap.md attributes the
PDS instances to “Hypercerts” but related docs use “Certified-operated” — update
the wording for consistency by replacing “Hypercerts” with “Certified-operated”
(or the agreed operator term used in the Certified services docs) in the
sentence that currently reads “Hypercerts also operates its own production,
staging, and test ePDS instances…” so the sentence consistently refers to the
operator as Certified-operated across docs.
pages/tools/scaffold.md (1)

99-99: Tighten Line 99 into a complete sentence for clarity.

Small wording tweak improves readability in the env table.

✏️ Suggested edit
-| `NEXT_PUBLIC_PDS_URL` | Target PDS for the standard handle-based OAuth sign-in flow. Can be any AT Protocol PDS (Bluesky, a Certified ePDS, a self-hosted PDS, etc.). |
+| `NEXT_PUBLIC_PDS_URL` | Target PDS for the standard handle-based OAuth sign-in flow. This can be any AT Protocol PDS (Bluesky, a Certified ePDS, a self-hosted PDS, etc.). |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@pages/tools/scaffold.md` at line 99, The env table entry for
NEXT_PUBLIC_PDS_URL is a fragment; update the description text for the
`NEXT_PUBLIC_PDS_URL` cell so it is a complete sentence (e.g., "Target PDS for
the standard handle-based OAuth sign-in flow. This can be any AT Protocol PDS
(Bluesky, a certified ePDS, or a self-hosted PDS)."), ensuring the phrase
`NEXT_PUBLIC_PDS_URL` remains the key identifier and the explanation reads as a
full sentence.
pages/reference/certified-services.md (1)

48-55: Add a “last verified” stamp for volatile host/status rows.

The “current test instances” and “currently …” status claims will age quickly; adding a verification date in-section will reduce ambiguity for readers.

Proposed doc tweak
 ### Current test instances
+
+_Last verified: 2026-04-10_
 
 | Instance | Status |
 |---|---|
 | `epds1.test.certified.app` | Active |
 | `pds1.test.certified.app` | Active — currently used as the backing PDS for the hosted [CGS](/architecture/certified-group-service) |
 | `pds-eu-west4.test.certified.app` | Deprecated — do not use for new work |

Also applies to: 70-71

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@pages/reference/certified-services.md` around lines 48 - 55, Update the "###
Current test instances" table (and the similar table around the
`pds-eu-west4.test.certified.app` rows referenced at lines ~70-71) to include a
last-verified timestamp for volatile host/status info: either add a new "Last
verified" column to the table or append "— last verified YYYY-MM-DD" to each
Status cell for `epds1.test.certified.app`, `pds1.test.certified.app`, and
`pds-eu-west4.test.certified.app`; ensure the text is succinct and uses ISO date
format so readers can immediately see when each status was checked.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@pages/architecture/account-and-identity.md`:
- Around line 69-70: The sentence "Certified operates a hosted CGS instance
(used by "create a group" flows on https://certified.app), and CGS is also
self-hostable..." needs a caveat that hosted "create a group" flows currently
land on a test PDS; add one concise sentence immediately after that sentence
stating that groups created via the hosted flow are placed on a test PDS (not
production) and include a link to the Certified services page for more details
so organizations don't assume production placement.

In `@pages/getting-started/testing-and-deployment.md`:
- Around line 18-19: The inline hostname `dev.certified.app` is currently
hyperlinked to the explainer page (/reference/certified-services), causing
click-target confusion; change the sentence so the hostname remains plain inline
code (`dev.certified.app`) and make only the explanatory text link to
/reference/certified-services (e.g., keep `dev.certified.app` unlinked and
ensure the phrase "See Certified PDSs" or the following explainer points to
/reference/certified-services).

In `@pages/reference/glossary.md`:
- Around line 74-76: The "Work Scopes" link under the "Work scope" section
points to the wrong route and will 404; update the markdown link target in
pages/reference/glossary.md (the "Work scope" heading / the link text "Work
Scopes") to use the registered docs route /core-concepts/cel-work-scopes instead
of /core-concepts/work-scopes so it matches lib/navigation.js.

---

Nitpick comments:
In `@components/LastUpdated.js`:
- Around line 15-17: The code currently uses
document.querySelector('.last-updated') and removes the first matching element
globally, which can delete unrelated DOM nodes; change the cleanup and selection
logic to target only the imperatively inserted node by using a unique data
marker (e.g., data-injected="last-updated") when creating the element and then
query/remove via that attribute (replace document.querySelector('.last-updated')
and the similar block at lines 23-25 with
document.querySelector('[data-injected="last-updated"]') and ensure the created
node (in the function that builds the .last-updated element) sets the same
data-injected attribute so only the injected element is removed.

In `@pages/reference/certified-services.md`:
- Around line 48-55: Update the "### Current test instances" table (and the
similar table around the `pds-eu-west4.test.certified.app` rows referenced at
lines ~70-71) to include a last-verified timestamp for volatile host/status
info: either add a new "Last verified" column to the table or append "— last
verified YYYY-MM-DD" to each Status cell for `epds1.test.certified.app`,
`pds1.test.certified.app`, and `pds-eu-west4.test.certified.app`; ensure the
text is succinct and uses ISO date format so readers can immediately see when
each status was checked.

In `@pages/roadmap.md`:
- Line 93: The sentence in pages/roadmap.md attributes the PDS instances to
“Hypercerts” but related docs use “Certified-operated” — update the wording for
consistency by replacing “Hypercerts” with “Certified-operated” (or the agreed
operator term used in the Certified services docs) in the sentence that
currently reads “Hypercerts also operates its own production, staging, and test
ePDS instances…” so the sentence consistently refers to the operator as
Certified-operated across docs.

In `@pages/tools/scaffold.md`:
- Line 99: The env table entry for NEXT_PUBLIC_PDS_URL is a fragment; update the
description text for the `NEXT_PUBLIC_PDS_URL` cell so it is a complete sentence
(e.g., "Target PDS for the standard handle-based OAuth sign-in flow. This can be
any AT Protocol PDS (Bluesky, a certified ePDS, or a self-hosted PDS)."),
ensuring the phrase `NEXT_PUBLIC_PDS_URL` remains the key identifier and the
explanation reads as a full sentence.
🪄 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: defaults

Review profile: CHILL

Plan: Pro

Run ID: 482c1e65-638a-47fc-9227-cc6405c98a18

📥 Commits

Reviewing files that changed from the base of the PR and between c1115c2 and 4904c0a.

📒 Files selected for processing (31)
  • components/LastUpdated.js
  • lib/lastUpdated.json
  • lib/navigation.js
  • pages/architecture/account-and-identity.md
  • pages/architecture/certified-group-service.md
  • pages/architecture/epds.md
  • pages/architecture/overview.md
  • pages/core-concepts/certified-identity.md
  • pages/getting-started/quickstart.md
  • pages/getting-started/testing-and-deployment.md
  • pages/reference/certified-services.md
  • pages/reference/glossary.md
  • pages/roadmap.md
  • pages/tools/hyperboards.md
  • pages/tools/hypercerts-cli.md
  • pages/tools/scaffold.md
  • public/raw/architecture/account-and-identity.md
  • public/raw/architecture/certified-group-service.md
  • public/raw/architecture/epds.md
  • public/raw/architecture/overview.md
  • public/raw/core-concepts/certified-identity.md
  • public/raw/getting-started/quickstart.md
  • public/raw/getting-started/testing-and-deployment.md
  • public/raw/reference/certified-services.md
  • public/raw/reference/glossary.md
  • public/raw/roadmap.md
  • public/raw/tools/hyperboards.md
  • public/raw/tools/hypercerts-cli.md
  • public/raw/tools/scaffold.md
  • public/search-index.json
  • public/sitemap.xml

- account-and-identity.md: add caveat that hosted CGS groups
  currently land on a test PDS, with link to Certified PDSs page.
- testing-and-deployment.md: unlink dev.certified.app hostname
  so it doesn't look like a clickable link to the docs page;
  keep the prose link to Certified PDSs.
- glossary.md: fix broken Work Scopes link — was pointing at
  /core-concepts/work-scopes (404), now /core-concepts/cel-work-scopes.
@aspiers aspiers merged commit c0f1638 into main Apr 12, 2026
4 checks passed
@aspiers aspiers deleted the adam/hyper-282-document-various-certified-infrastructure-services branch April 12, 2026 17:33
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.

2 participants