Skip to content

Capstone C2 — a real contribution

C1 proved you can extend a stable seam. C2 is the real thing: a genuine, potentially-mergeable contribution to Clinker, scoped and planned the way the project actually works, under supervision. Unlike C1, it is not pinned to a fixed task. A specific issue would go stale as the codebase moves; instead this capstone specifies the selection criteria and the process, and you pick a live piece of work that fits, at graduation time.

What this proves (graduation outcomes 9–13): that you can review against the project’s methods, plan and deliver a substantial supervised feature, explain the architectural decisions and trade-offs it touches, spot boundary/invariant threats, and write a design plan that preserves or deliberately revises a decision.

  • Choose a bounded, real, reviewable contribution from the live backlog or open-questions register, and reject the out-of-scope shapes (XL, redesign, ungroundable behavior).
  • Ground the work first: before writing any code, write a Readiness-Review result that states current-vs-desired behavior and the source/tests/docs you inspected.
  • Route an unresolved choice (a new dependency, a public-API or schema change, an ungroundable behavior) to a Decision Gate instead of deciding it silently in a diff.
  • Deliver the change on a branch with tests at the right boundary, then self-review the diff against the project’s checklist and run the full gauntlet to green.
  • Explain which invariant or boundary the change touches and why it’s safe. This is the heart of a review-ready design plan.

This capstone aggregates the whole Engine Track: the gauntlet (review & the gauntlet), error/DLQ behavior (error handling), bounded-memory reasoning (bounded memory in action), and the record-trace habit (trace a record) all reappear here as the methods you ground, test, and review against. There’s no new machinery, just the track working as one supervised contribution.

New terms in this lesson (each is also used in the process steps below):

A good C2 is bounded, real, and reviewable. Two sources qualify:

1. An agent-ready Agent Task. This is a tracked issue that already meets the project’s implementability bar:

clinker ·GITHUB_ISSUE_AGENT_WORKFLOW.md ·Agent Task doc @19acdcb4
An agent-ready issue must have:
- size `agent-size:S`, `agent-size:M`, or carefully bounded `agent-size:L`
- observable acceptance criteria
- ...
`agent-size:XL` is not implementable. Split it or convert it into a milestone.

2. An item from the open-questions register. docs/ai/80_OPEN_QUESTIONS.md tracks unresolved questions, several of which are bounded, real contributions:

clinker ·80_OPEN_QUESTIONS.md doc @19acdcb4
### 6. Should user-facing docs be updated to the unified `nodes:` shape ...
### 11. Are parsed CLI flags that appear weakly wired intentional placeholders
or documentation drift?
### 12. Should `cxl-cli` docs, manifest description, and CLI behavior be aligned?

Good C2 shapes: a documentation-modernization to the unified nodes: shape, resolving a weakly-wired CLI flag, aligning cxl-cli behavior with its docs, or a new builtin/format that’s genuinely wanted (a real version of C1). Avoid anything agent-size:XL, anything that needs a redesign, and anything whose intended behavior you cannot ground in existing source, tests, or docs. Those are not C2-shaped.

C2 is assessed on how you work, not just the diff. Follow the project’s real sequence.

Ground it first (Readiness Review). Before writing code, produce a grounding result: what you understand the work to be, the source/tests/docs you inspected, current vs desired behavior, and your recommended route. If the issue is vague, turning it into agent-ready work is the first deliverable.

Gate any decision. If delivering the change requires an unresolved choice, stop and open a Decision Gate before implementing:

clinker ·GITHUB_ISSUE_AGENT_WORKFLOW.md ·Decision Gate doc @19acdcb4
Create or link a Decision Gate for:
- new dependency or cargo-deny exception
- public API behavior
- data model, schema, storage, or migration behavior
- auth, security, privacy, or credentials
- cross-crate or cross-service architecture boundaries
- any behavior the agent cannot validate from existing docs, tests, or source

Implement, then review against the checklist. Build the change with tests at the right boundary, then self-review your own diff against the project’s checklist before asking for a merge:

clinker ·GITHUB_ISSUE_AGENT_WORKFLOW.md ·Review doc @19acdcb4
- PR maps to exactly one issue or one coherent sub-issue.
- No hidden public API, schema, dependency, auth, security, memory, or architecture change.
- Acceptance criteria are satisfied.
- Tests were not weakened to pass.
- Verification commands were run or skipped with a reason.
- Follow-up work is captured as issues, not hidden TODO drift.
  1. A grounding result / design plan, a short document: the work as you understand it, the evidence you inspected, the chosen approach, and which invariant(s) the change touches and why it’s safe (or, if it revises a decision, a Decision Gate that records the choice). This is the heart of outcomes 11 and 13.
  2. The implementation, on a branch, with tests at the right boundary, following the conventions of the code it sits next to.
  3. A PR description with a definition-of-done summary: behavior changed, files/crates touched, acceptance criteria status, verification run, follow-ups filed.
  4. A green full gauntlet: fmt, both clippy passes, and cargo test --workspace (the full CI parity, review & the gauntlet).

C2 is supervised: a maintainer (or mentor) reviews the grounding result before you implement, and the PR before it would merge. The capstone’s bar is to “produce a contribution a maintainer can review and reason about,” with the design plan and review-readiness front and center, rather than to “get it merged.” Merging is the project’s call, not the rubric’s.

DimensionBelowMeetsExceeds
Scoping & groundingstarts coding from a vague issuegrounds the work first; scope is bounded and clearturns a vague issue into a clean agent-ready spec
Architectural fitcrosses a boundary unknowinglyrespects layering + invariants; gates real decisionsarticulates which decision/invariant it touches and why it’s safe
Tests & verificationno tests / weakened teststests at the right boundary; full gauntlet greenregression + property/insta tests where apt; cross-platform reasoning
Review & conventionsignores the checklistfollows the issue/PR + DoD conventions; clean self-reviewa design plan + DoD summary a reviewer can approve with minimal back-and-forth
Decision handlingsilently decides an open questionroutes unresolved choices to a Decision Gaterecords the decision with options, evidence, and consequences

That’s graduation. From “build and run Clinker” to a real, boundary-respecting contribution planned and reviewed the way the project works: you’ve read the engine, extended it, and learned to change it safely.