Log Forgejo no-PR-workflow friction in FRICTION.md

Forgejo origin is trunk-based with no merge-request gate, so the
finishing-a-development-branch "open a PR" option doesn't apply — merge
locally then push. Also carries earlier uncommitted FRICTION.md edits
(emphasis normalization + 2026-05-31 ADR-status entry).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
sjat 2026-06-01 11:22:26 +02:00
parent e12326148c
commit c57910eda8

View file

@ -4,10 +4,10 @@ Raw signals for the periodic **kaizen review** (the methodology retrospective; s
`docs/TODO.md`). This is the input that keeps our tooling and conventions sharpening `docs/TODO.md`). This is the input that keeps our tooling and conventions sharpening
over time instead of only accreting. over time instead of only accreting.
**How to use:** append freely *during* work — don't curate, don't fix here. Capture **How to use:** append freely _during_ work — don't curate, don't fix here. Capture
friction, surprises, fixes that keep recurring, and tooling that isn't earning its friction, surprises, fixes that keep recurring, and tooling that isn't earning its
keep. The kaizen review reads this, then proposes **add / change / remove** (biased keep. The kaizen review reads this, then proposes **add / change / remove** (biased
toward *remove*) and records the decisions as ADRs. toward _remove_) and records the decisions as ADRs.
**Entry format:** `date — [tag] observation — (optional) → systematization idea` **Entry format:** `date — [tag] observation — (optional) → systematization idea`
Tags: `[friction]` recurring annoyance · `[gotcha]` surprising behaviour · Tags: `[friction]` recurring annoyance · `[gotcha]` surprising behaviour ·
@ -20,9 +20,9 @@ earning its keep.
- `[recurring]` Every `git commit` needs `rbw` unlocked (the pre-commit ansible-lint - `[recurring]` Every `git commit` needs `rbw` unlocked (the pre-commit ansible-lint
hook decrypts `vault.yml` for its syntax-check). Mitigated with a 5h lock timeout hook decrypts `vault.yml` for its syntax-check). Mitigated with a 5h lock timeout
and an `rbw unlocked` pre-flight convention. → *Open:* could ansible-lint skip vault and an `rbw unlocked` pre-flight convention. → _Open:_ could ansible-lint skip vault
decryption for syntax-check, so committing doesn't need the vault at all? decryption for syntax-check, so committing doesn't need the vault at all?
- `[gotcha]` pre-commit stashes *unstaged* changes before running hooks, so a partial - `[gotcha]` pre-commit stashes _unstaged_ changes before running hooks, so a partial
commit reverted an interdependent file (`ansible.cfg`) and failed. → Commit commit reverted an interdependent file (`ansible.cfg`) and failed. → Commit
interdependent changes together, or stage the config change first. interdependent changes together, or stage the config change first.
- `[gotcha]` `make new-role` had never worked on this host: `mkdir {a,b,c}` brace - `[gotcha]` `make new-role` had never worked on this host: `mkdir {a,b,c}` brace
@ -37,5 +37,19 @@ earning its keep.
it still bites. it still bites.
- `[gotcha]` Hooks (or any new `.claude/settings.json`) added mid-session don't - `[gotcha]` Hooks (or any new `.claude/settings.json`) added mid-session don't
activate until a Claude Code **restart** — the settings watcher only tracks settings activate until a Claude Code **restart** — the settings watcher only tracks settings
files that existed at session start. Opening `/hooks` and dismissing did *not* load files that existed at session start. Opening `/hooks` and dismissing did _not_ load
them. → Fresh sessions load them normally; restart after adding hooks. them. → Fresh sessions load them normally; restart after adding hooks.
## 2026-05-31
- I asked to draft an ADR and got: No formal status-header convention, but since this is a draft for discussion I'll mark it Proposed so it isn't mistaken for an
accepted decision. Here's the draft.
## 2026-06-01
- `[friction]` The `finishing-a-development-branch` flow (and generic AI/dev tooling)
offers "push and open a Pull Request," but our Forgejo `origin` is trunk-based with
no merge-request / approval gate (CLAUDE.md git conventions). That option doesn't
apply — the real path is local fast-forward merge to `main`, then push. → Skills and
conventions that assume a GitHub-style PR workflow need a homelab-aware variant;
encode that here "finishing a branch" means merge-locally-then-push, not open-a-PR.