style(no-slop): remove every em-dash + banned words across all modules + capstone

Apply the no-ai-slop standard (now binding in AGENTS.md): the em-dash character is
banned outright (restructured, not blind-replaced), plus the banned word/phrase
list (delve, leverage, robust, seamless, truly, unlock, etc.). 0 em-dashes remain
in modules + capstone; the only "robust" left is the planted M10 ai-change.patch
trap. Module H1 titles use a colon separator.

All deliberate teaching devices preserved; labs compile/parse (py/sh/yaml/json);
no junk. AGENTS.md updated with the hard no-slop rules.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TfzV5QvtPDz8LJS3Pu5VLT
This commit is contained in:
2026-06-22 23:21:09 -04:00
parent 513d7e7ac8
commit 389ac2e460
99 changed files with 1324 additions and 1315 deletions
@@ -1,7 +1,7 @@
# Agent prompt issue #42, branch `feature/42-count`
# Agent prompt: issue #42, branch `feature/42-count`
Run this in the `tasks-app-42-count` worktree. This agent's work is genuinely parallel with #43
(docs) different files and deliberately collides with #44 (clear) at `cli.py`'s dispatch chain.
(docs), which touches different files, and deliberately collides with #44 (clear) at `cli.py`'s dispatch chain.
---
@@ -10,13 +10,13 @@ You are working in this worktree only. Do not touch any other folder.
**Task:** Add a `count` command to `cli.py` that prints the number of *pending* (not-done) tasks.
- Add a new `elif command == "count":` branch to the dispatch in `main()` in `cli.py`.
- Use the existing `TaskList.pending()` method from `tasks.py` do not change `tasks.py`.
- Use the existing `TaskList.pending()` method from `tasks.py`; do not change `tasks.py`.
- Print just the integer, e.g. `3`.
**Acceptance criteria:**
- `python cli.py count` prints the number of pending tasks and exits 0.
- No other files change. (`README.md`, `CHANGELOG.md`, and `tasks.py` are owned by other agents
- No other files change. (`README.md`, `CHANGELOG.md`, and `tasks.py` are owned by other agents;
stay out of them.)
When done, commit your work on this branch with a message referencing #42, then push the branch. Stop
@@ -1,13 +1,13 @@
# Agent prompt issue #43, branch `feature/43-docs`
# Agent prompt: issue #43, branch `feature/43-docs`
Run this in the `tasks-app-43-docs` worktree. This agent owns documentation only different files
Run this in the `tasks-app-43-docs` worktree. This agent owns documentation only, different files
from every other agent in the fleet, so it merges cleanly no matter what the others do. This is what
a *genuinely* parallel split looks like: disjoint files, no shared interface.
---
You are working in this worktree only. Do not touch any other folder, and do not edit `cli.py` or
`tasks.py` code is owned by other agents.
`tasks.py`; code is owned by other agents.
**Task:** Document the `tasks-app` and start a changelog.
@@ -15,7 +15,7 @@ You are working in this worktree only. Do not touch any other folder, and do not
and `done <index>`. Show an example invocation for each.
- Create `CHANGELOG.md` with a "Keep a Changelog"style `## [Unreleased]` section and an `### Added`
list. (Other agents are adding commands in parallel; leave a placeholder line noting that new
commands are landing the human will reconcile the exact list at merge.)
commands are landing; the human will reconcile the exact list at merge.)
**Acceptance criteria:**
@@ -1,7 +1,7 @@
# Agent prompt issue #44, branch `feature/44-clear`
# Agent prompt: issue #44, branch `feature/44-clear`
Run this in the `tasks-app-44-clear` worktree. **This agent deliberately collides with #42.** Both
add a new `elif` to the same dispatch chain in `cli.py` same file, same region. That's the
add a new `elif` to the same dispatch chain in `cli.py`: same file, same region. That's the
agent-vs-agent merge conflict the lab wants you to predict in Part A and resolve in Part C. It is not
a mistake in the lab; it is the lesson. Two agents on the same file is a *joint*, not a seam.
@@ -1,8 +1,8 @@
#!/usr/bin/env bash
# Module 26 lab tear down the fleet after the work has merged.
# Module 26 lab: tear down the fleet after the work has merged.
#
# Removes each worktree and prunes stale records. Refuses to remove a worktree with uncommitted
# work (Git's safety) commit or merge first. Run from inside your tasks-app repo.
# work (Git's safety); commit or merge first. Run from inside your tasks-app repo.
set -euo pipefail
@@ -17,7 +17,7 @@ git rev-parse --git-dir >/dev/null 2>&1 || { echo "not a git repo" >&2; exit 1;
for path in "${FLEET[@]}"; do
if [ -d "$path" ]; then
echo "remove: $path"
git worktree remove "$path" # fails if dirty that's intentional; commit first
git worktree remove "$path" # fails if dirty; that's intentional, commit first
fi
done
@@ -1,5 +1,5 @@
#!/usr/bin/env bash
# Module 26 lab fan work out across a fleet of worktrees.
# Module 26 lab: fan work out across a fleet of worktrees.
#
# Creates one worktree per issue, each on its own issue-named branch. main is left untouched
# and reserved as the integration point. Run from inside your tasks-app repo.
@@ -34,5 +34,5 @@ for entry in "${FLEET[@]}"; do
done
echo
echo "Fleet is up. main is reserved for integration no agent works there."
echo "Fleet is up. main is reserved for integration; no agent works there."
git worktree list
@@ -1,7 +1,7 @@
# Coordination plan Module 26 lab
# Coordination plan: Module 26 lab
This is the artifact orchestration runs on. With one agent, the plan lived in your head. With a
fleet, it has to live here because your head doesn't scale and it forgets (Module 2).
fleet, it has to live here, because your head doesn't scale and it forgets (Module 2).
Fill the **Status** column as you go, and answer the questions at the bottom. The plan is the
deliverable, not the code.
@@ -12,15 +12,15 @@ deliverable, not the code.
| Issue | Branch | Worktree | Files owned | Depends on | Status |
|-------|--------|----------|-------------|------------|--------|
| #42 count | `feature/42-count` | `tasks-app-42-count` | `cli.py` (dispatch + new fn) | | queued |
| #43 docs | `feature/43-docs` | `tasks-app-43-docs` | `README.md`, `CHANGELOG.md` | | queued |
| #44 clear | `feature/44-clear` | `tasks-app-44-clear` | `cli.py` (dispatch + new fn) | | queued |
| #42 count | `feature/42-count` | `tasks-app-42-count` | `cli.py` (dispatch + new fn) | none | queued |
| #43 docs | `feature/43-docs` | `tasks-app-43-docs` | `README.md`, `CHANGELOG.md` | none | queued |
| #44 clear | `feature/44-clear` | `tasks-app-44-clear` | `cli.py` (dispatch + new fn) | none | queued |
`main` is reserved as the integration point. No agent works in the main worktree.
---
## Part A Predict the conflicts BEFORE you launch
## Part A: Predict the conflicts BEFORE you launch
Read the "Files owned" column. Which pairs are genuinely parallel, and which will collide at merge?
Write your prediction here, then watch it come true in Part C.
@@ -32,7 +32,7 @@ Write your prediction here, then watch it come true in Part C.
---
## Part D Score the orchestration honestly
## Part D: Score the orchestration honestly
- **Did parallel beat sequential?** Agent wall-clock (overlapping) + your serial review time +
conflict resolution, vs. "I'd have done these three myself, in order."
@@ -1,5 +1,5 @@
#!/usr/bin/env bash
# Module 26 lab fleet dashboard.
# Module 26 lab: fleet dashboard.
#
# Prints every worktree, its branch, and how much work is in flight (uncommitted changes +
# commits ahead of main). Your "where is every agent?" view in one command. Run from anywhere