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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user