# CMIS Profiles Status: draft Created: 2026-05-07 ## Purpose `open-cmis-tck` uses guide-board target and assessment profiles without adding a separate persisted profile format. This keeps the extension compatible with the guide-board planner while still giving CMIS-specific diagnostics through `open_cmis_tck.profile.validate_cmis_profile_config`. ## Target Profile Fields The CMIS target profile uses the guide-board `target-profile` schema: - `subject_type`: use `cmis-browser-binding-endpoint`. - `endpoints`: include one endpoint with `binding` set to `cmis-browser` and `url` set to the Browser Binding service document URL. - `credentials_ref`: use `null` for anonymous/local development targets, or a secret reference for authenticated repositories. - `declared_capabilities`: list the CMIS requirement refs the target claims to support, such as `cmis.repository-info`, `cmis.type-definitions`, `cmis.object-services`, `cmis.content-streams`, `cmis.query`, `cmis.acl`, and `cmis.versioning`. - `known_gaps`: list unsupported optional requirements with a stable gap ID, requirement refs, reason, and status such as `unsupported_by_design`. ## Assessment Runtime Fields Repository selection and harness execution settings live in the assessment profile because they are run policy, not target identity: ```json { "runtime_policy": { "offline": false, "timeout_seconds": 300, "opencmis_tck": { "repository_id": "compat-tck", "requires_java_maven": true, "command": ["java", "-jar", "/assets/opencmis-tck-runner.jar"] } } } ``` `repository_id` is optional for preflight. If omitted, preflight selects the first repository from the Browser Binding service document. A real TCK command usually needs it. `command` is optional. When absent, the wrapper reports `tck_invocation_not_configured` as a structured, expected bootstrap blocker. ## Diagnostics Use the extension helper from tests or local scripts: ```python from open_cmis_tck.profile import validate_cmis_profile_config diagnostics = validate_cmis_profile_config(target_profile, assessment_profile) ``` The result contains `status`, `diagnostics`, and the interpreted `cmis_config`. Diagnostics are intentionally actionable: they point to the field that should be changed and explain what the extension expects.