CMIS Browser Binding fixes

This commit is contained in:
2026-05-11 12:28:36 +02:00
parent 59aa2a49a8
commit dc32be36fb
8 changed files with 1422 additions and 121 deletions

View File

@@ -127,6 +127,75 @@ Current external frontier:
These are follow-up maturity items rather than the original folder-creatable
blocker.
## Implementation Evidence - 2026-05-08T15:33:16Z
Evidence file:
- `docs/cmis-opencmis-tck-wp0014-evidence-2026-05-08T153316Z.md`
Implemented in this pass:
- Browser Binding action aliases and path-addressed routes:
`cmisaction=update`, `cmisaction=move`, and `/browser/root/{path}`.
- MIME normalization and explicit content stream `Content-Type` headers.
- Metadata-backed standard property support for `cmis:name`,
`cmis:description`, and `cmis:secondaryObjectTypeIds`.
- Create-time secondary type id projection and invalid document type rejection.
- Removal of non-standard document `cmis:path` while preserving folder paths.
Latest verification:
- Internal: `.venv/bin/python -m pytest tests/cmis -q` -> `48 passed`.
- OpenCMIS: `run-20260508T153316Z` in
`/tmp/open-cmis-tck-kontextual-wp14-20260508T153146Z`.
- Maturity score: `19.05`; coverage remains `2/9` groups.
- `repository-type` is now partial/warning; `object-content` remains
infrastructure-blocked by concrete CRUD/content edge cases.
Current external frontier:
- `getObjectByPath` path-segment failures in child checks.
- No-content document content-stream semantics.
- Operation-context/property filter trimming, especially folder `cmis:path`.
- `bulkUpdate`, `deleteContent`, and change-token unsupported-action handling.
## Implementation Evidence - 2026-05-08T16:43:34Z
Evidence file:
- `docs/cmis-opencmis-tck-wp0014-evidence-2026-05-08T164334Z.md`
Implemented in this pass:
- Correct `relativePathSegment` behavior for document parents.
- Browser Binding operation-context trimming for property filters, allowable
actions, ACLs, and path segments.
- Total-count `numItems` semantics for Browser Binding children.
- Stable adapter-managed folder object IDs across folder rename/update.
- Nullable no-content document stream properties and empty compatibility streams.
- Range-aware content responses with sliced bodies, `206`, and `Content-Range`.
- `setContent` and `deleteContent` Browser Binding action aliases.
Latest verification:
- Internal focused CMIS tests: `20 passed`.
- Full suite: `160 passed, 14 skipped`.
- OpenCMIS: `run-20260508T164334Z` in
`/tmp/open-cmis-tck-kontextual-wp14-20260508T1643Z`.
- `repository-type`: `38 pass`, `2 info`, `1 skipped`, `1 warning`.
- `object-content`: `12 info`, `5 skipped`, `3 warning`, `3 fail`,
`3 infrastructure_error`.
Current external frontier:
- CMIS-specific exception mapping for invalid type operations.
- `bulkUpdateProperties` remains unsupported.
- `deleteContentStream` needs stronger representation-removal/tombstone
semantics.
- Change-token conflict behavior is not implemented.
- `createDocumentFromSource`/copy remains unsupported.
- Offset-zero range requests are still marked partial.
## D14.1 - Define CMIS maturity boundary and TCK profile semantics
```task
@@ -187,7 +256,7 @@ Acceptance:
```task
id: KONT-WP-0014-T004
status: in_progress
status: done
priority: high
state_hub_task_id: "f9323c25-4d81-42cd-b7e6-e40d7e0487cd"
```
@@ -208,7 +277,7 @@ Acceptance:
```task
id: KONT-WP-0014-T005
status: todo
status: in_progress
priority: medium
state_hub_task_id: "5feb6db8-24eb-4c20-8c3e-d530f396ef6a"
```
@@ -223,6 +292,13 @@ Acceptance:
naturally through blob services or explicitly advertised as unsupported.
- Blob deduplication and digest verification remain intact.
Progress:
- Done for normal reads, no-content compatibility streams, partial body slicing,
`Content-Length`, `Content-Type`, `ETag`, and `Content-Range`.
- Remaining: clean `deleteContentStream` semantics and offset-zero range
classification.
## D14.6 - Add natural navigation and query depth
```task
@@ -242,11 +318,18 @@ Acceptance:
indexed/available metadata fields, or returns precise unsupported diagnostics.
- Capability flags are updated only for behavior that is actually supported.
Progress:
- Done for `getObjectByPath`, `getFolderParent`, parent path segments, and
folder rename path stability.
- Remaining: query predicate/order depth and any deliberate descendants/tree
expansion.
## D14.7 - Polish read-side relationships, ACL discovery, and change tokens
```task
id: KONT-WP-0014-T007
status: todo
status: in_progress
priority: medium
state_hub_task_id: "60f7b222-6eea-4add-822d-3439d568d4f6"
```
@@ -261,6 +344,11 @@ Acceptance:
- ACL mutation, policy mutation, PWC/versioning, and type mutability remain
unsupported unless a later task explicitly changes scope.
Progress:
- Started by isolating OpenCMIS change-token failures as the main T007 maturity
gap. Relationship and ACL discovery were not expanded in this pass.
## D14.8 - Expand OpenCMIS assessment and update maturity scorecard
```task