From c57910eda87d97f3710806c636e4d2f4a863d609 Mon Sep 17 00:00:00 2001 From: sjat Date: Mon, 1 Jun 2026 11:22:26 +0200 Subject: [PATCH] Log Forgejo no-PR-workflow friction in FRICTION.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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) --- docs/FRICTION.md | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/docs/FRICTION.md b/docs/FRICTION.md index 76e74f9..ac72680 100644 --- a/docs/FRICTION.md +++ b/docs/FRICTION.md @@ -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 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 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` 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 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? -- `[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 interdependent changes together, or stage the config change first. - `[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. - `[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 - 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. + +## 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.