Skip to content

docs(gitignore): describe the file as repo-owned, not a shared base#30

Merged
kyle-sexton merged 1 commit into
mainfrom
docs/gitignore-header-ownership
Jul 20, 2026
Merged

docs(gitignore): describe the file as repo-owned, not a shared base#30
kyle-sexton merged 1 commit into
mainfrom
docs/gitignore-header-ownership

Conversation

@kyle-sexton

Copy link
Copy Markdown
Contributor

Closes melodic-software/standards#213

Summary

The .gitignore header called this a "Language/framework-agnostic base" that "language overlays (.NET, Python, …) extend with their own ignores when adopted" — framing that implies a shared baseline distributed from standards.

No such distribution exists. .gitignore appears nowhere in standards/distribution/sync-manifest.yml, for any component or any target.

Nor could it, in this shape. Git has no include mechanism, so a managed base plus a local overlay cannot coexist in one .gitignore. That is exactly the partial ownership the distribution README rules out: "A component that needs a different destination or partial ownership is the wrong component boundary and must be split first." So the file cannot become a managed component as designed, and the header should stop implying it is one.

It was never a real baseline in practice. Of the 10 org repos carrying a .gitignore, only this one and dotfiles used the "agnostic base" framing — and those two had already diverged from each other (26 vs 33 lines). The other eight are entirely unique, ranging 7 to 821 lines.

Test plan

  • Header comment only — no ignore patterns changed, so tracking behavior is byte-for-byte identical.
  • git status clean against an unchanged working tree before and after; no files newly ignored or un-ignored.
  • Verified .gitignore absent from sync-manifest.yml (grep -c gitignore → 0).
  • Verified the header framing appears in only 2 of 10 org repos, and that those 2 already diverge.

Related

  • The companion header in melodic-software/dotfiles is worse — it explicitly attributes the base to (melodic-software/standards), naming a distribution source that does not distribute this file. Fixed in a separate PR against that repo.
  • The Node, Lefthook, and .NET sections are deliberately kept. They guard tooling that can run against a local checkout regardless of what source this repo tracks. Whether to prune them is a separate question, not decided here.
  • Surfaced by the repo hygiene sweep in chore: fix drifted references and workflow schema gap #29.

The header called this a "Language/framework-agnostic base" that
"language overlays extend when adopted", implying a shared baseline
distributed from standards. No such distribution exists: .gitignore
appears nowhere in standards/distribution/sync-manifest.yml, for any
component or any target.

The implication is not achievable either. Git has no include mechanism,
so a managed base plus a local overlay cannot coexist in one .gitignore
— that is the partial ownership the distribution README rules out
("A component that needs a different destination or partial ownership is
the wrong component boundary"). So the file cannot become a managed
component in its current shape, and the header should stop implying it
is one.

Evidence it was never a real baseline: of the 10 org repos carrying a
.gitignore, only this one and dotfiles used the "agnostic base" framing,
and those two already diverged from each other (26 vs 33 lines).

Header only; no ignore patterns changed. The Node, Lefthook, and .NET
sections stay: they guard tooling that can run against a local checkout
regardless of what source this repo tracks. Whether to prune them is a
separate question, deliberately not decided here.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UmDSbhvfsnpL1DuTMjjJtP
@kyle-sexton
kyle-sexton merged commit d90690d into main Jul 20, 2026
13 checks passed
@kyle-sexton
kyle-sexton deleted the docs/gitignore-header-ownership branch July 20, 2026 18:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

.gitignore is baseline-shaped but not a managed component

1 participant