Prompt file imported from Zeruel87/Cameo-mod (
.windsurf/workflows/task-pipeline.md). Copyright stays with the author.
Task pipeline (run this shape for every task, big or small)
1. Start — load context (never skip, even for "small" tasks)
Read, in this exact order (see docs/README.md for the canonical definition):
CLAUDE.md(repo root)docs/LESSONS_LEARNED.mddocs/AGENT_WORKSPACE.mddocs/HANDOFF.md← the entry point: current state + priority queuedocs/DESIGN.mddocs/design/ROADMAP.mddocs/audit/SUMMARY.md- Then the relevant topic doc(s) for the task at hand (table in
docs/README.md).
If chat memory, old notes, or a prior session's assumptions conflict with these documents, the documents win. Record any newly discovered crash/regression/discrepancy in docs/design/ROADMAP.md before implementing a fix.
2. Sync with remote before starting real work
// turbo
-
git fetch --all -
Review incoming changes (
git log HEAD..origin/<branch> --oneline); if there are any,git pull/merge before proceeding. Resolve conflicts before continuing. Never let local work silently diverge from a co-maintainer's changes. -
If
mod.config'sENGINE_VERSIONchanged as part of the merge, follow the engine update pipeline indocs/LESSONS_LEARNED.md(rebuild viamake.cmd allbefore boot-gating).
3. Do the implementation work
- Prefer minimal, root-cause fixes (see global bug-fixing discipline).
- For bulk/mechanical changes, write or reuse a script under
tools/rather than hand-editing many files — but verify its output structurally (seedocs/LESSONS_LEARNED.md§ Bulk YAML rename scripts for the corruption classes to avoid: blind substring/word-boundary substitution, namespace collisions, comment-style mismatches). - Run the relevant targeted audit(s) (
tools/audit/audit_<name>.py) as you go, not just at the end.
4. Verify before commit — the mandatory pre-commit gate
- Update ALL affected documentation FIRST:
docs/design/ROADMAP.md,docs/DESIGN.md,docs/audit/SUMMARY.md,docs/LESSONS_LEARNED.md, and regeneratedocs/audit/latest/*.mdreports touched by the change. A change without updated docs is incomplete. - Run the targeted audit(s) for the change, then the full suite when practical:
bash tools/audit/run_all.sh— the canonical runner.tools/audit/run_all.pyis a port for shells withoutshand reads its audit list out of the.sh, so the two cannot drift. Never a PowerShell>redirect: it writes UTF-16 and corrupts every report.docs/audit/latest/is only written from a COMPLETE tree (engine/built, clone not shallow); anywhere else the suite still runs but writes to the untrackeddocs/audit/degraded/and says why, because an incomplete tree reports FEWER findings and still says PASS. - Build: run
make.cmd all(fetches/rebuilds the engine + mod). Zero errors required. If C# sources changed, this step is mandatory — stale DLLs crash the boot withCannot locate type: …Info. - Boot-gate (never skip, never fake): snapshot the current file list in
%APPDATA%/OpenRA/Logs(or useboot-test.cmd, which launches the game for ~30s and can be inspected afterward), then launch the game (launch-game.cmdorboot-test.cmd). Confirm:perf.logends withMenuPostProcessEffect.PostWorldLoaded(reached the main menu), and- no NEW
exception-*.logfiles appeared, and debug.loghas no newException/not found/FATALlines from this run. If the boot-gate fails, fix the regression and repeat this entire verification step — do not commit a broken boot. If Windows Smart App Control blocks a local build, seedocs/LESSONS_LEARNED.md§ Smart App Control for the four documented workarounds — never silently skip the gate, and record the SAC state in the commit message if a workaround was needed.
5. Commit — for review, never auto-push
- Stage ONLY the files belonging to this change with a scoped
git add <files>— nevergit add -A(the maintainer usually has other live uncommitted edits). - Write a self-explanatory commit title/body (no internal jargon like "Phase 5" or "A2 audit" without pointing to where it's defined — see
docs/AGENT_WORKSPACE.mdgit rules). - Commit locally. Do not push and do not open a PR unless the user explicitly asks for it — the commit sits locally for the user to review first.
- Tell the user: what changed, what was verified (audits + boot-gate result), and any known follow-ups or deferred items, so they can review the commit before deciding to push.
