Design-First Light Tasks & Enforced Quality Gates
Agents Remember 0.9.6
Brings think-before-acting into the light task workflow and turns the quality suite into an enforced gate. W-02 light tasks can now carry a design section linked to the task collaboration doctrine, and CI plus a shared pre-push hook now block any change that fails ruff, Pyright, the full test suite, or CRAP.
Highlights
- W-02 light tasks get a
## Designsection. The light-task template now has a design slot above the implementation steps, andworkflow.mdlinks to the Task Collaboration Doctrine (tasks/AGENTS.md) with a short "reframe and design" step — so the design is settled and recorded before steps are written, at a depth scaled to the request, without duplicating the doctrine. - Quality is now an enforced gate, not a convention. A new CI workflow (push/PR on
main, Python 3.11/3.12/3.13) and a shared pre-push hook both run the full quality wrapper with--fail-on-crap-threshold, so ruff, Pyright, the full pytest suite, and CRAP all fail the build. - The test suite is hardened against ambient git state.
conftest.pynow strips git's repo-pointer variables (GIT_DIR,GIT_WORK_TREE, …) before tests run, so the worktree/closeout fixtures can never commit into a real repository (for example when run from inside a git hook), and sets a fallback commit identity for self-contained runs.
Light Task Workflow
- New
## Designslot in the W-02 template, above Implementation Steps, sized to the request per the doctrine — a straightforward change simply notes that no design reasoning is needed. workflow.mdgains a "Reframe and design before writing the plan" step, addsdesignto the required-sections list, and a new SKILL invariant ties it together. The change links to the doctrine rather than restating it, so there is one source of truth.
Quality Enforcement
.github/workflows/quality-checks.yml— runspython -m agents_remember.code_quality.check --fail-on-crap-thresholdacross a 3.11 / 3.12 / 3.13 matrix on every push and pull request tomain..githooks/pre-push— the same command as a local gate; enable once withgit config core.hooksPath .githooks(documented inCONTRIBUTING.md).mcp/tests/conftest.py— strips git repo-pointer environment variables and sets a fallback commit identity so the worktree/closeout fixtures stay hermetic.
Verification
Full quality wrapper green: ruff clean, Pyright 0 errors, 289 passed / 3 skipped.