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]
