diff --git a/NucleicRemote/NucleicRemote/Models/HostConnection.swift b/NucleicRemote/NucleicRemote/Models/HostConnection.swift index 4dc6752..053b767 100644 --- a/NucleicRemote/NucleicRemote/Models/HostConnection.swift +++ b/NucleicRemote/NucleicRemote/Models/HostConnection.swift @@ -804,6 +804,10 @@ final class HostConnection { // phone never sends the fetch verbs (it doesn't advertise `canMirrorCarbon`), so // these arrive only if a future host misroutes; ignoring them is the contract. break + case .carbonLockDecision, .carbonLockLedgerAdvanced: + // Carbon lock verbs (CARBON_SHARDING §17.5): phones never acquire and hold no + // ledger fold — the lock viewer rides the sync-protocol snapshots. Inert (D13). + break case .transcriptReverted(let reverted): // The owner reverted/undid this chat — the transcript was truncated to `throughSeq`. // Tell RemoteStore first (it records the applied revert epoch so the summary-level diff --git a/NucleicRemote/NucleicRemote/Models/RemoteStore.swift b/NucleicRemote/NucleicRemote/Models/RemoteStore.swift index d5071b1..baf5496 100644 --- a/NucleicRemote/NucleicRemote/Models/RemoteStore.swift +++ b/NucleicRemote/NucleicRemote/Models/RemoteStore.swift @@ -2839,6 +2839,10 @@ final class RemoteStore: ObservableObject { // mirror — no Carbon store, no key custody — so these verbs are never issued from // iOS. Inert by contract. break + case .carbonLockAcquire, .carbonLockRelease: + // Carbon lock verbs (CARBON_SHARDING §17.5): phones never acquire (D13) — the + // lock viewer stays a read-only sync-protocol surface. Inert by contract. + break case .unsubscribe(let id), .interrupt(let id), .deleteSession(let id), .discard(let id), .integrate(let id, _), .renameSession(let id, _), .setFavorite(let id, _), .setArchived(let id, _), .setSessionModel(let id, _), .setSessionEffort(let id, _), @@ -3042,6 +3046,8 @@ final class RemoteStore: ObservableObject { demoRun(id, userText: input.plainText ?? "") case .fetchCarbonHeads, .fetchCarbonManifests, .fetchCarbonShards, .carbonShardAck: break // Carbon replication: never issued from iOS (D13); inert in demo too. + case .carbonLockAcquire, .carbonLockRelease: + break // Carbon locks (§17.5): phones never acquire (D13); inert in demo too. case .startChat(let req): demoStartChat(req) case .approvalRespond(let id, let decision):