Files
kontextual-engine/docs/cmis-opencmis-tck-wp0014-evidence-2026-05-08T153316Z.md
2026-05-11 12:28:36 +02:00

4.1 KiB

CMIS WP-0014 OpenCMIS Evidence - 2026-05-08T15:33:16Z

Scope

This note records the second WP-0014 maturity pass for the CMIS 1.1 Browser Binding adapter. The pass followed the earlier folder/action work and focused on OpenCMIS compatibility issues that fit the engine architecture naturally.

Implemented Since Prior Evidence

  • Added Browser Binding cmisaction=update as an alias for updateProperties.
  • Added scoped cmisaction=move support for CMIS-authored workspace documents and adapter-managed workspace folders.
  • Added URL-path Browser Binding routes under /browser/root/{path} for object, children, parent, parents, properties, allowable actions, content, and POST actions against path-addressed objects.
  • Normalized stored CMIS content stream media types and emitted explicit Content-Type headers so text streams do not acquire an unwanted charset.
  • Accepted metadata-backed standard property updates for cmis:name, cmis:description, and cmis:secondaryObjectTypeIds.
  • Honored cmis:secondaryObjectTypeIds during document creation.
  • Rejected invalid createDocument type ids, such as cmis:folder.
  • Removed non-standard cmis:path from document property definitions and document object projections while retaining folder cmis:path.

Local Verification

Focused CMIS suite:

.venv/bin/python -m pytest tests/cmis -q

Result:

  • 48 passed
  • Performance monitor warnings appeared on two Browser Binding tests; these should be watched across additional runs before treating them as a regression.

OpenCMIS Run

The final run used an isolated temporary target on port 8010 to avoid colliding with other local services:

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-20260508T153146Z

Result:

  • Run ID: run-20260508T153316Z
  • Run directory: /tmp/open-cmis-tck-kontextual-wp14-20260508T153146Z
  • Harness status: infrastructure_error
  • Maturity scorecard: /tmp/open-cmis-tck-kontextual-wp14-20260508T153146Z/reports/cmis-maturity-scorecard.md
  • Maturity score: 19.05
  • Coverage: 2/9 groups

Capability Interpretation

  • repository-type: improved from failing to warning / partial. Repository info and type metadata are now usable enough for the selected baseline, with warnings instead of hard failures.
  • object-content: still infrastructure-blocked in guide-board classification, but the blockers are now concrete object/content edge cases rather than Browser Binding startup, folder creation, MIME, or secondary-type basics.

Remaining Frontier

  • getObjectByPath still fails in several OpenCMIS child checks for paths such as /test-folder/test-folder; this likely needs tighter folder/document child path-segment semantics and cleanup behavior investigation.
  • Creating a document without content still leads OpenCMIS into a missing content-stream exception. We need decide whether CMIS-created no-content documents should expose an empty stream or clearer no-content semantics.
  • Invalid-type errors are now correctly rejected, but OpenCMIS still classifies our HTTP 422 as a runtime warning rather than a clean CMIS constraint response.
  • Folder cmis:path still appears when property filters request narrower property sets. Operation-context filtering for properties, ACLs, allowable actions, and path segments remains a compatibility gap.
  • bulkUpdate, deleteContent, and some change-token tests still receive unsupported-action or validation responses. These should be handled either by natural implementation or sharper unsupported behavior.

Conclusion

The CMIS adapter foundation is sounder and more standards-shaped after this pass. We should keep WP-0014 active for the remaining object/content frontier, but the work has moved from "basic Browser Binding compatibility" into specific CMIS behavior polish and optional-service boundary decisions.