Files
james.maesandClaude Sonnet 5.5 df0ff73dae
QRun-IO/ci-policy: ci / fork-guard (pull_request) Skipped
QRun-IO/ci-policy: ci / head-profile (pull_request) Skipped
QRun-IO/ci-policy: ci / application-template-0 (pull_request) Skipped
QRun-IO/ci-policy: ci / gradle-1 (pull_request) Skipped
QRun-IO/ci-policy: ci / java-docker-3 (pull_request) Skipped
QRun-IO/ci-policy: ci / java-docker-4 (pull_request) Skipped
QRun-IO/ci-policy: ci / java-frontend-browser-5 (pull_request) Skipped
QRun-IO/ci-policy: ci / java-maven-6 (pull_request) Skipped
QRun-IO/ci-policy: ci / node-8 (pull_request) Skipped
QRun-IO/ci-policy: ci / node-9 (pull_request) Skipped
QRun-IO/ci-policy: ci / node-10 (pull_request) Skipped
QRun-IO/ci-policy: ci / node-playwright-11 (pull_request) Skipped
QRun-IO/ci-policy: ci / repository-policy-12 (pull_request) Skipped
QRun-IO/ci-policy: ci / source-config-13 (pull_request) Skipped
QRun-IO/ci-policy: ci / source-config-14 (pull_request) Skipped
QRun-IO/ci-policy: ci / android-0 (pull_request) Skipped
QRun-IO/ci-policy: ci / original-business (pull_request) Skipped
QRun-IO/ci-policy: ci / original-mcp (pull_request) Skipped
QRun-IO/ci-policy: ci / original-voyage (pull_request) Skipped
QRun-IO/ci-policy: ci / original-cli (pull_request) Skipped
QRun-IO/ci-policy: ci / not-enrolled (pull_request) Skipped
QRun-IO/ci-policy: native / fork-deny (pull_request) Skipped
QRun-IO/ci-policy: native / dotnet-0 (pull_request) Skipped
QRun-IO/ci-policy: native / native-result (pull_request) Successful in 11s
QRun-IO/ci-policy: Shared Java Maven CI / secrets (pull_request) Successful in 45s
QRun-IO/ci-policy: ci / repository-policy (pull_request) Skipped
QRun-IO/ci-policy: ci / java-core-2-head (pull_request) Skipped
QRun-IO/ci-policy: ci / java-docker-3-head (pull_request) Skipped
QRun-IO/ci-policy: ci / java-maven-6-head (pull_request) Skipped
QRun-IO/ci-policy: ci / java-maven-7-head (pull_request) Skipped
QRun-IO/ci-policy: Shared Java Maven CI / verify (pull_request) Successful in 3m28s
QRun-IO/ci-policy: Shared Java Maven CI / gate (pull_request) Successful in 21s
QRun-IO/ci-policy: ci / java-maven-7 (pull_request) Successful in 3m50s
QRun-IO/ci-policy: ci / ci-result (pull_request) Successful in 7s
docs: reconcile scanner and Echo demo handoff
Document the current local server, semantic contract, accepted TC22 tests and signed APK status. Separate production follow-up from the working demo and archive superseded logs.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-04 13:29:31 -06:00

2.1 KiB

Contributing

Use Java 21 and the checked-in Maven wrapper. Clone this repository and the companion qqq-android on Gitea (the primary forge; GitHub is a shadow/archive) when changing the mobile/server contract. No Android SDK is needed for server-only changes.

Create feature/, fix/, docs/ or chore/ branches from develop and open pull requests into develop. Use Conventional Commit subjects and describe the resulting behavior, relevant verification and compatibility changes. Request review from the code owner; do not merge with failing required checks.

Local checks

From the repository root:

./mvnw --batch-mode verify install
./mvnw --batch-mode -f demo/pom.xml verify

On Windows, use .\mvnw.cmd. The root build verifies Checkstyle, H2 behavior and QBit guardrails; the separate demo verifies native login, enrollment, approval, scanner metadata, asynchronous capture, retries and revocation over HTTP. Tests use synthetic data and isolated databases.

For a physical handheld, follow TC22 acceptance. State clearly whether a change was tested on a device, in an emulator, or only through automated tests.

Style and design

Follow the existing Kingsrook Java style: three-space indentation, Allman braces, banner documentation, explicit imports and Apache-2.0 SPDX headers. The checked-in Checkstyle configuration owns the formatting rules. Prefer ordinary QQQ metadata, actions and authentication integrations over duplicate infrastructure.

Retain the online-only contract and acknowledge scans only after persistence succeeds. Add meaningful regression coverage for permission, device identity, retry, schema or protocol changes. Keep device tokens out of process values, logs and fixtures. Use generated examples instead of production barcodes or identities.

The CI and release guide explains the shared CircleCI profile and publication enablement. Report vulnerabilities privately through SECURITY.md, and follow the Code of Conduct.