generated from coulomb/repo-seed
CMIS layer into an honest CMIS 1.1
This commit is contained in:
@@ -1,8 +1,9 @@
|
||||
# CMIS Compliance Assessment
|
||||
|
||||
Date: 2026-05-06
|
||||
Date: 2026-05-07
|
||||
|
||||
Status: planning baseline for CMIS compliance and access-point implementation.
|
||||
Status: Browser Binding subset implemented with conservative CMIS capability
|
||||
flags and explicit unsupported diagnostics.
|
||||
|
||||
## Reference Standard
|
||||
|
||||
@@ -42,35 +43,36 @@ Practical strategy:
|
||||
|
||||
| CMIS capability | Current engine availability | Gap | Demand |
|
||||
| --- | --- | --- | --- |
|
||||
| Repository service | Service health/version, runtime repository state, capability catalogs. | Need CMIS repository info, repository IDs, root folder IDs, capability flags, type summaries. | Low |
|
||||
| Type definitions | Asset classifications, metadata schemas, relationship target kinds. | Need CMIS base types, property definitions, type mutability flags, secondary type projection. | Medium |
|
||||
| Navigation service | Relationships and context graph exist, but no folder tree model. | Need root folder, folder children, descendants/tree, parent relationships, path semantics. | High |
|
||||
| Object service read | Assets, metadata, representations, content refs, audit, versions exist. | Need CMIS object envelopes, allowable actions, path/object-id lookup, property filters, rendition/content stream response shape. | Medium |
|
||||
| Object service write | Asset create, metadata add, lifecycle transition, relationship create, ingestion. | Need createDocument/createFolder/updateProperties/deleteObject/moveObject mapping and CMIS change tokens. | High |
|
||||
| Content streams | Source, normalized, derived representations store content hashes and storage refs. | Need getContentStream/setContentStream/deleteContentStream/appendContentStream semantics and streaming endpoints. | Medium-High |
|
||||
| Versioning | Asset versions and transformation/workflow lineage exist. | Need CMIS checkout, PWC, checkin, cancelCheckout, version series semantics, latest/major flags. | High |
|
||||
| Discovery/query | Governed retrieval, lexical search, filters, relationships. | Need CMIS SQL-like query grammar or supported subset, query result shape, joins/capability flags. | High |
|
||||
| Relationships | Core relationships exist. | Need CMIS relationship object mapping and relationship type capability exposure. | Medium |
|
||||
| ACL service | Policy gateway and authorization decisions exist. | Need CMIS ACL model, principals, direct/inherited ACEs, applyACL, exact capability flags. | High |
|
||||
| Policy service | Policy decisions and governance reports exist. | Need CMIS policy objects/applyPolicy/removePolicy/getAppliedPolicies mapping or explicit unsupported profile. | Medium |
|
||||
| Change log | Audit events and correlation IDs exist. | Need CMIS change events, change tokens, object change entries, paging. | Medium |
|
||||
| Multi-filing/unfiling | Not modeled directly. | Need folder membership model or profile-level unsupported flags. | High if full support, Low if unsupported |
|
||||
| Renditions | Representations exist, no rendition taxonomy. | Need rendition metadata and stream mapping for thumbnails/previews. | Medium |
|
||||
| Retention and hold | Metadata/governance hooks exist, no first-class legal hold model. | Need retention/hold capabilities, apply/remove hold, retention date semantics. | High for full support |
|
||||
| Bulk update | Metadata update pathways exist. | Need bulkUpdateProperties semantics, partial failure reporting, change tokens. | Medium |
|
||||
| Repository service | Implemented. | Repository info includes CMIS 1.1 identity, complete conservative optional capability flags, repository features, and unsupported feature diagnostics. | Low |
|
||||
| Type definitions | Implemented subset. | Base type projections exist; type mutability, CMIS versioning, folder ACL control, and non-document querying are explicitly not advertised. | Low |
|
||||
| Navigation service | Implemented subset. | `getChildren` and projected parents are supported. `getDescendants`, `getFolderTree`, mutating multifiling, and unfiling are explicitly flagged unsupported. | Low unless full folder tree is required |
|
||||
| Object service read | Implemented subset. | Object envelopes, allowable actions, content stream descriptors, content stream properties, visibility redaction, and relationship IDs are covered. | Low |
|
||||
| Object service write | Governed subset. | `createDocument`, custom metadata updates, `setContentStream`, and delete-request lifecycle transition are supported by authoring profiles. Unsupported standard property updates now fail with diagnostics. | Medium |
|
||||
| Content streams | Implemented subset. | Descriptor and byte-stream routes exist; `setContentStream` writes through deduplicating blob storage. Append/delete content stream are unsupported. | Low |
|
||||
| Versioning | Projection only. | Latest-version properties can be projected from engine versions, but CMIS checkout/PWC/all-versions services are not advertised. | Low if unsupported remains acceptable |
|
||||
| Discovery/query | Implemented narrow subset. | `SELECT * FROM cmis:document` and `SELECT * FROM kontextual:document` are supported. Joins, order-by, full CMIS SQL predicates, and full-text are flagged unsupported. | Medium |
|
||||
| Relationships | Implemented subset. | Relationship object projections and source filters are covered and profile-gated. | Low |
|
||||
| ACL service | Discover only. | ACL projection is supported; `applyACL` is not authorized even for authoring profiles and returns an unimplemented diagnostic. | Low |
|
||||
| Policy service | Unsupported. | `applyPolicy`/`removePolicy` are explicitly unsupported; engine policy remains native, not CMIS policy objects. | Low |
|
||||
| Change log | Implemented subset. | Audit-backed object-id change entries and paging are supported; full property-level change details are not advertised. | Low |
|
||||
| Multi-filing/unfiling | Projection only. | Multiple virtual parents are exposed as a Kontextual repository feature, while CMIS `capabilityMultifiling` and unfiling stay false. | Low |
|
||||
| Renditions | Unsupported. | Capability is `none`; derived representations are not exposed as CMIS rendition streams. | Low |
|
||||
| Retention and hold | Unsupported. | Not advertised; left as native governance metadata until a real integration requires CMIS legal-hold semantics. | Low |
|
||||
| Bulk update | Unsupported. | `bulkUpdateProperties` is explicitly unsupported. | Low |
|
||||
| Browser JSON binding | FastAPI JSON service already exists. | Need CMIS Browser Binding routes, selectors/actions, multipart/content stream behavior. | High |
|
||||
| AtomPub binding | No AtomPub/XML binding. | Need XML/Atom feed generation and protocol semantics. | Very High |
|
||||
| Web Services binding | No SOAP stack. | Need WSDL/SOAP implementation. | Very High |
|
||||
|
||||
## Recommended Compliance Profile Strategy
|
||||
|
||||
Start with a constrained CMIS 1.1 Browser Binding profile:
|
||||
Maintain a constrained CMIS 1.1 Browser Binding profile:
|
||||
|
||||
- Repository, type, object read, content stream read, query subset,
|
||||
relationships, change log, and navigation over a synthetic root/folder
|
||||
projection.
|
||||
- Explicitly unsupported or read-only: AtomPub, Web Services, full ACL mutation,
|
||||
retention/hold, multifiling/unfiling, and full CMIS SQL joins.
|
||||
- Explicitly unsupported or read-only: AtomPub, Web Services, descendants/tree,
|
||||
full ACL mutation, retention/hold, mutating multifiling/unfiling, PWC/versioning
|
||||
services, renditions, bulk updates, order-by, and full CMIS SQL joins.
|
||||
|
||||
Then expand by profile:
|
||||
|
||||
@@ -83,11 +85,12 @@ Then expand by profile:
|
||||
|
||||
## Risk Summary
|
||||
|
||||
The engine already has strong foundations for asset identity, metadata,
|
||||
representations, relationships, versions, audit, policy, retrieval, and
|
||||
service APIs. The hard parts are not storage; they are CMIS protocol semantics:
|
||||
folder/path behavior, versioning/PWC semantics, CMIS query grammar, ACL shape,
|
||||
content stream actions, and binding-specific compatibility.
|
||||
The engine has a sound Browser Binding subset so long as clients trust the
|
||||
advertised capabilities instead of assuming broad ECM behavior. The remaining
|
||||
hard parts are optional CMIS semantics that we intentionally do not advertise:
|
||||
folder tree/descendant services, mutating filing services, PWC/versioning
|
||||
services, broad query grammar, ACL mutation, renditions, retention/hold, and
|
||||
legacy bindings.
|
||||
|
||||
Best estimate:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user