5 years. 12 shipping artifacts. 8 basecamp modules. One platform. The capstone is not something you build at the end. It’s the single coherent system you’ve been building all along, one module at a time.

The bet of the program is that most engineers ship disconnected tools because that’s how programs are scoped, and most portfolios suffer for it. A senior engineer’s portfolio sells because it shows judgment across a system, not skill across a list. The capstone is the structural answer to that: every phase ships a piece, every piece plugs into the same growing platform, and by end of Arc 5 the platform stands on its own as basecamp v1.0.0, a single end-to-end artifact.

This document is the spine that holds it together. Each phase doc tells you what to ship from that phase. This doc tells you what the whole is becoming, and where each piece sits in it.


Why end-to-end beats per-tool

A typical learning portfolio after five years of self-study looks like this:

github.com/you/regex-cli         (Python tutorial output)
github.com/you/k8s-todo-app      (followed a K8s course)
github.com/you/llm-chatbot       (LLM demo)
github.com/you/feature-store     (some Medium article)
github.com/you/ml-pipeline-demo  (a capstone)
... 12 more repos ...

Each repo is a credible tutorial-shaped artifact. None of them compose. An interviewer scrolling that profile sees motion, not direction.

The capstone fixes this by making every project a load-bearing component of one larger system. The repos don’t replace each other; they connect. By end of Arc 5 a senior engineer reviewing your work doesn’t see fifteen tutorials; they see one platform built by an engineer who understands how the modules fit.

Disconnected portfolioIntegrated capstone
15 repos, each scoped to a tutorial12 repos, each a shipping artifact of one platform
“Built X with Y” demos“Composed X with Y to solve Z” systems
Reviewer’s question: can they go deep?Reviewer’s question: they already went deep, where?
Sells effortSells judgment
Junior-coded ceilingSenior-coded ceiling

The cost is real: a capstone requires upfront architectural coherence and stricter shipping discipline (“does this artifact earn its keep in the platform, or am I just adding clutter?”). The payoff is that the whole becomes more than the sum of the parts, which is the only portfolio shape that actually distinguishes a senior IC from a credential-collector.


What the capstone is

basecamp is the platform. The Arc 5 Capstone is basecamp v1.0.0: all 8 modules integration-tested and running end-to-end on the operator’s homelab (and also verified to run on laptop kind and small cloud K8s, per the “same shape everywhere” promise).

basecamp is K8s-native end to end. Every module is composed of CRD-driven controllers running on the same shared substrate. Pattern-first is /root’s bet; among tools-that-implement-the-pattern, K8s-native equivalents earn priority because they compose. See K8s-native ecosystem as meta-pattern for the philosophical anchor.

basecamp runs on your laptop, your homelab, or a small cloud, same manifests everywhere. Both are versioned in Git. Both are operated through GitOps (Flux) from Arc 3 onward. Both mirror, at homelab-and-small-team scale, the patterns frontier-lab platforms operate at planetary scale.

The bet: if the patterns are right, scale is just a number. A homelab K3s cluster running crag (data tier) + prism (LLM gateway) + loom (MCP fabric) + warden (AIOps) + vantage (UI), using the same control-loop / declarative / GitOps / data-fabric patterns as a hyperscale platform, is a real demonstration of pattern fluency. Scaling it up is staffing and budget. Pattern fluency is the thing that’s hard to fake.


The 8 basecamp modules

Read bottom-up. Each layer stands on the one below it:

                          vantage (unified UI)

   prism · loom · warden · beacon         ← AI + ops tier

                              crag                        ← data tier

                            ascent                        ← workload plane

                             forge                        ← infra plane (IaC)

   K8s + Flux + Cilium + Postgres/Redis + Prom/Grafana/Loki/Tempo + Vault + ESO
                                                         ← the substrate
ModuleWhat it isRepoYearIndustry parallel
forgeTerraform + Crossplane IaC modules: provisions the substrateabukix/forgeArc 3 P22Cloud IaC platforms (Terraform Cloud, Crossplane-based platforms)
ascentDeveloper CLI + Workload operator: the deploy path onto basecampabukix/ascentArc 3 P26Internal paved-road platforms (Netflix Titus, Uber Odin, Airbnb OneCard)
beaconOn-call triage dashboardabukix/beaconArc 3 P30Incident management surfaces (PagerDuty, Grafana OnCall, VictorOps)
cragData tier: Iceberg + Trino + MinIO + Spark + Flinkabukix/cragArc 4 P31Databricks lakehouse, Snowflake, Netflix’s Iceberg-based data tier
prismLLM gateway: routing, caching, observabilityabukix/prismArc 5 P43-46LiteLLM, Portkey, OpenAI’s internal gateway
loomMCP server fabric: tools for AI agentsabukix/loomArc 5 P48Anthropic’s MCP ecosystem, agent tool fabrics at frontier labs
wardenAIOps operator: agents that operate basecampabukix/wardenArc 5 P50Frontier-lab AIOps (self-driving infrastructure at Google, Meta, Uber)
vantageUnified UI dashboardabukix/vantageArc 5 CapstoneInternal platform product UIs (Backstage, Netflix’s internal portal)

Plus the umbrella:

Plus 2 Arc 1 standalone tools (not part of basecamp itself but part of the program’s shipping portfolio):

Plus one longitudinal artifact that runs alongside all 5 years and stays private:

The composition contract, module boundaries, upgrade contract, and design principles all live in basecamp/ARCHITECTURE.md. That doc is the canonical source; this doc tells you when things get built and why.


How the modules compose

Modules ship in dependency order. A module cannot ship until the layer below it is operational. You don’t get to ship prism (Arc 5 LLM gateway) before crag (Arc 4 data tier) is running, and you don’t get to ship crag before ascent (Arc 3 workload plane) exists. That’s not bureaucracy; it’s how the platform stays debuggable. When prism misbehaves in Arc 5, you can trust that ascent and the substrate are solid because you’ve been operating them for two years.

The dependency graph:

forge  ─────────► ascent  ─────────► crag
                    │                  │
                    │                  ▼
                    │              (needs data tier)
                    │                  │
                    ▼                  ▼
                 beacon              prism
                    │                  │
                    │                  ▼
                    │                loom
                    │                  │
                    ▼                  ▼
                    └──────►  warden ◄─┘


                             vantage
                             (needs all of the above)

Year-by-year build progression

Arc 1 (Software Engineering Foundations): no basecamp modules yet

No basecamp module this year: just the foundations every later module rests on. You ship two Arc 1 fluency CLIs (sift, pulse) and start the private ops-corpus discipline. basecamp doesn’t come alive until Arc 3, but the engineer who will build it gets built here.

Arc 2 (Backend Engineering): still no basecamp modules

Arc 2 ships backend services running locally in Docker. You can ship a real API end-to-end with auth, databases, tests, CI/CD. Services are private practice, not public shipping artifacts. The discipline (runbook-per-service, service-observability from the inside, idempotency-by-default) carries forward to Arc 3, where the same discipline shows up as basecamp module design.

Arc 3 (Infrastructure & Platform Engineering): forge + ascent + beacon ship

By end of Arc 3, basecamp v0.5.0 shipped. Milestones:

What basecamp can do at end-of-Arc 3: run workloads declaratively via ascent, provision cloud + K8s infra via forge, surface incidents via beacon, observe everything with the substrate’s Prometheus + Grafana + Loki + Tempo stack. It is a recognizable mini-platform, the kind a small team would actually run.

Arc 4 (Data Engineering & ML Foundations): crag ships

By end of Arc 4, basecamp v0.7.0 shipped. Milestones:

What basecamp can do at end-of-Arc 4: ingest events at high rate via Kafka, store them durably in Iceberg on MinIO, run analytical queries via Trino, run batch and streaming pipelines via Spark + Flink, train models on the substrate, serve inference via KServe. It is now a recognizable mini-data-platform with ML capability.

Arc 5 (AI Infrastructure): prism + loom + warden + vantage ship

By end of Arc 5, basecamp v1.0.0 shipped. Milestones:

What basecamp can do at end-of-Arc 5: the full unified data + ML + AI platform. Trains models on crag, serves them via prism, exposes tools to agents via loom, runs agents that operate the platform via warden, and presents all of it through vantage. Smaller scale than frontier labs, same patterns.


The graduation moment: basecamp v1.0.0

v1.0.0 is the milestone where basecamp is:

Before v1.0.0, basecamp is a build-in-public project. After v1.0.0, it commits to backwards-compatibility and a real release cadence per basecamp/RELEASING.md.

Arc 5 Capstone is paired with the Pattern Paper, the synthesis writing artifact. 3,500-5,000 words. Due 4 weeks after the Arc 5 Final Exam. Audience: Staff/Principal-level hiring managers. Reviewed by 2+ external readers before publishing.


What each shipping artifact is, briefly

Short blurbs. Each links to its planned repo.

Each one earns its keep: it’s not a portfolio tile, it’s a load-bearing component that the next module above relies on.


What the public site looks like at end of Arc 5

The single artifact a reviewer opens. Layout:

public-site/
├── /                        ← landing: "The build guide for basecamp"
├── /program/                ← the curriculum (this site's program section)
├── /basecamp/               ← LIVE: the platform itself, embedded via vantage
│     ├── Module status     ← (live K8s state, rendered by vantage)
│     ├── Service map       ← what's running, what depends on what
│     ├── Agent activity    ← warden + loom traces
│     └── Recent activity   ← last 30 days of deploys, alerts, incidents
├── /patterns/               ← Pattern Library: ~70 patterns, ~50+ DEEP
├── /projects/               ← 12 shipping artifact plans, READMEs, repo links
├── /blog/                   ← ~250 posts (Sunday weekly logs distilled)
│     └── /pattern-paper/    ← the synthesis essay (Arc 5 capstone writing)
├── /talks/                  ← conference talks recorded (1-2 per year, 5+ total)
└── /capstone/               ← THIS DOC: the integrated arc, where reviewers start

The interview pitch becomes one sentence:

“I built an open-source unified data + ML + AI platform from the kernel up: 8 modules composed on a K8s substrate, running on my homelab, verified to run on laptop and cloud. Same patterns as the platforms I’d be operating at scale. Here’s the URL. The blog explains the arc that got me here.”

That sentence is the difference between a credential-collector and a senior IC. The capstone is what makes it true.


Pattern depth across the capstone

By end of Arc 5, ~50 of ~70 Pattern Library entries should be DEEP, meaning you’ve operated something dependent on the pattern for 6+ months. The capstone is the operating ground that forces the patterns to deepen.

Pattern categoryModule(s) that operate itDEEP target
Foundations (control-loops, declarative-state, idempotence, backpressure)ascent, crag, warden (all operator-shaped)All 5 DEEP by Arc 3 end
Software architecture (DDD, clean, hexagonal, repository)Arc 1-Arc 2 services + all module internalsDEEP by Arc 2 end
Storage and data (WAL, LSM-vs-Btree, OLTP-vs-OLAP, replication)Substrate Postgres + crag IcebergAll DEEP by Arc 4 end
Distributed systems (consensus, quorums, gossip, sharding)Substrate etcd + crag KafkaMost DEEP by Arc 3 end
Networking (routing, load-balancing, service-discovery, network-policy, mesh)Substrate Cilium + ascent Ingress + basecamp mTLSAll DEEP by Arc 3 end
Security-and-policy (RBAC, capability-tokens, secret-rotation, network-policy)Substrate Vault + ascent RBACAll DEEP by Arc 3 end
Infrastructure-and-platform (declarative, GitOps, paved-road, service-catalog, IaC)forge, ascent, basecamp GitOpsAll DEEP by Arc 3 end
Observability-and-ops (SLO/SLI, tracing, logging, alerting)Substrate Prom/Grafana/Loki/Tempo + beaconDEEP by Arc 3 end
Data engineering (Lakehouse, schema-evolution, streaming-vs-batch, CDC)cragDEEP by Arc 4 end
ML systems (feature-store, model-serving, gateways, RAG, agents, MCP, AIOps)crag, prism, loom, wardenMost DEEP by Arc 5 end

The Pattern Library by end of Arc 5 has ~70 entries with ~50 at DEEP: the program’s structural target.


Anti-patterns

Anti-patternWhy
Perfecting forge before moving to ascentforge will keep evolving as crag and the AI modules stress the substrate. Stop polishing; start composing.
Adding a 9th basecamp module “for the portfolio” mid-programEvery new module dilutes the composition contract. The 8 listed here are the 8. Feature requests get evaluated against basecamp’s scope boundaries.
Skipping the private ops corpus “until things stabilize”The corpus is the stabilization. Skip a month and the dataset for warden (Arc 5 AIOps) degrades forever.
Treating basecamp as separate from the 8 module reposThe modules ARE basecamp. basecamp is the umbrella that composes them; you don’t get a working basecamp without shipping the modules.
Building vantage early “for the screenshots”vantage is Arc 5 Capstone for a reason: it needs the underlying modules to render anything meaningful. Premature UI is a fake demo.
Cargo-culting hyperscale specificsMirror the patterns, not the org-specific implementation details. Your prism doesn’t need any specific hyperscale gateway’s API surface; it needs the same caching + routing + observability shape.
Building basecamp for hyperscalebasecamp explicitly targets individual operators and small teams. If you’re designing for petabyte multi-region workloads, you’re outside basecamp’s scope. Use Snowflake / Databricks / Google Cloud for that.

What to do next

If you’re starting Arc 1: bookmark this doc and re-read it at the start of every phase. Each phase doc tells you what to ship; this doc tells you why and where it fits.

If you’re mid-program: read your current phase’s “What ships from this phase” section against the module table above. The two should agree. If they drift, the phase doc is wrong (flag it) or your scope is creeping (cut it).

If you’re approaching Arc 5: start writing the elevator pitch above as a 60-second video on the public site’s /talks/ page. The pitch is real prep, not vanity.


→ Back to: The Master Plan · Arc 1 · basecamp/ARCHITECTURE.md