Files
fejkdata/AGENTS.md
T
lilleman 1035f8bb2a
Tests / vet + fmt + tests (pull_request) Successful in 6s
Tests / Gitea release from CHANGELOG.md (pull_request) Has been skipped
Tests / vet + fmt + tests (push) Successful in 5s
Tests / Gitea release from CHANGELOG.md (push) Successful in 4s
Name the register read before claiming none publishes a spelling
2026-09-20 21:41:00 +02:00

1.9 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.
  • 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.