AGENTS.md · git:20261014.7134058 · 2026-10-14 · sha256 2734cc09ab2b3f73
AGENTS.md git:20261014.7134058B
Immutable. This exact content never changes and is served at /api/v1/blob/2734cc09ab2b3f73.
<!-- hard-eng:start --> # Agent Rules - `.hooks/hard-eng-source.json` exists → get session's Hard Eng update status before any repo work (read-only too). - SessionStart reports last result + starts/reports a background update; verified → 1 commit on local `hard-eng/update` from remote base, current branch untouched. - No status → from repo root: `curl -fsSL https://raw.githubusercontent.com/sgaabdu4/hard-eng/main/setup.sh | sh` (prepares that branch). - Prepared branch → `python3 .hooks/hard-eng.py update-pr` (opens/reuses PR, auto-merges after checks, no approval; merge denied → rerun `--no-merge`, give user its printed merge command once checks pass). Exempt from one-PR rules; failing → fix on own branch + worktree first. - Report: updated | no newer verified release | running in background | failed. No updater output = failed (even exit 0); marker/session file alone ≠ success. - Rerun setup only after failed or no status; never mid-update. - Before editing: state the single change, files touched + verification. - Scope = user request + accepted constraints; preserve unrelated work. - Project rules = `AGENTS.md` (Claude + Codex); move unique legacy `CLAUDE.md` rules to the matching one before retiring it; never recreate import wrappers or publish private local instructions. - Before recording tracked content or publishing → apply [publication privacy](.agents/skills/he-ship/references/checks.md#publication-privacy) for the audience. - YAGNI = ultra unless user changes it. Understand the real flow; reuse existing files/code/stdlib/native commands + installed deps before adding code. - New file/dep/wrapper/abstraction/config/stored state → needs current agreed requirement + why existing code/direct command can't; else omit. Explain in updates; no justification files. - Comments: none by default; ≤1 terse why-line for a non-obvious constraint names/types/structure/tests can't carry. `check` fails changed source files with longer comment blocks (old ones too). - Fix causes at existing owner. Optional improvements + extra infra only on explicit request; never for robustness/best practice/future needs. - Tests: each proves a named outcome or catches a specific meaningful failure; reuse first; no implementation mirrors/padding. Name outcomes + failure modes first; tests may follow code, except bug fixes: failing repro test first, expected result from report/contract. Journeys → real E2E where applicable; lower-level tests only for many-case logic + bug repros. Deleting one → state what it protects + replacement proof or why unneeded; E2E overlap alone ≠ enough. [testing](.agents/skills/he/references/testing.md) - Verification: run applicable gates + prove affected behavior; never hide findings, weaken checks or claim unrun checks passed. Repair every finding in code (unrelated too) as its own commit before continuing; never baseline/tolerate/suppress. Gates stay required even if Hard Eng/updater fails. - Before done: review diff vs latest request; remove unsupported additions + report remaining expansion. Passing tools/metrics ≠ proof of necessity or test quality. - Reuse settled approvals; ask only if missing info changes the result or a consequential action lacks approval. - Output ~80% ASD-STE100: 1 idea/sentence, ≤20 words, active voice, common words, no jargon/idioms; reports = changes, proof, gaps. - Setup prints `Gap:` (missing check/language) → file without asking: `python3 .hooks/hard-eng.py gap-issue "<missing check, generic>"`; no project names/code/paths/data. - Reproduced fault in Hard Eng's `.hooks/`, `.agents/skills/he*` or setup → tell user, check [issues](https://github.com/sgaabdu4/hard-eng/issues) for duplicates, then with approval file a terse one: Problem, Reproduction, installed revision, Suggestion; apply publication privacy. - Follow `.agents/skills/he/SKILL.md`; commands: `python3 .hooks/hard-eng.py --help`. <!-- hard-eng:end -->