Skip to content

Add a new-engineer setup page alongside the onboarding guide - #1165

Draft
aram356 wants to merge 8 commits into
spec-docs-refreshfrom
docs/onboarding-new-engineer
Draft

aram356 wants to merge 8 commits into
spec-docs-refreshfrom
docs/onboarding-new-engineer

Conversation

@aram356

@aram356 aram356 commented Sep 14, 2026

Copy link
Copy Markdown
Collaborator

Summary

Draft, stacked on spec-docs-refresh (#1049), rebased onto 5c043a324. Adds one published VitePress page, docs/guide/onboarding-new-engineer.md ("New Engineer Setup"), and a sidebar entry beside the restored Onboarding page.

It is the practical companion to /guide/onboarding: day-one access requests, how to run the docs site, a local end-to-end proxy check, and the build traps that cost the most time. It links out to the onboarding guide rather than repeating it.

Relationship to #1049

#1049 restores docs/guide/onboarding.md as a published, sidebar-linked page covering the mental model, request trace, vocabulary, code map, first development loop, and triage map. That is the right home for all of it, and this page no longer duplicates any of it.

This page was originally broader. After the restore landed, it was cut back to only what the onboarding guide does not cover. Its request trace is also more accurate than the one this page previously carried — it names dispatch_fallback and the EdgeZero router, where this page had promoted the run_pre_route_filters helper to a top-level step — so that section was dropped rather than reconciled.

What the page covers

Request access — Google account for calendar and shared documents, GitHub account with write access, the project board, and a Fastly account with an API token. These are specific to a new hire rather than to working in the codebase, so they do not belong in the general onboarding guide. The section notes that none of them block getting started, since the Axum adapter runs locally with no edge account.

Reading these docs locallycd docs && npm ci && npm run dev, served at http://localhost:5173/trusted-server/. The base-path suffix is called out because the bare URL redirects rather than serving the home page. Also the pre-pull-request checks, and two authoring conventions: use the .tool-versions placeholders rather than literal version numbers, and keep Mermaid node labels short because a box sizes to its explicit line breaks but not to its own text wrapping.

Prove the first-party proxy locally — a local origin plus a signed fetch, which exercises signing and proxying end to end.

Build traps — a table of environment failures whose error messages do not name their own cause: bare cargo test linking against fastly symbols (and bare cargo check succeeding, giving a false green), a stale ts binary rejecting valid configuration, the Rust build requiring Node, ts needing the repository root, and the Viceroy pin.

Test plan

  • cd docs && npm run format — clean
  • cd docs && npm run lint — clean
  • cd docs && npm run build — succeeds; every internal link resolves, and the build fails on dead links
  • Verified in a browser against the dev server, not only the static build: the Mermaid div is empty until client-side hydration, so a passing build does not prove a diagram renders
  • Documented URL requested directly: http://localhost:5173/trusted-server/ returns 200, bare http://localhost:5173/ returns 302
  • Version placeholders resolve in the built HTML, with none left unresolved

Docs-only: no Rust, JavaScript, workflow, or configuration changes, so the adapter and test gates are unaffected.

Notes for review

  • Please confirm the project board URL. https://github.com/orgs/IABTechLab/projects/3 is carried over from the onboarding guide added in Onboarding documenation #183; it could not be verified here because the available token lacks the read:project scope, and other references in that document had gone stale.
  • The Google-account row deliberately says "ask your manager or onboarding contact" rather than naming a person, since contact lists rot and Add full-surface documentation refresh spec #1049 is moving that material to internal/.
  • If the maintainers would rather fold these four sections into /guide/onboarding as extra sections than carry a second sidebar entry, that is a reasonable call and this PR can be closed in favour of a suggestion on Add full-surface documentation refresh spec #1049.

🤖 Generated with Claude Code

@aram356 aram356 changed the title Add a published new-engineer onboarding page Add a published new-engineer onboarding page (DO NOT MERGE) Sep 14, 2026
@aram356 aram356 changed the title Add a published new-engineer onboarding page (DO NOT MERGE) Add a published new-engineer onboarding (DO NOT MERGE) Sep 14, 2026
@aram356

aram356 commented Sep 14, 2026

Copy link
Copy Markdown
Collaborator Author

Revised in ea597ab86 to reuse the existing onboarding material rather than writing fresh prose.

The guide added in #183 already covered much of this well, and the current 160-line page is what is left after three years of erosion. Recovered from the original:

  • the problem statement and what edge position buys
  • the architecture diagram
  • the first-party proxy before/after contrast
  • the key-concepts framing (proxying, identity, integrations, signing)
  • the local origin stub smoke test
  • the common-issues table

Corrected where it had drifted, rather than copying it forward:

Original Now
crates/js/lib crates/trusted-server-js/lib
Hardcoded Rust 1.91.1 {{RUST_VERSION}}, read from .tool-versions
"Synthetic ID" with a {{ip}} template Edge Cookie ID; that config no longer exists
impl Integration for ... example Description of the registration hooks — the trait shape changed
Single-runtime diagram All four adapters, plus the ad-stack gate
A real origin hostname example.com-style hosts, per the repository guideline

Common issues keeps only entries that still reproduce, and adds the three that cost a newcomer the most time today: bare cargo failing at the workspace root, ts needing reinstall after configuration-type changes, and Node being required for the Rust build.

Verified: npm run format, npm run lint, and npm run build pass. Both {{RUST_VERSION}} and {{VICEROY_VERSION}} resolve in the built HTML to Rust 1.95.0 and viceroy --version 0.17.0, with no unresolved placeholders — so the versions cannot drift from .tool-versions.

@aram356 aram356 changed the title Add a published new-engineer onboarding (DO NOT MERGE) Add a published onboarding page for new engineers Sep 14, 2026
@aram356 aram356 closed this Sep 14, 2026
aram356 and others added 7 commits September 14, 2026 13:57
The documentation refresh moves onboarding to docs/internal/ and adds
internal/** to srcExclude, so the page is no longer published. It was
also never in the sidebar, and neither README nor CONTRIBUTING links to
it, which leaves a new engineer without a discoverable entry point.

Add docs/guide/onboarding-new-engineer.md as a published page and link
it from the Introduction group so it is reachable from the site. It
covers what the reference guides assume rather than repeating them: what
the system does, the request path by function name, the ad-tech
vocabulary as used in this codebase, where the code lives, a first week,
and a symptom-to-page troubleshooting table.

The internal maintainer page is left untouched.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The page was written from scratch when the onboarding guide added in #183
already covered much of it. Recover that material instead: the problem
statement, what edge position buys, the architecture diagram, the
first-party proxy before/after, the key-concepts framing, the local
origin stub, and the common-issues table.

Correct what drifted since #183 rather than copying it forward:

- crates/js/lib is now crates/trusted-server-js/lib
- the pinned Rust version is read from .tool-versions through the
  existing {{RUST_VERSION}} substitution instead of being hardcoded
- synthetic ID is now the Edge Cookie ID, and the {{ip}} template
  config it described no longer exists
- the `impl Integration for` example no longer matches the registration
  builder, so it is replaced with a description of the hooks
- the architecture diagram gains the other three adapters and the
  ad-stack gate
- the origin stub uses example.com-style hosts, not a real domain

Common issues keeps only entries that still reproduce, and adds the
three that cost a newcomer the most time today.
A new engineer has no in-site instructions for running the docs. The
VitePress workflow lives in docs/README.md, which srcExclude keeps out of
the published site, so it is invisible to anyone browsing the guides.

Add a section covering npm ci and npm run dev on port 5173, how a page
maps to a Markdown file, and the format/lint/build checks to run before
opening a pull request, calling out that the build fails on dead internal
links. Note that tool versions come from .tool-versions through the
config substitution rather than being typed literally.
The dev server instructions pointed at http://localhost:5173, which
redirects instead of serving the home page. The site sets base to
/trusted-server for GitHub Pages, so the working URL is
http://localhost:5173/trusted-server/.

Verified against a running dev server: the bare root returns 302 and the
based path returns 200.
The ASCII box drawing is replaced with a Mermaid flowchart, matching the
style already used in architecture.md, edge-cookies.md, and
first-party-proxy.md. The site already configures withMermaid, so no
tooling change is needed.

Node labels are single words. Multi-line labels were tried first and
clipped: Mermaid sizes the box to the explicit break count but not to its
own text wrapping, so the last line of each middle node was cut off at
the border. The component detail moved to a table under the diagram,
which is easier to scan than cramped box text anyway.

Verified in a browser against the dev server rather than the static
build, since the mermaid div is empty until client-side hydration:
8 nodes render with SVG, every label legible, and the diagram adapts
correctly in both light and dark themes.
Rebased onto 5c043a3, which restores docs/guide/onboarding.md as a
published, sidebar-linked page. That page now covers the mental model,
request trace, vocabulary, code map, and triage map, so most of this page
duplicated it.

Its request trace is also more accurate than the one here was: it names
dispatch_fallback and the EdgeZero router, where this page had promoted
the run_pre_route_filters helper to a top-level step.

Keep only what the onboarding guide does not cover:

- how to run and edit the VitePress site, including the base-path URL,
  the pre-pull-request checks, and the version-placeholder and Mermaid
  conventions
- the local origin stub that proves the first-party proxy end to end
- a build-traps table for environment failures whose error messages do
  not name their own cause

Retitle to "New Engineer Setup" so the sidebar distinguishes it from
Onboarding, and link out to that page rather than restating it.
A new engineer needs a Google account for calendar and shared documents,
a GitHub account with write access to the repository, access to the
project board to find work, and a Fastly account with an API token to
deploy or inspect a service.

These are specific to a new hire rather than to working in the codebase,
so they belong here and not in the general onboarding guide. The section
also notes that none of them block getting started: the Axum adapter runs
locally with no edge account.

The repository and board URLs are carried over from the onboarding guide
added in #183.
@aram356 aram356 reopened this Sep 14, 2026
@aram356
aram356 force-pushed the docs/onboarding-new-engineer branch from ae33fdc to 3e00196 Compare September 14, 2026 21:00
@aram356 aram356 changed the title Add a published onboarding page for new engineers Add a new-engineer setup page alongside the onboarding guide Sep 14, 2026
@aram356 aram356 closed this Sep 14, 2026
@aram356 aram356 reopened this Sep 14, 2026
Point a new engineer at three issues scoped for a first contribution:
#1093 (root Markdown escapes the Prettier gate), #1063 (a bare
`ts dev proxy` prints an internal error report instead of help), and
#1144 (partner token placeholders are not rejected at startup).

Each is small, self-contained, and has a neighboring test to copy. The
section records the suggested order and the two prerequisites that are
not visible from the issues themselves: `ts dev proxy` is macOS-only, and
the #1093 fix touches the high-traffic agent guide.
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