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:
@@ -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.
|
||||
Reference in New Issue
Block a user