Decide the Windows config path before the frozen table locks in the doubled segment #329

Closed
opened 2026-09-21 23:15:26 +09:00 by natsukium · 1 comment
Owner

Background

docs/reference/config.md freezes the config path table "for 1.0", and the Windows row is %APPDATA%\felis\config\config.toml — a doubled config\ segment inherited verbatim from directories::ProjectDirs. The owning explanation (control-surfaces.md: "Where that document lives is ProjectDirs' answer, unedited") rejects flattening as a felis-specific override that every future ProjectDirs call must mirror.

Both positions are defensible, but the freeze makes the doubled segment permanent. This is the last point at which to choose.

Decision needed

  • Option A: keep ProjectDirs unedited (current docs). Cost: the doubled segment ships forever; every support answer about the Windows path explains it.
  • Option B: flatten to %APPDATA%\felis\config.toml (one-time override, documented as the single exception with a test pinning the Windows row).

Either way, the decision belongs in the explanation doc inline (rationale + rejected alternative), not only in the reference table, and config path / doctor / home-manager module / README.md must agree.

Acceptance criteria

  • The Windows row is decided and the reference table is marked frozen accordingly.
  • If Option B: migration note for pre-release Windows configs (rename file) in CHANGELOG.md and how-to/update-felis.md.
  • felis config path output on Windows matches the documented row (covered by the existing platform suite or a new assertion).

Parent: #326 (final interface simplification audit).

## Background `docs/reference/config.md` freezes the config path table "for 1.0", and the Windows row is `%APPDATA%\felis\config\config.toml` — a doubled `config\` segment inherited verbatim from `directories::ProjectDirs`. The owning explanation (`control-surfaces.md`: "Where that document lives is `ProjectDirs`' answer, unedited") rejects flattening as a felis-specific override that every future `ProjectDirs` call must mirror. Both positions are defensible, but the freeze makes the doubled segment permanent. This is the last point at which to choose. ## Decision needed - Option A: keep `ProjectDirs` unedited (current docs). Cost: the doubled segment ships forever; every support answer about the Windows path explains it. - Option B: flatten to `%APPDATA%\felis\config.toml` (one-time override, documented as the single exception with a test pinning the Windows row). Either way, the decision belongs in the explanation doc inline (rationale + rejected alternative), not only in the reference table, and `config path` / `doctor` / home-manager module / `README.md` must agree. ## Acceptance criteria - [ ] The Windows row is decided and the reference table is marked frozen accordingly. - [ ] If Option B: migration note for pre-release Windows configs (rename file) in `CHANGELOG.md` and `how-to/update-felis.md`. - [ ] `felis config path` output on Windows matches the documented row (covered by the existing platform suite or a new assertion). Parent: #326 (final interface simplification audit).
Author
Owner

Decision: Option A, already decided; closing

The decision this issue asks for is already recorded inline where it belongs: docs/explanation/architecture/control-surfaces.md ("Where that document lives is directories::ProjectDirs' answer, unedited") carries the rationale, names %APPDATA%\felis\config.toml as the rejected alternative, and has a "Revisit if ProjectDirs changes its layout" trigger. The reference table is frozen accordingly. No new argument for Option B has appeared, so there is nothing left to decide.

## Decision: Option A, already decided; closing The decision this issue asks for is already recorded inline where it belongs: `docs/explanation/architecture/control-surfaces.md` ("Where that document lives is `directories::ProjectDirs`' answer, unedited") carries the rationale, names `%APPDATA%\felis\config.toml` as the rejected alternative, and has a "Revisit if `ProjectDirs` changes its layout" trigger. The reference table is frozen accordingly. No new argument for Option B has appeared, so there is nothing left to decide.
Commenting is not possible because the repository is archived.
No description provided.