docs: scrub GitHub-specifics after Gitea migration; add tea issue conventions

- Cargo.toml: repository -> git.lazyeval.net/oli/rdbms-playground
- requirements.md: backlog now tracked as Gitea issues
- ADR-0001 Amendment 1: distribution channel reopened post-migration
  (Decision text preserved per supersede-don't-rewrite)
- CLAUDE.md: issue-tracking working method + Gitea/tea operational section
This commit is contained in:
claude@clouddev1
2026-06-09 20:07:40 +00:00
parent e9b7f58fbc
commit b17148b467
5 changed files with 94 additions and 4 deletions
+69
View File
@@ -166,6 +166,17 @@ Key invariants in the code:
until it settles. The ADR-0000 index-upkeep rule applies:
every ADR change updates `docs/adr/README.md` in the same
edit.
- **Issue tracking.** Bugs and enhancements are filed as Gitea
issues (see *Issue tracking — Gitea via `tea`* below).
`docs/requirements.md` and the ADRs remain the source of truth
for **scope and decisions**; issues are the lightweight tracker
for **discrete work items**, cross-referenced from commits and
handoffs (e.g. `fix: … (#12)`). The project is near completion
of its initial requirements, so no heavyweight planning workflow
is run — the document-based requirements are augmented with
issue references as work proceeds. A change that touches a
*decided* area still earns an ADR; the issue references the ADR,
it does not replace it.
- **Testing.** Per the user's global standards, tests are
established before changes, bugs are reproduced with failing
tests before being fixed, and "all green, no skips" is the
@@ -190,6 +201,64 @@ Key invariants in the code:
`git commit` is preceded by an explicit message proposal
and user approval. No AI attribution in commit messages.
## Issue tracking — Gitea via `tea`
Extends (does not replace) the generic Gitea/`tea` safety rules in
the global `CLAUDE.md`. Use `tea` to manage Gitea issues; `tea
--help`, `tea issues --help`, etc. for command reference.
**Repo coordinates.** This repo lives on the self-hosted Gitea at
`git.lazyeval.net` as `oli/rdbms-playground`. `tea` **auto-detects
it correctly off the git remote** — verified — so plain `tea issues`
works here even though the machine's *default* `tea` login is a
different host (`git.oliversturm.com`). Pass `--login
git.lazyeval.net --repo oli/rdbms-playground` only as a fallback if
auto-detection ever slips. **Never** fall back to raw API calls
(`curl`/`fetch`) when `tea` misbehaves — tokens leak into shell
history; fix `tea` instead (usually `--login`/`--repo`).
**Labels.** Preconfigured (`bug`, `enhancement` are in use).
**Ask the user before creating new labels.** Create with `tea
labels create --name <n> --color <hex> --description <d>`.
### Critical gotchas
- **`tea` blocks on stdin in a non-TTY → hangs.** `tea comment`,
`tea issue … --comments`, and similar **wait on stdin** when not
attached to a terminal, so they hang silently. **Always append
`< /dev/null`**, and wrap in `timeout 30` as a safety net:
`timeout 30 tea comment <idx> "$body" < /dev/null`. Verify the
write landed afterwards (re-fetch); don't trust a clean exit alone.
- **Multi-line comment / description bodies**: heredocs do **not**
work with `--description` / the comment-body arg. Write the
markdown to a temp file and pass it via shell substitution: `tea
comment <idx> "$(cat /tmp/body.md)" < /dev/null` (same for `tea
issues edit --description "$(cat …)"`).
- **Read an issue's RAW body** (for editing): the default/`--output
yaml` view is a lossy rendered box. Use JSON: `tea issue <idx>
--fields body --output json < /dev/null | jq -r '.body'`. **`tea
issues edit --description` replaces the WHOLE body** — splice
surgically and keep the raw backup before applying.
- **Reopen**: use `tea issues reopen <index>`, NOT `tea issues edit
--state open`.
- **Milestones** (not currently used here, but if introduced): set
with `tea issues edit --milestone "<name>" <idx>` (empty string
clears it). **Options MUST precede the `<idx>`** — flag-after-index
silently no-ops. The `tea issues create --milestone …` flag is
**unreliable** — set the milestone with a follow-up `edit` and
verify.
- **Display blind-spot — don't loop on this.** `tea issue <n>
--fields milestone` and `--fields comments` render `None`/`0`
**even when set** — they are NOT a source of truth. Confirm a
**milestone** via the filtered list (`tea issues list --milestones
"<name>" --limit 100 | grep <idx>`; presence = set); confirm a
**posted comment** via `tea issue <n> --comments` (NOT the
`comments` count field). Labels/state/title DO render correctly on
the single-issue fetch; only milestone + comments don't.
- **Pagination**: default ~50 issues. Use `--limit 100` (or more)
for full lists; `--state all` to include closed; `--output
tsv`/`json` for parseable output.
## Build hygiene
`target/` is git-ignored and 100% regenerable, but it grows