Files
kontextual-engine/docs/cmis-opencmis-tck-wp0014-evidence-2026-05-08T134432Z.md

4.6 KiB

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:

.venv/bin/python -m pytest tests/cmis --perf-history-disable

Result:

  • 47 passed

OpenCMIS Run

Command shape:

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.