Decision record · DR-003
Keep the 2022 reference notebooks private and publish only the answers their code gives
- Status
- Accepted
- Date
- 2026-10
- Applies to
- coursework/notes-2022, scripts/generate_parity_fixtures.py, web/src/lib/*/__fixtures__/reference-2022.json
Decision in one line
The three 2022 notebooks stay on my machine, untracked and gitignored, because they quote the task text and may derive from staff sample solutions; the repository keeps only the inputs and answers their code produces, as test fixtures.
Context
While reviving the site I found three notebooks, 2019-COMP10001-Project-{1,2,3}.ipynb, in
a private notes repository from June 2022. They answer the same questions as my projects, but
they are not my 2019 submissions: several cells hold two or three alternative solutions in
different styles, some code may be adapted from staff sample solutions, and the markdown
quotes the university's task text almost word for word. They are also the only independent
check I have for the rebuilt Projects 1 and 3 (see
DR-001).
Decision
- The notebooks are not published. They are untracked and listed in
.gitignore. scripts/generate_parity_fixtures.pyruns their code cells in fresh namespaces on seeded inputs and records only the inputs and answers inreference-2022.jsonfixtures. Those fixtures are committed; the notebook code and text are not.- Without the notebooks (a fresh clone, or CI) the script regenerates only the 2019 fixture from my own file and leaves the reference fixtures as committed.
- Every place that mentions them says "provenance unclear, kept private".
Options considered
- Publish them. Simplest, but it republishes task text and possibly staff code.
- Delete them. Removes the risk and the only oracle for two projects.
- Keep them private and publish derived answers only (chosen).
- Also rewrite the repository's history to purge the first import. Cleanest, but it rewrites shared history, which I do not do without a deliberate decision of its own.
Why
Recorded answers on seeded inputs are test data: they let anyone rerun the parity suites without seeing the notebooks' text or code. Keeping the notebooks lets me regenerate those answers if the inputs ever change.
What happened
- Commit
3a06c9eremoved the notebooks from the main branch, and the parity suites still pass from the committed fixtures alone. - They are still present in the repository's history, in the first import (
75b7310). Removing them from history needs a rewrite that has not been done. The repository is private, and it stays private until that is settled; making it public would need a new decision record that supersedes this one. - The property-based tests added in 2026 check the rebuilt code against brute force and invariants instead of the notebooks, so the notebooks are no longer the only independent evidence.
What I'd change
- Decide on the history rewrite before the repository is ever made public, and record it as a superseding decision.
- Replace the notebook oracle with brute-force oracles of my own wherever a property test can express the rule, so the private files matter less over time.