refactor(agents): migrate .agent/ planning tree to .agents/

Standardize on the .agents/ directory (shared with project skills):
phases/, user_stories/, reports/, screenshots/, validate.sh, and
phase-sessions/ + pipeline.log all move to .agents/ (git mv preserves
history; runtime artifacts move alongside).

Updates every reference in AGENTS.md, README.md, .gitignore, app
docstrings, and test story headers. Historical KB content in data/
and the runtime pipeline.log transcript are left untouched.
This commit is contained in:
2026-09-05 10:57:07 -04:00
parent 766702c750
commit dbf2af26c6
1118 changed files with 664 additions and 664 deletions
@@ -0,0 +1,35 @@
# Task 04 — Deflect Prompt: Plain-Text-Only Line (Prevention)
**Phase:** `71_scaffolding_guardrails` · **Story:** n/a (owner request from chat, 2026-09-03)
## Objective
Close the door at the prompt: the deflected (LOW) turn offers no tools, so any tool
markup there is always wrong — add one plain-text-only instruction line to the
`DEFLECT_MODE` body. This is the owner-permitted change to the otherwise-locked LOW
prompt; the `DEFLECT_MODE` marker and everything else in the prompt stay put (the
E2E mock keys on the marker's presence, not the wording).
## Work
1. `app/rag/prompts.py` — `build_deflect_prompt`: append one line to the
`DEFLECT_MODE` body (after "…propose 2-3 alternative questions."):
"Reply in plain text only — you have no tools in this mode." The weak-hit
title list follows exactly as today; `build_high_prompt`, `PERSONA`,
`TOOLS_SECTION`, and the section order are untouched. Update the module
docstring: the phase-71 note (owner-permitted 2026-09-03 LOW-prompt line;
the marker-keying contract unchanged).
2. `tests/unit/test_prompts.py` (and `test_chat_gate.py` where the deflection body
is pinned) — pins: the new line present in the LOW prompt; the `DEFLECT_MODE`
marker still present (mock keying); the HIGH prompt unchanged (byte-identical
pins stay green — the line must not leak into HIGH); the byte-identical-when-
empty steering/overview behavior unchanged.
## Testing & Quality
- Unit: the prompt pins above.
- Coverage: **>90%** on this task's modified code (`app/rag/prompts.py`).
## Completion Criteria
- [ ] `uv run pytest tests/unit/test_prompts.py tests/unit/test_chat_gate.py -v
--no-cov` green.
- [ ] LOW prompt = pre-phase text + exactly the one new line (a diff pin, or a
reconstruction pin in the test).
- [ ] `uv run ruff check . && uv run pyright` clean.