The Grading Contract
Exactly how the 50 / 25 / 15 / 10 split is earned, the full final rubric, the submission checklist, the pace table, and the AI-use policy
Appendix C — The Grading Contract
“A false balance is an abomination to the LORD, but a just weight is his delight.” — Proverbs 11:1 (ESV)
This is the contract. Everything in it is published in Week 1 and none of it changes in Week 16.
Most capstone courses keep the grading vague and then surprise the student in the last two weeks. This one does the opposite: the rubric that will be applied to your repository on the last Thursday of the semester is printed below, line by line, with the points, the evidence each line wants, and the week the evidence gets made. There are no hidden criteria. There is no curve for effort. There is a stack of artifacts, and either they exist and hold up or they do not.
Read this appendix three times. Week 1, so you know what you are building toward. Week 8, at the halfway audit, when you find out whether you are on pace. Week 15, when you self-score before a grader does. Between those, keep it open next to the pace table in C.8.
Coach’s Note — A published rubric is a gift and a trap. The gift: you can never lose points for something you were not told. The trap: you can never claim you did not know. From here on, every point you fail to earn is a point you chose to leave on the table. That is the deal professionals work under too — the acceptance criteria are in the contract, and nobody reads them aloud to you on the last day.
C.1 — The contract: 50 / 25 / 15 / 10
| Component | Weight | What it is | When it is assessed |
|---|---|---|---|
| Final implementation + documentation | 50% | The Week-16 repository submission: working code, requirements specification, technical specification, decision records, test suite and results, defect log, hours log, README, runbook, handoff guide, change log, ai-usage log, license, and a tagged release | Once, at the tag you submit in Week 16 |
| Fourteen weekly milestones | 25% | The weekly deliverables of Weeks 1–7 and 9–15, 100 points each. They are not homework stacked beside the final — they are the final, produced one week at a time | Weekly, due Sunday 11:59 pm |
| 30-minute presentation | 10% | The live technical case for your project, delivered in your Week-16 slot, built in Week 15 | Once, live, scored in the room |
| Sixteen weekly quizzes + the checkpoint | 15% | One 10-item quiz per week, auto-graded, drawn from a pool, plus the 30-point Design Review Checkpoint in Week 8 | Weekly, Weeks 1 through 16 |
Four components. They sum to 100 percent. Nothing else is weighted.
Your course grade is the weighted average of the four percentages:
course grade = 0.50 × (final %) + 0.25 × (milestone average %)
+ 0.15 × (quiz average %) + 0.10 × (presentation %)
Three worked examples, so the arithmetic is not a mystery:
| Student | Final | Milestones | Quizzes | Presentation | Course grade |
|---|---|---|---|---|---|
| Kept pace all semester; complete package, honest gaps | 92 | 94 | 94 | 88 | 92.4 |
| Strong builder, no documents; the software runs, almost nothing else exists | 46 | 52 | 82 | 74 | 55.7 |
| Modest software, complete evidence; two Musts cut through change control, everything documented | 84 | 88 | 90 | 85 | 86.0 |
Look hard at rows two and three. The student whose software is better finishes thirty points lower, and that is not a quirk of the rubric — it is the rubric working exactly as designed. Read C.3 and you will see why: only 18 of the final’s 100 points are the software running. The other 82 are the evidence that it is specified, verified, documented, and transferable to somebody who is not you.
C.2 — Why the fourteen milestones carry a quarter of the grade
The fourteen weekly milestones are 25 percent of your grade. There is a gradebook line called “Milestone 6,” it is worth 100 points, and it is due on a Sunday. Weeks 1–7 and 9–15 each ship one, fourteen in all. The Week-8 Design Review lab has no milestone of its own; that week’s evidence is the review package and the two quizzes.
That quarter is the smaller half of what a milestone is worth to you. Read on with the arithmetic attached.
The milestones are the final deliverable, produced one week at a time. The Week-16 rubric awards points for exactly the artifacts the milestones produce — the requirements specification is Milestone 3 and 4, the ADRs are Milestone 5, the test suite is Milestone 11, the runbook and handoff guide are Milestones 13 and 14. Every one of the twelve rubric lines in C.3 is the output of a week you have already been told to do the work in.
So skipping a milestone costs you twice. It costs you the milestone’s own hundred points now — about 1.8 points of your course grade, in the week you skipped it. And it costs you the identical points a second time, deferred to a week that has no hours left in it — a week that already contains a rubric self-audit, a clean-machine test with a real human, a secret sweep, a release, and a thirty-minute talk. It also costs you every downstream week that needed that milestone as an input, which is most of them.
Here is the whole map, so nobody can claim it was unclear:
| Week | Milestone | What it produces | Which final-rubric line it feeds |
|---|---|---|---|
| 1 | M1 — Project Charter & Engineering System | repository, docs/charter.md, hours log, docs/ai-usage.md policy, README v0 | hours log · AI usage log · README |
| 2 | M2 — Idea Portfolio & Scoping Decision | docs/scoping-decision.md, candidate canvases, one user interview | requirements · scope defense in the talk |
| 3 | M3 — Software Requirements Specification v1 | functional requirements with IDs, acceptance criteria, MoSCoW | requirements specification |
| 4 | M4 — Non-Functional Requirements, Constraints & DoD | NFRs with thresholds, traceability matrix, definition of done | requirements specification · test traceability |
| 5 | M5 — Technology Evaluation & ADRs | docs/adr/, spike write-ups, LICENSE | architecture decision records · license |
| 6 | M6 — Technical Specification | diagrams, component responsibilities, interface contracts, data model | technical specification |
| 7 | M7 — Work Breakdown, Schedule & Risk Register | estimates, schedule with gates, risk register, scope decision | hours log analysis · retrospective evidence |
| 8 | (no milestone) Design Review lab | reviewed and baselined specification, defect dispositions, change control | requirements · technical specification · defect log |
| 9 | M9 — Walking Skeleton & CI | end-to-end slice, CI, .env.example, setup script | working software · README/reproducibility |
| 10 | M10 — Core Increment & Demo | merged slices with tests, demo script | working software |
| 11 | M11 — Test Plan, Test Suite & Defect Log | docs/test-plan.md, tests/, results, defect log | test plan and results · defect log |
| 12 | M12 — Integrated Release Candidate & Change Log | integration, measured performance, security pass, CHANGELOG.md, RC tag | working software · change log and tag |
| 13 | M13 — Documentation Set & Clean-Machine Test | README rewrite, architecture overview, runbook, onboarding, first clean-machine run | README · runbook and handoff |
| 14 | M14 — Deployable Release v1.0 & Handoff Package | one setup path, deployment, rehearsed rollback, v1.0.0, handoff guide | README · runbook and handoff · change log, tag, license |
| 15 | M15 — Presentation Deck, Demo Script & Rehearsal | deck, demo script, fallback recording, evidence slides | the 10% presentation · documentation completeness |
| 16 | M16 — The Final Submission | the frozen, audited, tagged package + retrospective | all of it — this is the 50% |
Milestones are graded twice, and that is deliberate. Each ships its own 100-point rubric, and that score is both a real quarter of your grade and a pace signal you get every single week. Then the same artifact is read again in Week 16 as part of the package. This is not double jeopardy; it is the only structure that makes a sixteen-week project survivable. A thin specification costs you a little in Week 3, while fixing it is cheap — instead of costing you everything in Week 16, when it is not.
If your instructor’s syllabus weights the milestones differently, their syllabus governs and they will say so; this appendix is the book’s contract, not an override of your institution.
What about the milestones’ Medium and Hard tiers? They are stretch work, and a milestone score is capped at 100 — tier work is acknowledged in your feedback but does not push a milestone above full marks. That is on purpose: the quarter is a quarter. What tier work actually buys you is far more valuable than a few tenths of a point. A Hard-tier memo written in Week 5 is not extra credit floating in a gradebook; it is the ADR evidence that earns the decision-records line in Week 16, when the points are real. The extra credit that moves your recorded grade is on the final itself: see C.6.
Coach’s Note — Students who fail this course almost never fail it in Week 16. They fail it in Weeks 3 through 6, quietly, by treating a weekly milestone as an optional one — and then they spend the last month building software with no specification to build against, no tests to prove it, and nothing written down. The milestone schedule is not a set of assignments stacked next to the final. It is the final, disassembled into fourteen pieces small enough to carry.
C.3 — The final: 50 percent
The full specification of what to submit ships with Chapter 16 as Milestone 16. This section is the same rubric, on one page, with the evidence each line wants.
The twelve graded artifacts
One repository, one tag. Twelve artifacts, at these paths or at paths obviously equivalent to them and indexed in the README.
| # | Artifact | Repository path | Produced in |
|---|---|---|---|
| 1 | Working software | src/ (or your stack’s equivalent) | M9, M10, M12 |
| 2 | Requirements specification | docs/requirements.md | M3, M4 |
| 3 | Technical specification | docs/architecture.md | M6 |
| 4 | Architecture decision records | docs/adr/ | M5 onward |
| 5 | Test plan, suite, and results | docs/test-plan.md, tests/, docs/test-results.md | M11 |
| 6 | Defect log | docs/defect-log.md | M11 onward |
| 7 | README | README.md | M13 |
| 8 | Runbook and handoff guide | docs/runbook.md, docs/handoff.md | M13, M14 |
| 9 | Hours log | docs/hours-log.csv | M1 onward |
| 10 | Change log, tag, license | CHANGELOG.md, LICENSE | M12, M14 |
| 11 | AI usage log | docs/ai-usage.md | every week |
| 12 | Retrospective | docs/retrospective.md | Week 16 |
The rubric (out of 100)
| Criterion | Points |
|---|---|
| Working software: the tagged release runs from a clean clone and delivers every Must requirement | 18 |
| Requirements specification: IDs, priorities, testable acceptance criteria, traceability to tests | 12 |
| Test plan, test suite, and recorded results traced to requirement IDs | 12 |
| Technical specification that describes the system as built, not as planned in Week 6 | 10 |
| README that gets a stranger running, proven by a recorded clean-machine test | 10 |
| Runbook and handoff guide a successor could work from on day one | 8 |
| Hours log for all sixteen weeks, with the estimate-versus-actual analysis | 6 |
| Architecture decision records: at least five, with options and consequences | 5 |
| Defect log: real defects, triaged by severity and priority, current at the tag | 5 |
| Change log entry, annotated release tag, and a license that matches the README | 5 |
| AI usage log and the signed integrity statement | 5 |
| Retrospective: the same 240 hours, spent better, with evidence | 4 |
| Total | 100 |
Two gates, scored before the rubric is read
Fail either and the rubric is not applied until it is fixed:
- Access. The grader can open the link. Verify it from a logged-out private browser window. If the repository is private, the invitation must be accepted, not merely sent.
- No live credential anywhere in the working tree or the history. If the sweep finds one, rotate it first, then clean, then resubmit. A pushed key is a compromised key.
Where the points actually are
Only 18 of 100 are the software running. The other 82 are the evidence that the software is specified, verified, documented, and transferable. Do not spend your last week on features. Spend it on the eighty-two.
C.4 — What evidence earns each line
A grader does not score intentions. Each line below says what full marks looks like and the cheapest way students lose it.
Working software — 18. Full marks: a fresh clone of the submitted tag runs, and every Must-priority requirement either demonstrably works or appears in the defect log as a rated, disclosed open item. Lost by: a repository that only runs on the author’s laptop; a Must silently missing with no defect entry — the omission costs less than the concealment.
Requirements specification — 12. Full marks: every requirement has a unique ID, a MoSCoW priority, and acceptance criteria a stranger could check without asking you a question; the traceability runs forward to tests and backward from tests to IDs. Lost by: “the system shall be user-friendly,” and by a specification frozen in Week 4 that no longer describes what shipped. Amend it through change control; do not let it rot.
Test plan, suite, and recorded results — 12. Full marks: a plan naming levels, environment, and exit criteria; automated tests that actually run; a recorded execution at the submitted tag; every test traceable to a requirement ID. Lost by: tests that pass because they assert nothing, and a results file dated three weeks before the tag.
Technical specification — 10. Full marks: context and component views, module responsibilities, interface contracts, the data model, and the critical-path flows — as built. Where the build diverged from the Week-6 design, an ADR says when and why. Lost by: submitting the Week-6 document unchanged. A grader compares it to the code; drift you did not document reads as drift you did not notice.
README — 10. Full marks: what it is, who it is for, prerequisites, install, run, test, configure, a document index, license, and status — proven by the recorded clean-machine test in C.5. Lost by: a README that was never executed by a human being who is not you.
Runbook and handoff guide — 8. Full marks: how to operate it, what normal looks like, what to do when it breaks, how to back up and roll back — plus a handoff document that tells a successor what to do on day one. Lost by: writing them for yourself. The reader is a competent stranger with no context and no way to ask.
Hours log — 6. Full marks: all sixteen weeks, session-level, with the estimate-versus-actual analysis that Week 7’s plan was built to be checked against. Lost by: backfilling. A log of round numbers on tidy dates is visible from across the room, and it is worth less than an ugly honest one.
Architecture decision records — 5. Full marks: at least five, each with context, the options considered, the decision, and the consequences you accepted. Lost by: records that list only the option you picked. A decision with no rejected alternative is not a decision; it is a default.
Defect log — 5. Full marks: real defects found by real testing, with severity, priority, status, and resolution, current as of the tag, including the ones still open. Lost by: an empty log. Nobody believes it, and it costs you the line plus the grader’s trust in every other line.
Change log, tag, license — 5. Full marks: a dated CHANGELOG.md entry for the submitted version, an annotated tag pushed to the remote, and a real license whose SPDX identifier matches what the README claims. Lost by: a lightweight tag, a moved tag, or a README that says MIT next to a file that says something else.
AI usage log and integrity statement — 5. Full marks: specific entries kept all semester, headed by the signed statement in C.12. Graded on specificity, not abstinence. Lost by: vagueness. See C.11.
Retrospective — 4. Full marks: numbers pulled from your own logs, one decision you would remake, and how you would spend the same 240 hours differently. Lost by: feelings with no figures.
C.5 — The clean-machine acceptance test
This is a required, recorded part of the README line, and it is the hardest single standard in the course.
Setup. A person who is not you. A machine that is not yours. Your README, and nothing else. The exact tag you intend to submit.
The rule: you do not speak. Not a hint, not a correction, not a sympathetic noise. You sit with a notebook and write down everything the tester has to guess, ask, or look up. Each one is a documentation defect.
| Measure | Pass | Full marks |
|---|---|---|
| Tester reaches a running system from the README alone | within 30 minutes | within 15 |
| Things the tester had to guess | ≤ 3 | 0–1 |
| Files other than the README they had to open to proceed | ≤ 2 | 0–1 |
| Author intervention | none | none |
Record it in docs/test-results.md: date, tester, operating system, tag, commit SHA, minutes to first successful run, and every gap found. Then fix the gaps and note the fixes. A recorded failing test that you fixed and re-ran scores better than a passing test you cannot evidence — because the second one is not a test, it is a claim.
Run it twice: once in Week 13, when there is time to fix what it finds, and once in Week 16 against the tag.
C.6 — Extra credit on the final
Extra credit lives here and nowhere else. The fourteen milestones cap at 100 apiece (see C.2); the quizzes and the presentation have no tiers. The two tiers below are the only work in the course that can push a recorded score past full marks.
The final carries two optional tiers, on its own 100-point scale:
- Medium tier — up to +25. Evidence past the bar: a live deployment with its cost stated and dated, green CI at the submitted tag, measured non-functional numbers with the method used, a second clean-machine test on a different operating system, a successor backlog of well-formed issues, a dependency and license inventory, or a security review. Two done well beat five done thinly.
- Hard tier — up to +25 more. The Successor’s Brief: a 3–4 page memo to the engineer who inherits your project — the decision you would reverse with a migration cost in hours, the parts of your own system you do not trust, the twelve-month cost of ownership, and your AI accountability statement. Graded on judgment, specificity, and honesty. A memo that admits nothing scores near zero.
The presentation has no extra-credit tier. It is a performance, not a build; the only way to raise the score is to rehearse.
Whether your institution’s gradebook records a component above 100 is a local policy question. Ask in Week 14, not Week 16.
C.7 — The presentation: 10 percent
Delivered live in Week 16, built in Week 15. Thirty minutes total, including questions unless your institution schedules Q&A separately. The complete brief — format, delivery logistics, the recorded-fallback requirement — is The Capstone Presentation assessment that ships with Chapter 15. The scoring is here.
The rubric (out of 100)
| Criterion | Points |
|---|---|
| Problem and users: a stranger can restate what the software is for and who it serves | 10 |
| Scope: what you committed to, in requirement terms, with what you cut and when | 10 |
| Architecture: a diagram you can talk through, with responsibilities and dependencies named | 12 |
| Decisions: two or more real choices with the rejected alternative, the constraint, and the cost | 12 |
| Live demo: runs, follows the script, and shows the requirements it satisfies | 15 |
| Evidence: verification results, defect data, and a measured non-functional number, all sourced | 12 |
| Honesty: what did not get done, the real cause, and the cost to finish | 8 |
| Questions: answers the question asked; bounded, honest handling of what you do not know | 11 |
| Timing and delivery: inside thirty minutes, audible, does not read the slides | 10 |
| Total | 100 |
The clock
The recommended allocation, which you build into your run sheet:
| # | Section | Min | Cumulative |
|---|---|---|---|
| 1 | Hook: what it is, in one sentence | 1.5 | 1:30 |
| 2 | The problem and the user | 3.0 | 4:30 |
| 3 | Scope: what you committed to, what you cut | 2.5 | 7:00 |
| 4 | Architecture: one diagram, talked through | 3.0 | 10:00 |
| 5 | The two decisions that mattered (with ADRs) | 3.0 | 13:00 |
| 6 | Live demo | 7.0 | 20:00 |
| 7 | Evidence: verification, defects, non-functional numbers | 3.5 | 23:30 |
| 8 | What did not get done | 1.5 | 25:00 |
| 9 | Lessons / what the next 240 hours would buy | 1.5 | 26:30 |
| 10 | Questions | 3.5 | 30:00 |
You may reallocate. You may not exceed thirty minutes, drop the demo, drop the evidence, or drop the “what did not get done” section, and the demo is capped at ten minutes however you rebalance. You get a visible signal at 25 and at 29 minutes; at 30:00 you are stopped wherever you are. If your evidence slides are still ahead of you, those points are gone — which is exactly why the run sheet exists.
Required regardless: a recorded demo, trimmed to the demo’s time budget, that plays with the network disabled, stored on the presenting machine and in the repository. Using it costs you nothing. Committees routinely score a clean fifteen-second recovery above a demo that never broke. What costs you is debugging on stage.
The podium is closed to AI. Preparation is open; no assistant may be consulted during the talk or the Q&A. Expect to be asked what an assistant contributed to your project, and answer from your ai-usage log.
C.8 — The pace table: where you should be every Sunday night
Sixteen weeks, about fifteen hours a week, 240 hours total. The budget has no slack in it beyond the buffer you declare yourself in Week 7 — which is the point of declaring one.
| Week | Hat / SDLC phase | What must exist by Sunday night | Hrs | Cumulative |
|---|---|---|---|---|
| 1 | Project manager · inception | Repository scaffolded and pushed; docs/charter.md; hours log with real rows; docs/ai-usage.md policy header; README v0; board wired; fifteen hours a week blocked on your calendar | 15 | 15 / 240 |
| 2 | Product owner · inception | Three candidate ideas canvassed; one real user conversation written up; every external dependency proved with one dated call; docs/scoping-decision.md naming the winner and why | 15 | 30 / 240 |
| 3 | Business analyst · requirements | Functional requirements with unique IDs, actors, conditions, and testable acceptance criteria; personas backed by evidence; MoSCoW applied; a Won’t-have list | 15 | 45 / 240 |
| 4 | Business analyst · requirements | Non-functional requirements with thresholds and measurement methods; constraints, assumptions, dependencies; the traceability matrix; the definition of done | 15 | 60 / 240 |
| 5 | Architect · design | Technology evaluation with weighted criteria; four ADRs with rejected options (the final rubric wants at least five by Week 16 — the rest accrue as you build); time-boxed spikes on the risky seams, written up; LICENSE chosen | 15 | 75 / 240 |
| 6 | Architect · design | Technical specification: context and component views, responsibilities, interface contracts for every Must path, data model, three sequence flows including failure branches | 15 | 90 / 240 |
| 7 | Project manager · planning | Work breakdown to task level; three-point estimates; capacity table for Weeks 8–16; schedule with gates; risk register with triggers and owners; the scope decision | 15 | 105 / 240 |
| 8 | Reviewer · verification of the design | Review package assembled and reviewed by a human; findings dispositioned; Criticals and Majors reworked; baseline tagged; change control standing; halfway audit written; Week 8 quiz and the 30-point Design Review Checkpoint both taken | 15 | 120 / 240 — halfway |
| 9 | Developer / release engineer · construction | Walking skeleton: one real request through every hop; CI green on push; .env.example; one documented setup command; issues traced to requirement IDs | 15 | 135 / 240 |
| 10 | Developer · construction | Core increment merged with tests alongside; demo script and seeded data; the increment demonstrated, not described | 15 | 150 / 240 |
| 11 | Tester · verification | docs/test-plan.md; automated suite running in CI; traceability matrix with a real coverage number; first full acceptance pass by hand; defect log with real defects triaged | 15 | 165 / 240 |
| 12 | Developer / change manager · integration | Seams integrated and seam-tested; performance measured against your own targets; security pass recorded; change requests triaged with impact analyses; release candidate tagged; CHANGELOG.md started | 15 | 180 / 240 |
| 13 | Technical writer · documentation | README rewritten with every command actually run; architecture overview; runbook with failure entries mined from the defect log; onboarding guide; first clean-machine test run and recorded | 15 | 195 / 240 |
| 14 | Release engineer · deployment | One reproducible setup path proven off your machine; deployment (or an argued equivalent); rollback rehearsed with a timer; v1.0.0 annotated tag, release notes, changelog, license, third-party notices; handoff guide | 15 | 210 / 240 |
| 15 | Presenter · closing | Deck built from artifacts you already own; demo script; offline-tested fallback recording; three evidence slides with sources; three timed rehearsals; the not-done list | 15 | 225 / 240 |
| 16 | Auditor · delivery | Freeze; self-audit from a fresh clone against all twelve rubric lines; clean-machine test; secret sweep; retrospective; tag, release, verify access, submit before you present; deliver the talk | 15 | 240 / 240 |
How to read this table. The artifacts govern, not the hours. Fifteen hours logged with nothing committed is not a week on pace; it is a week you should write an honest paragraph about. Every Sunday, do two things that take four minutes: run your hours report, and read your row. If the artifacts in your row exist in your repository, you are on pace. If they do not, you are behind by however many rows are incomplete — say the number out loud.
Coach’s Note — The 120-hour line in Week 8 is not decorative. It is the last week where a correction is cheap. A student who is thirty hours and two artifacts behind at Week 8 can still finish well by cutting scope through change control. The same student at Week 13 cannot, because Weeks 13 through 16 are already spoken for. Count the cost before you build the tower (Luke 14:28) — and then count it again at the halfway mark, when the tower is real enough to measure.
C.9 — What falling a week behind actually costs
A week behind is fifteen hours of debt against a budget with no slack in it. There are exactly three ways to settle it, and only one of them is professional.
- Repay it with extra hours. Two weeks at 22 hours instead of 15. This is the option everybody believes they will take. Almost nobody does, and it works only in Weeks 1–8.
- Cut scope through change control. Write the change request, do the impact analysis, move a Must to a Won’t with a dated reason, re-baseline, and tell your instructor in writing that week. This is the professional move and it costs you almost nothing on the rubric — a smaller Must set, honestly specified and fully delivered, scores far better than a large one half-built.
- Do nothing and pay twice. The default, and the most expensive. You take the zero on the milestone in the week you skipped it, and then you pay for the missing artifact again in Week 16 — the week that already has a presentation, a self-audit, a clean-machine test, and a release in it.
The downstream bill
| Week you skip | What stalls immediately | What it costs in Week 16 |
|---|---|---|
| 1–2 | No charter, no scoping memo, no hours log | The hours-log line (6), and a scope slide you cannot defend (10 on the talk) |
| 3–4 | Nothing to design against, nothing to test against | Requirements (12) plus most of test traceability (12) — the single most expensive skip in the course |
| 5–6 | You build without a decided stack or a written design | ADRs (5), technical specification (10), and the decisions line of the talk (12) |
| 7 | No estimates, no risk register, no capacity plan | The estimate-versus-actual analysis inside the hours-log line (6), and the calibration that keeps Weeks 9–14 from surprising you |
| 8 | Construction starts against an unreviewed, unbaselined design | Rework across Weeks 9–12, and no baseline to justify any later change |
| 9 | No skeleton, no CI, no reproducible setup | Working software (18) and the reproducibility half of the README line (10) |
| 11 | No test plan, no suite, no defect log | Test plan and results (12) plus defect log (5), and the evidence slide (12 on the talk) |
| 13–14 | No README rewrite, no runbook, no release | README (10), runbook and handoff (8), change log/tag/license (5) — 23 points of the cheapest work in the course |
| 15 | Deck built on delivery day out of hours borrowed from the audit | Presentation (up to 10% of the course) and the audit that protects the 50% |
The part of the debt you cannot repay
Some artifacts are not reconstructible in Week 16 at any price, because the evidence no longer exists:
- an elicitation conversation with a real user, in Week 3, when the requirements were still open;
- a dated verification of a vendor’s terms as they were then;
- an honest hours log — sixteen weeks of sessions cannot be remembered;
- the defects that construction finds, which only appear if construction happened on schedule;
- a spike result, which only teaches you something if it runs before the decision;
- estimate-versus-actual calibration, which requires estimates written before the work;
- a commit history showing work on forty distinct days.
Manufacturing any of those in Week 16 is not catching up. It is fabrication, it is an integrity violation under C.12, and it is the easiest kind to detect, because a repository’s history is a timestamped witness that does not cooperate with revision.
The recovery protocol, when you are behind
- Measure it honestly. Run your hours report; count the pace-table rows whose artifacts are missing. Write the number down.
- Do the remaining-capacity arithmetic. From the pace table: at the end of Week 10 there are six weeks and 90 hours left, of which Weeks 13–16 (60 hours) are documentation, release, presentation, and audit — already committed. What is genuinely discretionary is a fraction of Weeks 11 and 12. Do that sum for your own week before you decide anything.
- Cut scope, never documentation. More code cannot buy back the 82 points that are not code. A Must you cut on purpose, with a written rationale, costs a fraction of a Must you fail to deliver silently.
- Write the change request and re-baseline through the machinery you stood up in Week 8, and tell your instructor the same week — not in Week 15.
- Never backfill a log. Write the true row, including the row that says the week was lost. An honest bad week is worth points; an invented good one is worth an integrity referral.
C.10 — The repository structure a grader expects
Adapt it freely — but if a grader cannot find an artifact in under thirty seconds, the README must point at it.
your-capstone/
├── README.md
├── LICENSE
├── CHANGELOG.md
├── .gitignore
├── .env.example # placeholder values, committed on purpose
├── src/ # or app/, cmd/, lib/ — whatever your stack calls it
├── tests/
├── script/ # setup script, seed script, or a container definition
├── docs/
│ ├── charter.md # M1–M2: the problem, the users, the scope decision
│ ├── requirements.md # M3–M4: FRs, NFRs, constraints, traceability, DoD
│ ├── architecture.md # M6: the technical specification, as built
│ ├── baseline.md # Week 8: what is frozen, at which commit, with which open items
│ ├── review/ # Week 8: reviewer brief, defect log, review report, halfway audit
│ ├── test-plan.md # M11
│ ├── test-results.md # M11 + the Week 16 clean-machine record
│ ├── defect-log.md # M11 onward
│ ├── hours-log.csv # M1 onward, all sixteen weeks
│ ├── runbook.md # M13–M14: operate, back up, roll back
│ ├── handoff.md # M14: day one for your successor
│ ├── ai-usage.md # every week + the integrity statement
│ ├── retrospective.md # M16
│ ├── plan/ # M7: wbs.md, schedule.md, risk-register.md
│ ├── adr/ # M5 onward: 0001-choose-the-stack.md, ...
│ └── diagrams/
└── .github/workflows/ci.yml # M9, or your CI provider's equivalent
Equivalent paths are fine. The milestone chapters name a few artifacts slightly differently than the final rubric does, because each week names the document for the job it is doing that week. The rubric accepts any obviously equivalent path that the README indexes:
| If your repository calls it | It satisfies |
|---|---|
docs/architecture.md | the technical specification line |
docs/hours-log.csv | the hours-log line — keep it in whatever tool you like during the term, but export it to CSV at this path before you submit: that is the path on the rubric, and CSV is what the Week-1 and Week-10 report scripts read |
docs/defect-log.md | the defect-log line |
docs/clean-machine-test.md | the recorded clean-machine evidence for the README line |
docs/plan.md + docs/risk-register.md | the Week-7 planning artifacts |
docs/scoping-decision.md | the scope portion of the charter |
docs/onboarding.md | counts toward the runbook-and-handoff line |
Two hard constraints on naming. No live secrets, ever — .env.example carries placeholders and the real file is ignored. And nothing in your repository may be named after a course file (chapter, exercises, a numbered milestone, project-arc). Your repository is a professional artifact and it reads like one.
C.11 — The AI-use and disclosure policy
This course permits and expects assistant use. The rule is one sentence, and it is the spine of the whole library:
The human stays in the loop where the judgment lives. AI accelerates; you decide, you verify, and you are accountable.
The practical test is not how many characters a model typed. It is this: can you explain every line and every claim in your repository, in your own words, under questions, without the tool in front of you? If not, it does not ship.
The three zones
| Zone | Covers | What you owe |
|---|---|---|
| Green (assistive) | explaining an error message, reformatting, grammar, boilerplate you fully understand, rubber-ducking a design you already drafted | nothing; work normally |
| Amber (generative) | drafted requirements, scaffolded code you keep, generated tests, proposed architecture, documentation prose | one log row, the day it happens |
| Red (prohibited) | generated decision records, memos, or reflections submitted as yours; a choice you cannot defend; another person’s private data or a classmate’s unsubmitted work; code you cannot explain line by line | do not |
Three things are never delegated, in any tier: an architecture decision record, the Week-16 Successor’s Brief, and the retrospective. Those are the artifacts whose entire value is that a human owned a judgment.
The log format
Copy the Week-1 template into docs/ai-usage.md. It has three parts — the policy header written once, the tools you have decided to use, and the entries table that grows all semester.
# AI Usage Log — <project name>
**Owner:** <name> · **Policy set:** <YYYY-MM-DD> · **Last entry:** <YYYY-MM-DD>
## Policy
Spine rule. The human stays in the loop where the judgment lives.
The line I do not cross: <one sentence, in your words>
## Tools
| Tool / product | Model or version, as the tool reported it | What I use it for | What I never use it for |
## Entries
| Date | Tool / model | What I asked | What I kept | What I changed | How I verified |
The columns are the requirement; the exact layout is not. A four-column variant (week, tool, used for, what you changed and verified) earns the same points if it carries the same information. What it must always carry is what you rejected, because that is the clearest possible evidence that a human was in the loop.
A bad disclosure:
I used an AI assistant to help with some of the coding and to fix bugs.
A real disclosure:
| Date | Tool / model | What I asked | What I kept | What I changed | How I verified |
|---|---|---|---|---|---|
| 2026-10-27 | <assistant, version as shown in-app> | Draft a CI workflow for this stack | The job skeleton | Pinned the runtime version; deleted a caching step I did not understand | Ran it on a branch: three green pushes and one that failed correctly |
| 2026-11-03 | <assistant, version> | Why is the product API returning 401? | Nothing — the suggested fix guessed a header name that does not exist | — | Read the vendor’s auth documentation; the header was different |
| 2026-11-10 | <assistant, version> | Enumerate edge cases for FR-07 | 9 of 14 proposed test names | Deleted 5 duplicates; wrote every assertion myself | Each surviving test fails when I break the code it covers |
Notice what the good version does: it names the time the tool was wrong and what you did instead. Do not guess at a model version you cannot see — write what the tool displayed, or write “version not shown.”
This line is graded on specificity, not on abstinence. Nobody is penalized for using assistance well. People are penalized for vagueness — and for undisclosed use, which is not a rubric deduction at all.
Coach’s Note — Your first employer will ask you some version of one question: what is your rule for what you will sign your name to? The ai-usage log is sixteen weeks of practice answering it with evidence instead of adjectives. Write the row the day it happens; ninety seconds then, or an hour of reconstruction and a weaker answer in Week 16.
C.12 — Academic integrity
You will sign this. It goes at the top of docs/ai-usage.md and into the submission block.
Integrity statement. This repository is my own work. I wrote or directly supervised, reviewed, and understand every line in it, and I can explain any part of it on request. All assistance I received — from AI tools, documentation, tutorials, libraries, classmates, or anyone else — is disclosed in
docs/ai-usage.md. Third-party code and content are attributed and used within their licenses. No requirement, test result, measurement, or log entry in this repository is fabricated.—
<your full name>,<date>
What is not acceptable, in any tier:
- submitting code you cannot explain;
- a fabricated test result, measurement, hours-log entry, or interview;
- an undisclosed third-party component;
- presenting someone else’s project as your own;
- a number in your presentation that no artifact in your repository supports.
These are integrity violations, not rubric deductions. They are handled under your institution’s academic-integrity policy, which governs over anything in this book. If you are ever unsure whether something crosses the line, the cost of asking your instructor is one email, and the cost of not asking is your degree.
“One who is faithful in a very little is also faithful in much, and one who is dishonest in a very little is also dishonest in much” (Luke 16:10, ESV). Everything in this course that looks like paperwork — the honest log, the disclosed defect, the dated verification, the gap named before anyone finds it — is the same discipline in different clothes. And the standard runs both directions: “Let what you say be simply ‘Yes’ or ‘No’” (Matthew 5:37, ESV) rules out inflating your work and the false modesty that hides it. Say what is so.
C.13 — The complete final submission checklist
Do this in order, the day before your presentation. The full procedure ships with Chapter 16; this is the checklist.
Freeze and audit
- Feature freeze declared; only documentation, audit fixes, and the change log since
- Fresh clone of the tag audited against all twelve rubric lines, each with a written evidence note
- Gaps fixed in points-per-hour order (a missing
LICENSEis 5 points and four minutes)
Prove it
- Clean-machine test run by a human who is not you, on a machine that is not yours, recorded
- Every open Must requirement disclosed in the README, the release notes, and the defect log
- Test suite executed at the submitted tag and the results recorded with the date
Artifacts present
- Working software, requirements specification, technical specification (as built), ADRs (≥ 5)
- Test plan, suite, and results traced to requirement IDs; defect log current at the tag
- README, runbook, handoff guide
- Hours log complete for all sixteen weeks, including the bad ones, with estimate-versus-actual
-
CHANGELOG.mdentry written and dated;LICENSEpresent and matching the README -
docs/ai-usage.mdspecific, current, and headed by the signed integrity statement -
docs/retrospective.mdwritten from the logs, with at least one rule that has a number in it
Gates
- Secret sweep clean on the working tree and the history; anything found rotated first
- Repository link opened successfully from a logged-out private browser window
Release and submit
- Annotated tag pushed (never move an existing tag); commit SHA copied
- Release published with real release notes: what it is, what works, what does not, setup time, verification date
- Submission block pasted and submitted — before the presentation
Repository: https://github.com/<owner>/<repo>
Tag: v1.0.1
Commit SHA: <40 hex characters>
Access: public | <grader-username> invited and accepted on <date>
Verified on: <OS/runtime> — clean-machine test <date>, tester <name or initials>
Known gaps: <open Must requirements by ID, or "none">
Integrity: <the statement from C.12, signed>
C.14 — The sixteen weekly quizzes: 15 percent
One quiz a week, Weeks 1 through 16, auto-graded, drawn from a pool so no two attempts are identical. Ten items each, covering the phase you are supposed to be in that week. Week 8 carries two: its ordinary weekly quiz, and a separate 30-point Design Review Checkpoint that is cumulative over Weeks 1–8. Both sit inside this same 15 percent — the checkpoint is not a fourth component.
The settings the course ships with (your syllabus governs if your instructor changes them):
| Setting | Value | Why |
|---|---|---|
| Attempts | 2, highest kept | These are self-checks; the point is learning the phase, not one-shot recall |
| Correct answers | Shown after the last attempt | Every item carries a rationale — that is where the teaching is |
| Time limit | ~15 minutes | They are short and they cover the week you just lived |
| Availability | Opens with the week, closes at the end of the following week — except Weeks 15 and 16, which both close with the term on Sunday night of Week 16 | Late-but-honest beats zero |
| Shuffle | On | The pool randomizes already |
Unless your syllabus says otherwise, this component is scored on points, not on a flat average: the sixteen weekly quizzes are 10 points each and the Design Review Checkpoint is 30, so the component totals 190 points and the checkpoint is worth about a sixth of it. The checkpoint gets one attempt and 45 minutes; the weekly quizzes get two attempts and 15.
The quizzes exist for two reasons, and the second is the real one. The first is ordinary: they check that the vocabulary of the life cycle is actually in your hands — that you can say what a non-functional requirement is, what an ADR records, what a walking skeleton proves. You will be expected to speak that language in every interview you take next spring.
The second is that they are the early-warning system that catches a slipping week before the milestone does. A quiz you cannot pass is a week whose reading you skipped, and a week whose reading you skipped is a milestone you probably did not ship. Fifteen percent is small enough that no single quiz can hurt you and large enough that a pattern will. When you find yourself guessing on Week 6’s quiz, that is not a quiz problem. That is the late start, ringing a bell in Week 6 instead of Week 16 — which is the entire mercy of the design.
C.15 — What a grader is actually asking
Strip away the tables and every line of every rubric in this appendix is one question, asked twelve different ways:
Could a competent stranger take this over on a Tuesday afternoon?
They clone it and are running in eleven minutes. Every claim in the README is backed by a requirement ID with criteria they could verify themselves. The architecture document matches the code in front of them, and where it does not, an ADR says when and why. They do not have to hunt for what is broken, because you listed it first, with severities. The hours log has a bad week in it, honestly recorded. The ai-usage log names things you rejected. The retrospective has numbers.
And somewhere in the first twenty minutes they think: this person is careful, and I can trust what they wrote down.
That reaction is the grade, and it is also the job. Every professional reputation you will ever have is built out of exactly that reaction, repeated — which is why the contract is shaped this way. Not to measure how clever you are. To measure whether your work can be trusted by somebody who cannot ask you a question.
Coach’s Note — Print this appendix. Put it where you plan your week. Nothing in it will change between now and delivery day, and everything in it is earnable fifteen hours at a time. There is no curve, there is no mystery, and there are no surprises in Week 16 — only deadlines, and you have all of them in front of you today.
Related: Appendix A — your workbench, including the no-admin browser path · Appendix B — every artifact on this rubric as a blank template, a worked example, and a deliberately bad version · Appendix D — fifty sized project ideas · Appendix E — the glossary. Start the work in Chapter 1; the halfway audit is in Chapter 8; the final is specified in Chapter 16.