Adopt published Commonlib 0.3.1 storage contracts

This commit is contained in:
vorotamoroz committed 2026-11-04 05:12:24 +00:00
1 parent f015e11957
commit 602dfd7d37
4 files changed
+21 -21

No files matched your search

+1 -1
View File
@@ -277,7 +277,7 @@ Commonlib owns the typed English fallback for messages requested by its services
- New path boundaries use `FilePath`, `DocumentPath`, `StoragePath`, and domain-specific `PathComparisonKey` from `@vrtmrz/livesync-commonlib/storage`. Original paths retain spelling; comparison keys are never converted back into filenames. - New path boundaries use `FilePath`, `DocumentPath`, `StoragePath`, and domain-specific `PathComparisonKey` from `@vrtmrz/livesync-commonlib/storage`. Original paths retain spelling; comparison keys are never converted back into filenames.
- Parse original document input and route its namespace before storage access. `splitDocumentPath` and `joinDocumentPath` retain one recognised namespace; `DocumentPath` excludes legacy comparison keys. Existing `FilePathWithPrefix`, `FilePathWithPrefixLC`, and `DocumentID` remain at compatibility boundaries. - Parse original document input and route its namespace before storage access. `splitDocumentPath` and `joinDocumentPath` retain one recognised namespace; `DocumentPath` excludes legacy comparison keys. Existing `FilePathWithPrefix`, `FilePathWithPrefixLC`, and `DocumentID` remain at compatibility boundaries.
- The CLI uses Commonlib's `UnicodeResolvingNodeStorageAdapter` and one strict resolver per NFC directory scan. Only absence becomes a missing file; permission and enumeration failures propagate. Obsidian keeps its own Vault APIs and alias guard, whose fixed case-insensitive NFC policy is independent of the selected database identity mode. - The CLI uses Commonlib's `UnicodeResolvingNodeStorageAdapter` and one strict resolver per NFC directory scan. Only absence becomes a missing file; permission and enumeration failures propagate. Obsidian keeps its own Vault APIs and alias guard, whose fixed case-insensitive NFC policy is independent of the selected database identity mode.
- The [Commonlib storage-path design](https://github.com/vrtmrz/livesync-commonlib/blob/main/docs/design_docs/storage_path_resolution.md) and [ADR](https://github.com/vrtmrz/livesync-commonlib/blob/main/docs/adr/2026_11_shared_storage_path_resolution.md) define this unreleased boundary. WebApp and Bridge NFC enablement remains separate work. - The [Commonlib storage-path design](https://github.com/vrtmrz/livesync-commonlib/blob/main/docs/design_docs/storage_path_resolution.md) and [ADR](https://github.com/vrtmrz/livesync-commonlib/blob/main/docs/adr/2026_11_shared_storage_path_resolution.md) define the contract published in Commonlib `0.3.1`. LiveSync's CLI resolver and Obsidian comparison-helper adoption remain unreleased. WebApp and Bridge NFC enablement remain separate work.
### Logging & Debugging ### Logging & Debugging
+15 -15
View File
@@ -31,14 +31,15 @@ The original dates and reviewed versions above remain the historical baseline.
## Unreleased shared storage boundary ## Unreleased shared storage boundary
The current LiveSync candidate adopts Commonlib's shared Unicode resolver and Commonlib `0.3.1` publishes the shared storage-path contract, including
typed physical-I/O ports in the CLI, and shared namespace and comparison its Unicode resolver and typed physical-I/O ports. The LiveSync candidate
helpers in Obsidian while retaining its Vault APIs and existing alias-guard adopts the shared resolver and typed physical-I/O ports in the CLI. Obsidian
policy. Each NFC scan retains one comparison-policy snapshot; directory and adopts shared namespace and comparison helpers while retaining its Vault APIs
permission errors propagate instead of producing a successful partial scan. and existing alias-guard policy. Each NFC scan retains one comparison-policy
These additions are unreleased and do not change the support status of a snapshot; directory and permission errors propagate instead of producing a
published host. The [developer guide](../../devs.md#file-path-handling) links successful partial scan. LiveSync's host adoption remains unreleased. The
the Commonlib design and ADR. [developer guide](../../devs.md#file-path-handling) links the Commonlib design
and ADR.
## Scope ## Scope
@@ -233,11 +234,11 @@ updates and deletions.
| Host or API | Published baseline | Unreleased or host-specific status | | Host or API | Published baseline | Unreleased or host-specific status |
| --- | --- | --- | | --- | --- | --- |
| CLI and Obsidian with CouchDB | NFC identity is supported from Self-hosted LiveSync `1.0.38` with Commonlib `0.1.42`. | The shared resolver and typed path ports are in the current LiveSync candidate; they are not part of a published Commonlib package yet. | | CLI and Obsidian with CouchDB | NFC identity is supported from Self-hosted LiveSync `1.0.38` with Commonlib `0.1.42`. | Commonlib `0.3.1` publishes the shared storage-path contract. LiveSync's CLI adoption of the shared resolver and typed physical-I/O ports, and its Obsidian adoption of shared namespace and comparison helpers, remain unreleased. |
| CLI and Obsidian with Journal | Commonlib `0.3.0` publishes the NFC protocol support. | Matching LiveSync host adoption remains an unreleased candidate tracked by [pull request #1309](https://github.com/vrtmrz/obsidian-livesync/pull/1309). Update and migrate every client before using version `1`. | | CLI and Obsidian with Journal | Commonlib `0.3.0` publishes the NFC protocol support. | Matching LiveSync host adoption remains an unreleased candidate tracked by [pull request #1309](https://github.com/vrtmrz/obsidian-livesync/pull/1309). Update and migrate every client before using version `1`. |
| CLI and Obsidian with P2P | Commonlib `0.3.0` publishes the NFC protocol support. | Matching LiveSync host adoption remains an unreleased candidate. All peers must use the same path version; P2P warns and continues for ordinary representation or case differences. | | CLI and Obsidian with P2P | Commonlib `0.3.0` publishes the NFC protocol support. | Matching LiveSync host adoption remains an unreleased candidate. All peers must use the same path version; P2P warns and continues for ordinary representation or case differences. |
| Bridge | The published baseline uses Legacy version `0`. | The Bridge integration is an unreleased candidate with explicit per-peer opt-in to version `1`; every peer in a group must use the same version. Its ordinary case mismatch check remains enabled unless the Bridge-wide `disableCheckingConfigMismatch: true` override disables that case check. The override does not bypass a path-version mismatch. | | Bridge | The published baseline uses Legacy version `0`. | The Bridge integration is an unreleased candidate with explicit per-peer opt-in to version `1`; every peer in a group must use the same version. Its ordinary case mismatch check remains enabled unless the Bridge-wide `disableCheckingConfigMismatch: true` override disables that case check. The override does not bypass a path-version mismatch. |
| `DirectFileManipulator` | The published Commonlib baseline refuses a remote which declares `nfc-path-identity-v1`. | An unpublished addition accepts explicit `pathNormalizationVersion` values `0` or `1`, defaulting to `0`, and rejects a populated database in the opposite mode. This admission setting does not provide physical-path resolution. | | `DirectFileManipulator` | Commonlib `0.3.1` accepts explicit `pathNormalizationVersion` values `0` or `1`, defaults to Legacy (`0`), and rejects a populated database in the opposite mode. | This admission setting does not resolve physical paths; callers own physical path resolution and migration. |
| WebApp | Legacy version `0` only. | WebApp remains Legacy-only and rejects an explicit version `1` at startup. The browser resolver primitive does not enable NFC in WebApp. | | WebApp | Legacy version `0` only. | WebApp remains Legacy-only and rejects an explicit version `1` at startup. The browser resolver primitive does not enable NFC in WebApp. |
| WebPeer | A vaultless P2P utility, not a filesystem host. | No NFC filesystem support is implied by its P2P role. | | WebPeer | A vaultless P2P utility, not a filesystem host. | No NFC filesystem support is implied by its P2P role. |
| Older client without this feature | Can use a legacy database. | Cannot join a database declaring `nfc-path-identity-v1`. | | Older client without this feature | Can use a legacy database. | Cannot join a database declaring `nfc-path-identity-v1`. |
@@ -295,11 +296,10 @@ The implementation acceptance matrix covers:
version-`0` clients against an NFC database, and enforcement when ordinary version-`0` clients against an NFC database, and enforcement when ordinary
mismatch warnings are disabled; mismatch warnings are disabled;
- URI round trips, checkpoint invalidation across path versions, and - URI round trips, checkpoint invalidation across path versions, and
rejection by the published Direct file access baseline; the unpublished explicit Legacy/NFC admission by `DirectFileManipulator` in Commonlib `0.3.1`,
`DirectFileManipulator` addition covers explicit Legacy/NFC admission. including rejection of a populated database in the opposite mode. Journal and
Journal and P2P protocol support is published in Commonlib `0.3.0`, while P2P protocol support is published in Commonlib `0.3.0`, while matching CLI and
matching CLI and Obsidian host adoption and end-to-end checks remain Obsidian host adoption and end-to-end checks remain unreleased;
unreleased;
- refusal for ambiguous file or parent-directory candidates before local or - refusal for ambiguous file or parent-directory candidates before local or
remote reset, preserving both databases on rejection, within the paths remote reset, preserving both databases on rejection, within the paths
returned by each host's supported listing; and returned by each host's supported listing; and
+4 -4
View File
@@ -23,7 +23,7 @@
"@smithy/types": "^4.14.3", "@smithy/types": "^4.14.3",
"@smithy/util-retry": "^4.4.5", "@smithy/util-retry": "^4.4.5",
"@vrtmrz/browser-ui-kit": "0.1.0", "@vrtmrz/browser-ui-kit": "0.1.0",
"@vrtmrz/livesync-commonlib": "0.3.0", "@vrtmrz/livesync-commonlib": "0.3.1",
"@vrtmrz/obsidian-plugin-kit": "0.1.7", "@vrtmrz/obsidian-plugin-kit": "0.1.7",
"@vrtmrz/ui-interactions": "0.1.2", "@vrtmrz/ui-interactions": "0.1.2",
"@vrtmrz/value-store": "0.1.0", "@vrtmrz/value-store": "0.1.0",
@@ -4065,9 +4065,9 @@
} }
}, },
"node_modules/@vrtmrz/livesync-commonlib": { "node_modules/@vrtmrz/livesync-commonlib": {
"version": "0.3.0", "version": "0.3.1",
"resolved": "https://registry.npmjs.org/@vrtmrz/livesync-commonlib/-/livesync-commonlib-0.3.0.tgz", "resolved": "https://registry.npmjs.org/@vrtmrz/livesync-commonlib/-/livesync-commonlib-0.3.1.tgz",
"integrity": "sha512-Nllw7AUwpV5ljtMqjRplqb0HPXY5ZfYj9pf4ZP0pBHtz9+7jOSFNqDhSVOAehYlJJaLcVJBnModicAUxT9urNw==", "integrity": "sha512-/vm/5MEiFIS1mEfW/+kPaqbx/cpgXlEl+uQHTm5ClHxNZ/umARuxXZX33TlxFpVimLVjYPRQ97XSZAz5HKy8vw==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@aws-crypto/sha256-js": "5.2.0", "@aws-crypto/sha256-js": "5.2.0",
+1 -1
View File
@@ -211,7 +211,7 @@
"@smithy/types": "^4.14.3", "@smithy/types": "^4.14.3",
"@smithy/util-retry": "^4.4.5", "@smithy/util-retry": "^4.4.5",
"@vrtmrz/browser-ui-kit": "0.1.0", "@vrtmrz/browser-ui-kit": "0.1.0",
"@vrtmrz/livesync-commonlib": "0.3.0", "@vrtmrz/livesync-commonlib": "0.3.1",
"@vrtmrz/obsidian-plugin-kit": "0.1.7", "@vrtmrz/obsidian-plugin-kit": "0.1.7",
"@vrtmrz/ui-interactions": "0.1.2", "@vrtmrz/ui-interactions": "0.1.2",
"@vrtmrz/value-store": "0.1.0", "@vrtmrz/value-store": "0.1.0",