CMIS layer into an honest CMIS 1.1

This commit is contained in:
2026-05-07 04:11:09 +02:00
parent ebace73761
commit 7855a8bfd0
13 changed files with 498 additions and 87 deletions

View File

@@ -2,7 +2,8 @@
Date: 2026-05-07
Status: Browser Binding MVP implemented with profiled access points.
Status: Browser Binding subset implemented with profiled access points,
conservative capability flags, and explicit unsupported diagnostics.
## Endpoint Setup
@@ -62,7 +63,9 @@ Actor context is passed through the existing service headers, especially:
| Browser Binding repository info | yes | yes | yes | yes |
| Type definitions | yes | yes | yes | yes |
| Synthetic navigation | yes | yes | yes | yes |
| Projection-only multifiling | yes | yes | yes | yes |
| Projection-only parent maps | yes | yes | yes | yes |
| CMIS `capabilityMultifiling` | no | no | no | no |
| Descendants/folder tree services | no | no | no | no |
| Object reads | yes | yes | yes | yes |
| Content stream descriptors | yes | yes | yes | yes |
| ACL projection | discover | discover | discover | discover |
@@ -70,7 +73,7 @@ Actor context is passed through the existing service headers, especially:
| Change log projection | yes | yes | yes | yes |
| Query subset | document select only | document select only | document select only | document select only |
| Create document | no | yes | no | yes |
| Update properties | no | yes | no | yes |
| Update properties | no | custom metadata only | no | custom metadata only |
| Set content stream | no | yes | no | yes |
| Delete object | no | delete-request lifecycle transition | no | delete-request lifecycle transition |
| Confidential/restricted visibility | hidden | hidden | service-account visible | hidden |
@@ -104,6 +107,7 @@ It is not yet suitable for clients that require:
- AtomPub,
- SOAP/Web Services,
- `getDescendants` or `getFolderTree`,
- full CMIS SQL,
- mutating multifiling/unfiling,
- private-working-copy semantics,
@@ -111,7 +115,7 @@ It is not yet suitable for clients that require:
- rendition streams,
- bulk update properties,
- apply/remove policy,
- strict byte-stream download semantics instead of content stream descriptors.
- standard CMIS property mutation beyond `kontextual:metadata:<key>`.
## Optional OpenCMIS TCK
@@ -134,13 +138,15 @@ capability groups before treating them as implementation bugs.
## Operational Notes
- Hidden objects should be treated as not found by CMIS clients.
- Multifiling is projection-only: assets may appear under multiple derived
folder paths without changing canonical asset identity.
- Multiple parent folders are projection-only: assets may appear under several
derived folder paths without changing canonical asset identity. The standard
CMIS multifiling capability is advertised as unsupported because no
add/remove filing mutation service is exposed.
- Relationship and change-log responses are filtered through the same visibility
gates as object reads.
- Mutations always pass through engine services and produce normal engine audit
events.
- Delete is currently a governed lifecycle transition to `delete_requested`,
not physical removal.
- Delete is a governed lifecycle transition to `delete_requested`; after the
transition the object is no longer exposed through CMIS reads.
- Compatibility should be discussed per profile and per client rather than as a
repo-wide binary property.