{"owner":"openshift","repo":"origin","hasSkills":true,"hasMcp":false,"mcpConfig":null,"found":["AGENTS.md","CLAUDE.md","GEMINI.md"],"skills":{"AGENTS.md":"# AGENTS.md\n<!-- Generated by APM CLI from distributed .apm/ primitives -->\n<!-- Build ID: 7f3aaf60436f -->\n<!-- APM Version: 0.13.0 -->\n<!-- Source: local -->\n\n## Files matching `**`\n\n<!-- Source: local .apm/instructions/general.instructions.md -->\n### APM context generation\n\nSources under **`.apm/`** (instructions, prompts, `apm.yml`, etc.) drive generated agent context. After editing those files, run **`make apm`** to regenerate **AGENTS.md**, **CLAUDE.md**, **GEMINI.md**, and the integrated copies under **`.claude/`**, **`.cursor/`**, **`.gemini/`**, **`.github/instructions/`**, **`.github/prompts/`**, and **`.opencode/`**.\n\n**Slash / agent commands:** content under **`.apm/prompts/*.prompt.md`** is the single source of truth. **`apm install`** (part of **`make apm`**) copies each prompt into editor command targets (e.g. **`.claude/commands/`**, **`.opencode/commands/`**, **`.gemini/commands/`**). Do not add those generated paths by hand or installs will skip them as unmanaged duplicates.\n\n### Repository overview\n\n**openshift/origin** builds the `openshift-tests` binary — the orchestrator for all OpenShift end-to-end testing. It contains:\n* **Built-in e2e tests** (Ginkgo) that run against a live cluster.\n* **Monitor tests** that observe cluster health in the background during e2e runs.\n* **Disruption tests** (a category of monitor test) that measure endpoint availability.\n* **Extension orchestration** that discovers and runs tests contributed by other components via the OTE framework.\n\n### Key directories\n\n* **`cmd/openshift-tests/`** — main binary entry point with subcommands: `run`, `run-test`, `run-monitor`, `run-upgrade`, `disruption`, `list`, `info`, `extension-admission`, and more.\n* **`pkg/testsuites/`** — test suite definitions that compose built-in and extension tests.\n* **`test/extended/`** — Ginkgo-based e2e test packages organized by area (e.g. `networking/`, `storage/`, `etcd/`).\n* **`test/extended/include.go`** — blank imports that register all e2e test packages. New packages **must** be added here.\n* **`test/e2e/upgrade/`** — upgrade-specific e2e tests.\n* **`pkg/monitortestframework/`** — `MonitorTest` interface and registry.\n* **`pkg/defaultmonitortests/`** — registers default monitor tests for stable and disruptive scenarios.\n* **`pkg/monitortests/`** — individual monitor test implementations organized by component (e.g. `etcd/`, `kubeapiserver/`, `network/`, `node/`).\n* **`pkg/monitortestlibrary/`** — shared monitor utilities (allowed disruption baselines, alert allowlists, platform identification).\n* **`pkg/disruption/`** — disruption measurement framework (HTTP/gRPC sampling, transport hooks, shutdown detection).\n* **`pkg/test/extensions/`** — OTE extension binary extraction, execution, and admission control.\n* **`vendor/`** — vendored dependencies. Run `go mod tidy && go mod vendor` after changing `go.mod` to keep `go.sum` and `vendor/` in sync.\n\n### E2e tests\n\nGinkgo-based tests in `test/extended/<area>/` run against a live OpenShift cluster. Each package is registered via blank import in `test/extended/include.go`. These are the \"built-in\" tests that ship inside the `openshift-tests` binary. Tests are grouped into suites (e.g. `openshift/conformance/parallel`) defined in `pkg/testsuites/`.\n\n### Monitor tests\n\nMonitor tests run **in parallel** with the e2e suite to continuously observe cluster health. They follow a lifecycle:\n1. **`StartCollection()`** — begin watching resources, recording events.\n2. *(e2e tests execute)*\n3. **`CollectData()`** — final data collection pass.\n4. **`ConstructComputedIntervals()`** — analyze raw data into structured intervals.\n5. **`EvaluateTestsFromConstructedIntervals()`** — produce JUnit pass/fail results.\n\nMonitor tests are registered in `pkg/defaultmonitortests/types.go` with two stability levels: **Stable** (normal operation — runs all monitors including availability checks) and **Disruptive** (tests that intentionally cause outages like upgrades, node drains, etcd recovery, or cert rotation — availability monitors are excluded since measuring uptime during intentional disruption would produce false failures). Implementations live in `pkg/monitortests/` organized by component — examples include etcd log analysis, cluster operator state tracking, node readiness, API server availability, and alert evaluation.\n\n### Disruption tests\n\nDisruption tests are a category of monitor test that measure **endpoint availability** during test runs. They continuously poll services (API servers, ingress, image registry, pod network) and record availability intervals. Allowed disruption baselines in `pkg/monitortestlibrary/allowedbackenddisruption/` define acceptable unavailability thresholds. Key implementations live in `pkg/monitortests/kubeapiserver/`, `pkg/monitortests/network/`, and `pkg/monitortests/imageregistry/`.\n\n### Extensions (OTE — OpenShift Tests Extension)\n\nThe `openshift-tests` binary acts as an **orchestrator** for tests contributed by other components. The [openshift-tests-extension](https://github.com/openshift-eng/openshift-tests-extension) (OTE) framework defines a standardized interface that external binaries implement:\n* **`<binary> info`** — return extension metadata (component, suites, version).\n* **`<binary> list -o jsonl`** — list available tests, filtered by environment (platform, arch, network).\n* **`<binary> run-test -n <name>`** — execute a specific test and return JSONL results.\n\n**Payload extensions** are test binaries shipped inside release payload images. The registry in `pkg/test/extensions/binary.go` maps ~35 payload image tags to their test binary paths. At runtime, `openshift-tests` extracts these binaries, discovers their tests, and runs them alongside built-in tests.\n\n**Non-payload extensions** are discovered from ImageStreamTags in the cluster and require explicit approval via a `TestExtensionAdmission` CRD. The `extension-admission` subcommand manages these approval rules.\n\nOrigin also registers itself as an extension (`openshift:payload:origin`) so its own built-in Ginkgo tests appear in the unified extension registry alongside external tests.\n\n### Build and verify\n\n* **Build:** `make build` or `make openshift-tests` (produces `./openshift-tests`).\n* **Unit tests:** `go test ./pkg/...` (fast, no cluster required).\n* **Lint / verify:** `make verify` (runs `go vet`, jsonformat, generated-file checks, TLS ownership).\n* **Full check:** `make check` (verify + build + tests).\n\nFavor clarity and maintainability over cleverness. Comments should be minimal, helpful, and explain the \"why\" not the \"what\".\n\n## Files matching `**/*_test.go`\n\n<!-- Source: local .apm/instructions/testing.instructions.md -->\n* Use `go vet ./...` and `go test ./pkg/...` to validate changes before committing.\n* E2e tests in `test/extended/<area>/` are **platform-level tests for OpenShift** — they run against a live cluster to validate the product, not just this repo. They use the **Ginkgo** framework and are compiled into the `openshift-tests` binary that CI runs against every payload.\n* `test/extended/include.go` blank-imports every e2e test package — new packages **must** be added there or they won't be compiled into the binary.\n* Unit tests in `pkg/` use standard Go `testing` with **table-driven** patterns.\n* Build the test binary: `make openshift-tests` or `make build`.\n* For unit tests, prefer **table-driven tests** with descriptive case names. Search the same package for existing test patterns before writing new ones.\n\n---\n*This file was generated by APM CLI. Do not edit manually.*\n*To regenerate: `apm compile`*\n","CLAUDE.md":"# CLAUDE.md\n<!-- Generated by APM CLI -->\n<!-- Build ID: 64ef96206f72 -->\n<!-- APM Version: 0.13.0 -->\n\n# Project Standards\n\n## Files matching `**`\n\n<!-- Source: local .apm/instructions/general.instructions.md -->\n### APM context generation\n\nSources under **`.apm/`** (instructions, prompts, `apm.yml`, etc.) drive generated agent context. After editing those files, run **`make apm`** to regenerate **AGENTS.md**, **CLAUDE.md**, **GEMINI.md**, and the integrated copies under **`.claude/`**, **`.cursor/`**, **`.gemini/`**, **`.github/instructions/`**, **`.github/prompts/`**, and **`.opencode/`**.\n\n**Slash / agent commands:** content under **`.apm/prompts/*.prompt.md`** is the single source of truth. **`apm install`** (part of **`make apm`**) copies each prompt into editor command targets (e.g. **`.claude/commands/`**, **`.opencode/commands/`**, **`.gemini/commands/`**). Do not add those generated paths by hand or installs will skip them as unmanaged duplicates.\n\n### Repository overview\n\n**openshift/origin** builds the `openshift-tests` binary — the orchestrator for all OpenShift end-to-end testing. It contains:\n* **Built-in e2e tests** (Ginkgo) that run against a live cluster.\n* **Monitor tests** that observe cluster health in the background during e2e runs.\n* **Disruption tests** (a category of monitor test) that measure endpoint availability.\n* **Extension orchestration** that discovers and runs tests contributed by other components via the OTE framework.\n\n### Key directories\n\n* **`cmd/openshift-tests/`** — main binary entry point with subcommands: `run`, `run-test`, `run-monitor`, `run-upgrade`, `disruption`, `list`, `info`, `extension-admission`, and more.\n* **`pkg/testsuites/`** — test suite definitions that compose built-in and extension tests.\n* **`test/extended/`** — Ginkgo-based e2e test packages organized by area (e.g. `networking/`, `storage/`, `etcd/`).\n* **`test/extended/include.go`** — blank imports that register all e2e test packages. New packages **must** be added here.\n* **`test/e2e/upgrade/`** — upgrade-specific e2e tests.\n* **`pkg/monitortestframework/`** — `MonitorTest` interface and registry.\n* **`pkg/defaultmonitortests/`** — registers default monitor tests for stable and disruptive scenarios.\n* **`pkg/monitortests/`** — individual monitor test implementations organized by component (e.g. `etcd/`, `kubeapiserver/`, `network/`, `node/`).\n* **`pkg/monitortestlibrary/`** — shared monitor utilities (allowed disruption baselines, alert allowlists, platform identification).\n* **`pkg/disruption/`** — disruption measurement framework (HTTP/gRPC sampling, transport hooks, shutdown detection).\n* **`pkg/test/extensions/`** — OTE extension binary extraction, execution, and admission control.\n* **`vendor/`** — vendored dependencies. Run `go mod tidy && go mod vendor` after changing `go.mod` to keep `go.sum` and `vendor/` in sync.\n\n### E2e tests\n\nGinkgo-based tests in `test/extended/<area>/` run against a live OpenShift cluster. Each package is registered via blank import in `test/extended/include.go`. These are the \"built-in\" tests that ship inside the `openshift-tests` binary. Tests are grouped into suites (e.g. `openshift/conformance/parallel`) defined in `pkg/testsuites/`.\n\n### Monitor tests\n\nMonitor tests run **in parallel** with the e2e suite to continuously observe cluster health. They follow a lifecycle:\n1. **`StartCollection()`** — begin watching resources, recording events.\n2. *(e2e tests execute)*\n3. **`CollectData()`** — final data collection pass.\n4. **`ConstructComputedIntervals()`** — analyze raw data into structured intervals.\n5. **`EvaluateTestsFromConstructedIntervals()`** — produce JUnit pass/fail results.\n\nMonitor tests are registered in `pkg/defaultmonitortests/types.go` with two stability levels: **Stable** (normal operation — runs all monitors including availability checks) and **Disruptive** (tests that intentionally cause outages like upgrades, node drains, etcd recovery, or cert rotation — availability monitors are excluded since measuring uptime during intentional disruption would produce false failures). Implementations live in `pkg/monitortests/` organized by component — examples include etcd log analysis, cluster operator state tracking, node readiness, API server availability, and alert evaluation.\n\n### Disruption tests\n\nDisruption tests are a category of monitor test that measure **endpoint availability** during test runs. They continuously poll services (API servers, ingress, image registry, pod network) and record availability intervals. Allowed disruption baselines in `pkg/monitortestlibrary/allowedbackenddisruption/` define acceptable unavailability thresholds. Key implementations live in `pkg/monitortests/kubeapiserver/`, `pkg/monitortests/network/`, and `pkg/monitortests/imageregistry/`.\n\n### Extensions (OTE — OpenShift Tests Extension)\n\nThe `openshift-tests` binary acts as an **orchestrator** for tests contributed by other components. The [openshift-tests-extension](https://github.com/openshift-eng/openshift-tests-extension) (OTE) framework defines a standardized interface that external binaries implement:\n* **`<binary> info`** — return extension metadata (component, suites, version).\n* **`<binary> list -o jsonl`** — list available tests, filtered by environment (platform, arch, network).\n* **`<binary> run-test -n <name>`** — execute a specific test and return JSONL results.\n\n**Payload extensions** are test binaries shipped inside release payload images. The registry in `pkg/test/extensions/binary.go` maps ~35 payload image tags to their test binary paths. At runtime, `openshift-tests` extracts these binaries, discovers their tests, and runs them alongside built-in tests.\n\n**Non-payload extensions** are discovered from ImageStreamTags in the cluster and require explicit approval via a `TestExtensionAdmission` CRD. The `extension-admission` subcommand manages these approval rules.\n\nOrigin also registers itself as an extension (`openshift:payload:origin`) so its own built-in Ginkgo tests appear in the unified extension registry alongside external tests.\n\n### Build and verify\n\n* **Build:** `make build` or `make openshift-tests` (produces `./openshift-tests`).\n* **Unit tests:** `go test ./pkg/...` (fast, no cluster required).\n* **Lint / verify:** `make verify` (runs `go vet`, jsonformat, generated-file checks, TLS ownership).\n* **Full check:** `make check` (verify + build + tests).\n\nFavor clarity and maintainability over cleverness. Comments should be minimal, helpful, and explain the \"why\" not the \"what\".\n\n## Files matching `**/*_test.go`\n\n<!-- Source: local .apm/instructions/testing.instructions.md -->\n* Use `go vet ./...` and `go test ./pkg/...` to validate changes before committing.\n* E2e tests in `test/extended/<area>/` are **platform-level tests for OpenShift** — they run against a live cluster to validate the product, not just this repo. They use the **Ginkgo** framework and are compiled into the `openshift-tests` binary that CI runs against every payload.\n* `test/extended/include.go` blank-imports every e2e test package — new packages **must** be added there or they won't be compiled into the binary.\n* Unit tests in `pkg/` use standard Go `testing` with **table-driven** patterns.\n* Build the test binary: `make openshift-tests` or `make build`.\n* For unit tests, prefer **table-driven tests** with descriptive case names. Search the same package for existing test patterns before writing new ones.\n\n---\n*This file was generated by APM CLI. Do not edit manually.*\n*To regenerate: `apm compile`*\n","GEMINI.md":"# GEMINI.md\n<!-- Generated by APM CLI -->\n<!-- Build ID: 01de98569d95 -->\n<!-- APM Version: 0.13.0 -->\n\n@./AGENTS.md\n"},"files":{"AGENTS.md":"# AGENTS.md\n<!-- Generated by APM CLI from distributed .apm/ primitives -->\n<!-- Build ID: 7f3aaf60436f -->\n<!-- APM Version: 0.13.0 -->\n<!-- Source: local -->\n\n## Files matching `**`\n\n<!-- Source: local .apm/instructions/general.instructions.md -->\n### APM context generation\n\nSources under **`.apm/`** (instructions, prompts, `apm.yml`, etc.) drive generated agent context. After editing those files, run **`make apm`** to regenerate **AGENTS.md**, **CLAUDE.md**, **GEMINI.md**, and the integrated copies under **`.claude/`**, **`.cursor/`**, **`.gemini/`**, **`.github/instructions/`**, **`.github/prompts/`**, and **`.opencode/`**.\n\n**Slash / agent commands:** content under **`.apm/prompts/*.prompt.md`** is the single source of truth. **`apm install`** (part of **`make apm`**) copies each prompt into editor command targets (e.g. **`.claude/commands/`**, **`.opencode/commands/`**, **`.gemini/commands/`**). Do not add those generated paths by hand or installs will skip them as unmanaged duplicates.\n\n### Repository overview\n\n**openshift/origin** builds the `openshift-tests` binary — the orchestrator for all OpenShift end-to-end testing. It contains:\n* **Built-in e2e tests** (Ginkgo) that run against a live cluster.\n* **Monitor tests** that observe cluster health in the background during e2e runs.\n* **Disruption tests** (a category of monitor test) that measure endpoint availability.\n* **Extension orchestration** that discovers and runs tests contributed by other components via the OTE framework.\n\n### Key directories\n\n* **`cmd/openshift-tests/`** — main binary entry point with subcommands: `run`, `run-test`, `run-monitor`, `run-upgrade`, `disruption`, `list`, `info`, `extension-admission`, and more.\n* **`pkg/testsuites/`** — test suite definitions that compose built-in and extension tests.\n* **`test/extended/`** — Ginkgo-based e2e test packages organized by area (e.g. `networking/`, `storage/`, `etcd/`).\n* **`test/extended/include.go`** — blank imports that register all e2e test packages. New packages **must** be added here.\n* **`test/e2e/upgrade/`** — upgrade-specific e2e tests.\n* **`pkg/monitortestframework/`** — `MonitorTest` interface and registry.\n* **`pkg/defaultmonitortests/`** — registers default monitor tests for stable and disruptive scenarios.\n* **`pkg/monitortests/`** — individual monitor test implementations organized by component (e.g. `etcd/`, `kubeapiserver/`, `network/`, `node/`).\n* **`pkg/monitortestlibrary/`** — shared monitor utilities (allowed disruption baselines, alert allowlists, platform identification).\n* **`pkg/disruption/`** — disruption measurement framework (HTTP/gRPC sampling, transport hooks, shutdown detection).\n* **`pkg/test/extensions/`** — OTE extension binary extraction, execution, and admission control.\n* **`vendor/`** — vendored dependencies. Run `go mod tidy && go mod vendor` after changing `go.mod` to keep `go.sum` and `vendor/` in sync.\n\n### E2e tests\n\nGinkgo-based tests in `test/extended/<area>/` run against a live OpenShift cluster. Each package is registered via blank import in `test/extended/include.go`. These are the \"built-in\" tests that ship inside the `openshift-tests` binary. Tests are grouped into suites (e.g. `openshift/conformance/parallel`) defined in `pkg/testsuites/`.\n\n### Monitor tests\n\nMonitor tests run **in parallel** with the e2e suite to continuously observe cluster health. They follow a lifecycle:\n1. **`StartCollection()`** — begin watching resources, recording events.\n2. *(e2e tests execute)*\n3. **`CollectData()`** — final data collection pass.\n4. **`ConstructComputedIntervals()`** — analyze raw data into structured intervals.\n5. **`EvaluateTestsFromConstructedIntervals()`** — produce JUnit pass/fail results.\n\nMonitor tests are registered in `pkg/defaultmonitortests/types.go` with two stability levels: **Stable** (normal operation — runs all monitors including availability checks) and **Disruptive** (tests that intentionally cause outages like upgrades, node drains, etcd recovery, or cert rotation — availability monitors are excluded since measuring uptime during intentional disruption would produce false failures). Implementations live in `pkg/monitortests/` organized by component — examples include etcd log analysis, cluster operator state tracking, node readiness, API server availability, and alert evaluation.\n\n### Disruption tests\n\nDisruption tests are a category of monitor test that measure **endpoint availability** during test runs. They continuously poll services (API servers, ingress, image registry, pod network) and record availability intervals. Allowed disruption baselines in `pkg/monitortestlibrary/allowedbackenddisruption/` define acceptable unavailability thresholds. Key implementations live in `pkg/monitortests/kubeapiserver/`, `pkg/monitortests/network/`, and `pkg/monitortests/imageregistry/`.\n\n### Extensions (OTE — OpenShift Tests Extension)\n\nThe `openshift-tests` binary acts as an **orchestrator** for tests contributed by other components. The [openshift-tests-extension](https://github.com/openshift-eng/openshift-tests-extension) (OTE) framework defines a standardized interface that external binaries implement:\n* **`<binary> info`** — return extension metadata (component, suites, version).\n* **`<binary> list -o jsonl`** — list available tests, filtered by environment (platform, arch, network).\n* **`<binary> run-test -n <name>`** — execute a specific test and return JSONL results.\n\n**Payload extensions** are test binaries shipped inside release payload images. The registry in `pkg/test/extensions/binary.go` maps ~35 payload image tags to their test binary paths. At runtime, `openshift-tests` extracts these binaries, discovers their tests, and runs them alongside built-in tests.\n\n**Non-payload extensions** are discovered from ImageStreamTags in the cluster and require explicit approval via a `TestExtensionAdmission` CRD. The `extension-admission` subcommand manages these approval rules.\n\nOrigin also registers itself as an extension (`openshift:payload:origin`) so its own built-in Ginkgo tests appear in the unified extension registry alongside external tests.\n\n### Build and verify\n\n* **Build:** `make build` or `make openshift-tests` (produces `./openshift-tests`).\n* **Unit tests:** `go test ./pkg/...` (fast, no cluster required).\n* **Lint / verify:** `make verify` (runs `go vet`, jsonformat, generated-file checks, TLS ownership).\n* **Full check:** `make check` (verify + build + tests).\n\nFavor clarity and maintainability over cleverness. Comments should be minimal, helpful, and explain the \"why\" not the \"what\".\n\n## Files matching `**/*_test.go`\n\n<!-- Source: local .apm/instructions/testing.instructions.md -->\n* Use `go vet ./...` and `go test ./pkg/...` to validate changes before committing.\n* E2e tests in `test/extended/<area>/` are **platform-level tests for OpenShift** — they run against a live cluster to validate the product, not just this repo. They use the **Ginkgo** framework and are compiled into the `openshift-tests` binary that CI runs against every payload.\n* `test/extended/include.go` blank-imports every e2e test package — new packages **must** be added there or they won't be compiled into the binary.\n* Unit tests in `pkg/` use standard Go `testing` with **table-driven** patterns.\n* Build the test binary: `make openshift-tests` or `make build`.\n* For unit tests, prefer **table-driven tests** with descriptive case names. Search the same package for existing test patterns before writing new ones.\n\n---\n*This file was generated by APM CLI. Do not edit manually.*\n*To regenerate: `apm compile`*\n","CLAUDE.md":"# CLAUDE.md\n<!-- Generated by APM CLI -->\n<!-- Build ID: 64ef96206f72 -->\n<!-- APM Version: 0.13.0 -->\n\n# Project Standards\n\n## Files matching `**`\n\n<!-- Source: local .apm/instructions/general.instructions.md -->\n### APM context generation\n\nSources under **`.apm/`** (instructions, prompts, `apm.yml`, etc.) drive generated agent context. After editing those files, run **`make apm`** to regenerate **AGENTS.md**, **CLAUDE.md**, **GEMINI.md**, and the integrated copies under **`.claude/`**, **`.cursor/`**, **`.gemini/`**, **`.github/instructions/`**, **`.github/prompts/`**, and **`.opencode/`**.\n\n**Slash / agent commands:** content under **`.apm/prompts/*.prompt.md`** is the single source of truth. **`apm install`** (part of **`make apm`**) copies each prompt into editor command targets (e.g. **`.claude/commands/`**, **`.opencode/commands/`**, **`.gemini/commands/`**). Do not add those generated paths by hand or installs will skip them as unmanaged duplicates.\n\n### Repository overview\n\n**openshift/origin** builds the `openshift-tests` binary — the orchestrator for all OpenShift end-to-end testing. It contains:\n* **Built-in e2e tests** (Ginkgo) that run against a live cluster.\n* **Monitor tests** that observe cluster health in the background during e2e runs.\n* **Disruption tests** (a category of monitor test) that measure endpoint availability.\n* **Extension orchestration** that discovers and runs tests contributed by other components via the OTE framework.\n\n### Key directories\n\n* **`cmd/openshift-tests/`** — main binary entry point with subcommands: `run`, `run-test`, `run-monitor`, `run-upgrade`, `disruption`, `list`, `info`, `extension-admission`, and more.\n* **`pkg/testsuites/`** — test suite definitions that compose built-in and extension tests.\n* **`test/extended/`** — Ginkgo-based e2e test packages organized by area (e.g. `networking/`, `storage/`, `etcd/`).\n* **`test/extended/include.go`** — blank imports that register all e2e test packages. New packages **must** be added here.\n* **`test/e2e/upgrade/`** — upgrade-specific e2e tests.\n* **`pkg/monitortestframework/`** — `MonitorTest` interface and registry.\n* **`pkg/defaultmonitortests/`** — registers default monitor tests for stable and disruptive scenarios.\n* **`pkg/monitortests/`** — individual monitor test implementations organized by component (e.g. `etcd/`, `kubeapiserver/`, `network/`, `node/`).\n* **`pkg/monitortestlibrary/`** — shared monitor utilities (allowed disruption baselines, alert allowlists, platform identification).\n* **`pkg/disruption/`** — disruption measurement framework (HTTP/gRPC sampling, transport hooks, shutdown detection).\n* **`pkg/test/extensions/`** — OTE extension binary extraction, execution, and admission control.\n* **`vendor/`** — vendored dependencies. Run `go mod tidy && go mod vendor` after changing `go.mod` to keep `go.sum` and `vendor/` in sync.\n\n### E2e tests\n\nGinkgo-based tests in `test/extended/<area>/` run against a live OpenShift cluster. Each package is registered via blank import in `test/extended/include.go`. These are the \"built-in\" tests that ship inside the `openshift-tests` binary. Tests are grouped into suites (e.g. `openshift/conformance/parallel`) defined in `pkg/testsuites/`.\n\n### Monitor tests\n\nMonitor tests run **in parallel** with the e2e suite to continuously observe cluster health. They follow a lifecycle:\n1. **`StartCollection()`** — begin watching resources, recording events.\n2. *(e2e tests execute)*\n3. **`CollectData()`** — final data collection pass.\n4. **`ConstructComputedIntervals()`** — analyze raw data into structured intervals.\n5. **`EvaluateTestsFromConstructedIntervals()`** — produce JUnit pass/fail results.\n\nMonitor tests are registered in `pkg/defaultmonitortests/types.go` with two stability levels: **Stable** (normal operation — runs all monitors including availability checks) and **Disruptive** (tests that intentionally cause outages like upgrades, node drains, etcd recovery, or cert rotation — availability monitors are excluded since measuring uptime during intentional disruption would produce false failures). Implementations live in `pkg/monitortests/` organized by component — examples include etcd log analysis, cluster operator state tracking, node readiness, API server availability, and alert evaluation.\n\n### Disruption tests\n\nDisruption tests are a category of monitor test that measure **endpoint availability** during test runs. They continuously poll services (API servers, ingress, image registry, pod network) and record availability intervals. Allowed disruption baselines in `pkg/monitortestlibrary/allowedbackenddisruption/` define acceptable unavailability thresholds. Key implementations live in `pkg/monitortests/kubeapiserver/`, `pkg/monitortests/network/`, and `pkg/monitortests/imageregistry/`.\n\n### Extensions (OTE — OpenShift Tests Extension)\n\nThe `openshift-tests` binary acts as an **orchestrator** for tests contributed by other components. The [openshift-tests-extension](https://github.com/openshift-eng/openshift-tests-extension) (OTE) framework defines a standardized interface that external binaries implement:\n* **`<binary> info`** — return extension metadata (component, suites, version).\n* **`<binary> list -o jsonl`** — list available tests, filtered by environment (platform, arch, network).\n* **`<binary> run-test -n <name>`** — execute a specific test and return JSONL results.\n\n**Payload extensions** are test binaries shipped inside release payload images. The registry in `pkg/test/extensions/binary.go` maps ~35 payload image tags to their test binary paths. At runtime, `openshift-tests` extracts these binaries, discovers their tests, and runs them alongside built-in tests.\n\n**Non-payload extensions** are discovered from ImageStreamTags in the cluster and require explicit approval via a `TestExtensionAdmission` CRD. The `extension-admission` subcommand manages these approval rules.\n\nOrigin also registers itself as an extension (`openshift:payload:origin`) so its own built-in Ginkgo tests appear in the unified extension registry alongside external tests.\n\n### Build and verify\n\n* **Build:** `make build` or `make openshift-tests` (produces `./openshift-tests`).\n* **Unit tests:** `go test ./pkg/...` (fast, no cluster required).\n* **Lint / verify:** `make verify` (runs `go vet`, jsonformat, generated-file checks, TLS ownership).\n* **Full check:** `make check` (verify + build + tests).\n\nFavor clarity and maintainability over cleverness. Comments should be minimal, helpful, and explain the \"why\" not the \"what\".\n\n## Files matching `**/*_test.go`\n\n<!-- Source: local .apm/instructions/testing.instructions.md -->\n* Use `go vet ./...` and `go test ./pkg/...` to validate changes before committing.\n* E2e tests in `test/extended/<area>/` are **platform-level tests for OpenShift** — they run against a live cluster to validate the product, not just this repo. They use the **Ginkgo** framework and are compiled into the `openshift-tests` binary that CI runs against every payload.\n* `test/extended/include.go` blank-imports every e2e test package — new packages **must** be added there or they won't be compiled into the binary.\n* Unit tests in `pkg/` use standard Go `testing` with **table-driven** patterns.\n* Build the test binary: `make openshift-tests` or `make build`.\n* For unit tests, prefer **table-driven tests** with descriptive case names. Search the same package for existing test patterns before writing new ones.\n\n---\n*This file was generated by APM CLI. Do not edit manually.*\n*To regenerate: `apm compile`*\n","GEMINI.md":"# GEMINI.md\n<!-- Generated by APM CLI -->\n<!-- Build ID: 01de98569d95 -->\n<!-- APM Version: 0.13.0 -->\n\n@./AGENTS.md\n"},"items":[{"name":"AGENTS.md","path":"AGENTS.md","title":"AGENTS.md","content":"# AGENTS.md\n<!-- Generated by APM CLI from distributed .apm/ primitives -->\n<!-- Build ID: 7f3aaf60436f -->\n<!-- APM Version: 0.13.0 -->\n<!-- Source: local -->\n\n## Files matching `**`\n\n<!-- Source: local .apm/instructions/general.instructions.md -->\n### APM context generation\n\nSources under **`.apm/`** (instructions, prompts, `apm.yml`, etc.) drive generated agent context. After editing those files, run **`make apm`** to regenerate **AGENTS.md**, **CLAUDE.md**, **GEMINI.md**, and the integrated copies under **`.claude/`**, **`.cursor/`**, **`.gemini/`**, **`.github/instructions/`**, **`.github/prompts/`**, and **`.opencode/`**.\n\n**Slash / agent commands:** content under **`.apm/prompts/*.prompt.md`** is the single source of truth. **`apm install`** (part of **`make apm`**) copies each prompt into editor command targets (e.g. **`.claude/commands/`**, **`.opencode/commands/`**, **`.gemini/commands/`**). Do not add those generated paths by hand or installs will skip them as unmanaged duplicates.\n\n### Repository overview\n\n**openshift/origin** builds the `openshift-tests` binary — the orchestrator for all OpenShift end-to-end testing. It contains:\n* **Built-in e2e tests** (Ginkgo) that run against a live cluster.\n* **Monitor tests** that observe cluster health in the background during e2e runs.\n* **Disruption tests** (a category of monitor test) that measure endpoint availability.\n* **Extension orchestration** that discovers and runs tests contributed by other components via the OTE framework.\n\n### Key directories\n\n* **`cmd/openshift-tests/`** — main binary entry point with subcommands: `run`, `run-test`, `run-monitor`, `run-upgrade`, `disruption`, `list`, `info`, `extension-admission`, and more.\n* **`pkg/testsuites/`** — test suite definitions that compose built-in and extension tests.\n* **`test/extended/`** — Ginkgo-based e2e test packages organized by area (e.g. `networking/`, `storage/`, `etcd/`).\n* **`test/extended/include.go`** — blank imports that register all e2e test packages. New packages **must** be added here.\n* **`test/e2e/upgrade/`** — upgrade-specific e2e tests.\n* **`pkg/monitortestframework/`** — `MonitorTest` interface and registry.\n* **`pkg/defaultmonitortests/`** — registers default monitor tests for stable and disruptive scenarios.\n* **`pkg/monitortests/`** — individual monitor test implementations organized by component (e.g. `etcd/`, `kubeapiserver/`, `network/`, `node/`).\n* **`pkg/monitortestlibrary/`** — shared monitor utilities (allowed disruption baselines, alert allowlists, platform identification).\n* **`pkg/disruption/`** — disruption measurement framework (HTTP/gRPC sampling, transport hooks, shutdown detection).\n* **`pkg/test/extensions/`** — OTE extension binary extraction, execution, and admission control.\n* **`vendor/`** — vendored dependencies. Run `go mod tidy && go mod vendor` after changing `go.mod` to keep `go.sum` and `vendor/` in sync.\n\n### E2e tests\n\nGinkgo-based tests in `test/extended/<area>/` run against a live OpenShift cluster. Each package is registered via blank import in `test/extended/include.go`. These are the \"built-in\" tests that ship inside the `openshift-tests` binary. Tests are grouped into suites (e.g. `openshift/conformance/parallel`) defined in `pkg/testsuites/`.\n\n### Monitor tests\n\nMonitor tests run **in parallel** with the e2e suite to continuously observe cluster health. They follow a lifecycle:\n1. **`StartCollection()`** — begin watching resources, recording events.\n2. *(e2e tests execute)*\n3. **`CollectData()`** — final data collection pass.\n4. **`ConstructComputedIntervals()`** — analyze raw data into structured intervals.\n5. **`EvaluateTestsFromConstructedIntervals()`** — produce JUnit pass/fail results.\n\nMonitor tests are registered in `pkg/defaultmonitortests/types.go` with two stability levels: **Stable** (normal operation — runs all monitors including availability checks) and **Disruptive** (tests that intentionally cause outages like upgrades, node drains, etcd recovery, or cert rotation — availability monitors are excluded since measuring uptime during intentional disruption would produce false failures). Implementations live in `pkg/monitortests/` organized by component — examples include etcd log analysis, cluster operator state tracking, node readiness, API server availability, and alert evaluation.\n\n### Disruption tests\n\nDisruption tests are a category of monitor test that measure **endpoint availability** during test runs. They continuously poll services (API servers, ingress, image registry, pod network) and record availability intervals. Allowed disruption baselines in `pkg/monitortestlibrary/allowedbackenddisruption/` define acceptable unavailability thresholds. Key implementations live in `pkg/monitortests/kubeapiserver/`, `pkg/monitortests/network/`, and `pkg/monitortests/imageregistry/`.\n\n### Extensions (OTE — OpenShift Tests Extension)\n\nThe `openshift-tests` binary acts as an **orchestrator** for tests contributed by other components. The [openshift-tests-extension](https://github.com/openshift-eng/openshift-tests-extension) (OTE) framework defines a standardized interface that external binaries implement:\n* **`<binary> info`** — return extension metadata (component, suites, version).\n* **`<binary> list -o jsonl`** — list available tests, filtered by environment (platform, arch, network).\n* **`<binary> run-test -n <name>`** — execute a specific test and return JSONL results.\n\n**Payload extensions** are test binaries shipped inside release payload images. The registry in `pkg/test/extensions/binary.go` maps ~35 payload image tags to their test binary paths. At runtime, `openshift-tests` extracts these binaries, discovers their tests, and runs them alongside built-in tests.\n\n**Non-payload extensions** are discovered from ImageStreamTags in the cluster and require explicit approval via a `TestExtensionAdmission` CRD. The `extension-admission` subcommand manages these approval rules.\n\nOrigin also registers itself as an extension (`openshift:payload:origin`) so its own built-in Ginkgo tests appear in the unified extension registry alongside external tests.\n\n### Build and verify\n\n* **Build:** `make build` or `make openshift-tests` (produces `./openshift-tests`).\n* **Unit tests:** `go test ./pkg/...` (fast, no cluster required).\n* **Lint / verify:** `make verify` (runs `go vet`, jsonformat, generated-file checks, TLS ownership).\n* **Full check:** `make check` (verify + build + tests).\n\nFavor clarity and maintainability over cleverness. Comments should be minimal, helpful, and explain the \"why\" not the \"what\".\n\n## Files matching `**/*_test.go`\n\n<!-- Source: local .apm/instructions/testing.instructions.md -->\n* Use `go vet ./...` and `go test ./pkg/...` to validate changes before committing.\n* E2e tests in `test/extended/<area>/` are **platform-level tests for OpenShift** — they run against a live cluster to validate the product, not just this repo. They use the **Ginkgo** framework and are compiled into the `openshift-tests` binary that CI runs against every payload.\n* `test/extended/include.go` blank-imports every e2e test package — new packages **must** be added there or they won't be compiled into the binary.\n* Unit tests in `pkg/` use standard Go `testing` with **table-driven** patterns.\n* Build the test binary: `make openshift-tests` or `make build`.\n* For unit tests, prefer **table-driven tests** with descriptive case names. Search the same package for existing test patterns before writing new ones.\n\n---\n*This file was generated by APM CLI. Do not edit manually.*\n*To regenerate: `apm compile`*\n","category":"root","tokens":1904},{"name":"CLAUDE.md","path":"CLAUDE.md","title":"CLAUDE.md","content":"# CLAUDE.md\n<!-- Generated by APM CLI -->\n<!-- Build ID: 64ef96206f72 -->\n<!-- APM Version: 0.13.0 -->\n\n# Project Standards\n\n## Files matching `**`\n\n<!-- Source: local .apm/instructions/general.instructions.md -->\n### APM context generation\n\nSources under **`.apm/`** (instructions, prompts, `apm.yml`, etc.) drive generated agent context. After editing those files, run **`make apm`** to regenerate **AGENTS.md**, **CLAUDE.md**, **GEMINI.md**, and the integrated copies under **`.claude/`**, **`.cursor/`**, **`.gemini/`**, **`.github/instructions/`**, **`.github/prompts/`**, and **`.opencode/`**.\n\n**Slash / agent commands:** content under **`.apm/prompts/*.prompt.md`** is the single source of truth. **`apm install`** (part of **`make apm`**) copies each prompt into editor command targets (e.g. **`.claude/commands/`**, **`.opencode/commands/`**, **`.gemini/commands/`**). Do not add those generated paths by hand or installs will skip them as unmanaged duplicates.\n\n### Repository overview\n\n**openshift/origin** builds the `openshift-tests` binary — the orchestrator for all OpenShift end-to-end testing. It contains:\n* **Built-in e2e tests** (Ginkgo) that run against a live cluster.\n* **Monitor tests** that observe cluster health in the background during e2e runs.\n* **Disruption tests** (a category of monitor test) that measure endpoint availability.\n* **Extension orchestration** that discovers and runs tests contributed by other components via the OTE framework.\n\n### Key directories\n\n* **`cmd/openshift-tests/`** — main binary entry point with subcommands: `run`, `run-test`, `run-monitor`, `run-upgrade`, `disruption`, `list`, `info`, `extension-admission`, and more.\n* **`pkg/testsuites/`** — test suite definitions that compose built-in and extension tests.\n* **`test/extended/`** — Ginkgo-based e2e test packages organized by area (e.g. `networking/`, `storage/`, `etcd/`).\n* **`test/extended/include.go`** — blank imports that register all e2e test packages. New packages **must** be added here.\n* **`test/e2e/upgrade/`** — upgrade-specific e2e tests.\n* **`pkg/monitortestframework/`** — `MonitorTest` interface and registry.\n* **`pkg/defaultmonitortests/`** — registers default monitor tests for stable and disruptive scenarios.\n* **`pkg/monitortests/`** — individual monitor test implementations organized by component (e.g. `etcd/`, `kubeapiserver/`, `network/`, `node/`).\n* **`pkg/monitortestlibrary/`** — shared monitor utilities (allowed disruption baselines, alert allowlists, platform identification).\n* **`pkg/disruption/`** — disruption measurement framework (HTTP/gRPC sampling, transport hooks, shutdown detection).\n* **`pkg/test/extensions/`** — OTE extension binary extraction, execution, and admission control.\n* **`vendor/`** — vendored dependencies. Run `go mod tidy && go mod vendor` after changing `go.mod` to keep `go.sum` and `vendor/` in sync.\n\n### E2e tests\n\nGinkgo-based tests in `test/extended/<area>/` run against a live OpenShift cluster. Each package is registered via blank import in `test/extended/include.go`. These are the \"built-in\" tests that ship inside the `openshift-tests` binary. Tests are grouped into suites (e.g. `openshift/conformance/parallel`) defined in `pkg/testsuites/`.\n\n### Monitor tests\n\nMonitor tests run **in parallel** with the e2e suite to continuously observe cluster health. They follow a lifecycle:\n1. **`StartCollection()`** — begin watching resources, recording events.\n2. *(e2e tests execute)*\n3. **`CollectData()`** — final data collection pass.\n4. **`ConstructComputedIntervals()`** — analyze raw data into structured intervals.\n5. **`EvaluateTestsFromConstructedIntervals()`** — produce JUnit pass/fail results.\n\nMonitor tests are registered in `pkg/defaultmonitortests/types.go` with two stability levels: **Stable** (normal operation — runs all monitors including availability checks) and **Disruptive** (tests that intentionally cause outages like upgrades, node drains, etcd recovery, or cert rotation — availability monitors are excluded since measuring uptime during intentional disruption would produce false failures). Implementations live in `pkg/monitortests/` organized by component — examples include etcd log analysis, cluster operator state tracking, node readiness, API server availability, and alert evaluation.\n\n### Disruption tests\n\nDisruption tests are a category of monitor test that measure **endpoint availability** during test runs. They continuously poll services (API servers, ingress, image registry, pod network) and record availability intervals. Allowed disruption baselines in `pkg/monitortestlibrary/allowedbackenddisruption/` define acceptable unavailability thresholds. Key implementations live in `pkg/monitortests/kubeapiserver/`, `pkg/monitortests/network/`, and `pkg/monitortests/imageregistry/`.\n\n### Extensions (OTE — OpenShift Tests Extension)\n\nThe `openshift-tests` binary acts as an **orchestrator** for tests contributed by other components. The [openshift-tests-extension](https://github.com/openshift-eng/openshift-tests-extension) (OTE) framework defines a standardized interface that external binaries implement:\n* **`<binary> info`** — return extension metadata (component, suites, version).\n* **`<binary> list -o jsonl`** — list available tests, filtered by environment (platform, arch, network).\n* **`<binary> run-test -n <name>`** — execute a specific test and return JSONL results.\n\n**Payload extensions** are test binaries shipped inside release payload images. The registry in `pkg/test/extensions/binary.go` maps ~35 payload image tags to their test binary paths. At runtime, `openshift-tests` extracts these binaries, discovers their tests, and runs them alongside built-in tests.\n\n**Non-payload extensions** are discovered from ImageStreamTags in the cluster and require explicit approval via a `TestExtensionAdmission` CRD. The `extension-admission` subcommand manages these approval rules.\n\nOrigin also registers itself as an extension (`openshift:payload:origin`) so its own built-in Ginkgo tests appear in the unified extension registry alongside external tests.\n\n### Build and verify\n\n* **Build:** `make build` or `make openshift-tests` (produces `./openshift-tests`).\n* **Unit tests:** `go test ./pkg/...` (fast, no cluster required).\n* **Lint / verify:** `make verify` (runs `go vet`, jsonformat, generated-file checks, TLS ownership).\n* **Full check:** `make check` (verify + build + tests).\n\nFavor clarity and maintainability over cleverness. Comments should be minimal, helpful, and explain the \"why\" not the \"what\".\n\n## Files matching `**/*_test.go`\n\n<!-- Source: local .apm/instructions/testing.instructions.md -->\n* Use `go vet ./...` and `go test ./pkg/...` to validate changes before committing.\n* E2e tests in `test/extended/<area>/` are **platform-level tests for OpenShift** — they run against a live cluster to validate the product, not just this repo. They use the **Ginkgo** framework and are compiled into the `openshift-tests` binary that CI runs against every payload.\n* `test/extended/include.go` blank-imports every e2e test package — new packages **must** be added there or they won't be compiled into the binary.\n* Unit tests in `pkg/` use standard Go `testing` with **table-driven** patterns.\n* Build the test binary: `make openshift-tests` or `make build`.\n* For unit tests, prefer **table-driven tests** with descriptive case names. Search the same package for existing test patterns before writing new ones.\n\n---\n*This file was generated by APM CLI. Do not edit manually.*\n*To regenerate: `apm compile`*\n","category":"root","tokens":1895},{"name":"GEMINI.md","path":"GEMINI.md","title":"GEMINI.md","content":"# GEMINI.md\n<!-- Generated by APM CLI -->\n<!-- Build ID: 01de98569d95 -->\n<!-- APM Version: 0.13.0 -->\n\n@./AGENTS.md\n","category":"root","tokens":30}]}