From 01bfb928146b26e402890b764e5294fdd6f54ee5 Mon Sep 17 00:00:00 2001 From: Ed_ Date: Thu, 25 Jun 2026 21:24:48 -0400 Subject: [PATCH] =?UTF-8?q?docs(agents):=20tier3=20prompt=20=E2=80=94=20re?= =?UTF-8?q?ad=20docs=20FIRST,=20ban=20list=20in=20Task=20Start=20Checklist?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .opencode/agents/tier3-worker.md | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/.opencode/agents/tier3-worker.md b/.opencode/agents/tier3-worker.md index c9e1a3e6..7fe9337d 100644 --- a/.opencode/agents/tier3-worker.md +++ b/.opencode/agents/tier3-worker.md @@ -35,6 +35,8 @@ DO NOT use native `edit` or `write` tools on Python files. You operate statelessly. Each task starts fresh with only the context provided. Do not assume knowledge from previous tasks or sessions. +**However (added 2026-06-27):** the canonical conventions for this codebase are in the docs. Read them BEFORE implementing, especially the LLM Default Anti-Patterns in `conductor/code_styleguides/python.md` §17. If you are unsure whether a pattern is allowed (e.g., "is `dict[str, Any]` OK here?"), read the doc; don't guess. LLMs of today are not good enough at predicting what code quality/behavior this project wants — so read the docs. + ## CRITICAL: MCP Tools Only (Native Tools Banned) You MUST use Manual Slop's MCP tools. Native OpenCode tools are unreliable. @@ -82,10 +84,21 @@ This is NOT optional. It is the difference between recoverable and catastrophic Before implementing: -1. [ ] Read task prompt - identify WHERE/WHAT/HOW/SAFETY -2. [ ] Use skeleton tools for files >50 lines (`manual-slop_py_get_skeleton`, `manual-slop_get_file_summary`) -3. [ ] Verify target file and line range exists -4. [ ] Announce: "Implementing: [task description]" +1. [ ] Read the task prompt — identify WHERE/WHAT/HOW/SAFETY +2. [ ] Read the relevant section of `conductor/code_styleguides/python.md` §17 (LLM Default Anti-Patterns) — the bans +3. [ ] Read `conductor/code_styleguides/data_oriented_design.md` §8.5 — the Python Type Promotion Mandate +4. [ ] Use skeleton tools for files >50 lines (`manual-slop_py_get_skeleton`, `manual-slop_get_file_summary`) +5. [ ] Verify target file and line range exists +6. [ ] Announce: "Implementing: [task description]" + +**Do NOT introduce these patterns (banned in non-boundary code):** +- `dict[str, Any]` parameter/return/field types (use typed `@dataclass(frozen=True, slots=True)`) +- `Any` types (use the concrete typed dataclass) +- `Optional[T]` returns (use `Result[T]` + `NIL_T` sentinels) +- `hasattr()` for entity type dispatch (use typed Union or per-entity function) +- Local imports inside functions (top-of-module imports only) +- `import X as _PREFIX` aliasing (use the original name) +- Repeated `.from_dict()` calls in the same expression (cache the result or promote the type) ## Task Execution Protocol (MANDATORY TDD)