generated from coulomb/repo-seed
Scoped CMIS workspace folders with create, list, parent, path lookup, delete, and delete-tree behavior
This commit is contained in:
123
docs/cmis-opencmis-tck-wp0014-evidence-2026-05-08T134432Z.md
Normal file
123
docs/cmis-opencmis-tck-wp0014-evidence-2026-05-08T134432Z.md
Normal file
@@ -0,0 +1,123 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user