Files
fejkdata/AGENTS.md
T
lilleman 976d2e5ac1
Tests / vet + fmt + tests (pull_request) Successful in 1m25s
Tests / Gitea release from CHANGELOG.md (pull_request) Has been skipped
Tests / vet + fmt + tests (push) Successful in 7s
Tests / Gitea release from CHANGELOG.md (push) Successful in 4s
Rank understanding the code second, and say why it is not an afterthought
2026-09-20 23:19:53 +02:00

2.4 KiB

Rules

  • Go runs only through docker compose run --rm <test|vet|fmt|build|cyclo>; the merge gate is docker build . plus CI's changelog check.
  • Tests first, in their own commit; the implementation follows in the next. A re-pin of seeded output or of testdata/shipped_shape.txt is its own commit.
  • A change under data/ or to the shape pin adds its CHANGELOG.md entry under Unreleased in the same PR, and so does a change to a flag, an exit code, an exported name, a fence, a builtin or the lowest Go; what is major is the README's Versioning table.
  • One-line commit messages: no ticket prefix, no repo name, no authorship trailers.
  • Merges are fast-forward only, which tea pr merge cannot spell — every style it offers fails with "is it still open?", as does a merge whose required checks are still pending, so read the checks before believing the style is the problem. Use tea api /repos/{owner}/{repo}/pulls/<n>/merge -f Do=fast-forward-only.
  • Gitea queues Actions runs that /repos/{owner}/{repo}/actions/tasks does not list, so an empty task list says nothing about whether CI ran; read /repos/{owner}/{repo}/commits/<sha>/status.
  • README goal 2 is gated at 7.0 on the comprehension-panel skill, and below it nothing else merges — no feature, no category, no data — bar a security fix and a dependency bump. todo.md carries the round: the nine-seat findings run at depth 1, a PR per item it names, then the run again, until the score passes. At or above 7.0 every pull request scores with the four-seat run and answers it in one run. No merge lowers the last score.
  • Hard tabs. No comment by default; delete a restatement, a rationale, history, or a file preamble.
  • One spelling per result: reject the other at New, and let the error name the spelling to use.
  • A standing choice a reader would relitigate goes under Decisions in the README, not in a comment.
  • Prose naming a source states what that source states: read the register's own field before paraphrasing it, and name the register you read before claiming none publishes a spelling.
  • A README example is a json block that loads and renders as a category; readme_test.go runs every one.
  • Cyclomatic complexity is gated at 14: the table-shaped dispatches (linkParent, compileTemplate, renderEdges) sit at it and stay whole; a function that would pass it is decomposed.