Chapter 11 — Applied project
Lesson map
Lesson 11 published. Map, example, EX051.
flowchart TD
N0["Learning outcomes"]
N1["11.1 Planning the project"]
N2["Lab — Quorum availability from outage logs"]
N3["11.2 Results and interpretation"]
N4["11.3 Presenting with caveats"]
N5["Synthesis"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5
N5 --> EX["Worked example"]
EX --> Q["Exercise EX051"]
Logical drawing
flowchart LR
N0["Learning outcomes"]
N1["11.1 Planning the project"]
N2["Lab — Quorum availability from outage logs"]
N3["11.2 Results and interpretation"]
N4["11.3 Presenting with caveats"]
N5["Synthesis"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> Q["EX051"]
[Learning outcomes]
|
v
[11.1 Planning the project]
|
v
[Lab — Quorum availability from outage logs]
|
v
[11.2 Results and interpretation]
|
v
[11.3 Presenting with caveats]
|
v
[Synthesis]
|
v
[Worked example] --> [Exercise EX051]
Learning outcomes
You will (1) plan and execute an applied evaluation; (2) measure validator availability; (3) present results with caveats.
11.1 Planning the project
For her applied project, Nadia evaluates whether the pilot's four-validator design meets its availability target of 99.5 percent over a month, given that settlement needs three of four validators to agree. She gathers synthetic outage logs for each validator and writes a read-only script that counts hours when fewer than three validators were up. She also asks whether outages at different validators overlapped, because overlapping outages are what break the quorum. The project's value lies in testing a design assumption with data rather than relying on the vendor's assurances.
Lab — Quorum availability from outage logs
"""Count hours a 3-of-4 validator quorum was unavailable from synthetic outage logs (read-only)."""
# validator: list of (start_hour, end_hour) outages within a 720-hour month
OUTAGES = {
"v1": [(100, 104), (400, 402)], "v2": [(102, 106)],
"v3": [(401, 403), (600, 601)], "v4": [(650, 655)],
}
HOURS, QUORUM = 720, 3
def main():
lost = 0
for h in range(HOURS):
up = sum(1 for spans in OUTAGES.values() if not any(s <= h < e for s, e in spans))
if up < QUORUM:
lost += 1
print(f"validators {len(OUTAGES)}; quorum {QUORUM}; unavailable hours {lost}/{HOURS}")
print(f"availability {100 * (HOURS - lost) / HOURS:.2f}%")
if __name__ == "__main__":
main()
Run with python3 lab_quorum.py. Verified output:
validators 4; quorum 3; unavailable hours 3/720
availability 99.58%
11.2 Results and interpretation
The lab finds 3 unavailable hours out of 720, giving 99.58 percent availability, just above the 99.5 percent target. Two of the lost hours came from overlapping outages at validators one and two, and one from overlap at validators one and three. Nadia notes that validator one appears in both overlaps. She investigates and finds that its maintenance windows were scheduled without checking other partners' plans. Results meeting a target narrowly deserve attention: a small change, such as one more overlapping outage, would have missed it. She recommends coordinated maintenance windows across partners.
11.3 Presenting with caveats
Nadia presents results to the joint operations group with caveats: one month of synthetic data, hourly resolution that may hide shorter gaps, and no measurement of degraded performance short of full outage. She recommends collecting minute-level data and repeating the analysis quarterly. The group agrees a shared maintenance calendar, so no two validators are planned to be down together. Presenting caveats honestly lets the group act on the finding without over-trusting a narrow pass. Professor Tanaka grades the project highly for linking data, design assumption and operational change.
Worked example
The quorum lab finds 3 of 720 hours unavailable (99.58 percent), both overlaps involve validator one, and partners adopt a shared maintenance calendar.
Synthetic case. The outage logs and results are synthetic.
Errors and limits
Accepting a narrow pass without examining causes misses easy improvements and hidden fragility.
Exercises
- EX051 — Availability target. What availability target applies? Rubric: 3 = 99.5 percent;; 2 = 99.5%;; 1 = 100 percent;; 0 = none.
- EX052 — Quorum size. How many validators must agree? Rubric: 3 = three of four;; 2 = 3 of 4;; 1 = two of four;; 0 = none.
- EX053 — Measured availability. What availability does the lab report? Rubric: 3 = 99.58 percent, 3 of 720 hours lost;; 2 = 99.58%;; 1 = 95 percent;; 0 = none.
- EX054 — Common factor. Which validator appears in both overlaps? Rubric: 3 = validator one;; 2 = v1;; 1 = validator four;; 0 = none.
- EX055 — Operational change. What change do partners adopt? Rubric: 3 = a shared maintenance calendar;; 2 = coordinated maintenance;; 1 = more validators;; 0 = none.
Synthesis
Testing design assumptions with data, and reporting caveats, drives practical improvements.
Continue studying — chapter 11 of 12
← Chapter 10 (draft) · Course chapter index · Chapter 12 (draft) →