# Local OpenCMIS TCK Runbook Status: draft Created: 2026-05-08 ## Purpose This runbook is the workstation path from a clean checkout to the first local OpenCMIS TCK run through guide-board. The local path has two stages: 1. Prove the guide-board/OpenCMIS adapter wiring with the dry-run profile. 2. Install Java/Maven, resolve the OpenCMIS TCK runtime, and run the real ConsoleRunner profile. ## Prerequisites The extension and guide-board repositories should be siblings: ```text /home/worsch/guide-board /home/worsch/open-cmis-tck ``` The guide-board core is used from source: ```sh cd /home/worsch/guide-board PYTHONPATH=src python3 -m guide_board --extension-dir ../open-cmis-tck extensions validate ``` ## Dry-Run Adapter Check The dry-run profile verifies profile resolution, CMIS preflight, wrapper invocation, ConsoleRunner adapter argument expansion, session file generation, artifact references, mapping, and report creation. It does not require Java or Maven. Start or point to a CMIS Browser Binding endpoint, then run: ```sh cd /home/worsch/guide-board PYTHONPATH=src python3 -m guide_board \ --extension-dir ../open-cmis-tck \ run \ --target ../open-cmis-tck/profiles/targets/kontextual-cmis-compat.json \ --assessment ../open-cmis-tck/profiles/assessments/cmis-browser-local-dry-run.json \ --output-dir /tmp/open-cmis-tck-dry-run ``` Expected dry-run artifacts: ```text /tmp/open-cmis-tck-dry-run/reports/report.md /tmp/open-cmis-tck-dry-run/reports/assessment-package.json /tmp/open-cmis-tck-dry-run/normalized/evidence.json /tmp/open-cmis-tck-dry-run/artifacts/open-cmis-tck/tck/repository-type/session.properties.redacted /tmp/open-cmis-tck-dry-run/artifacts/open-cmis-tck/tck/repository-type/groups.txt ``` If preflight fails, fix the target profile or endpoint before continuing. Generate a maturity scorecard from the dry-run output: ```sh cd /home/worsch/open-cmis-tck PYTHONPATH=src python3 scripts/cmis_scorecard.py \ --run-dir /tmp/open-cmis-tck-dry-run ``` ## Install Java And Maven The current WSL environment does not expose system `java` and `mvn` on `PATH`. Either install them as system packages: ```sh sudo apt-get update sudo apt-get install -y openjdk-17-jdk maven ``` Use a managed local Java/Maven installation instead if preferred. The bootstrap only requires `java` and `mvn` on `PATH`. Or use the repo-local toolchain under `.local/`: ```sh cd /home/worsch/open-cmis-tck python3 scripts/install_local_toolchain.py source .local/toolchains/env.sh PYTHONPATH=src python3 scripts/bootstrap_opencmis_tck.py --resolve ``` The local installer downloads a Linux x64 Temurin JDK 17 archive and Apache Maven 3.9.11, extracts them under `.local/toolchains`, verifies Maven's SHA-512 checksum, writes `.local/toolchains/env.sh`, and leaves the downloaded binaries outside version control. This workspace has already been bootstrapped with the repo-local path. In a new shell, source the environment file before running live TCK commands: ```sh cd /home/worsch/open-cmis-tck source .local/toolchains/env.sh ``` ## Resolve The TCK Runtime ```sh cd /home/worsch/open-cmis-tck source .local/toolchains/env.sh PYTHONPATH=src python3 scripts/bootstrap_opencmis_tck.py --resolve ``` This resolves: ```text org.apache.chemistry.opencmis:chemistry-opencmis-test-tck:1.1.0 ``` into the local Maven cache and writes: ```text .local/opencmis-tck/runtime-summary.json ``` The `.local/` directory is ignored and must not be committed. ## Real TCK Run After bootstrap reports `ready`, run the baseline assessment: ```sh 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 ../open-cmis-tck/profiles/targets/kontextual-cmis-compat.json \ --assessment ../open-cmis-tck/profiles/assessments/cmis-browser-baseline.json \ --output-dir /tmp/open-cmis-tck-live ``` The baseline currently selects: - `repository-type` - `object-content` Expand selected check groups only after the repository/type run produces useful output. Then generate the maturity scorecard: ```sh cd /home/worsch/open-cmis-tck PYTHONPATH=src python3 scripts/cmis_scorecard.py \ --run-dir /tmp/open-cmis-tck-live ``` Review the real TCK evidence before expanding the scope: ```text /tmp/open-cmis-tck-live/normalized/evidence.json /tmp/open-cmis-tck-live/artifacts/open-cmis-tck/tck//console-runner-stdout.txt /tmp/open-cmis-tck-live/artifacts/open-cmis-tck/tck//normalized-runner-result.json ``` The normalizer preserves native OpenCMIS statuses (`OK`, `WARNING`, `FAILURE`, `SKIPPED`, `UNEXPECTED_EXCEPTION`, and `INFO`) as case-level facts while mapping the overall check group to guide-board's result vocabulary. ## Authenticated Targets For environment credentials: ```sh export CMIS_TCK_USER='cmis-user' export CMIS_TCK_PASSWORD='local-secret' ``` Use a target profile with: ```json "credentials_ref": "env:CMIS_TCK_USER,CMIS_TCK_PASSWORD" ``` The adapter uses a private session file during execution and retains only a redacted session file as an artifact. ## Troubleshooting `java is not available on PATH`: Install a JDK or expose an existing JDK to WSL. `maven is not available on PATH`: Install Maven or expose an existing Maven executable to WSL. Maven dependency resolution fails: Check network access to Maven Central or rerun with a populated Maven cache. Preflight returns `infrastructure_error`: Check endpoint URL, server process, firewall, credentials, and timeout. Repository ID mismatch: Use the repository IDs reported by preflight and update `runtime_policy.opencmis_tck.repository_id`. TCK command times out: Increase `runtime_policy.timeout_seconds` or narrow selected check groups. Formal boundary: These runs generate preparation evidence only. They do not issue CMIS certification.