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

110 lines
4.6 KiB
Markdown

# 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:
```sh
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.