generated from coulomb/repo-seed
CMIS Browser Binding fixes
This commit is contained in:
109
docs/cmis-opencmis-tck-wp0014-evidence-2026-05-08T164334Z.md
Normal file
109
docs/cmis-opencmis-tck-wp0014-evidence-2026-05-08T164334Z.md
Normal file
@@ -0,0 +1,109 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user