Use python3 as the canonical command name course-wide (#104) (#105)
CI / check (push) Successful in 7s
Sync course wiki / sync-wiki (push) Successful in 4s

This commit was merged in pull request #105.
This commit is contained in:
2026-06-23 20:25:05 -04:00
parent 7f439212ac
commit 95e5911957
102 changed files with 380 additions and 378 deletions
@@ -6,8 +6,8 @@ index 91e9276..b2c4f1a 100644
def main(argv: list[str]) -> int:
tlist = load()
if not argv:
- print("usage: python cli.py [add <title> | list | done <index>]")
+ print("usage: python cli.py [add <title> | list | done <index> | clear]")
- print("usage: python3 cli.py [add <title> | list | done <index>]")
+ print("usage: python3 cli.py [add <title> | list | done <index> | clear]")
return 1
command = argv[0]
+2 -2
View File
@@ -4,8 +4,8 @@ This stands in for a forge-native reviewer (an app/bot triggered when a PR opens
runner from Module 19) without needing any hosted account. It does the two deterministic halves of
the job and leaves the one judgment call (what actually happens to the PR) to you.
python reviewer.py prompt # assemble the prompt: rubric + diff, for the agent to review
python reviewer.py apply ai-review.sample.json # ingest the agent's JSON, render it, gate it
python3 reviewer.py prompt # assemble the prompt: rubric + diff, for the agent to review
python3 reviewer.py apply ai-review.sample.json # ingest the agent's JSON, render it, gate it
The point of this module: the agent produces comments and a recommendation. It never approves,
never requests-changes-as-a-gate, never merges. The `apply` step ends at a HUMAN DECISION, every
@@ -1,12 +1,12 @@
Title: `done` command crashes on an empty list
When I run `python cli.py done 0` right after a fresh checkout, before adding any tasks, it throws
When I run `python3 cli.py done 0` right after a fresh checkout, before adding any tasks, it throws
an IndexError and dumps a stack trace instead of a friendly message. Every other command handles the
empty-list case fine, so this one feels like an oversight.
Steps to reproduce:
1. Delete tasks.json (or clone fresh).
2. Run `python cli.py done 0`.
2. Run `python3 cli.py done 0`.
3. See the traceback.
Expected: a clear message like "no task at index 0", exit non-zero, no traceback.
+2 -2
View File
@@ -4,8 +4,8 @@ Stands in for a forge-native triage agent (triggered when an issue opens) withou
It assembles the prompt, then validates and renders the AI's suggestion, and stops at a human
confirm. The agent proposes labels and a route; it does not apply them.
python triage.py prompt # taxonomy + issue -> prompt for the agent
python triage.py apply ai-triage.sample.json # validate + render + confirm gate
python3 triage.py prompt # taxonomy + issue -> prompt for the agent
python3 triage.py apply ai-triage.sample.json # validate + render + confirm gate
The validation step matters: the agent may only use labels that exist in label-taxonomy.md. A
hallucinated label is rejected. Stdlib only, no pip install.