Say which jupyter problem it is, and regenerate the status table
Some checks are pending
md-naming / markdown naming convention (push) Waiting to run
pre-commit / pre-commit (push) Waiting to run
runnability / runnability (push) Waiting to run

`_works jupyter || _blocked "needs jupyter"` collapsed two different problems
into one message. "needs jupyter" and "jupyter is on PATH but does not run"
send you to different fixes -- install it, versus work out why the shim's
interpreter is gone -- and a status table is only worth keeping if it says
which. `_require_working` checks presence and then execution, and reports
them separately.

The wording is now what DOCS-runnability.md already said for twm_4 and PBAD,
except the probe produces it rather than someone having typed it. Regenerating
the table changed those two rows and nothing else, which is the useful part:
the run guard, the two new .venv directories under PSD and ERSMS-project, and
the tex entry-point change left all 44 courses' status exactly as it was.

One thing worth knowing for the next regeneration: the answer depends on PATH.
jupyter lives in ~/.local/bin, so a shell without it reports "needs jupyter"
and one with it reports the dead shim. Regenerate from a login shell.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Krzysztof Rudnicki 2026-08-29 08:44:02 +02:00
parent 7b019d103f
commit 37cc00fa21
5 changed files with 15 additions and 6 deletions

View File

@ -47,12 +47,12 @@ run cannot clobber the local column.
| `Programming/E-PSYOPS` | runnable | - | opens in the Unity editor | | `Programming/E-PSYOPS` | runnable | - | opens in the Unity editor |
| `Programming/ERSMS-project` | runnable | - | docker compose up | | `Programming/ERSMS-project` | runnable | - | docker compose up |
| `Programming/NLP` | runnable | - | python3 the entry script | | `Programming/NLP` | runnable | - | python3 the entry script |
| `Programming/PBAD` | blocked | - | jupyter is on PATH but broken (bad interpreter) | | `Programming/PBAD` | blocked | - | jupyter is on PATH but does not run (dead shim) |
| `Programming/PORR` | runnable | - | python3 /home/kuhy/WUT_Computer_Science/Programming/PORR/code/main.py | | `Programming/PORR` | runnable | - | python3 /home/kuhy/WUT_Computer_Science/Programming/PORR/code/main.py |
| `Programming/PSD` | runnable | - | starts the Kafka/Flink stack (installs packages with sudo) | | `Programming/PSD` | runnable | - | starts the Kafka/Flink stack (installs packages with sudo) |
| `Programming/psd_project` | runnable | - | mvn package | | `Programming/psd_project` | runnable | - | mvn package |
| `Programming/TRAK` | runnable | - | python3 /home/kuhy/WUT_Computer_Science/Programming/TRAK/main.py | | `Programming/TRAK` | runnable | - | python3 /home/kuhy/WUT_Computer_Science/Programming/TRAK/main.py |
| `Programming/twm_4` | blocked | - | jupyter is on PATH but broken (bad interpreter) | | `Programming/twm_4` | blocked | - | jupyter is on PATH but does not run (dead shim) |
| `Programming/USD` | no-code | - | README describes a MetaDrive RL assignment; no implementation was submitted | | `Programming/USD` | no-code | - | README describes a MetaDrive RL assignment; no implementation was submitted |
| `Programming/WDWR` | runnable | - | python3 the entry script | | `Programming/WDWR` | runnable | - | python3 the entry script |
| `Programming/ZPOB` | runnable | - | builds the report with latexmk | | `Programming/ZPOB` | runnable | - | builds the report with latexmk |

View File

@ -33,12 +33,12 @@ Programming/EPFU runnable make
Programming/E-PSYOPS runnable opens in the Unity editor Programming/E-PSYOPS runnable opens in the Unity editor
Programming/ERSMS-project runnable docker compose up Programming/ERSMS-project runnable docker compose up
Programming/NLP runnable python3 the entry script Programming/NLP runnable python3 the entry script
Programming/PBAD blocked jupyter is on PATH but broken (bad interpreter) Programming/PBAD blocked jupyter is on PATH but does not run (dead shim)
Programming/PORR runnable python3 /home/kuhy/WUT_Computer_Science/Programming/PORR/code/main.py Programming/PORR runnable python3 /home/kuhy/WUT_Computer_Science/Programming/PORR/code/main.py
Programming/PSD runnable starts the Kafka/Flink stack (installs packages with sudo) Programming/PSD runnable starts the Kafka/Flink stack (installs packages with sudo)
Programming/psd_project runnable mvn package Programming/psd_project runnable mvn package
Programming/TRAK runnable python3 /home/kuhy/WUT_Computer_Science/Programming/TRAK/main.py Programming/TRAK runnable python3 /home/kuhy/WUT_Computer_Science/Programming/TRAK/main.py
Programming/twm_4 blocked jupyter is on PATH but broken (bad interpreter) Programming/twm_4 blocked jupyter is on PATH but does not run (dead shim)
Programming/USD no-code README describes a MetaDrive RL assignment; no implementation was submitted Programming/USD no-code README describes a MetaDrive RL assignment; no implementation was submitted
Programming/WDWR runnable python3 the entry script Programming/WDWR runnable python3 the entry script
Programming/ZPOB runnable builds the report with latexmk Programming/ZPOB runnable builds the report with latexmk

1 NotProgramming/DPZ runnable builds the report with latexmk
33 Programming/E-PSYOPS runnable opens in the Unity editor
34 Programming/ERSMS-project runnable docker compose up
35 Programming/NLP runnable python3 the entry script
36 Programming/PBAD blocked jupyter is on PATH but broken (bad interpreter) jupyter is on PATH but does not run (dead shim)
37 Programming/PORR runnable python3 /home/kuhy/WUT_Computer_Science/Programming/PORR/code/main.py
38 Programming/PSD runnable starts the Kafka/Flink stack (installs packages with sudo)
39 Programming/psd_project runnable mvn package
40 Programming/TRAK runnable python3 /home/kuhy/WUT_Computer_Science/Programming/TRAK/main.py
41 Programming/twm_4 blocked jupyter is on PATH but broken (bad interpreter) jupyter is on PATH but does not run (dead shim)
42 Programming/USD no-code README describes a MetaDrive RL assignment; no implementation was submitted
43 Programming/WDWR runnable python3 the entry script
44 Programming/ZPOB runnable builds the report with latexmk

View File

@ -39,6 +39,15 @@ _have() { command -v "$1" > /dev/null 2>&1; }
# _works only for tools that answer --version; _have is right for the rest. # _works only for tools that answer --version; _have is right for the rest.
_works() { _have "$1" && timeout 5 "$1" --version > /dev/null 2>&1; } _works() { _have "$1" && timeout 5 "$1" --version > /dev/null 2>&1; }
# Blocked-with-a-reason for a tool that has to actually run. "needs jupyter"
# and "jupyter is on PATH but does not run" send you to different fixes, and
# the status table is only worth keeping if it says which.
_require_working() {
local tool="$1"
_have "$tool" || _blocked "needs $tool"
_works "$tool" || _blocked "$tool is on PATH but does not run (dead shim)"
}
# Report "blocked" with the reason, which is the whole point of the status # Report "blocked" with the reason, which is the whole point of the status
# table: "needs X" is useful, "failed" is not. # table: "needs X" is useful, "failed" is not.
_blocked() { _blocked() {

View File

@ -52,7 +52,7 @@ _probe() {
_runnable "compiles each standalone .cpp" _runnable "compiles each standalone .cpp"
;; ;;
notebook) notebook)
_works jupyter || _blocked "needs jupyter" _require_working jupyter
# Being on PATH is not the same as working: this machine has a # Being on PATH is not the same as working: this machine has a
# jupyter shim whose pipx venv interpreter is gone, so it fails # jupyter shim whose pipx venv interpreter is gone, so it fails
# with "bad interpreter". Probe by actually invoking it. # with "bad interpreter". Probe by actually invoking it.

View File

@ -181,7 +181,7 @@ _run() {
printf 'binaries in %s/build\n' "$COURSE_ROOT" printf 'binaries in %s/build\n' "$COURSE_ROOT"
;; ;;
notebook) notebook)
_works jupyter || _blocked "needs jupyter" _require_working jupyter
# NOT --inplace: all four notebooks in this repo are tracked WITH # NOT --inplace: all four notebooks in this repo are tracked WITH
# their outputs, so executing in place rewrites a deliverable. # their outputs, so executing in place rewrites a deliverable.
# --output-dir sends the executed copy to a temp dir instead. # --output-dir sends the executed copy to a temp dir instead.