Chapter 29 — Capstone build
Lesson map
Lesson 29 published. Map, example, EX085.
flowchart TD
N0["Learning outcomes"]
N1["29.1 The capstone brief"]
N2["29.2 Increments"]
N3["29.3 Decision log"]
N4["29.4 Ready for assessment"]
N5["Synthesis"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5
N5 --> EX["Worked example"]
EX --> Q["Exercise EX085"]
Logical drawing
flowchart LR
N0["Learning outcomes"]
N1["29.1 The capstone brief"]
N2["29.2 Increments"]
N3["29.3 Decision log"]
N4["29.4 Ready for assessment"]
N5["Synthesis"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> Q["EX085"]
[Learning outcomes]
|
v
[29.1 The capstone brief]
|
v
[29.2 Increments]
|
v
[29.3 Decision log]
|
v
[29.4 Ready for assessment]
|
v
[Synthesis]
|
v
[Worked example] --> [Exercise EX085]
Learning outcomes
You will (1) build a capstone artefact that solves a defined NCS problem; (2) work in increments with tests; (3) keep a decision log; and (4) prepare the artefact for assessment and handover.
29.1 The capstone brief
Priya's capstone: an "OT drift checker" that runs weekly on NCS's management host, combining the Chapter 11 inventory comparison, the Chapter 12 flow comparison, the Chapter 19 new-talker check and the Chapter 22 certificate check into one report with a single exit status. It reads exported files only and never contacts devices.
Each of the four checks already exists and has been run on NCS data; the capstone's work is combining them, validating their inputs and making the result something the facilities manager can run without Priya.
29.2 Increments
Week 1: one script that runs the four checks on sample files and prints sections. Week 2: a common output format (check, item, status, evidence file). Week 3: tests for each check using small fixtures, including empty inputs. Week 4: scheduling, logging and the "job did not run" alert. Each increment works end to end before the next begins.
Week 3 found a real defect: an empty capture file made the new-talker check report every baseline host as missing rather than "no data". Priya added a "no-data" status that fails the run, because an empty input usually means the capture failed.
29.3 Decision log
Examples: "Decision 3 — report exit status non-zero if any check returns UNAPPROVED, EXPIRED or VERSION-CONFLICT; alternative (always zero) rejected because the scheduler could not alert." "Decision 5 — no automatic remediation; all actions via tickets."
A further decision came from week 3: "Decision 6 — an empty input file produces status NO-DATA and a non-zero exit; alternative (treat as zero events) rejected because it reported every baseline host as missing, and an empty capture usually means the capture failed." Each entry names the alternative and the reason it lost, so an assessor can disagree with the reason rather than guess at it.
29.4 Ready for assessment
The artefact folder contains the code, tests, sample inputs, a README with how to run it, the decision log and a short operations guide. An assessor must be able to run it from a clean checkout and get the documented output.
Priya's folder met this with 23 tests that pass from a clean checkout. The operations guide is where her assessor later found the gap: the facilities manager could run the checker but still needed help to interpret VERSION-CONFLICT.
A reviewer can follow every status from the input files to the report without asking her.
Worked example (synthetic NCS)
At week 3 Priya's tests reveal that an empty capture file makes the new-talker check report every baseline host as missing rather than "no data". She adds a "no-data" status that fails the run, because an empty input usually means the capture failed — exactly what the site needs to know.
Synthetic case — Northgate Cold Storage. The capstone is a teaching example.
Errors and limits
Combining checks multiplies the ways input files can be wrong; validate inputs first. A tool that only Priya can run is not finished.
Exercises
- EX085 — Choosing exit statuses. Which statuses should make the drift checker exit non-zero? Rubric: 3 = UNAPPROVED, EXPIRED, VERSION-CONFLICT, no-data (any problem); 2 = some; 1 = vague; 0 = none.
- EX086 — A test fixture. Describe a fixture that tests the certificate check's boundary at 30 days. Rubric: 3 = cert exactly 30 days out expects renew-now, 31 expects plan; 2 = one; 1 = vague; 0 = none.
- EX087 — Why no auto-remediation? Justify decision 5 in two sentences. Rubric: 3 = actions on OT need approval/context; automated mistakes could stop operations; 2 = one; 1 = vague; 0 = none.
Synthesis
A capstone build is small increments, tests at the edges, logged decisions and an artefact someone else can run.
Continue studying — chapter 29 of 30
← Chapter 28 (draft) · Course chapter index · Chapter 30 (draft) →