Kept from the closed refactor epic (#831). The evidence is co-change over the 883 commits from 2026-08-12: identity/table.go and lint/admission.go moved together in 36 commits (cosine 0.72), lint/admission.go and estate-gen/overrides.go in 30 (0.72), identity/table.go and estate-gen/overrides.go in 30 (0.68). Separately, 7 of the 41 type-admission commits touched all three. Maintainer ruling stands: the identity table is the master, lint's admission list is generated from it, estate-gen's overrides become generator input.
Co-change analysis over the 883 non-merge commits since 2026-08-12 (saved before the re-root removed its input) found the tightest coupling in the fork is a triad: internal/live/identity/table.go and internal/live/lint/admission.go changed together in 36 commits (cosine 0.72), lint/admission.go and tools/estate-gen/overrides.go in 30 (0.72), identity/table.go and estate-gen/overrides.go in 30 (0.68). At package level identity and lint co-change in 54 commits. Every type admission is still hand-touched in three places even though generated halves exist for two of them. lint/admission.go is 224 lines and is the biggest hub in the fork (151 distinct co-changing partner files); hub-ness is about role, not size.
Proposal: one generated admission artifact that both identity's table and lint's admission read, with estate-gen's overrides feeding the generator rather than being a third hand-edited copy. This is not a file split and it changes where the source of truth lives, so it needs a ruling on: which of the three is the source, and whether estate-gen overrides become generator input or stay as a checked exception list.
Kept from the closed refactor epic (#831). The evidence is co-change over the 883 commits from 2026-08-12: identity/table.go and lint/admission.go moved together in 36 commits (cosine 0.72), lint/admission.go and estate-gen/overrides.go in 30 (0.72), identity/table.go and estate-gen/overrides.go in 30 (0.68). Separately, 7 of the 41 type-admission commits touched all three. Maintainer ruling stands: the identity table is the master, lint's admission list is generated from it, estate-gen's overrides become generator input.
Co-change analysis over the 883 non-merge commits since 2026-08-12 (saved before the re-root removed its input) found the tightest coupling in the fork is a triad:
internal/live/identity/table.goandinternal/live/lint/admission.gochanged together in 36 commits (cosine 0.72),lint/admission.goandtools/estate-gen/overrides.goin 30 (0.72),identity/table.goandestate-gen/overrides.goin 30 (0.68). At package level identity and lint co-change in 54 commits. Every type admission is still hand-touched in three places even though generated halves exist for two of them.lint/admission.gois 224 lines and is the biggest hub in the fork (151 distinct co-changing partner files); hub-ness is about role, not size.Proposal: one generated admission artifact that both
identity's table andlint's admission read, with estate-gen's overrides feeding the generator rather than being a third hand-edited copy. This is not a file split and it changes where the source of truth lives, so it needs a ruling on: which of the three is the source, and whether estate-gen overrides become generator input or stay as a checked exception list.