generated from coulomb/repo-seed
165 lines
5.7 KiB
Markdown
165 lines
5.7 KiB
Markdown
# CMIS OpenCMIS TCK Implementation Evidence
|
|
|
|
Run timestamp: 2026-05-08T09:21:13Z
|
|
Local timestamp: 2026-05-08T11:21:13+02:00
|
|
Status: `KONT-WP-0013` implementation evidence captured
|
|
|
|
## Purpose
|
|
|
|
Persist the implementation outcome for the CMIS Browser Binding TCK
|
|
compatibility workplan. This document supersedes the initial blocker report in
|
|
`docs/cmis-opencmis-tck-assessment-2026-05-08T063312Z.md` for the current
|
|
`kontextual-engine` state.
|
|
|
|
## Implementation Summary
|
|
|
|
The CMIS adapter now exposes a Browser Binding-shaped compatibility surface for
|
|
the `compat-tck` profile instead of leaking native snake_case DTOs on the
|
|
compatibility route.
|
|
|
|
Implemented changes:
|
|
|
|
- Browser Binding service document keyed by repository ID.
|
|
- CMIS field names for repository info, capabilities, extended features, type
|
|
definitions, object properties, ACLs, parents, query results, and root folder
|
|
projections.
|
|
- Selector handling for `repositoryInfo`, `typeChildren`, `typeDescendants`,
|
|
`typeDefinition`, `query`, `object`, `children`, `parents`, `properties`,
|
|
`allowableActions`, `policies`, and `content`.
|
|
- `compat-tck` repository ID alignment between the engine profile and the
|
|
OpenCMIS target profile.
|
|
- Root folder and virtual-folder projections that include the properties
|
|
advertised by the `cmis:folder` type definition.
|
|
- `includePropertyDefinitions` handling for type-list selectors.
|
|
- FastAPI OpenAPI generation fix for streaming routes.
|
|
- Internal regression coverage for Browser Binding selectors and OpenAPI route
|
|
generation.
|
|
|
|
## Final OpenCMIS Run
|
|
|
|
Guide Board live run:
|
|
|
|
- Run ID: `run-20260508T092113Z`
|
|
- Run directory: `/tmp/open-cmis-tck-kontextual-fix6-20260508`
|
|
- Assessment status: `completed`
|
|
- Target: `kontextual-cmis-compat`
|
|
- Assessment: `cmis-browser-baseline`
|
|
- Browser Binding URL: `http://127.0.0.1:8010/cmis/compat-tck/browser`
|
|
- Repository ID: `compat-tck`
|
|
|
|
Guide Board summary:
|
|
|
|
- `pass: 1`
|
|
- `warning: 1`
|
|
- `skipped: 1`
|
|
- unexpected findings: `0`
|
|
|
|
Mapped groups:
|
|
|
|
- Repository and type metadata: `warning`
|
|
- Object and content services: `skipped`
|
|
|
|
Normalized OpenCMIS case counts:
|
|
|
|
- `repository-type`: `38 pass`, `2 info`, `2 skipped`, `1 warning`, `0 fail`
|
|
- `object-content`: `22 skipped`, `0 fail`
|
|
|
|
The remaining repository/type warning is local transport only:
|
|
|
|
```text
|
|
HTTPS is not used. Credentials might be transferred as plain text!
|
|
```
|
|
|
|
The object/content group skips because the compatibility profile does not make
|
|
the `cmis:folder` base type creatable. This is an intentional boundary for the
|
|
current profiled adapter: governed document creation and content stream updates
|
|
exist through the current engine-backed routes, but full CMIS CRUD scaffolding
|
|
for TCK-created folders is not in scope yet.
|
|
|
|
## Scorecard
|
|
|
|
Generated scorecard:
|
|
|
|
- Path: `/tmp/open-cmis-tck-kontextual-fix6-20260508/reports/cmis-maturity-scorecard.md`
|
|
- Maturity score: `23.81`
|
|
- Coverage: `2/9` groups, `22.22%`
|
|
- Repository and type metadata: `partial`, score `3/4`
|
|
- Object and content services: `not_automated`, score `2/4`
|
|
|
|
Interpretation:
|
|
|
|
- The original protocol blocker is resolved: OpenCMIS can create a Browser
|
|
Binding session and execute selected checks.
|
|
- The current score remains low because only two groups are selected in the
|
|
baseline and one group is intentionally skipped by profile capability.
|
|
- The scorecard is preparation evidence, not CMIS certification.
|
|
|
|
## Commands
|
|
|
|
Focused internal CMIS regression suite:
|
|
|
|
```bash
|
|
cd /home/worsch/kontextual-engine
|
|
.venv/bin/python -m pytest tests/cmis --perf-history-disable
|
|
```
|
|
|
|
Result:
|
|
|
|
```text
|
|
45 passed
|
|
```
|
|
|
|
Live OpenCMIS run:
|
|
|
|
```bash
|
|
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-fix6-20260508
|
|
```
|
|
|
|
Scorecard generation:
|
|
|
|
```bash
|
|
cd /home/worsch/open-cmis-tck
|
|
PYTHONPATH=src python3 scripts/cmis_scorecard.py \
|
|
--run-dir /tmp/open-cmis-tck-kontextual-fix6-20260508
|
|
```
|
|
|
|
## Evidence Artifacts
|
|
|
|
The `/tmp` run artifacts are useful local evidence but may be ephemeral:
|
|
|
|
- `/tmp/open-cmis-tck-kontextual-fix6-20260508/reports/report.md`
|
|
- `/tmp/open-cmis-tck-kontextual-fix6-20260508/reports/cmis-maturity-scorecard.md`
|
|
- `/tmp/open-cmis-tck-kontextual-fix6-20260508/normalized/evidence.json`
|
|
- `/tmp/open-cmis-tck-kontextual-fix6-20260508/normalized/findings.json`
|
|
- `/tmp/open-cmis-tck-kontextual-fix6-20260508/artifacts/open-cmis-tck/tck/repository-type/normalized-runner-result.json`
|
|
- `/tmp/open-cmis-tck-kontextual-fix6-20260508/artifacts/open-cmis-tck/tck/object-content/normalized-runner-result.json`
|
|
|
|
## Remaining Boundary Gaps
|
|
|
|
These are not regressions in the current workplan; they are next-scope choices:
|
|
|
|
- Configure a durable local target profile or harness parameter for the
|
|
`kontextual-engine` test port instead of using a temporary `/tmp` profile.
|
|
- Decide whether the `compat-tck` profile should support CMIS `createFolder`
|
|
purely to exercise more CRUD/content TCK cases.
|
|
- Expand OpenCMIS selected groups beyond `repository-type` and
|
|
`object-content` once the targeted capability boundary is agreed.
|
|
- Harden `open-cmis-tck` preflight in the sister repository so native-shaped
|
|
repository-info responses are rejected before Maven invocation.
|
|
- Add HTTPS or a local warning waiver only when transport-security evidence
|
|
matters for a deployment profile.
|
|
|
|
## Conclusion
|
|
|
|
`KONT-WP-0013` achieved its main purpose for `kontextual-engine`: OpenCMIS no
|
|
longer fails at session creation, the repository/type group parses and executes,
|
|
the object/content group reaches parsed TCK cases, and the remaining gaps are
|
|
capability-scope decisions rather than protocol-shape crashes.
|