potiuk opened a new pull request, #135:
URL: https://github.com/apache/airflow-steward/pull/135

   ## Summary
   
   The skills' per-user configuration (PMC status, local clone paths, optional 
tool backends, identity — `<project-config>/user.md`) used to live only in the 
adopter's tracker repo. That caused two pains:
   
   - **Worktrees diverged.** A `prek`-driven bootstrap hook (in the adopter's 
`.pre-commit-config.yaml`, not the framework) created a fresh TODO-filled 
`user.md` in every new worktree's `.apache-steward-overrides/`, so each 
worktree carried its own copy and they drifted out of step over time.
   - **Multi-project operators duplicated their identity.** The same 
`apache_id` / `pmc_member` / `upstream_clone` answers had to be typed (or 
copy-pasted) into every adopter tracker repo the operator works with.
   
   ## The change
   
   Introduce a documented **three-step resolution order**, first match wins:
   
   | # | Location | Use |
   |---|---|---|
   | 1 | `\$APACHE_STEWARD_USER_CONFIG` (env) | Power-user / CI / isolated test 
escape hatch |
   | 2 | `~/.config/apache-steward/user.md` | **Recommended default for new 
adopters.** Per-user, OS-conventional |
   | 3 | `<project-config>/user.md` | Historical per-project fallback (existing 
adopters keep working) |
   
   ## Scope
   
   Doc-only — the skills are markdown that AGENTS interpret:
   
   1. **`AGENTS.md`** → new `#### user.md resolution order` subsection under 
*Per-project and per-user configuration*. Defines the table above and explains 
how legacy `<project-config>/user.md` references should be read.
   2. **`setup-steward/adopt.md`** → Step 9b updated to default new adopters to 
`~/.config/apache-steward/user.md`, with `mkdir -p` + mode-0600 / 
parent-dir-0700 guidance. Explicitly notes the legacy per-project location 
remains valid as a fallback.
   
   ## Why no pre-commit dependency
   
   An earlier sketch added a worktree-aware bootstrap to the adopter's 
pre-commit-config. That approach required adopters to use `prek` / 
`pre-commit`. This change has zero runtime dependency: the resolution is a 
documentation-level rule the skills follow. Adopters who don't run pre-commit 
at all get the new behavior just by creating the per-user file.
   
   ## Cross-worktree story
   
   Falls out of resolution step (2): every worktree of every adopter repo on 
the machine resolves to the same `~/.config/apache-steward/user.md`. No 
symlinks, no per-worktree bootstrap, no `prek` hook. Operators with multiple 
adopter projects share one identity config across all of them.
   
   ## Migration
   
   - **New adopters**: `setup-steward` writes to 
`~/.config/apache-steward/user.md` by default.
   - **Existing adopters with `<project-config>/user.md`**: keep working. 
Either keep the file in place (fallback resolves to it) or move it once to 
`~/.config/apache-steward/user.md` and delete the project-local copy. If both 
exist, the per-user file wins; the adoption skill flags the conflict.
   
   ## Test plan
   
   - [ ] Walk a fresh `/setup-steward` against a clone with no `user.md` 
anywhere → confirm Step 9b writes to `~/.config/apache-steward/user.md` with 
parent dir at `0700`, file at `0600`.
   - [ ] Walk a sync run on an adopter that has `<project-config>/user.md` only 
→ fallback resolves to it, no behavior change.
   - [ ] Set `\$APACHE_STEWARD_USER_CONFIG=/tmp/test-user.md` and run a sync → 
resolves to the env path, ignores both default locations.
   - [ ] Create both `~/.config/apache-steward/user.md` and 
`<project-config>/user.md` → confirm the per-user one wins (skill notes the 
project-local copy as stale and offers to remove it).
   
   🤖 Generated with [Claude Code](https://claude.com/claude-code)


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to