1 # hu13 definition of done (v1 gate)2 3 Global rubric. v1 tags ONLY when every line passes, verified by supervisor4 + CI + dogfood, not by claim.5 6 ## Site7 8 - [ ] `hu13 build <repo> -o dist/` on this repo + a fixture repo with no9 `.forge/` both exit 0; no warnings on clean input.10 - [ ] dist/ works on `file://` and any static server, JS disabled.11 - [ ] Code tab: tree, README, header (branch+sha, counts, CI verdict),12 clone cmd, `repo.bundle` (clones: `git clone repo.bundle` works),13 `repo.tar.gz` (extracts).14 - [ ] File pages escaped (`<script>` in source shows as text), line numbers,15 raw byte-identical (`diff` clean), >256KB placeholder.16 - [ ] Commit pages include full diff `<pre>`; message escaped.17 - [ ] Issues/PRs numbers match `(created,id)` rank; patch.diff shown;18 tasks grouped; CI badges correct; releases list + artifacts download19 byte-identical with sha256 from notes; wiki index titles correct.20 - [ ] feed.atom validates (50 max, newest first). api/*.json parse and21 match HTML counts. agents page has curl examples.22 23 ## Mailbox24 25 - [ ] Only 2 POST routes; GET on them = 404/405. No inbox content in dist/.26 - [ ] Caps enforced: over-limit -> 413, nothing stored. multipart -> rejected.27 - [ ] Null bytes / non-UTF8 -> 400. Control chars stripped.28 - [ ] Honeypot filled -> silent `received`, nothing stored.29 - [ ] Rate limit 2/hr/IP -> 429. Quota 500 -> 503. No length -> drop.30 - [ ] Ack uuid shown once, never in URL, no lookup endpoint.31 - [ ] License unchecked -> 400. Checked -> stored license_version+hash.32 - [ ] Daemon user writes ONLY inbox dir (verified in compose/dockerfile).33 - [ ] `inbox list|show` prints escaped plain text only.34 35 ## Ship36 37 - [ ] `cargo fmt --check`, `clippy -D warnings`, `cargo test` green.38 - [ ] Docker: fresh `repo/` + restart rebuilds; inbox volume survives restart.39 - [ ] CSS <15KB, binary <2MB (or documented cut list).40 - [ ] License text owner re-read done (deferred issue closed).41 - [ ] Tokyo Night dark, sharp corners (`border-radius: 0` grep clean).42 43 ## Verify loop44 45 For each issue: implement -> `cargo test` + targeted checks -> dogfood build46 -> supervisor re-tests rubric -> fail powers a fix commit on same branch,47 never a new issue. Close only on green.