open-cluster/oc-control-plane
repository owns the HTTP contract, durable domain state, provider Integrations,
Investigation engine, self-hosting assets, and public documentation. The Relay protocol is
consumed from the pinned public github.com/open-cluster/oc-relay/gen/go module.
Start with a public issue and confirm the intended behavior before implementation. Read
CONTEXT.md for the domain vocabulary, CONTRIBUTING.md for the required workflow, and
CODE_OF_CONDUCT.md before participating.
Prerequisites
Development requires the Go version declared bygo.mod, Docker with Docker Compose,
GNU Make, a POSIX shell for repository scripts, and Helm 3. Docker must be reachable for
the PostgreSQL integration suite.
Run the pinned analysis-tool installer once:
Repository layout
Customer cluster access belongs to Relay, not this repository. Do not add Kubernetes
libraries to the control-plane module.
Start locally
Follow the Quickstart to create file-backed secrets and set the required environment values. Then start the complete local stack from the repository root:http://localhost:8080/healthz and http://localhost:8080/readyz before testing a
browser or API change.
Make a focused change
- Write one failing test at the observable boundary affected by the change.
- Make the smallest implementation change that passes it.
- Keep Organization selection and PostgreSQL predicates explicit.
- Update
api/openapi.yamlwhen the public HTTP contract changes. - Update only the affected public documentation. A shipped Integration change includes its provider guide.
Verify
Run the short suite regularly:make test for race-enabled unit and PostgreSQL integration tests. Before opening a
pull request, run the complete gate:
make verify checks OpenAPI, documentation, lint, build, tests, vulnerabilities,
licenses, and deployment assets. The real Relay protocol proof lives in the separate
test/e2e Go module and must not leak its dependencies into the shipping module.
Pull-request expectations
Keep the pull request focused. Describe the behavior changed, the failing test observed before the fix, final verification commands, security impact, documentation impact, and any intentional limitation. Confirm that no secret, generated scratch file, or unrelated change entered the diff. See the repositoryCONTRIBUTING.md for licensing and dependency requirements.