Skip to content
COMP10001Playground
All decision records

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.py runs their code cells in fresh namespaces on seeded inputs and records only the inputs and answers in reference-2022.json fixtures. 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

  1. Publish them. Simplest, but it republishes task text and possibly staff code.
  2. Delete them. Removes the risk and the only oracle for two projects.
  3. Keep them private and publish derived answers only (chosen).
  4. 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 3a06c9e removed 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.