generated from coulomb/repo-seed
CMIS Browser Binding serializer layer
This commit is contained in:
@@ -0,0 +1,164 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user