Deprecate lfs.SyntheticOIDFromETag and lfs.WriteAddURLSentinelObject
Summary
Deprecate sentinel-based add-url object identity helpers:
lfs.SyntheticOIDFromETag
lfs.WriteAddURLSentinelObject
These functions currently support unknown-SHA add-url flows by creating synthetic OIDs and sentinel payloads in local object storage.
Motivation
The sentinel path introduces non-authoritative object identity and additional complexity in push/pull behavior. We should converge on explicit, authoritative object identity and simplify add-url object lifecycle handling.
Current behavior
lfs.SyntheticOIDFromETag derives synthetic OID from ETag.
lfs.WriteAddURLSentinelObject writes sentinel bytes under local object storage.
- Unknown-SHA add-url workflows depend on this path.
Proposed change
- Mark both functions deprecated in code comments and internal call sites.
- Introduce a replacement flow for unknown-SHA add-url that does not rely on sentinel payloads.
- Add migration guards to prevent regressions in existing repositories.
- Remove deprecated APIs in a follow-up major/minor compatibility window (TBD by maintainers).
Scope
internal/lfs/sentinel.go
cmd/addurl/* call sites
- any push/pull logic that checks sentinel object content
- docs that describe unknown-SHA sentinel mode
Acceptance criteria
Testing
- Unit tests for unknown-SHA add-url replacement path.
- Backward-compat test that reads existing sentinel objects without hard failure.
- Push/pull integration tests for mixed old/new metadata states.
Open questions
- What compatibility window do we want before full removal?
- Should sentinel parsing remain read-only for one release after write-path deprecation?
Deprecate
lfs.SyntheticOIDFromETagandlfs.WriteAddURLSentinelObjectSummary
Deprecate sentinel-based add-url object identity helpers:
lfs.SyntheticOIDFromETaglfs.WriteAddURLSentinelObjectThese functions currently support unknown-SHA add-url flows by creating synthetic OIDs and sentinel payloads in local object storage.
Motivation
The sentinel path introduces non-authoritative object identity and additional complexity in push/pull behavior. We should converge on explicit, authoritative object identity and simplify add-url object lifecycle handling.
Current behavior
lfs.SyntheticOIDFromETagderives synthetic OID from ETag.lfs.WriteAddURLSentinelObjectwrites sentinel bytes under local object storage.Proposed change
Scope
internal/lfs/sentinel.gocmd/addurl/*call sitesAcceptance criteria
lfs.SyntheticOIDFromETaghasDeprecated:godoc notice.lfs.WriteAddURLSentinelObjecthasDeprecated:godoc notice.Testing
Open questions