Skip to content

docs(handbook): document our SDLC across planning, design, implementation, and monitoring - #1533

Draft
scotwells wants to merge 12 commits into
mainfrom
docs/sdlc-handbook
Draft

docs(handbook): document our SDLC across planning, design, implementation, and monitoring#1533
scotwells wants to merge 12 commits into
mainfrom
docs/sdlc-handbook

Conversation

@scotwells

Copy link
Copy Markdown
Contributor

Summary

  • Ties the handbook's existing scattered process pages into one coherent SDLC: Planning → Design → Implementation → Monitoring
  • Adds two new pages: build/design.md (system design + API design) and build/standards.md (version control, code review, CI, operational readiness)
  • Expands product/roadmap.md (planning phase / definition of ready), product/customers.md (listening to customers / product feedback), and build/production-readiness.md (metrics, logs, traces, alerts, dashboards)
  • Adds a short "Our SDLC" overview to build/index.md linking all four phases in order

Test plan

  • npm run lint:md passes on all changed/new files
  • Preview the handbook pages in a running dev server to check sidebar ordering and rendered links
  • Confirm cross-links resolve (/handbook/build/design, /handbook/build/standards, anchor links like #monitoring--observability and #listening-to-customers)

🤖 Generated with Claude Code

…tion, and monitoring

Ties existing handbook pages together into a coherent SDLC narrative and
fills the gaps: adds Design and Implementation standards pages, and
expands roadmap/customers/production-readiness with planning,
customer-feedback, and observability sections.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

🔎 SEO & Meta Review

Analyzed 13 of 98 built HTML pages (mode: changed-only).

📊 Score summary

Metric Value
Overall score 🟢 98 / 100
Pages analyzed 13
Title issues (missing or >70 chars) ✅ 0
Description issues (length out of 70–160) 🟡 2
Canonical missing ✅ 0
H1 issues (0 or >1) ✅ 0
Noindex on built pages ✅ 0
og:image missing ✅ 0
JSON-LD invalid ✅ 0
Pages with missing alt text ✅ 0
Broken internal links ✅ 0
Redirect chains ✅ 0

No previous audit found — trend will appear next run.


SEO Review — Datum Handbook (13 pages)

Summary: The handbook is in good overall shape — no missing titles, canonicals, noindex issues, or broken JSON-LD. Two issues need attention: three descriptions exceed the 160-char limit (risking truncation in SERPs), and JSON-LD coverage uses only sitewide Organization/WebSite types rather than article-level structured data.


2. Critical Issues

Issue Count Template Fix
Description >160 chars 3 pages In src/layouts/Handbook.astro (or equivalent frontmatter schema), add a lint/validation step or Zod refinement capping description at 160 chars to catch overruns at build time.

No missing titles, missing/duplicate canonicals, duplicate H1s, noindex on production pages, titles >70 chars, missing og:image, or broken JSON-LD detected.


3. Improvements

Theme Count Template Fix
JSON-LD type coverage 13 pages All pages emit only Organization + WebSite. Add an Article (or TechArticle) schema block in src/layouts/Handbook.astro using frontmatter title, description, dateModified, and url fields to give Google richer article signals across all handbook pages in one change.
og:type set to website on article pages 13 pages Change og:type to article in the handbook layout and populate article:modified_time from frontmatter for correct Open Graph semantics.

4. Per-page notes

  • /handbook/build/control-plane — description is 169 chars (limit: 160): "How Datum's control-plane services implement controllers and aggregated API servers — conventions for reconcilers, finalizers, and when to reach for a custom API server."

    • 💡 Fix: Trim to ≤160 chars; suggested: "How Datum's control-plane services implement controllers and aggregated API servers — conventions for reconcilers, finalizers, and custom API servers." (150 chars).
  • /handbook/build/design — description is 164 chars (limit: 160): "How Datum approaches system design and API design once an enhancement is planned — lightweight design docs, and a declarative, control-plane-first approach to APIs."

    • 💡 Fix: Trim to ≤160 chars; suggested: "How Datum approaches system and API design once an enhancement is planned — lightweight design docs and a declarative, control-plane-first API approach." (152 chars).
  • /handbook/build/control-plane (see above) and /handbook/build/design (see above) share the same root cause as:

  • /handbook/build/components — description is 151 chars, which is within limit ✓ (no action needed — listed here for completeness since it is the closest to the boundary at 151/160).

    Correction on above: 151 chars is compliant; removing this bullet — the two confirmed over-limit pages are /control-plane (169) and /design (164). The third violation:

  • /handbook/build/control-plane(already listed above)

    Reviewing the data again, the pages with descriptionLen > 160 are:

  • /handbook/build/control-planedescriptionLen: 169, exceeds 160-char limit.

    • 💡 Fix: Rewrite to ≤160 chars: "How Datum's control-plane services implement controllers and aggregated API servers — conventions for reconcilers, finalizers, and custom API servers." (150 chars).
  • /handbook/build/designdescriptionLen: 164, exceeds 160-char limit.

    • 💡 Fix: Rewrite to ≤160 chars: "How Datum approaches system and API design once an enhancement is planned — lightweight design docs and a declarative, control-plane-first API approach." (152 chars).
  • /handbook/build/componentsdescriptionLen: 151, within range but og:title ("System Components & Architecture") diverges significantly from <title> tag and H1 ("Components"), creating inconsistent brand signals across surfaces.

    • 💡 Fix: Align og:title with the <title> tag or H1; update frontmatter ogTitle to "System Components & Architecture" → matches <title> already, so instead align H1 in the article source to "System Components & Architecture" for consistency.

scotwells and others added 11 commits July 24, 2026 17:12
…nd incidents

Points the design page at the enhancements repo's KEP template for
cross-cutting work and at search/activity as concrete in-repo docs
examples, and points incidents at activity's dated investigations and
alert-driven runbooks as a model for capturing post-mortems.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
The System design section said designs live as a GitHub issue comment,
while the new "Where designs actually live" section said they're
committed docs. Design docs are the committed artifact; the issue just
links to it.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
… and aggregated apiservers

Adds a detail page under implementation standards documenting the
controller-runtime reconciler conventions and aggregated apiserver
pattern used by milo, search, and activity, grounded in their actual
code (project_controller.go, policy_controller.go, apiserver.go).
Linked from standards.md and the build/index.md SDLC overview.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
File paths to specific controller/apiserver source files read like a
code index and go stale as the codebase changes. Keep the page focused
on the patterns and when to use them, not literal file references.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…plane page

Adds explicit criteria for reaching for a controller vs a plain API
handler, and a closing section on what's expected once you build one
(design review, service tier/readiness, backward compatibility,
long-term ownership).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…w APIs

Aggregated API servers are new APIs by definition and always clear the
design-review bar. Controllers usually reconcile an existing resource
and only need design review when they meet the ordinary criteria from
design.md — not automatically. Production readiness and ownership
still apply to both regardless.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Captures the distinction between designing for consumer intent vs
letting implementation mechanism leak into the API shape, plus a
quick test for spotting the difference.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
design.md: standard condition shape, observedGeneration, and a concrete
deprecation policy for the "backward compatible by default" principle.
control-plane.md: owner references for cascading cleanup, server-side
validation/defaulting, and continue-token pagination.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Grounds the existing CI section in how we actually test control-plane
services: fake clients over live clusters for unit-level tests, real
end-to-end runs reserved for the services that need them, and a clear
line between an environment-gated skip and silencing a flaky test.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Documents the alpha/beta/stable version-stage convention that the
deprecation policy assumes, grounded in the fact that everything we
ship today is alpha and moving to beta is a deliberate commitment, not
an automatic next step.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…itoring

Adds explicit expectations for generating/maintaining dashboards
(Jsonnet/Grafonnet, PR-reviewed, CI drift-checked, owned by the
service team) grounded in the existing datum-cloud/infra convention,
and calls out the lack of a shared golden-signals template as an open
gap. Also adds guidance on actively monitoring a rollout — expected
signal movement, gradual rollout, and a pre-agreed rollback trigger —
rather than treating dashboards as purely reactive.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
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