generated from coulomb/repo-seed
124 lines
4.6 KiB
Markdown
124 lines
4.6 KiB
Markdown
# CMIS WP-0014 OpenCMIS Evidence - 2026-05-08T13:44:32Z
|
|
|
|
## Scope
|
|
|
|
This note records the WP-0014 implementation evidence for raising CMIS 1.1
|
|
Browser Binding object/content maturity in `kontextual-engine`.
|
|
|
|
CMIS remains an adapter over native engine services. The work in this pass
|
|
focused on compatibility features that map naturally to existing assets,
|
|
representations, metadata, policy gates, and projection folders.
|
|
|
|
## Implemented
|
|
|
|
- Added profile-scoped adapter-managed workspace folders for CMIS-created
|
|
folders.
|
|
- Added Browser Binding `createFolder`, `createDocument`, `deleteTree`, and
|
|
singular `parent` selector handling.
|
|
- Added form-url-encoded and multipart Browser Binding action parsing without
|
|
introducing a new multipart dependency.
|
|
- Added document/folder path projection and Browser Binding `getObjectByPath`
|
|
support through the root selector.
|
|
- Tightened folder lifecycle so deleted workspace folders stop resolving as
|
|
phantom virtual folders.
|
|
- Returned full folder projections from `getObjectParents`, including
|
|
`cmis:path` for OpenCMIS `getPaths()`.
|
|
- Declared emitted document/folder custom properties in CMIS type metadata.
|
|
- Included CMIS document version/read-only properties expected by common CMIS
|
|
clients while keeping versioning operations unsupported.
|
|
- Prevented CMIS-authored documents from appearing multifiled when the
|
|
repository advertises `capabilityMultifiling=false`.
|
|
- Corrected document allowable actions so non-folder objects do not advertise
|
|
`canGetFolderParent`.
|
|
|
|
## Local Verification
|
|
|
|
Focused CMIS tests:
|
|
|
|
```bash
|
|
.venv/bin/python -m pytest tests/cmis --perf-history-disable
|
|
```
|
|
|
|
Result:
|
|
|
|
- `47 passed`
|
|
|
|
## OpenCMIS Run
|
|
|
|
Command shape:
|
|
|
|
```bash
|
|
cd /home/worsch/guide-board
|
|
source /home/worsch/open-cmis-tck/.local/toolchains/env.sh
|
|
PYTHONPATH=src python3 -m guide_board \
|
|
--extension-dir ../open-cmis-tck \
|
|
run \
|
|
--target /tmp/kontextual-cmis-compat-8010.json \
|
|
--assessment ../open-cmis-tck/profiles/assessments/cmis-browser-baseline.json \
|
|
--output-dir /tmp/open-cmis-tck-kontextual-wp14-20260508T134432Z
|
|
```
|
|
|
|
Result:
|
|
|
|
- Run ID: `run-20260508T134448Z`
|
|
- Run directory: `/tmp/open-cmis-tck-kontextual-wp14-20260508T134432Z`
|
|
- Harness status: `infrastructure_error`
|
|
- Scorecard: `/tmp/open-cmis-tck-kontextual-wp14-20260508T134432Z/reports/cmis-maturity-scorecard.md`
|
|
|
|
The scorecard still classifies the two mapped groups as infrastructure-blocked,
|
|
but the raw OpenCMIS output shows meaningful progress inside the test groups.
|
|
|
|
## Evidence Progression
|
|
|
|
Earlier WP-0014 runs stopped at foundational Browser Binding gaps:
|
|
|
|
- Unsupported `parent` selector.
|
|
- Folder custom properties declared by type metadata but missing from root
|
|
folder objects.
|
|
- Multipart `createDocument` action bodies not parsed because multipart
|
|
boundaries were lowercased.
|
|
- `deleteTree` unsupported during OpenCMIS cleanup.
|
|
- CMIS-created folders still resolving after deletion as generic virtual
|
|
folders.
|
|
- Document projections exposing undeclared custom fields such as
|
|
`kontextual:assetId`.
|
|
- OpenCMIS `getPaths()` failing because parent folder objects lacked
|
|
`cmis:path`.
|
|
|
|
The final run reaches deeper object/content behaviors:
|
|
|
|
- Repository info checks pass.
|
|
- Root folder test passes.
|
|
- Type definition enumeration runs.
|
|
- Document creation proceeds far enough to exercise update, move, delete-tree,
|
|
operation-context, and async object lookup tests.
|
|
- Delete-tree tests create many documents and report MIME warnings rather than
|
|
basic object-creation failures.
|
|
|
|
## Current Frontier
|
|
|
|
Remaining natural CMIS maturity items:
|
|
|
|
- Browser Binding action aliases: OpenCMIS sends `cmisaction=update` and
|
|
`cmisaction=move`; we currently expose `updateProperties` and do not support
|
|
move.
|
|
- Operation-context fidelity: `getObject()` and `getChildren()` currently
|
|
return more properties, ACLs, allowable actions, and path segments than
|
|
requested.
|
|
- MIME normalization: OpenCMIS expects `text/plain`; some created streams are
|
|
reported as `text/plain; charset=utf-8`.
|
|
- Async `getObjectByPath`: OpenCMIS async child/folder checks still hit a
|
|
`Not Found` path lookup case.
|
|
- Copy/move and secondary type mutation remain unsupported unless a later
|
|
workplan admits them.
|
|
|
|
## Interpretation
|
|
|
|
The adapter foundation is sounder after this pass. The failures are no longer
|
|
basic session, repository, folder-creatable, multipart action parsing, or parent
|
|
path hydration issues. They are now mostly CMIS client polish around action
|
|
aliases, response filtering, and optional ECM behaviors.
|
|
|
|
WP-0014 should remain active for follow-up maturity work, but the core
|
|
folder/object-content compatibility foundation is implemented.
|