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

4.6 KiB

CMIS OpenCMIS TCK Evidence - WP-0014 - 2026-05-08T16:43:34Z

Run

  • Run ID: run-20260508T164334Z
  • Harness: guide-board with external extension /home/worsch/open-cmis-tck
  • Target: kontextual-cmis-compat
  • Endpoint under test: http://127.0.0.1:8010/cmis/compat-tck/browser
  • Output directory: /tmp/open-cmis-tck-kontextual-wp14-20260508T1643Z
  • Assessment package: /tmp/open-cmis-tck-kontextual-wp14-20260508T1643Z/reports/assessment-package.json
  • Report: /tmp/open-cmis-tck-kontextual-wp14-20260508T1643Z/reports/report.md

Command shape:

cd /home/worsch/guide-board
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-20260508T1643Z

The local Java/Maven toolchain from /home/worsch/open-cmis-tck/.local/toolchains was supplied in the command environment.

Internal Verification

  • Focused CMIS tests: .venv/bin/python -m pytest tests/cmis/test_cmis_runtime_browser_binding.py tests/cmis/test_cmis_browser_binding_api.py -q -> 20 passed.
  • Full suite: .venv/bin/python -m pytest -q -> 160 passed, 14 skipped.

OpenCMIS Result Summary

Overall Guide Board status remains infrastructure_error because the object-content group still contains unsupported or incomplete CMIS services.

Normalized group counts:

  • repository-type: 38 pass, 2 info, 1 skipped, 1 warning.
  • object-content: 12 info, 5 skipped, 3 warning, 3 fail, 3 infrastructure_error.

The sole repository-type warning is local HTTP rather than HTTPS: HTTPS is not used. Credentials might be transferred as plain text!

Improvements Since run-20260508T153316Z

  • Fixed Browser Binding parent relativePathSegment; OpenCMIS no longer builds invalid paths such as /folder/folder for documents.
  • Added Browser Binding property filtering and optional envelope trimming for filter, includeAllowableActions, includeACL, and includePathSegment.
  • Changed Browser Binding children numItems to report the total child count instead of page length.
  • Added range-aware content responses with sliced bodies, Content-Length, Content-Range, and 206 for partial requests.
  • Added no-content document compatibility streams while keeping document content stream properties nullable.
  • Added stable object-id behavior for adapter-managed folder rename/update.
  • Added setContent and deleteContent Browser Binding action aliases over the existing content-stream service boundary.
  • Preserved existing blob deduplication and digest verification paths.

Removed or reduced OpenCMIS frontier items:

  • getObjectByPath path-segment failures are gone.
  • Create/delete document paging numItems failures are gone.
  • Update Smoke Test folder rename/object-id failures are gone.
  • Operation Context ACL delivery warning is gone.
  • Most content range warnings are gone.
  • No-content document retrieval no longer aborts with Representation not found.

Remaining Frontier

These are now the concrete maturity gaps visible in the selected OpenCMIS baseline:

  • Invalid type exception mapping: invalid document/folder type creation returns HTTP 422, which OpenCMIS reports as CmisRuntimeException instead of a narrower CMIS invalid-argument/constraint exception.
  • Bulk update: cmisaction=bulkUpdate is still unsupported and reports Unprocessable Entity.
  • Delete content semantics: deleteContentStream is accepted through the alias layer, but OpenCMIS still observes content after delete. The adapter needs a stronger natural representation-removal or tombstone model.
  • Change tokens: repeated property/content updates with the same change token do not produce CMIS update-conflict behavior yet.
  • Copy/create-from-source: createDocumentFromSource remains unsupported.
  • Range classification: the remaining range warning is for an offset-zero full-stream request being marked as partial.

Interpretation

The CMIS layer is now past the early Browser Binding and basic object/content shape problems. The remaining failures are concentrated in specific CMIS service semantics: exception mapping, content deletion, change token conflict handling, copy support, and bulk update.

This is a healthy architectural signal: the adapter continues to map naturally onto native asset, representation, blob, metadata, policy, and audit services. The remaining work should be handled as explicit compatibility choices rather than broad ECM reimplementation.