Go to file
Krzysztof kuhy Rudnicki f780d023be A run may no longer change the tree it ran in
Executing coursework has silently overwritten a submitted deliverable twice in
this campaign -- TRAK's outputs/output.png and SPD's results_*.png -- and both
times it was found by a later `git status`, not by the run. `course_main` now
snapshots what git sees under the course root before and after `_run`, and
fails with a diff naming the files if anything moved. Gitignored build output
does not show up there, which is why every runner already writes into build/.

Seen failing before being trusted: a stub whose `_run` appends a newline to
TRAK's config.ini exits 1 and names the file; the same stub without the append
exits 0; and a real `./run.sh run Programming/TRAK` still exits 0 after
rendering, because it writes into build/.

The notebook branch was the specific landmine. `nbconvert --execute --inplace`
rewrites the notebook it just ran, and all four notebooks here are tracked with
their outputs. It now executes to a temp --output-dir. That alone is not
enough, though: nbconvert runs the kernel with its cwd set to the notebook's
own directory, so a cell calling plt.savefig('x.png') still writes beside the
notebook. The tree check above is what actually catches that, which is why it
lives in course_main and applies to every course kind rather than to notebooks.

`_have jupyter` was also the wrong probe. jupyter on this machine is a pipx
shim whose interpreter is gone: `command -v` finds it, and running it exits
127. Both the probe and the runner now use `_works`, which runs `--version`.
`./Programming/twm_4/run.sh --probe` reports "needs jupyter" and exit 78
instead of failing confusingly mid-run.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-29 07:59:15 +02:00
.github/workflows Gate the invariants, fix ECOTE's unrunnable tests, contain build output 2026-08-28 18:43:13 +02:00
.vscode Merge branch 'main' of https://github.com/kuhyx/WUT_Computer_Science 2025-04-21 17:21:13 +02:00
gates Hold the coursework to the same lint bar as the tooling 2026-08-28 19:53:04 +02:00
NotProgramming EARIN: zero findings, verified against byte-identical program output 2026-08-28 20:39:53 +02:00
Programming TRAK: zero findings, and a byte-identical render proving it 2026-08-29 07:54:51 +02:00
scripts A run may no longer change the tree it ran in 2026-08-29 07:59:15 +02:00
.binary-allowlist Gate the invariants, fix ECOTE's unrunnable tests, contain build output 2026-08-28 18:43:13 +02:00
.gitignore Run all 33 safe courses; fix what that broke 2026-08-28 18:52:31 +02:00
.pre-commit-config.yaml Gate the invariants, fix ECOTE's unrunnable tests, contain build output 2026-08-28 18:43:13 +02:00
CLAUDE.md ECOTE and ECRYPT_PROJECT: zero findings, tests still green 2026-08-28 20:03:01 +02:00
DOCS-runnability.md Hold the coursework to the same lint bar as the tooling 2026-08-28 19:53:04 +02:00
install.sh Add CI, install.sh and the run.sh harness 2026-08-28 18:26:10 +02:00
pyproject.toml TRAK: zero findings, and a byte-identical render proving it 2026-08-29 07:54:51 +02:00
README.md Revise README to reflect group project inclusion 2026-02-06 22:23:55 +01:00
run.sh Hold the coursework to the same lint bar as the tooling 2026-08-28 19:53:04 +02:00
TODO-file-length-250.md Declare vendored subtrees and park the data-txt cap decision 2026-08-28 17:31:30 +02:00
TODO-refactor-remaining.md TRAK: zero findings, and a byte-identical render proving it 2026-08-29 07:54:51 +02:00

WUT_Computer_Science

This repository aims to consolidate every single project I did solo during my Computer Science course on Warsaw University of Technology
It does not include projects I did in groups like:
EARIN
EDABA
ECRYPT
EOPSY

Thanks to some git magic this repo now CONTAINS all the group projects alongside with all proper contributors