When the gate fails (Part A --simulate bad), reject() prints git restore . # throw the agent's change away (Module 2). In the simulated path the agent's change is the UNTRACKED files agent_demo.py and test_agent_demo.py (plus __pycache__). git restore only touches tracked files, so it removes nothing — the bad change persists. The printed cleanup is wrong for the exact mode the lab tells learners to run first, and it misteaches the Module 2 fact it cites.
Evidence
modules/25-autonomous-agents/lab/agent_runner.py (~lines 180-182) print git restore .. simulate_implement() creates agent_demo.py/test_agent_demo.py as NEW (untracked) files.
Reproduced: after --simulate bad, git restore . leaves agent_demo.py, test_agent_demo.py, __pycache__ unchanged.
Why it matters
The first-run mode the module promotes demonstrates a git fact that is false, undermining a Module-2 safety-net teaching in a course that promises honesty.
Proposed change
Make the printed/instructed cleanup match what actually discards the change:
For the simulated path, have the simulator clean up its own demo artifacts on reject (or print a targeted rm agent_demo.py test_agent_demo.py).
Keep git restore . only for the real-agent path that edits tracked files, with accurate wording.
Do NOT use git clean -fd: it is over-broad (deletes all untracked files in the learner's repo) and would carry a "(Module 2)" callback to a command Module 2 never teaches.
Acceptance criteria
After a --simulate bad reject, the demo change is actually gone.
Any "(Module 2)" attribution only appears next to a command Module 2 taught (git restore on tracked edits).
Affected files
modules/25-autonomous-agents/lab/agent_runner.py
References
Source finding F40 (realVotes 3/3).
Filed from an adversarial multi-agent course review (217 raw findings → 54 adversarially-verified survivors). Scoped for manual review; intentionally not auto-assigned to an agent.
## Problem
When the gate fails (Part A `--simulate bad`), `reject()` prints `git restore . # throw the agent's change away (Module 2)`. In the simulated path the agent's change is the UNTRACKED files `agent_demo.py` and `test_agent_demo.py` (plus `__pycache__`). `git restore` only touches tracked files, so it removes nothing — the bad change persists. The printed cleanup is wrong for the exact mode the lab tells learners to run first, and it misteaches the Module 2 fact it cites.
## Evidence
`modules/25-autonomous-agents/lab/agent_runner.py` (~lines 180-182) print `git restore .`. `simulate_implement()` creates `agent_demo.py`/`test_agent_demo.py` as NEW (untracked) files.
Reproduced: after `--simulate bad`, `git restore .` leaves `agent_demo.py`, `test_agent_demo.py`, `__pycache__` unchanged.
## Why it matters
The first-run mode the module promotes demonstrates a git fact that is false, undermining a Module-2 safety-net teaching in a course that promises honesty.
## Proposed change
Make the printed/instructed cleanup match what actually discards the change:
1. For the simulated path, have the simulator clean up its own demo artifacts on reject (or print a targeted `rm agent_demo.py test_agent_demo.py`).
2. Keep `git restore .` only for the real-agent path that edits tracked files, with accurate wording.
Do NOT use `git clean -fd`: it is over-broad (deletes all untracked files in the learner's repo) and would carry a "(Module 2)" callback to a command Module 2 never teaches.
## Acceptance criteria
- [ ] After a `--simulate bad` reject, the demo change is actually gone.
- [ ] Any "(Module 2)" attribution only appears next to a command Module 2 taught (`git restore` on tracked edits).
## Affected files
- `modules/25-autonomous-agents/lab/agent_runner.py`
## References
Source finding F40 (realVotes 3/3).
---
*Filed from an adversarial multi-agent course review (217 raw findings → 54 adversarially-verified survivors). Scoped for manual review; intentionally not auto-assigned to an agent.*
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Problem
When the gate fails (Part A
--simulate bad),reject()printsgit restore . # throw the agent's change away (Module 2). In the simulated path the agent's change is the UNTRACKED filesagent_demo.pyandtest_agent_demo.py(plus__pycache__).git restoreonly touches tracked files, so it removes nothing — the bad change persists. The printed cleanup is wrong for the exact mode the lab tells learners to run first, and it misteaches the Module 2 fact it cites.Evidence
modules/25-autonomous-agents/lab/agent_runner.py(~lines 180-182) printgit restore ..simulate_implement()createsagent_demo.py/test_agent_demo.pyas NEW (untracked) files.Reproduced: after
--simulate bad,git restore .leavesagent_demo.py,test_agent_demo.py,__pycache__unchanged.Why it matters
The first-run mode the module promotes demonstrates a git fact that is false, undermining a Module-2 safety-net teaching in a course that promises honesty.
Proposed change
Make the printed/instructed cleanup match what actually discards the change:
rm agent_demo.py test_agent_demo.py).git restore .only for the real-agent path that edits tracked files, with accurate wording.Do NOT use
git clean -fd: it is over-broad (deletes all untracked files in the learner's repo) and would carry a "(Module 2)" callback to a command Module 2 never teaches.Acceptance criteria
--simulate badreject, the demo change is actually gone.git restoreon tracked edits).Affected files
modules/25-autonomous-agents/lab/agent_runner.pyReferences
Source finding F40 (realVotes 3/3).
Filed from an adversarial multi-agent course review (217 raw findings → 54 adversarially-verified survivors). Scoped for manual review; intentionally not auto-assigned to an agent.