fix(voice/consistency): vary stock formulas, vendor-balance orient.py, unify the loop

- Vary 11 instances of two boilerplate openers ("A generic X course…" /
  "Strip away X…") across 10 modules so they read as distinct, concrete prose;
  kept the few deliberate, voice-distinct uses; locked exemplars untouched.
- M23 orient.py: detect a vendor-balanced set of AI-instruction filenames
  (AGENTS.md/CLAUDE.md/GEMINI.md/.cursorrules/.cursor/rules/copilot-instructions)
  instead of singling out one vendor. Still runs.
- Render the collaboration loop consistently as seven stations
  (issue->branch->implementation->PR->review->merge->closed) in M25/M26 to match
  M11 and the syllabus.

Closes #48
Closes #49
Closes #51

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 17:45:20 -04:00
parent f7011d4211
commit 7e8046a57f
12 changed files with 35 additions and 33 deletions
@@ -40,9 +40,9 @@ By the end of this module you can:
### What an issue actually is (for this audience)
Strip the project-management vocabulary away and an issue is one thing: **a written, addressable unit
of work that lives next to the code instead of in someone's head, a Slack thread, or a chat tab.**
It has a title, a body, and metadata (labels, an assignee, a status). It gets a stable number. You
An issue is **a written, addressable unit of work that lives next to the code instead of in
someone's head, a Slack thread, or a chat tab.** The project-management vocabulary around it varies;
that core doesn't. It has a title, a body, and metadata (labels, an assignee, a status). It gets a stable number. You
can link to it, search it, and close it.
You already know this shape — it's a ticket. Jira, Linear, ServiceNow, a help-desk queue: same idea.
@@ -198,9 +198,8 @@ You don't need any of that yet. You need issues good enough to feed it. That's t
## The AI angle
A generic project-management lesson would teach the same issue tracker. What's specific to
AI-assisted work is that **the issue has quietly become an agent's task specification**, and that
raises the stakes on writing it well in three concrete ways:
The issue tracker itself isn't new. What's changed is that **the issue has quietly become an agent's
task specification**, and that raises the stakes on writing it well in three concrete ways:
- **Acceptance criteria are the agent's definition of done.** A human reads fuzzy criteria and fills
the gaps with judgment. An agent reads them literally and stops when they're satisfied — so vague