Chapter 7 — Thesis synthesis and reproducibility archive
Lesson map
Lesson 07 published. Map, example, EX043.
flowchart TD
N0["Learning outcomes"]
N1["7.1 One claim per chapter"]
N2["7.2 What the archive contains"]
N3["7.3 Environment"]
N4["7.4 Data-availability statement"]
N5["7.5 Machine-readable outputs"]
N6["Synthesis"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6
N6 --> EX["Worked example"]
EX --> Q["Exercise EX043"]
Logical drawing
flowchart LR
N0["Learning outcomes"]
N1["7.1 One claim per chapter"]
N2["7.2 What the archive contains"]
N3["7.3 Environment"]
N4["7.4 Data-availability statement"]
N5["7.5 Machine-readable outputs"]
N6["Synthesis"]
N0 --> N1 --> N2 --> N3 --> N4 --> N5 --> N6 --> Q["EX043"]
[Learning outcomes]
|
v
[7.1 One claim per chapter]
|
v
[7.2 What the archive contains]
|
v
[7.3 Environment]
|
v
[7.4 Data-availability statement]
|
v
[7.5 Machine-readable outputs]
|
v
[Synthesis]
|
v
[Worked example] --> [Exercise EX043]
Learning outcomes
You will (1) structure a thesis so each chapter carries one claim; (2) build a reproducibility archive that excludes restricted data lawfully; (3) document software environment and random seeds; (4) write a data-availability statement that is honest about restrictions.
7.1 One claim per chapter
Readers should be able to state each chapter's claim in a sentence: integrity design; gap; proposal; baseline replication; main calibration result; robustness under critique. If a chapter has three unrelated claims, split it; if it has none, cut it. Tomas applied the test to each of his six chapters: a chapter whose claim could not be stated in a sentence was split or cut, and the test caught a draft chapter mixing the gap with the proposal. For the calibration chapter, the sentence has to name the measure and the corpus scope, as EX043 asks.
7.2 What the archive contains
Code, codebook versions, synthetic test data, aggregate result tables, the pre-registration, and a script that rebuilds every figure. Restricted inputs — TLP:AMBER+STRICT reports, licensed vendor text — are replaced by a manifest of identifiers and SHA-256 hashes so that someone with lawful access can verify they hold the same files.
Tomas's archive holds 14 scripts, 3 codebook versions, a manifest of 1,200 report hashes and synthetic samples that exercise every code path. A colleague with no lab access rebuilt every figure in under an hour, which is the test that matters.
7.3 Environment
Record the Python version and confirm the analysis uses only the standard library, or pin every dependency. Record any random seed used for sampling. "It ran on my laptop" is not reproducibility.
Tomas's labs use only the standard library, which removes most dependency drift; the archive still records the Python version used. The main sample's selection uses a recorded seed, so the 340 judgments can be drawn again from the manifest by anyone with lawful access to the reports. The archive also records the operating system the figures were built on, because the colleague's one-hour rebuild was done on a different machine.
7.4 Data-availability statement
State what is open, what is restricted and why, and how an authorised researcher can request access. Do not say "available on request" if requests will in practice be refused.
For Tomas the restricted part is the 200 TLP:AMBER+STRICT reports and licensed vendor text. His statement names the sharing community and the licence holder as the routes for access, and the hash manifest lets an authorised researcher confirm they hold the same files. It also says what an authorised researcher cannot get: the reports themselves never leave the lab, so access means working on site under the same TLP:AMBER+STRICT rules that bound Tomas.
7.5 Machine-readable outputs
Where the thesis produces reusable structures — for example a mapping of estimative phrases to probability ranges — publish them as plain JSON or CSV with a schema. If the work creates threat objects, STIX 2.1 and TAXII 2.1 provide standard exchange formats, but a methods thesis rarely needs them.
Tomas's phrase-to-probability mapping is the obvious candidate: a CSV with one row per estimative phrase, its numeric range and the codebook version, so that others can apply the same mapping to their own reports.
Worked example
A colleague with no lab access takes only the archive, runs the rebuild script against the synthetic samples and the aggregate tables, and compares each figure with the thesis draft; every figure matches, and the whole rebuild takes under an hour.
Synthetic case. The archive contents and rebuild test are invented.
Errors and limits
Hash manifests prove identity of files, not lawful access. Archive hosting must respect the same restrictions as the data.
Exercises
- EX043 — Chapter claim. Write the one-sentence claim for the thesis chapter that reports calibration. Rubric: 3 = specific claim with measure and corpus scope; 2 = vague; 1 = topic only; 0 = none.
- EX044 — Restricted replacement. How does the archive represent restricted AMBER+STRICT reports? Rubric: 3 = identifier + SHA-256 manifest, no content; 2 = list of titles; 1 = include files; 0 = none.
- EX045 — Environment line. Give the two environment facts every rebuild needs recorded here. Rubric: 3 = Python version + seeds (or pinned deps); 2 = one; 1 = OS theme; 0 = none.
- EX046 — Honest availability. Rewrite "data available on request" honestly for licensed vendor reports. Rubric: 3 = states licence restriction, who can request, through what route; 2 = partial; 1 = unchanged; 0 = none.
- EX047 — Rebuild test. What does the colleague's one-hour rebuild demonstrate, and what does it not? Rubric: 3 = code/figures reproducible from archive; not that restricted inputs or coding were correct; 2 = one half; 1 = proves everything; 0 = none.
- EX048 — Format choice. Which format suits the phrase-to-probability mapping, and why not STIX? Rubric: 3 = JSON/CSV with schema; it is not a threat object; 2 = format only; 1 = STIX required; 0 = none.
- EX049 — Hosting rule. May the archive be placed on a public repository with restricted files encrypted inside? Rubric: 3 = no; restricted content must not be distributed even encrypted unless terms allow; use manifest; 2 = discouraged; 1 = yes; 0 = none.
Synthesis
One claim per chapter, an archive that rebuilds everything lawful, honest availability, and restricted data represented by hashes alone.
Continue studying — chapter 07 of 08
← Chapter 06 (draft) · Course chapter index · Chapter 08 (draft) →