The seams unbind — the provider is always native, and the git stack compiles dead
Step 4 of strategy/01-git-excision.md, the entangled one: AppModel's makeHistoryProvider collapses to the native provider (the seam stays injectable per the reversibility posture), the session's git state and its wiring go (wireGitUndo, wireBranchSwitching, the card-session staging threading), BoardStore sheds commitSeam and the identity-history ranker (the loader's nil-safe rung now tops out at birth date — today's no-git behavior), SessionSettleGate keeps the gate and inherits the path utility it borrowed, BoardRegistry drops the persisted operation stamp (decode-safe), and the git banner family leaves BannerCenter with its announcer and accessibility phrases. One missed harvest tie severed (the narrator's root subject is its own now). Nothing outside Kanban/Git/ references the stack — proven by sweep. 2,855 tests green. Claude-Session: https://claude.ai/code/session_014PtZdPwqZuqEDLc6wZMtEy
This commit is contained in:
@@ -318,22 +318,24 @@ public final class EchoLedger: Sendable {
|
||||
|
||||
/// **Every receipt the ledger holds right now, with its heal mark — read, never consumed.**
|
||||
///
|
||||
/// Pro's auto-committer's one call (`GitAutoCommitter.harvest`), and it has to be a copy rather
|
||||
/// than a read at commit time for an ordering reason worth stating here: receipts are *consumed*
|
||||
/// by the landing reload that classifies them ("one write, one echo"), and the committer asks its
|
||||
/// question a debounce later — by which time the receipt for the user's own card edit is long
|
||||
/// gone, and reading the live ledger would attribute the user's own work to `Lanework External`.
|
||||
/// So the committer copies at the close of each write bracket, when a receipt describes a
|
||||
/// completed write and nothing has yet had a chance to retire it, and re-applies the satisfaction
|
||||
/// rule against disk itself (`CommitAttribution`).
|
||||
/// **The attribution surface** — the seam a provenance consumer harvests through, and it has to be
|
||||
/// a copy rather than a read at attribution time for an ordering reason worth stating here:
|
||||
/// receipts are *consumed* by the landing reload that classifies them ("one write, one echo"), and
|
||||
/// a consumer asks its question a debounce later — by which time the receipt for the user's own
|
||||
/// card edit is long gone, and reading the live ledger would attribute the user's own work to an
|
||||
/// external writer. So a consumer copies at the close of each write bracket, when a receipt
|
||||
/// describes a completed write and nothing has yet had a chance to retire it, and re-applies the
|
||||
/// satisfaction rule against disk itself.
|
||||
///
|
||||
/// Nothing is retired here, which is what makes this safe to call on every bracket: the
|
||||
/// announcer's consumption still decides what speaks, and the committer's copy still decides what
|
||||
/// each commit is authored by.
|
||||
// The harvest speaks `HarvestedReceipt` — committer-side vocabulary from
|
||||
// Git/CommitAttribution.swift, which the phone target doesn't compile (the mobile MVP has
|
||||
// no git). The recording side above is what BoardWriter needs on every platform; this copy
|
||||
// has exactly one caller and it is Mac-only.
|
||||
/// announcer's consumption still decides what speaks, and a harvested copy still decides what each
|
||||
/// batch is attributed to.
|
||||
///
|
||||
/// **Kept with no live consumer** (`strategy/01-git-excision.md` ▸ What is kept): the harvest is
|
||||
/// the foundation the foreign-change journal will be built on, so the surface stays even though
|
||||
/// the git consumer that drove it has gone.
|
||||
// Mac-only because `HarvestedReceipt` is, and the phone target doesn't compile it. The recording
|
||||
// side above is what BoardWriter needs on every platform; this copy is Mac's alone.
|
||||
#if os(macOS)
|
||||
func outstandingEntries() -> [String: HarvestedReceipt] {
|
||||
receipts.withLock { store in
|
||||
|
||||
Reference in New Issue
Block a user