diff --git a/.githooks/pre-commit b/.githooks/pre-commit index e6ad1d9e..672c0973 100755 --- a/.githooks/pre-commit +++ b/.githooks/pre-commit @@ -1,4 +1,9 @@ #!/usr/bin/env bash + +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + # # Pre-commit guards (see CONTRIBUTING.md): # 1. Vendor-neutral naming — no OCI/Oracle tokens in core-identity files. diff --git a/.githooks/pre-push b/.githooks/pre-push index 64f31fd0..ea80a410 100755 --- a/.githooks/pre-push +++ b/.githooks/pre-push @@ -1,4 +1,9 @@ #!/usr/bin/env bash + +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + # # Local CI gate — runs the CI-equivalent checks before a push is allowed. # Installed via: make install-hooks (core.hooksPath=.githooks) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index aac78c9c..a41633f7 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -18,6 +18,7 @@ ### Quality - [ ] Every human-authored commit includes a matching DCO `Signed-off-by:` trailer (`git commit --signoff`). +- [ ] `make reuse-lint` passes (SPDX headers and licensing metadata are complete). - [ ] `make build` and `make test` pass locally. - [ ] `make lint` clean (gofmt + go vet). - [ ] `make manifests generate` produces **no drift** (generated code committed). diff --git a/.github/actions/setup-syft/action.yml b/.github/actions/setup-syft/action.yml index 3674fadb..5d24785e 100644 --- a/.github/actions/setup-syft/action.yml +++ b/.github/actions/setup-syft/action.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + name: Set up Syft description: Install a pinned Syft binary with upstream checksum verification. diff --git a/.github/dependabot.yml b/.github/dependabot.yml index baabbded..ba2d30a2 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + version: 2 updates: # Go module dependencies. diff --git a/.github/workflows/c2-reconciler-canary.yml b/.github/workflows/c2-reconciler-canary.yml index d4e69bb5..cf04d921 100644 --- a/.github/workflows/c2-reconciler-canary.yml +++ b/.github/workflows/c2-reconciler-canary.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + # On-demand / scheduled CPU canary for the C2 CacheBackend reconciler. # # Runs docs/reference-stack/scripts/canary_c2_reconcile.sh: brings up a kind diff --git a/.github/workflows/c6-engine-wiring-canary.yml b/.github/workflows/c6-engine-wiring-canary.yml index f79579cb..1d8fb00a 100644 --- a/.github/workflows/c6-engine-wiring-canary.yml +++ b/.github/workflows/c6-engine-wiring-canary.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + # On-demand / scheduled CPU canary for the C6 vLLM+LMCache engine-pod # wiring webhook + cross-pod cache reuse. # diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c00f37a1..1c9c3007 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + name: CI on: @@ -100,6 +104,9 @@ jobs: - name: Test DCO gate run: make test-dco + - name: Verify REUSE compliance + run: make reuse-lint + - name: Install protoc env: PROTOC_VERSION: 34.1 diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index e0b4e6ec..7e5fcbef 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + name: CodeQL # GitHub-native static analysis for Go. Runs on every PR + push to main, plus a diff --git a/.github/workflows/codex-review.yml b/.github/workflows/codex-review.yml index 87ae798e..5150314b 100644 --- a/.github/workflows/codex-review.yml +++ b/.github/workflows/codex-review.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + name: Codex Review # Automated code review on pull requests using OpenAI Codex. diff --git a/.github/workflows/cpu-substrate-canary.yml b/.github/workflows/cpu-substrate-canary.yml index bf9df804..1c036a3b 100644 --- a/.github/workflows/cpu-substrate-canary.yml +++ b/.github/workflows/cpu-substrate-canary.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + # On-demand / scheduled full-chain CPU canary for the cache substrate. # # Runs docs/reference-stack/scripts/canary_e2e.sh: brings up a CPU vLLM engine + diff --git a/.github/workflows/default-install-smoke.yml b/.github/workflows/default-install-smoke.yml index 0934832e..8fbe8570 100644 --- a/.github/workflows/default-install-smoke.yml +++ b/.github/workflows/default-install-smoke.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + # Per-PR install smoke for `kubectl apply -k config/default`. # # Runs docs/reference-stack/scripts/default_install_smoke.sh: builds controller diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 868283a5..0ec639ac 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + # Build the documentation site (site/) and publish it to GitHub Pages. # Free for public repositories. No Node/npm toolchain is required — the CSS # pipeline uses Hugo Extended's built-in SCSS support (see site/layouts/partials/head-css.html). diff --git a/.github/workflows/release-sbom.yml b/.github/workflows/release-sbom.yml index abef73d6..88e282d6 100644 --- a/.github/workflows/release-sbom.yml +++ b/.github/workflows/release-sbom.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + name: Release Supply Chain on: diff --git a/.github/workflows/static.yml b/.github/workflows/static.yml index 460f7820..7eda8552 100644 --- a/.github/workflows/static.yml +++ b/.github/workflows/static.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + # Simple workflow for deploying static content to GitHub Pages name: Deploy static content to Pages diff --git a/.gitignore b/.gitignore index 0dced718..3c1199f0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + # If you prefer the allow list template instead of the deny list, see community template: # https://github.com/github/gitignore/blob/main/community/Golang/Go.AllowList.gitignore # diff --git a/.golangci.yml b/.golangci.yml index 797e0c85..8c4412f8 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + version: "2" run: tests: true diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index f4ed4e21..46965b7f 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -19,6 +19,7 @@ Run the baseline checks before sending a PR: make proto-gen make proto-lint make verify-dco test-dco +make reuse-lint make lint make python-lint make test-race @@ -167,11 +168,32 @@ human commits in a bot-opened pull request are still checked. The local gate has no trusted GitHub identity metadata, so it checks every commit. Run it with `make verify-dco` (and its self-contained test suite with `make test-dco`). +## Licensing metadata + +The repository follows the [REUSE Specification](https://reuse.software/spec/). +Authored source and configuration files carry SPDX comment headers. Generated +artifacts, documentation, and non-commentable fixtures are covered by narrow +entries in `REUSE.toml`; canonical license text lives under `LICENSES/`. + +Run the pinned compliance tool locally with: + +```bash +make reuse-lint +``` + +The target installs REUSE in an isolated virtual environment under the ignored +`bin/` directory. New authored source files should include: + +```text +SPDX-FileCopyrightText: 2026 The inference-cache Authors +SPDX-License-Identifier: Apache-2.0 +``` + ## Before pushing / opening a PR Run `make install-hooks` once per clone. Thereafter: -- **On every push**, the `pre-push` hook runs `make ci` (naming + internal-refs + DCO sign-off + format + vet + Go/Python lint + Prometheus rules + golden vectors + race tests + build) and blocks the push if anything fails. Reproduce it anytime with `make ci`. CI also runs heavier gates that are not part of the local push hook, including the Rust/network-backed `make tokenize-cgo-test` job for the optional `smgcgo` tokenizer build tag. +- **On every push**, the `pre-push` hook runs `make ci` (naming + internal-refs + DCO/REUSE compliance + format + vet + Go/Python lint + Prometheus rules + golden vectors + race tests + build) and blocks the push if anything fails. Reproduce it anytime with `make ci`. CI also runs heavier gates that are not part of the local push hook, including the Rust/network-backed `make tokenize-cgo-test` job for the optional `smgcgo` tokenizer build tag. - **Before opening a PR**, run `make pre-pr` — it runs `make ci`, then a generated-code drift check, then `make verify-samples` (server-side dry-run of every YAML under `config/samples/` against an envtest apiserver + the CacheBackend admission webhook), then prints the review checklist. Review the diff against the tech spec before submitting. Emergency override for the push gate: `git push --no-verify` (discouraged). diff --git a/LICENSES/Apache-2.0.txt b/LICENSES/Apache-2.0.txt new file mode 100644 index 00000000..137069b8 --- /dev/null +++ b/LICENSES/Apache-2.0.txt @@ -0,0 +1,73 @@ +Apache License +Version 2.0, January 2004 +http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + +"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. + +"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. + +"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. + +"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. + +"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. + +"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. + +"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). + +"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. + +"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." + +"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: + + (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. + + You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work. + +To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. + +Copyright [yyyy] [name of copyright owner] + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/Makefile b/Makefile index 8d20be94..6c82f339 100644 --- a/Makefile +++ b/Makefile @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + PROJECT_DIR := $(shell dirname $(abspath $(lastword $(MAKEFILE_LIST)))) MAKEFILE_SELF := $(abspath $(lastword $(MAKEFILE_LIST))) LOCALBIN ?= $(PROJECT_DIR)/bin @@ -52,6 +56,7 @@ GOVULNCHECK_VERSION ?= v1.3.0 PROMTOOL_VERSION ?= 3.0.1 KUSTOMIZE_VERSION ?= v5.7.0 RUFF_VERSION ?= 0.16.1 +REUSE_VERSION ?= 5.1.1 # SHA256 checksums of the upstream Prometheus release tarballs we extract # `promtool` from. Sourced from # https://github.com/prometheus/prometheus/releases/download/v$(PROMTOOL_VERSION)/sha256sums.txt @@ -75,6 +80,8 @@ LOCAL_KUSTOMIZE := $(LOCALBIN)/kustomize GOVULNCHECK := $(LOCALBIN)/govulncheck RUFF_VENV := $(LOCALBIN)/ruff-venv RUFF := $(RUFF_VENV)/bin/ruff +REUSE_VENV := $(LOCALBIN)/reuse-venv +REUSE := $(REUSE_VENV)/bin/reuse BUF ?= $(shell command -v buf 2>/dev/null || echo $(LOCAL_BUF)) # PROMTOOL is resolved AT RECIPE TIME, not parse time — so the version # check in the `promtool` target above can replace a stale local binary @@ -117,6 +124,14 @@ ruff: $(LOCALBIN) ## Install Ruff in an isolated local virtual environment. $(RUFF_VENV)/bin/python -m pip install --disable-pip-version-check --quiet "ruff==$(RUFF_VERSION)"; \ fi +.PHONY: reuse +reuse: $(LOCALBIN) ## Install the REUSE compliance tool in an isolated local virtual environment. + @if ! { [ -x $(REUSE) ] && $(REUSE) --version 2>/dev/null | grep -qF "$(REUSE_VERSION)"; }; then \ + rm -rf $(REUSE_VENV); \ + $(PYTHON) -m venv $(REUSE_VENV); \ + $(REUSE_VENV)/bin/python -m pip install --disable-pip-version-check --quiet "reuse==$(REUSE_VERSION)"; \ + fi + .PHONY: protoc-gen-go protoc-gen-go: $(LOCALBIN) ## Install protobuf Go generators locally. @test -s $(PROTOC_GEN_GO) || GOBIN=$(LOCALBIN) $(GO_CMD) install google.golang.org/protobuf/cmd/protoc-gen-go@$(PROTOC_GEN_GO_VERSION) @@ -225,6 +240,10 @@ ci-lint: golangci-lint ## Run golangci-lint. python-lint: ruff ## Lint the reference-stack Python scripts with Ruff. $(RUFF) check docs/reference-stack/scripts +.PHONY: reuse-lint +reuse-lint: reuse ## Verify REUSE specification compliance and SPDX licensing metadata. + $(REUSE) lint + .PHONY: tidy tidy: ## Tidy Go modules. $(GO_CMD) mod tidy @@ -600,7 +619,7 @@ verify-prometheus: promtool kustomize ## Lint + unit-test the Prometheus alertin @echo "✓ Prometheus rules valid" .PHONY: ci -ci: verify-naming verify-no-internal-refs verify-dco test-dco verify-syft-pin verify-minimal-base test-minimal-images fmt-check vet ci-lint python-lint verify-prometheus verify-golden-vectors test-docs-sync test-race build ## Local CI gate (naming + internal-refs + DCO + Syft/minimal-image policy + Go/Python lint + Prometheus rules + golden vectors + docs-sync tests + race tests + build). Run by the pre-push hook. +ci: verify-naming verify-no-internal-refs verify-dco test-dco reuse-lint verify-syft-pin verify-minimal-base test-minimal-images fmt-check vet ci-lint python-lint verify-prometheus verify-golden-vectors test-docs-sync test-race build ## Local CI gate (naming + internal-refs + DCO/REUSE compliance + Syft/minimal-image policy + Go/Python lint + Prometheus rules + golden vectors + docs-sync tests + race tests + build). Run by the pre-push hook. .PHONY: pre-pr pre-pr: ci ## Pre-PR gate: CI gate + generated-code drift check + sample admission check + review checklist. diff --git a/PROJECT b/PROJECT index 99162a66..e2ede5d0 100644 --- a/PROJECT +++ b/PROJECT @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + domain: inferencecache.io layout: - go.kubebuilder.io/v4 diff --git a/REUSE.toml b/REUSE.toml new file mode 100644 index 00000000..f78436f2 --- /dev/null +++ b/REUSE.toml @@ -0,0 +1,36 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# SPDX-License-Identifier: Apache-2.0 + +version = 1 + +# Documentation and fixture formats either cannot carry comments or have +# parser-sensitive front matter. Keep their licensing explicit without +# changing the human-facing content or test payloads. +[[annotations]] +path = [ + "**/*.json", + "**/*.lock", + "**/*.md", + "**/*.sum", + "**/*.table", + "**/*.xml", + "LICENSE", + "pkg/adapters/engine/testdata/*.txt", + "pkg/cli/doctor/output/testdata/*.txt", +] +precedence = "override" +SPDX-FileCopyrightText = "2026 The inference-cache Authors" +SPDX-License-Identifier = "Apache-2.0" + +# These files are regenerated from authored API/protobuf inputs. Headers in +# the generated output would be overwritten, so license them through metadata. +[[annotations]] +path = [ + "config/crd/bases/*.yaml", + "config/rbac/role.yaml", + "config/webhook/manifests.yaml", + "pkg/server/proto/**/*.pb.go", +] +precedence = "override" +SPDX-FileCopyrightText = "2026 The inference-cache Authors" +SPDX-License-Identifier = "Apache-2.0" diff --git a/api/v1alpha1/cachebackend_effective.go b/api/v1alpha1/cachebackend_effective.go index 525be419..bb92ed7e 100644 --- a/api/v1alpha1/cachebackend_effective.go +++ b/api/v1alpha1/cachebackend_effective.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package v1alpha1 import metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" diff --git a/api/v1alpha1/cachebackend_effective_test.go b/api/v1alpha1/cachebackend_effective_test.go index 05433287..311e3cf4 100644 --- a/api/v1alpha1/cachebackend_effective_test.go +++ b/api/v1alpha1/cachebackend_effective_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package v1alpha1 import "testing" diff --git a/api/v1alpha1/cachebackend_types.go b/api/v1alpha1/cachebackend_types.go index 24d0ee96..6089a94a 100644 --- a/api/v1alpha1/cachebackend_types.go +++ b/api/v1alpha1/cachebackend_types.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package v1alpha1 import ( diff --git a/api/v1alpha1/cachebackend_types_test.go b/api/v1alpha1/cachebackend_types_test.go index 9b7650c7..4cd989a3 100644 --- a/api/v1alpha1/cachebackend_types_test.go +++ b/api/v1alpha1/cachebackend_types_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package v1alpha1 import ( diff --git a/api/v1alpha1/cacheindex_types.go b/api/v1alpha1/cacheindex_types.go index fb23cb0b..719555c9 100644 --- a/api/v1alpha1/cacheindex_types.go +++ b/api/v1alpha1/cacheindex_types.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package v1alpha1 import ( diff --git a/api/v1alpha1/cachepolicy_types.go b/api/v1alpha1/cachepolicy_types.go index 1515207e..dbdba0a0 100644 --- a/api/v1alpha1/cachepolicy_types.go +++ b/api/v1alpha1/cachepolicy_types.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package v1alpha1 import ( diff --git a/api/v1alpha1/cachetenant_types.go b/api/v1alpha1/cachetenant_types.go index 124c57a1..34786f26 100644 --- a/api/v1alpha1/cachetenant_types.go +++ b/api/v1alpha1/cachetenant_types.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package v1alpha1 import ( diff --git a/api/v1alpha1/groupversion_info.go b/api/v1alpha1/groupversion_info.go index 8e8ef082..54ff039a 100644 --- a/api/v1alpha1/groupversion_info.go +++ b/api/v1alpha1/groupversion_info.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + // Package v1alpha1 contains API Schema definitions for the inferencecache v1alpha1 API group. // // +kubebuilder:object:generate=true diff --git a/api/v1alpha1/pdtopology_types.go b/api/v1alpha1/pdtopology_types.go index bc8c00cc..042d7aa4 100644 --- a/api/v1alpha1/pdtopology_types.go +++ b/api/v1alpha1/pdtopology_types.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package v1alpha1 import ( diff --git a/api/v1alpha1/prompttemplate_types.go b/api/v1alpha1/prompttemplate_types.go index 12f6456b..bbf52af4 100644 --- a/api/v1alpha1/prompttemplate_types.go +++ b/api/v1alpha1/prompttemplate_types.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package v1alpha1 import ( diff --git a/api/v1alpha1/remaining_crds_types_test.go b/api/v1alpha1/remaining_crds_types_test.go index 2758acff..fc8ae385 100644 --- a/api/v1alpha1/remaining_crds_types_test.go +++ b/api/v1alpha1/remaining_crds_types_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package v1alpha1 import ( diff --git a/api/v1alpha1/zz_generated.deepcopy.go b/api/v1alpha1/zz_generated.deepcopy.go index 38c5c3c2..b7278cfc 100644 --- a/api/v1alpha1/zz_generated.deepcopy.go +++ b/api/v1alpha1/zz_generated.deepcopy.go @@ -1,19 +1,9 @@ //go:build !ignore_autogenerated /* -Copyright 2026. +SPDX-FileCopyrightText: 2026 The inference-cache Authors -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. +SPDX-License-Identifier: Apache-2.0 */ // Code generated by controller-gen. DO NOT EDIT. diff --git a/buf.yaml b/buf.yaml index 37f1cfe5..2affdba1 100644 --- a/buf.yaml +++ b/buf.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + # buf lint configuration for the InferenceCache gRPC contract. # # Code generation uses protoc (see `make proto-gen`); buf is used for LINTING diff --git a/cmd/controller/main.go b/cmd/controller/main.go index 3c82ebf1..542d341a 100644 --- a/cmd/controller/main.go +++ b/cmd/controller/main.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package main import ( diff --git a/cmd/inferencecache/doctor.go b/cmd/inferencecache/doctor.go index f6ff7ff1..1bd775c2 100644 --- a/cmd/inferencecache/doctor.go +++ b/cmd/inferencecache/doctor.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package main import ( diff --git a/cmd/inferencecache/doctor_args_test.go b/cmd/inferencecache/doctor_args_test.go index 5f7ce1a5..aef83e45 100644 --- a/cmd/inferencecache/doctor_args_test.go +++ b/cmd/inferencecache/doctor_args_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package main import ( diff --git a/cmd/inferencecache/doctor_integration_test.go b/cmd/inferencecache/doctor_integration_test.go index 034504b6..0a065a23 100644 --- a/cmd/inferencecache/doctor_integration_test.go +++ b/cmd/inferencecache/doctor_integration_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package main import ( diff --git a/cmd/inferencecache/doctor_unit_test.go b/cmd/inferencecache/doctor_unit_test.go index a60f050f..0c961bc2 100644 --- a/cmd/inferencecache/doctor_unit_test.go +++ b/cmd/inferencecache/doctor_unit_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package main import ( diff --git a/cmd/inferencecache/main.go b/cmd/inferencecache/main.go index cd4f1b8b..26592b03 100644 --- a/cmd/inferencecache/main.go +++ b/cmd/inferencecache/main.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + // Command inferencecache is the operator-facing CLI for the inference-cache // control plane. Today it ships a single subcommand, `doctor`, an early // carve-out of the full CLI plugin: a read-only pre-flight diagnostic that diff --git a/cmd/kvevent-fake-engine/e2e_test.go b/cmd/kvevent-fake-engine/e2e_test.go index 2437044c..2236db25 100644 --- a/cmd/kvevent-fake-engine/e2e_test.go +++ b/cmd/kvevent-fake-engine/e2e_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package main // GPU-free, per-PR end-to-end gate for the content-fingerprint routing path: diff --git a/cmd/kvevent-fake-engine/main.go b/cmd/kvevent-fake-engine/main.go index 04e8d737..05f5dd17 100644 --- a/cmd/kvevent-fake-engine/main.go +++ b/cmd/kvevent-fake-engine/main.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + // Command kvevent-fake-engine is a TEST-ONLY stand-in for a vLLM engine's KV-event // ZMQ publisher, used by the fingerprint-routing e2e in this package (and runnable // standalone against a live install). It binds a ZMQ PUB socket and repeatedly diff --git a/cmd/kvevent-fake-engine/main_test.go b/cmd/kvevent-fake-engine/main_test.go index 59cdf793..9283ab67 100644 --- a/cmd/kvevent-fake-engine/main_test.go +++ b/cmd/kvevent-fake-engine/main_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package main import ( diff --git a/cmd/kvevent-subscriber/main.go b/cmd/kvevent-subscriber/main.go index 3e1f211b..4bbbd595 100644 --- a/cmd/kvevent-subscriber/main.go +++ b/cmd/kvevent-subscriber/main.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + // Command kvevent-subscriber runs as a sidecar next to a vLLM engine replica: // it subscribes to the engine's KV-cache events over ZMQ and reports cache state // to the inferencecache-server over gRPC. Metadata only — never tokens or prompt diff --git a/cmd/server/main.go b/cmd/server/main.go index f32aeed2..c0b3dcd1 100644 --- a/cmd/server/main.go +++ b/cmd/server/main.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package main import ( diff --git a/cmd/server/main_test.go b/cmd/server/main_test.go index ed945095..f59dac04 100644 --- a/cmd/server/main_test.go +++ b/cmd/server/main_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package main import ( diff --git a/codecov.yml b/codecov.yml index 48c39e16..f31c2aa0 100644 --- a/codecov.yml +++ b/codecov.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + coverage: status: project: diff --git a/config/certmanager/certificate.yaml b/config/certmanager/certificate.yaml index cef3633c..78aec777 100644 --- a/config/certmanager/certificate.yaml +++ b/config/certmanager/certificate.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + # Self-signed Issuer used to mint the webhook serving certificate. Using a # self-signed Issuer keeps the install dependency minimal — cert-manager # itself is required, but no external CA — and matches the kubebuilder-default diff --git a/config/certmanager/kustomization.yaml b/config/certmanager/kustomization.yaml index 2cebb8f6..07c70b0d 100644 --- a/config/certmanager/kustomization.yaml +++ b/config/certmanager/kustomization.yaml @@ -1,2 +1,6 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + resources: - certificate.yaml diff --git a/config/crd/kustomization.yaml b/config/crd/kustomization.yaml index 4c3a865a..c4b60514 100644 --- a/config/crd/kustomization.yaml +++ b/config/crd/kustomization.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + resources: - bases/inferencecache.io_cachebackends.yaml - bases/inferencecache.io_cacheindices.yaml diff --git a/config/default/kustomization.yaml b/config/default/kustomization.yaml index ee93a19f..d57321ae 100644 --- a/config/default/kustomization.yaml +++ b/config/default/kustomization.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + namespace: inference-cache-system resources: diff --git a/config/default/manager_webhook_patch.yaml b/config/default/manager_webhook_patch.yaml index 3e225570..ee164b08 100644 --- a/config/default/manager_webhook_patch.yaml +++ b/config/default/manager_webhook_patch.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + # Patch the controller Deployment to expose the webhook serving port and # mount the cert-manager-issued serving certificate at the path # controller-runtime's webhook server reads by default diff --git a/config/default/namespace.yaml b/config/default/namespace.yaml index 33dbe7b2..cf972df1 100644 --- a/config/default/namespace.yaml +++ b/config/default/namespace.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + apiVersion: v1 kind: Namespace metadata: diff --git a/config/default/webhookcainjection_patch.yaml b/config/default/webhookcainjection_patch.yaml index 429bba76..e519e194 100644 --- a/config/default/webhookcainjection_patch.yaml +++ b/config/default/webhookcainjection_patch.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + # Annotate the generated webhook configurations so cert-manager injects the # CA bundle from the serving Certificate's Secret into clientConfig.caBundle. # The CERTIFICATE_NAMESPACE/CERTIFICATE_NAME placeholders are rewritten by diff --git a/config/manager/kustomization.yaml b/config/manager/kustomization.yaml index 5c5f0b84..8878b2e0 100644 --- a/config/manager/kustomization.yaml +++ b/config/manager/kustomization.yaml @@ -1,2 +1,6 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + resources: - manager.yaml diff --git a/config/manager/manager.yaml b/config/manager/manager.yaml index 1b46f231..6ea18663 100644 --- a/config/manager/manager.yaml +++ b/config/manager/manager.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + apiVersion: apps/v1 kind: Deployment metadata: diff --git a/config/observability/alerting-rules.yaml b/config/observability/alerting-rules.yaml index c12f8c51..ff7825bc 100644 --- a/config/observability/alerting-rules.yaml +++ b/config/observability/alerting-rules.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + # Prometheus alerting rules for inference-cache. # # Flat-format rules file (Prometheus `rule_files:` reference, ConfigMap mount, diff --git a/config/observability/kustomization.yaml b/config/observability/kustomization.yaml index 591d164e..16e5deec 100644 --- a/config/observability/kustomization.yaml +++ b/config/observability/kustomization.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + # Optional observability overlay — applies BOTH scrape configs (a # `ServiceMonitor` for the inference-cache-server and a `PodMonitor` # for the inference-cache-controller) AND the alerting rules (a diff --git a/config/observability/podmonitor.yaml b/config/observability/podmonitor.yaml index 8a9ab014..42d5eb12 100644 --- a/config/observability/podmonitor.yaml +++ b/config/observability/podmonitor.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + # PodMonitor for `inference-cache-controller-manager`. Without this, a # prometheus-operator install scrapes ONLY the server-binary metrics # (covered by servicemonitor.yaml) and silently misses every diff --git a/config/observability/prometheus-rules-tests.yaml b/config/observability/prometheus-rules-tests.yaml index 3af6dff6..a7134d0f 100644 --- a/config/observability/prometheus-rules-tests.yaml +++ b/config/observability/prometheus-rules-tests.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + # Unit tests for the alerting rules in alerting-rules.yaml. Each Stage 1 # alert has both a "should fire" and a "should not fire" case; together they # pin the threshold and confirm the alert is not spuriously firing on healthy diff --git a/config/observability/prometheus-rules.yaml b/config/observability/prometheus-rules.yaml index 5f768f4b..a28ddca9 100644 --- a/config/observability/prometheus-rules.yaml +++ b/config/observability/prometheus-rules.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + # PrometheusRule for inference-cache, for prometheus-operator / kube-prometheus # installs. The `spec.groups` body is a verbatim copy of alerting-rules.yaml in # this directory — both files MUST stay in sync. The flat file is what gets diff --git a/config/observability/servicemonitor.yaml b/config/observability/servicemonitor.yaml index 133584b3..1ed047fd 100644 --- a/config/observability/servicemonitor.yaml +++ b/config/observability/servicemonitor.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + # ServiceMonitor for `inference-cache-server`. Without this, a # prometheus-operator install will not scrape /metrics on the server's # `http:8080` port — kube-prometheus + most hardened installs ignore the diff --git a/config/overlays/server-tls/kustomization.yaml b/config/overlays/server-tls/kustomization.yaml index a5fd721a..8f06212d 100644 --- a/config/overlays/server-tls/kustomization.yaml +++ b/config/overlays/server-tls/kustomization.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + # Example overlay: the default install WITH opt-in gRPC Service TLS on :9090. # # config/default serves the policy gRPC port plaintext (the in-cluster diff --git a/config/rbac/cachebackend_editor_role.yaml b/config/rbac/cachebackend_editor_role.yaml index 7820c863..8795867a 100644 --- a/config/rbac/cachebackend_editor_role.yaml +++ b/config/rbac/cachebackend_editor_role.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: diff --git a/config/rbac/cachebackend_viewer_role.yaml b/config/rbac/cachebackend_viewer_role.yaml index 74b55742..fe7ec66c 100644 --- a/config/rbac/cachebackend_viewer_role.yaml +++ b/config/rbac/cachebackend_viewer_role.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: diff --git a/config/rbac/cacheindex_editor_role.yaml b/config/rbac/cacheindex_editor_role.yaml index fac7d84e..6fede0f9 100644 --- a/config/rbac/cacheindex_editor_role.yaml +++ b/config/rbac/cacheindex_editor_role.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: diff --git a/config/rbac/cacheindex_viewer_role.yaml b/config/rbac/cacheindex_viewer_role.yaml index aa688df6..2a414c15 100644 --- a/config/rbac/cacheindex_viewer_role.yaml +++ b/config/rbac/cacheindex_viewer_role.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: diff --git a/config/rbac/cachepolicy_editor_role.yaml b/config/rbac/cachepolicy_editor_role.yaml index 2f22e4f9..1da3810e 100644 --- a/config/rbac/cachepolicy_editor_role.yaml +++ b/config/rbac/cachepolicy_editor_role.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: diff --git a/config/rbac/cachepolicy_viewer_role.yaml b/config/rbac/cachepolicy_viewer_role.yaml index c729665b..4dc27553 100644 --- a/config/rbac/cachepolicy_viewer_role.yaml +++ b/config/rbac/cachepolicy_viewer_role.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: diff --git a/config/rbac/cachetenant_editor_role.yaml b/config/rbac/cachetenant_editor_role.yaml index b9b2b445..73122676 100644 --- a/config/rbac/cachetenant_editor_role.yaml +++ b/config/rbac/cachetenant_editor_role.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: diff --git a/config/rbac/cachetenant_viewer_role.yaml b/config/rbac/cachetenant_viewer_role.yaml index 02b730db..5a210d6b 100644 --- a/config/rbac/cachetenant_viewer_role.yaml +++ b/config/rbac/cachetenant_viewer_role.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: diff --git a/config/rbac/kustomization.yaml b/config/rbac/kustomization.yaml index f67525ed..0ef11a42 100644 --- a/config/rbac/kustomization.yaml +++ b/config/rbac/kustomization.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + resources: - service_account.yaml - role.yaml diff --git a/config/rbac/leader_election_role.yaml b/config/rbac/leader_election_role.yaml index 8b04ff4f..99c92100 100644 --- a/config/rbac/leader_election_role.yaml +++ b/config/rbac/leader_election_role.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: diff --git a/config/rbac/leader_election_role_binding.yaml b/config/rbac/leader_election_role_binding.yaml index c13ef66f..62cfedc3 100644 --- a/config/rbac/leader_election_role_binding.yaml +++ b/config/rbac/leader_election_role_binding.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: diff --git a/config/rbac/pdtopology_editor_role.yaml b/config/rbac/pdtopology_editor_role.yaml index 599ef0f3..152bd6bb 100644 --- a/config/rbac/pdtopology_editor_role.yaml +++ b/config/rbac/pdtopology_editor_role.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: diff --git a/config/rbac/pdtopology_viewer_role.yaml b/config/rbac/pdtopology_viewer_role.yaml index ef995069..153fb4c5 100644 --- a/config/rbac/pdtopology_viewer_role.yaml +++ b/config/rbac/pdtopology_viewer_role.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: diff --git a/config/rbac/prompttemplate_editor_role.yaml b/config/rbac/prompttemplate_editor_role.yaml index d1f5f06b..e2d55b8e 100644 --- a/config/rbac/prompttemplate_editor_role.yaml +++ b/config/rbac/prompttemplate_editor_role.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: diff --git a/config/rbac/prompttemplate_viewer_role.yaml b/config/rbac/prompttemplate_viewer_role.yaml index 0d80a801..27a41f5b 100644 --- a/config/rbac/prompttemplate_viewer_role.yaml +++ b/config/rbac/prompttemplate_viewer_role.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: diff --git a/config/rbac/role_binding.yaml b/config/rbac/role_binding.yaml index 5b2c399d..fe903f1e 100644 --- a/config/rbac/role_binding.yaml +++ b/config/rbac/role_binding.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: diff --git a/config/rbac/service_account.yaml b/config/rbac/service_account.yaml index a995c0a3..f379d981 100644 --- a/config/rbac/service_account.yaml +++ b/config/rbac/service_account.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + apiVersion: v1 kind: ServiceAccount metadata: diff --git a/config/samples/_test/cachebackend-invalid-scale-to-zero-no-min.yaml b/config/samples/_test/cachebackend-invalid-scale-to-zero-no-min.yaml index 9ee887c0..60a0d9fe 100644 --- a/config/samples/_test/cachebackend-invalid-scale-to-zero-no-min.yaml +++ b/config/samples/_test/cachebackend-invalid-scale-to-zero-no-min.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + # verify-samples: skip # # INTENTIONALLY INVALID fixture — NOT a shippable sample. diff --git a/config/samples/cache_v1alpha1_cachebackend.yaml b/config/samples/cache_v1alpha1_cachebackend.yaml index 5460b496..39dcd0a4 100644 --- a/config/samples/cache_v1alpha1_cachebackend.yaml +++ b/config/samples/cache_v1alpha1_cachebackend.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + # Kubebuilder-generated minimum-viable sample: a minimal CacheBackend that # applies cleanly against the current schema + admission webhook. Hand-curated, # scenario-specific recipes live in the sibling cachebackend-*.yaml files. diff --git a/config/samples/cache_v1alpha1_cacheindex.yaml b/config/samples/cache_v1alpha1_cacheindex.yaml index 0f23ca6b..dbd13ce0 100644 --- a/config/samples/cache_v1alpha1_cacheindex.yaml +++ b/config/samples/cache_v1alpha1_cacheindex.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + # Kubebuilder-generated minimum-viable sample: the cluster-scoped, status-only # CacheIndex the controller maintains. Spec is intentionally empty. apiVersion: inferencecache.io/v1alpha1 diff --git a/config/samples/cache_v1alpha1_cachepolicy.yaml b/config/samples/cache_v1alpha1_cachepolicy.yaml index bbeea144..ff6f5df2 100644 --- a/config/samples/cache_v1alpha1_cachepolicy.yaml +++ b/config/samples/cache_v1alpha1_cachepolicy.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + # CachePolicy sample used by the default-install smoke to exercise the # operator-facing columns and the controller -> server policy push. apiVersion: inferencecache.io/v1alpha1 diff --git a/config/samples/cache_v1alpha1_cachetenant.yaml b/config/samples/cache_v1alpha1_cachetenant.yaml index 413f7184..8c4aa85f 100644 --- a/config/samples/cache_v1alpha1_cachetenant.yaml +++ b/config/samples/cache_v1alpha1_cachetenant.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + # Kubebuilder-generated minimum-viable sample: a minimal CacheTenant that # applies cleanly against the current schema. Populates maxIndexEntries only. apiVersion: inferencecache.io/v1alpha1 diff --git a/config/samples/cache_v1alpha1_pdtopology.yaml b/config/samples/cache_v1alpha1_pdtopology.yaml index 613cfae1..b7277a83 100644 --- a/config/samples/cache_v1alpha1_pdtopology.yaml +++ b/config/samples/cache_v1alpha1_pdtopology.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + # Kubebuilder-generated minimum-viable sample: a representative PDTopology that # applies cleanly against the current schema. Types-only today (no controller yet). apiVersion: inferencecache.io/v1alpha1 diff --git a/config/samples/cache_v1alpha1_prompttemplate.yaml b/config/samples/cache_v1alpha1_prompttemplate.yaml index af26d1ee..f17a5ecc 100644 --- a/config/samples/cache_v1alpha1_prompttemplate.yaml +++ b/config/samples/cache_v1alpha1_prompttemplate.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + # Kubebuilder-generated minimum-viable sample: a representative PromptTemplate # that applies cleanly against the current schema. Types-only today (no controller yet). apiVersion: inferencecache.io/v1alpha1 diff --git a/config/samples/cachebackend-cpu-override.yaml b/config/samples/cachebackend-cpu-override.yaml index f83e5f75..58904ee0 100644 --- a/config/samples/cachebackend-cpu-override.yaml +++ b/config/samples/cachebackend-cpu-override.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + # CacheBackend for a CPU-vLLM dev cluster (no GPU) that uses # spec.integration.engineOverrides to tune the engine container the pod # webhook injects. diff --git a/config/samples/cachebackend-events-only.yaml b/config/samples/cachebackend-events-only.yaml index 0bc7f1dd..e3b3c32e 100644 --- a/config/samples/cachebackend-events-only.yaml +++ b/config/samples/cachebackend-events-only.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + # An events-only (tier-1 routing) CacheBackend. This is the lighter, # routing-only integration: cache-aware routing is wired, but NO KV-offload # connector is loaded into the engine and NO backend server is provisioned. diff --git a/config/samples/cachebackend-external.yaml b/config/samples/cachebackend-external.yaml index 6dcad162..18b61065 100644 --- a/config/samples/cachebackend-external.yaml +++ b/config/samples/cachebackend-external.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + # An External CacheBackend points the controller at a pre-existing remote # cache the operator manages themselves. The controller does NOT provision # pods for this backend (no Deployment, no Service, no HPA); it only mirrors diff --git a/config/samples/cachebackend-lmcache-cpu.yaml b/config/samples/cachebackend-lmcache-cpu.yaml index 6c20b8d8..64d0e0f3 100644 --- a/config/samples/cachebackend-lmcache-cpu.yaml +++ b/config/samples/cachebackend-lmcache-cpu.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + # Standalone lmcache-server backend for substrate validation on a GPU-free # cluster (e.g. kind). The lmcache-server itself is always CPU-only (its # storage device is `cpu` in-memory) regardless of what engine attaches to diff --git a/config/samples/cachebackend-lmcache.yaml b/config/samples/cachebackend-lmcache.yaml index fe7a8ad9..8bd999cb 100644 --- a/config/samples/cachebackend-lmcache.yaml +++ b/config/samples/cachebackend-lmcache.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + # A managed LMCache backend the controller reconciles into a standalone # lmcache-server Deployment + Service. Engine pods (vLLM) are user-owned; # spec.engineSelector identifies the pods the controller's mutating Pod diff --git a/config/samples/cachebackend-mooncake.yaml b/config/samples/cachebackend-mooncake.yaml index a8341108..fa56ff67 100644 --- a/config/samples/cachebackend-mooncake.yaml +++ b/config/samples/cachebackend-mooncake.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + # A managed Mooncake backend the controller reconciles into a standalone # mooncake_master Deployment + Service. Mooncake is the durable / shared cache # path (vs. the in-memory lmcache-server in cachebackend-lmcache.yaml) — diff --git a/config/samples/cachebackend-sglang-hicache.yaml b/config/samples/cachebackend-sglang-hicache.yaml index 04b40777..113e57e5 100644 --- a/config/samples/cachebackend-sglang-hicache.yaml +++ b/config/samples/cachebackend-sglang-hicache.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + apiVersion: inferencecache.io/v1alpha1 kind: CacheBackend metadata: diff --git a/config/samples/cachebackend-sglang-host-only.yaml b/config/samples/cachebackend-sglang-host-only.yaml index 0b23d607..d6fc062a 100644 --- a/config/samples/cachebackend-sglang-host-only.yaml +++ b/config/samples/cachebackend-sglang-host-only.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + # SGLang with LMCache's node-local host-memory tier and no remote provider. # Omitting spec.remoteStorage is intentional: the controller creates no # Deployment or Service, and the runtime adapter injects an LMCache MP worker diff --git a/config/samples/cachebackend-sglang.yaml b/config/samples/cachebackend-sglang.yaml index 4e88598b..31c18f2f 100644 --- a/config/samples/cachebackend-sglang.yaml +++ b/config/samples/cachebackend-sglang.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + # SGLang with an engine-side LMCache host tier and an explicitly selected # Managed Redis remote tier. SGLang drives LMCache in MULTIPROCESS (MP) mode: # - spec.runtime + spec.type select only the SGLang/LMCache engine wire; diff --git a/config/samples/cachebackend-with-engine.yaml b/config/samples/cachebackend-with-engine.yaml index 720cc156..368fc52f 100644 --- a/config/samples/cachebackend-with-engine.yaml +++ b/config/samples/cachebackend-with-engine.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + # Paired sample: a CacheBackend and a matching engine Deployment. # # The label `app: qwen-demo` appears in TWO places — `CacheBackend.spec. diff --git a/config/samples/cachebackend-with-override.yaml b/config/samples/cachebackend-with-override.yaml index 604e079a..6500be49 100644 --- a/config/samples/cachebackend-with-override.yaml +++ b/config/samples/cachebackend-with-override.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + # Paired CacheBackend + matching engine Deployment that exercises a small # `spec.integration.engineOverrides` block. Shows how to tune chunk size # and add a debug env WITHOUT losing the rest of the LMCache integration diff --git a/config/samples/recipe-cpu-dev.yaml b/config/samples/recipe-cpu-dev.yaml index fb1c8e51..a5aea792 100644 --- a/config/samples/recipe-cpu-dev.yaml +++ b/config/samples/recipe-cpu-dev.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + # Recipe: CPU dev — fastest path to a working cache on a laptop / kind cluster. # # Scenario: stand up a cache-aware backend with no GPU. This pairs a managed diff --git a/config/samples/recipe-external-cache.yaml b/config/samples/recipe-external-cache.yaml index 2d4e529f..42527edb 100644 --- a/config/samples/recipe-external-cache.yaml +++ b/config/samples/recipe-external-cache.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + # Recipe: External cache — point the operator at a cache you manage yourself. # # Scenario: you already run an lmcache-server (or share one across clusters) diff --git a/config/samples/recipe-gpu-production.yaml b/config/samples/recipe-gpu-production.yaml index 35977ec3..59285a1e 100644 --- a/config/samples/recipe-gpu-production.yaml +++ b/config/samples/recipe-gpu-production.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + # Recipe: GPU production — a production deployment SHAPE TEMPLATE (not a # drop-in). It shows the structure of a prod deployment; replace the placeholder # images (digest-pin them) and tune the model / resources / quotas for your diff --git a/config/samples/recipe-multi-tenant.yaml b/config/samples/recipe-multi-tenant.yaml index 91a39f67..030b2fb9 100644 --- a/config/samples/recipe-multi-tenant.yaml +++ b/config/samples/recipe-multi-tenant.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + # verify-samples: skip # # Why skipped: this recipe creates Namespaces and namespaced objects in one diff --git a/config/samples/recipe-tuning.yaml b/config/samples/recipe-tuning.yaml index 12372f59..bb548da6 100644 --- a/config/samples/recipe-tuning.yaml +++ b/config/samples/recipe-tuning.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + # Recipe: Tuning — CPU dev shape plus a meaningful engineOverrides block. # # Scenario: the canonical LMCache injection works, but you want to tune an diff --git a/config/server/kustomization.yaml b/config/server/kustomization.yaml index 1c404f04..ac9d589a 100644 --- a/config/server/kustomization.yaml +++ b/config/server/kustomization.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + resources: - server.yaml - networkpolicy.yaml diff --git a/config/server/networkpolicy.yaml b/config/server/networkpolicy.yaml index d01f42e3..788ed06b 100644 --- a/config/server/networkpolicy.yaml +++ b/config/server/networkpolicy.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + # Restrict ingress to the cache server's internal :8081 controller-facing # listener (which serves /snapshot, /policy, AND /probe) while leaving the # unauthenticated health/metrics port (:8080) and the gRPC port (:9090) open diff --git a/config/server/server.yaml b/config/server/server.yaml index 3a5498aa..67196fd8 100644 --- a/config/server/server.yaml +++ b/config/server/server.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + apiVersion: v1 kind: ServiceAccount metadata: diff --git a/config/server/tls/certificate.yaml b/config/server/tls/certificate.yaml index 73bc745d..b3d7d36d 100644 --- a/config/server/tls/certificate.yaml +++ b/config/server/tls/certificate.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + # Opt-in gRPC Service TLS for the policy server (:9090). # # This is NOT part of the default install — config/default serves :9090 diff --git a/config/server/tls/kustomization.yaml b/config/server/tls/kustomization.yaml index 803da076..50e9588f 100644 --- a/config/server/tls/kustomization.yaml +++ b/config/server/tls/kustomization.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + # Opt-in gRPC Service TLS for the policy server, packaged as a kustomize # Component so an overlay can layer it on top of config/default without the # default install paying for TLS. It (1) adds the cert-manager Issuer + diff --git a/config/server/tls/patch-volumes.yaml b/config/server/tls/patch-volumes.yaml index 9d56b9f1..5ef191c5 100644 --- a/config/server/tls/patch-volumes.yaml +++ b/config/server/tls/patch-volumes.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + # Strategic-merge patch: mount the cert-manager Secret (inference-cache-server-tls, # from certificate.yaml) into the server. volumeMounts + volumes merge BY NAME, # so this ADDS the grpc-tls entries without replacing any the base Deployment may diff --git a/config/server/tls/patch.yaml b/config/server/tls/patch.yaml index c5534f23..989c204c 100644 --- a/config/server/tls/patch.yaml +++ b/config/server/tls/patch.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + # JSON6902 patch: append the gRPC TLS flags to the server's args. Append # (`args/-`) rather than a list-replacing merge, so a server flag added to the # base Deployment later is preserved. The Secret volume + mount are added by diff --git a/config/webhook/kustomization.yaml b/config/webhook/kustomization.yaml index 36d4cc6e..d92031a8 100644 --- a/config/webhook/kustomization.yaml +++ b/config/webhook/kustomization.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + resources: - manifests.yaml - service.yaml diff --git a/config/webhook/service.yaml b/config/webhook/service.yaml index d52dca46..3b6113d5 100644 --- a/config/webhook/service.yaml +++ b/config/webhook/service.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + apiVersion: v1 kind: Service metadata: diff --git a/dockerfiles/Dockerfile b/dockerfiles/Dockerfile index 6876c101..4ed1557a 100644 --- a/dockerfiles/Dockerfile +++ b/dockerfiles/Dockerfile @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + # syntax=docker/dockerfile:1.7 FROM --platform=$BUILDPLATFORM golang:1.26.5 AS builder diff --git a/docs/reference-stack/helm/values-reference.yaml b/docs/reference-stack/helm/values-reference.yaml index 05c780ff..9d1cbf65 100644 --- a/docs/reference-stack/helm/values-reference.yaml +++ b/docs/reference-stack/helm/values-reference.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + # Upstream "reference Helm chart" path (vLLM Production Stack). # # helm repo add vllm https://vllm-project.github.io/production-stack diff --git a/docs/reference-stack/kind/cluster.yaml b/docs/reference-stack/kind/cluster.yaml index fe80fb64..40cf6b9f 100644 --- a/docs/reference-stack/kind/cluster.yaml +++ b/docs/reference-stack/kind/cluster.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + # kind cluster for the vLLM + LMCache reference substrate. # # kind nodes are containers on the host's Docker daemon. kind does NOT expose diff --git a/docs/reference-stack/manifests/cpu-local/deployment.yaml b/docs/reference-stack/manifests/cpu-local/deployment.yaml index 8d4c0cc0..6c56e658 100644 --- a/docs/reference-stack/manifests/cpu-local/deployment.yaml +++ b/docs/reference-stack/manifests/cpu-local/deployment.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + # CPU-only variant — runs WITHOUT a GPU and WITHOUT LMCache. # # Validates the full engine-config path off-GPU: a prefix-cache hit AND the diff --git a/docs/reference-stack/manifests/deployment.yaml b/docs/reference-stack/manifests/deployment.yaml index ee607304..c2b1cf8f 100644 --- a/docs/reference-stack/manifests/deployment.yaml +++ b/docs/reference-stack/manifests/deployment.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + # vLLM + LMCache reference backend (GPU). # # A minimal, explicit Deployment you can apply directly or use as a template for diff --git a/docs/reference-stack/manifests/namespace.yaml b/docs/reference-stack/manifests/namespace.yaml index 53f6be87..bdc0fb67 100644 --- a/docs/reference-stack/manifests/namespace.yaml +++ b/docs/reference-stack/manifests/namespace.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + apiVersion: v1 kind: Namespace metadata: diff --git a/docs/reference-stack/manifests/service.yaml b/docs/reference-stack/manifests/service.yaml index fbaa4208..e6494f79 100644 --- a/docs/reference-stack/manifests/service.yaml +++ b/docs/reference-stack/manifests/service.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + # Exposes the reference backend. NodePorts line up with the kind extraPortMappings # (kind/cluster.yaml) so the host can reach the API on :30080 and subscribe to # KV events on :30557 without port-forwarding. diff --git a/docs/reference-stack/manifests/sglang-lmcache/deployment.yaml b/docs/reference-stack/manifests/sglang-lmcache/deployment.yaml index e34ccc49..6e0b2dc2 100644 --- a/docs/reference-stack/manifests/sglang-lmcache/deployment.yaml +++ b/docs/reference-stack/manifests/sglang-lmcache/deployment.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + # SGLang + LMCache (MP mode) reference deployment — the second-engine sibling of # the top-level vLLM + LMCache reference (manifests/deployment.yaml). # diff --git a/docs/reference-stack/scripts/canary_c2_reconcile.sh b/docs/reference-stack/scripts/canary_c2_reconcile.sh index c0b2df3d..3c3c20b9 100755 --- a/docs/reference-stack/scripts/canary_c2_reconcile.sh +++ b/docs/reference-stack/scripts/canary_c2_reconcile.sh @@ -1,4 +1,9 @@ #!/usr/bin/env bash + +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + # Canary for the C2 CacheBackend reconciler. Proves the controller stands up a # healthy, serving backend from a CR on a GPU-free cluster (kind): # diff --git a/docs/reference-stack/scripts/canary_c6_engine_wiring.sh b/docs/reference-stack/scripts/canary_c6_engine_wiring.sh index 6a9d3f11..b4413650 100755 --- a/docs/reference-stack/scripts/canary_c6_engine_wiring.sh +++ b/docs/reference-stack/scripts/canary_c6_engine_wiring.sh @@ -1,4 +1,9 @@ #!/usr/bin/env bash + +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + # CPU canary for the C6 mutating Pod webhook + cross-pod cache reuse. # # Proves the engine-wiring webhook injects the LMCache connector env onto diff --git a/docs/reference-stack/scripts/canary_dual_input_tokenization.sh b/docs/reference-stack/scripts/canary_dual_input_tokenization.sh index d6642972..50d90113 100755 --- a/docs/reference-stack/scripts/canary_dual_input_tokenization.sh +++ b/docs/reference-stack/scripts/canary_dual_input_tokenization.sh @@ -1,4 +1,9 @@ #!/usr/bin/env bash + +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + # By-construction canary for server-side tokenization: prove a vLLM engine # prefix-caches exactly the token-ID prompt it is handed, so a routing # fingerprint computed over those same tokens is guaranteed to match the engine's diff --git a/docs/reference-stack/scripts/canary_e2e.sh b/docs/reference-stack/scripts/canary_e2e.sh index 4e3bbd23..2656176e 100755 --- a/docs/reference-stack/scripts/canary_e2e.sh +++ b/docs/reference-stack/scripts/canary_e2e.sh @@ -1,4 +1,9 @@ #!/usr/bin/env bash + +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + # Full-chain CPU canary for the cache substrate, BINARY data-path edition. # Brings up the engine + server + subscriber as host processes (no Kubernetes # admission in the loop) and asserts the binaries wire correctly: diff --git a/docs/reference-stack/scripts/default_install_smoke.sh b/docs/reference-stack/scripts/default_install_smoke.sh index c6993b6c..44a11a1a 100755 --- a/docs/reference-stack/scripts/default_install_smoke.sh +++ b/docs/reference-stack/scripts/default_install_smoke.sh @@ -1,4 +1,9 @@ #!/usr/bin/env bash + +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + # Per-PR install smoke for `kubectl apply -k config/default`. # # Builds controller + server images at a deterministic tag, loads them into a diff --git a/docs/reference-stack/scripts/kv_events_subscriber.py b/docs/reference-stack/scripts/kv_events_subscriber.py index 741e8355..2b8f0757 100755 --- a/docs/reference-stack/scripts/kv_events_subscriber.py +++ b/docs/reference-stack/scripts/kv_events_subscriber.py @@ -1,4 +1,9 @@ #!/usr/bin/env python3 + +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + """Subscribe to a vLLM KV-cache event stream over ZMQ and print/capture events. Shows how a cache-aware consumer connects to the engine's ZMQ PUB endpoint, diff --git a/docs/reference-stack/scripts/kv_events_synthetic_publisher.py b/docs/reference-stack/scripts/kv_events_synthetic_publisher.py index e232ef6e..87ed15b1 100755 --- a/docs/reference-stack/scripts/kv_events_synthetic_publisher.py +++ b/docs/reference-stack/scripts/kv_events_synthetic_publisher.py @@ -1,4 +1,9 @@ #!/usr/bin/env python3 + +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + """Emit synthetic vLLM-shaped KV-cache events over ZMQ. Local fallback when the real engine can't start (e.g. no GPU / amd64 image under diff --git a/docs/reference-stack/scripts/prefix_cache_hit_test.sh b/docs/reference-stack/scripts/prefix_cache_hit_test.sh index c62a007c..9c7d4c00 100755 --- a/docs/reference-stack/scripts/prefix_cache_hit_test.sh +++ b/docs/reference-stack/scripts/prefix_cache_hit_test.sh @@ -1,4 +1,9 @@ #!/usr/bin/env bash + +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + # Demonstrate a prefix-cache hit: fire the same long (~8K-token) system prefix # twice and show the second request is faster (prefill skipped) and the cache # counters move (a second identical-prefix request hits the cache). diff --git a/docs/reference-stack/scripts/requirements.txt b/docs/reference-stack/scripts/requirements.txt index 81a1e528..b896ef73 100644 --- a/docs/reference-stack/scripts/requirements.txt +++ b/docs/reference-stack/scripts/requirements.txt @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + # For kv_events_subscriber.py / kv_events_synthetic_publisher.py / test_kv_events.py pyzmq>=26 msgspec>=0.18 diff --git a/docs/reference-stack/scripts/test_kv_events.py b/docs/reference-stack/scripts/test_kv_events.py index f9ffa6d7..48e66753 100755 --- a/docs/reference-stack/scripts/test_kv_events.py +++ b/docs/reference-stack/scripts/test_kv_events.py @@ -1,4 +1,9 @@ #!/usr/bin/env python3 + +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + """Reproducible checks for the KV-event decode + token redaction. No broker, no pytest — just run it: diff --git a/go.mod b/go.mod index 9dfc79a5..be319e8d 100644 --- a/go.mod +++ b/go.mod @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + module github.com/cachebox-project/inference-cache go 1.26.5 diff --git a/hack/boilerplate.go.txt b/hack/boilerplate.go.txt index a9cd683e..41ad9b21 100644 --- a/hack/boilerplate.go.txt +++ b/hack/boilerplate.go.txt @@ -1,15 +1,5 @@ /* -Copyright 2026. +SPDX-FileCopyrightText: 2026 The inference-cache Authors -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. +SPDX-License-Identifier: Apache-2.0 */ diff --git a/hack/index-sizing/main.go b/hack/index-sizing/main.go index 8feb2cdb..8ae9a952 100644 --- a/hack/index-sizing/main.go +++ b/hack/index-sizing/main.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + // Package main is the index-sizing measurement helper used to characterize the // inferencecache-server in-memory index footprint at various entry counts. It // ingests N synthetic prefix entries, forces GC + returns memory to the OS, and diff --git a/hack/index-sizing/main_test.go b/hack/index-sizing/main_test.go index 4bc7590b..7febed80 100644 --- a/hack/index-sizing/main_test.go +++ b/hack/index-sizing/main_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + // Targeted tests for the helpers that produce the harness's reported numbers. // The harness is operator tooling and excluded from coverage (see COVER_EXCLUDE // in the Makefile), but encodeHash, humanBytes, and planRun drive the diff --git a/hack/internal/tools/go.mod b/hack/internal/tools/go.mod index 64a5ee3e..1cd5016d 100644 --- a/hack/internal/tools/go.mod +++ b/hack/internal/tools/go.mod @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + module github.com/cachebox-project/inference-cache/hack/internal/tools go 1.26.4 diff --git a/hack/internal/tools/tools.go b/hack/internal/tools/tools.go index c2c1a39b..a6d2586b 100644 --- a/hack/internal/tools/tools.go +++ b/hack/internal/tools/tools.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + //go:build tools package tools diff --git a/hack/resolve-release-image-digests.sh b/hack/resolve-release-image-digests.sh index 9129a770..6352e0b5 100755 --- a/hack/resolve-release-image-digests.sh +++ b/hack/resolve-release-image-digests.sh @@ -1,4 +1,9 @@ #!/usr/bin/env bash + +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + set -euo pipefail : "${RELEASE_TAG:?RELEASE_TAG is required}" diff --git a/hack/resolve-release-image-digests_test.sh b/hack/resolve-release-image-digests_test.sh index 30f2a966..29805338 100755 --- a/hack/resolve-release-image-digests_test.sh +++ b/hack/resolve-release-image-digests_test.sh @@ -1,4 +1,9 @@ #!/usr/bin/env bash + +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + set -euo pipefail repo_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" diff --git a/hack/sbom-registry-smoke.sh b/hack/sbom-registry-smoke.sh index b65b88b1..550e95af 100755 --- a/hack/sbom-registry-smoke.sh +++ b/hack/sbom-registry-smoke.sh @@ -1,4 +1,9 @@ #!/usr/bin/env bash + +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + set -euo pipefail repo_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" diff --git a/hack/verify-dco.sh b/hack/verify-dco.sh index 9776fe17..ed410061 100755 --- a/hack/verify-dco.sh +++ b/hack/verify-dco.sh @@ -1,4 +1,9 @@ #!/usr/bin/env bash + +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + # # Verify that every non-merge, non-bot commit in a revision range carries a # valid DCO Signed-off-by trailer. A trailer is valid when its name and email diff --git a/hack/verify-dco_test.sh b/hack/verify-dco_test.sh index 6ee494b5..862efac1 100755 --- a/hack/verify-dco_test.sh +++ b/hack/verify-dco_test.sh @@ -1,4 +1,9 @@ #!/usr/bin/env bash + +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + # Self-contained tests for verify-dco.sh using throwaway Git repositories. set -euo pipefail diff --git a/hack/verify-docs-sync.sh b/hack/verify-docs-sync.sh index 2f479096..f823e28b 100755 --- a/hack/verify-docs-sync.sh +++ b/hack/verify-docs-sync.sh @@ -1,4 +1,9 @@ #!/usr/bin/env bash + +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + # # verify-docs-sync.sh — keep the documentation from drifting behind the API. # diff --git a/hack/verify-docs-sync_test.sh b/hack/verify-docs-sync_test.sh index eb41d893..e7af4bfe 100755 --- a/hack/verify-docs-sync_test.sh +++ b/hack/verify-docs-sync_test.sh @@ -1,4 +1,9 @@ #!/usr/bin/env bash + +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + # # Tests for verify-docs-sync.sh. Self-contained: each case builds a throwaway # git repo in a temp dir, so it needs no network and touches nothing tracked. diff --git a/hack/verify-minimal-images.sh b/hack/verify-minimal-images.sh index b681fa52..ad45e1f0 100755 --- a/hack/verify-minimal-images.sh +++ b/hack/verify-minimal-images.sh @@ -1,4 +1,9 @@ #!/usr/bin/env bash + +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + set -euo pipefail repo_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" diff --git a/hack/verify-minimal-images_test.sh b/hack/verify-minimal-images_test.sh index 36f5ff05..0d58c20d 100755 --- a/hack/verify-minimal-images_test.sh +++ b/hack/verify-minimal-images_test.sh @@ -1,4 +1,9 @@ #!/usr/bin/env bash + +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + set -euo pipefail repo_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" diff --git a/hack/verify-prometheus-drift/main.go b/hack/verify-prometheus-drift/main.go index b03e7f1a..25ecb146 100644 --- a/hack/verify-prometheus-drift/main.go +++ b/hack/verify-prometheus-drift/main.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + // Package main is the verify-prometheus-drift CI helper. It asserts that the // `spec.groups` body of the PrometheusRule CR YAML file is byte-equivalent // (after canonical JSON normalization) to the `groups` body of the flat diff --git a/hack/verify-prometheus-drift/main_test.go b/hack/verify-prometheus-drift/main_test.go index 09e3093c..1f93c81f 100644 --- a/hack/verify-prometheus-drift/main_test.go +++ b/hack/verify-prometheus-drift/main_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + // Pure-function unit tests for the drift helper. The `make verify-prometheus` // target exercises the happy path against the live rules files; these tests // pin the failure-path behavior (first-divergence detection and bounded diff --git a/hack/verify-samples/admission_test.go b/hack/verify-samples/admission_test.go index f10dabdc..55590fd4 100644 --- a/hack/verify-samples/admission_test.go +++ b/hack/verify-samples/admission_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package main import ( diff --git a/hack/verify-samples/main.go b/hack/verify-samples/main.go index d158df27..0090193e 100644 --- a/hack/verify-samples/main.go +++ b/hack/verify-samples/main.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + // Package main is the verify-samples CI helper. It runs every YAML file under // config/samples/ through admission against an in-process envtest apiserver // plus the CRD admission webhooks (CacheBackend, CachePolicy, CacheTenant), diff --git a/hack/verify-samples/main_test.go b/hack/verify-samples/main_test.go index 67eae135..844b4205 100644 --- a/hack/verify-samples/main_test.go +++ b/hack/verify-samples/main_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package main import ( diff --git a/hack/verify-syft-version.sh b/hack/verify-syft-version.sh index 820c4e9b..266593cc 100755 --- a/hack/verify-syft-version.sh +++ b/hack/verify-syft-version.sh @@ -1,4 +1,9 @@ #!/usr/bin/env bash + +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + set -euo pipefail repo_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" diff --git a/internal/adapters/builtin/boundaries_test.go b/internal/adapters/builtin/boundaries_test.go index c224251e..fd3947e9 100644 --- a/internal/adapters/builtin/boundaries_test.go +++ b/internal/adapters/builtin/boundaries_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package builtin import ( diff --git a/internal/adapters/builtin/doc.go b/internal/adapters/builtin/doc.go index 4d28ec0c..f7cd8400 100644 --- a/internal/adapters/builtin/doc.go +++ b/internal/adapters/builtin/doc.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + // Package builtin composes every adapter shipped by the inference-cache // binaries. It is the single in-repository composition root; extension // contracts remain under pkg/adapters while concrete registration stays here. diff --git a/internal/adapters/builtin/registry.go b/internal/adapters/builtin/registry.go index 4a871174..e4fc742d 100644 --- a/internal/adapters/builtin/registry.go +++ b/internal/adapters/builtin/registry.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package builtin import ( diff --git a/internal/adapters/builtin/registry_test.go b/internal/adapters/builtin/registry_test.go index 688a319c..f978d9b3 100644 --- a/internal/adapters/builtin/registry_test.go +++ b/internal/adapters/builtin/registry_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package builtin import ( diff --git a/internal/adapters/builtin/runtime/contract_aliases_test.go b/internal/adapters/builtin/runtime/contract_aliases_test.go index 7a6a91c9..5cebaa7c 100644 --- a/internal/adapters/builtin/runtime/contract_aliases_test.go +++ b/internal/adapters/builtin/runtime/contract_aliases_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package runtime import adapterruntime "github.com/cachebox-project/inference-cache/pkg/adapters/runtime" diff --git a/internal/adapters/builtin/runtime/doc.go b/internal/adapters/builtin/runtime/doc.go index 0d06e750..0e2d04e7 100644 --- a/internal/adapters/builtin/runtime/doc.go +++ b/internal/adapters/builtin/runtime/doc.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + // Package runtime contains the runtime-adapter implementations shipped by the // controller binary. Public extension contracts remain in pkg/adapters/runtime; // this internal package owns the concrete vLLM+LMCache, SGLang+LMCache, and diff --git a/internal/adapters/builtin/runtime/lmcachecheck.go b/internal/adapters/builtin/runtime/lmcachecheck.go index 16e1574b..bf50ea32 100644 --- a/internal/adapters/builtin/runtime/lmcachecheck.go +++ b/internal/adapters/builtin/runtime/lmcachecheck.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package runtime import ( diff --git a/internal/adapters/builtin/runtime/lmcachecheck_script_test.go b/internal/adapters/builtin/runtime/lmcachecheck_script_test.go index 59bdcc3a..1301a059 100644 --- a/internal/adapters/builtin/runtime/lmcachecheck_script_test.go +++ b/internal/adapters/builtin/runtime/lmcachecheck_script_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package runtime import ( diff --git a/internal/adapters/builtin/runtime/lmcachecheck_test.go b/internal/adapters/builtin/runtime/lmcachecheck_test.go index cbe08653..c7691e4a 100644 --- a/internal/adapters/builtin/runtime/lmcachecheck_test.go +++ b/internal/adapters/builtin/runtime/lmcachecheck_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package runtime import ( diff --git a/internal/adapters/builtin/runtime/sglang_hicache.go b/internal/adapters/builtin/runtime/sglang_hicache.go index a273fa53..71ab545e 100644 --- a/internal/adapters/builtin/runtime/sglang_hicache.go +++ b/internal/adapters/builtin/runtime/sglang_hicache.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package runtime import ( diff --git a/internal/adapters/builtin/runtime/sglang_hicache_test.go b/internal/adapters/builtin/runtime/sglang_hicache_test.go index 735ec027..f22953a2 100644 --- a/internal/adapters/builtin/runtime/sglang_hicache_test.go +++ b/internal/adapters/builtin/runtime/sglang_hicache_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package runtime import ( diff --git a/internal/adapters/builtin/runtime/sglang_lmcache.go b/internal/adapters/builtin/runtime/sglang_lmcache.go index b6ad3ad3..d2a9ce82 100644 --- a/internal/adapters/builtin/runtime/sglang_lmcache.go +++ b/internal/adapters/builtin/runtime/sglang_lmcache.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package runtime import ( diff --git a/internal/adapters/builtin/runtime/sglang_lmcache_test.go b/internal/adapters/builtin/runtime/sglang_lmcache_test.go index d083bc3a..4d17cf07 100644 --- a/internal/adapters/builtin/runtime/sglang_lmcache_test.go +++ b/internal/adapters/builtin/runtime/sglang_lmcache_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package runtime import ( diff --git a/internal/adapters/builtin/runtime/sglang_lmcache_wire.go b/internal/adapters/builtin/runtime/sglang_lmcache_wire.go index b38da24e..17e452fe 100644 --- a/internal/adapters/builtin/runtime/sglang_lmcache_wire.go +++ b/internal/adapters/builtin/runtime/sglang_lmcache_wire.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package runtime import ( diff --git a/internal/adapters/builtin/runtime/vllm_lmcache.go b/internal/adapters/builtin/runtime/vllm_lmcache.go index 8b7c4dbb..1cf0a20c 100644 --- a/internal/adapters/builtin/runtime/vllm_lmcache.go +++ b/internal/adapters/builtin/runtime/vllm_lmcache.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package runtime import ( diff --git a/internal/adapters/builtin/runtime/vllm_lmcache_test.go b/internal/adapters/builtin/runtime/vllm_lmcache_test.go index c46974eb..53d171e7 100644 --- a/internal/adapters/builtin/runtime/vllm_lmcache_test.go +++ b/internal/adapters/builtin/runtime/vllm_lmcache_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package runtime import ( diff --git a/internal/adapters/builtin/runtime/vllm_lmcache_wire.go b/internal/adapters/builtin/runtime/vllm_lmcache_wire.go index e6e018f5..993a66d8 100644 --- a/internal/adapters/builtin/runtime/vllm_lmcache_wire.go +++ b/internal/adapters/builtin/runtime/vllm_lmcache_wire.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + // This file holds the engine-side wire format used by built-in runtime // adapters that front an LMCache-compatible cache. The in-tree // vLLM+LMCache adapter uses it for LMCacheServer, Mooncake, and externally diff --git a/internal/adapters/builtin/runtime/vllm_lmcache_wire_test.go b/internal/adapters/builtin/runtime/vllm_lmcache_wire_test.go index 427d4ed1..5c9fb638 100644 --- a/internal/adapters/builtin/runtime/vllm_lmcache_wire_test.go +++ b/internal/adapters/builtin/runtime/vllm_lmcache_wire_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package runtime import ( diff --git a/internal/adapters/builtin/storage/effective_config.go b/internal/adapters/builtin/storage/effective_config.go index a93dd141..d50b2f4e 100644 --- a/internal/adapters/builtin/storage/effective_config.go +++ b/internal/adapters/builtin/storage/effective_config.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package storage import ( diff --git a/internal/adapters/builtin/storage/lmcache_server.go b/internal/adapters/builtin/storage/lmcache_server.go index 4e61e55c..8f131b5d 100644 --- a/internal/adapters/builtin/storage/lmcache_server.go +++ b/internal/adapters/builtin/storage/lmcache_server.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package storage import ( diff --git a/internal/adapters/builtin/storage/mooncake.go b/internal/adapters/builtin/storage/mooncake.go index 007e2c0f..4a2cf427 100644 --- a/internal/adapters/builtin/storage/mooncake.go +++ b/internal/adapters/builtin/storage/mooncake.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package storage import ( diff --git a/internal/adapters/builtin/storage/redis.go b/internal/adapters/builtin/storage/redis.go index 5815862d..99908004 100644 --- a/internal/adapters/builtin/storage/redis.go +++ b/internal/adapters/builtin/storage/redis.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package storage import ( diff --git a/internal/adapters/builtin/storage/redis_test.go b/internal/adapters/builtin/storage/redis_test.go index 1755764d..bd6fbb44 100644 --- a/internal/adapters/builtin/storage/redis_test.go +++ b/internal/adapters/builtin/storage/redis_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package storage import ( diff --git a/internal/adapters/builtin/storage/registry.go b/internal/adapters/builtin/storage/registry.go index 4a2121a4..3e1d708a 100644 --- a/internal/adapters/builtin/storage/registry.go +++ b/internal/adapters/builtin/storage/registry.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + // Package storage contains the shipping remote-storage provider adapters. package storage diff --git a/internal/adapters/builtin/storage/registry_test.go b/internal/adapters/builtin/storage/registry_test.go index 3b0837ee..0ee2793c 100644 --- a/internal/adapters/builtin/storage/registry_test.go +++ b/internal/adapters/builtin/storage/registry_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package storage import ( diff --git a/internal/controller/cachebackend_autoscaling_test.go b/internal/controller/cachebackend_autoscaling_test.go index 01f828da..06dd07cb 100644 --- a/internal/controller/cachebackend_autoscaling_test.go +++ b/internal/controller/cachebackend_autoscaling_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package controller import ( diff --git a/internal/controller/cachebackend_controller.go b/internal/controller/cachebackend_controller.go index e43e2d0b..3098fda8 100644 --- a/internal/controller/cachebackend_controller.go +++ b/internal/controller/cachebackend_controller.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package controller import ( diff --git a/internal/controller/cachebackend_controller_test.go b/internal/controller/cachebackend_controller_test.go index 14c8bd8e..13312dd5 100644 --- a/internal/controller/cachebackend_controller_test.go +++ b/internal/controller/cachebackend_controller_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package controller import ( diff --git a/internal/controller/cachebackend_engine_compat.go b/internal/controller/cachebackend_engine_compat.go index 3cccaa06..9f8d67c0 100644 --- a/internal/controller/cachebackend_engine_compat.go +++ b/internal/controller/cachebackend_engine_compat.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package controller import ( diff --git a/internal/controller/cachebackend_engine_compat_integration_test.go b/internal/controller/cachebackend_engine_compat_integration_test.go index a1c45326..b3cca95d 100644 --- a/internal/controller/cachebackend_engine_compat_integration_test.go +++ b/internal/controller/cachebackend_engine_compat_integration_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package controller import ( diff --git a/internal/controller/cachebackend_engine_compat_test.go b/internal/controller/cachebackend_engine_compat_test.go index fd3fe56a..3ecf0f67 100644 --- a/internal/controller/cachebackend_engine_compat_test.go +++ b/internal/controller/cachebackend_engine_compat_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package controller import ( diff --git a/internal/controller/cachebackend_events_only_integration_test.go b/internal/controller/cachebackend_events_only_integration_test.go index 2868792d..7784ff5d 100644 --- a/internal/controller/cachebackend_events_only_integration_test.go +++ b/internal/controller/cachebackend_events_only_integration_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package controller import ( diff --git a/internal/controller/cachebackend_events_test.go b/internal/controller/cachebackend_events_test.go index 35f6c708..1b5257f0 100644 --- a/internal/controller/cachebackend_events_test.go +++ b/internal/controller/cachebackend_events_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package controller import ( diff --git a/internal/controller/cachebackend_hostnetwork_test.go b/internal/controller/cachebackend_hostnetwork_test.go index c205e3ce..db8b4eaa 100644 --- a/internal/controller/cachebackend_hostnetwork_test.go +++ b/internal/controller/cachebackend_hostnetwork_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package controller import ( diff --git a/internal/controller/cachebackend_kernelcheck.go b/internal/controller/cachebackend_kernelcheck.go index 8e4c78f0..25f2f38f 100644 --- a/internal/controller/cachebackend_kernelcheck.go +++ b/internal/controller/cachebackend_kernelcheck.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package controller import ( diff --git a/internal/controller/cachebackend_kernelcheck_integration_test.go b/internal/controller/cachebackend_kernelcheck_integration_test.go index c4e75dcb..58b7025e 100644 --- a/internal/controller/cachebackend_kernelcheck_integration_test.go +++ b/internal/controller/cachebackend_kernelcheck_integration_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package controller import ( diff --git a/internal/controller/cachebackend_kernelcheck_test.go b/internal/controller/cachebackend_kernelcheck_test.go index 52d6a46e..c9ea9bde 100644 --- a/internal/controller/cachebackend_kernelcheck_test.go +++ b/internal/controller/cachebackend_kernelcheck_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package controller import ( diff --git a/internal/controller/cachebackend_kvevent_gate_test.go b/internal/controller/cachebackend_kvevent_gate_test.go index 6176282b..abbd9a89 100644 --- a/internal/controller/cachebackend_kvevent_gate_test.go +++ b/internal/controller/cachebackend_kvevent_gate_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package controller import ( diff --git a/internal/controller/cachebackend_matched_pods_test.go b/internal/controller/cachebackend_matched_pods_test.go index bb11687b..1810665e 100644 --- a/internal/controller/cachebackend_matched_pods_test.go +++ b/internal/controller/cachebackend_matched_pods_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package controller import ( diff --git a/internal/controller/cachebackend_mooncake_hostnetwork_integration_test.go b/internal/controller/cachebackend_mooncake_hostnetwork_integration_test.go index 003bed7c..1223916c 100644 --- a/internal/controller/cachebackend_mooncake_hostnetwork_integration_test.go +++ b/internal/controller/cachebackend_mooncake_hostnetwork_integration_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package controller import ( diff --git a/internal/controller/cachebackend_probe.go b/internal/controller/cachebackend_probe.go index d2213819..c46cc439 100644 --- a/internal/controller/cachebackend_probe.go +++ b/internal/controller/cachebackend_probe.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package controller import ( diff --git a/internal/controller/cachebackend_probe_integration_test.go b/internal/controller/cachebackend_probe_integration_test.go index d686bcc8..3497d949 100644 --- a/internal/controller/cachebackend_probe_integration_test.go +++ b/internal/controller/cachebackend_probe_integration_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package controller import ( diff --git a/internal/controller/cachebackend_probe_test.go b/internal/controller/cachebackend_probe_test.go index f1fb21de..6bff20c6 100644 --- a/internal/controller/cachebackend_probe_test.go +++ b/internal/controller/cachebackend_probe_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package controller import ( diff --git a/internal/controller/cachebackend_resources_integration_test.go b/internal/controller/cachebackend_resources_integration_test.go index e64c2846..bad10197 100644 --- a/internal/controller/cachebackend_resources_integration_test.go +++ b/internal/controller/cachebackend_resources_integration_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package controller import ( diff --git a/internal/controller/cachebackend_schema_trim_integration_test.go b/internal/controller/cachebackend_schema_trim_integration_test.go index 39acaf0b..dc43d172 100644 --- a/internal/controller/cachebackend_schema_trim_integration_test.go +++ b/internal/controller/cachebackend_schema_trim_integration_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package controller import ( diff --git a/internal/controller/cachebackend_server_restart.go b/internal/controller/cachebackend_server_restart.go index 1577b489..448cfbda 100644 --- a/internal/controller/cachebackend_server_restart.go +++ b/internal/controller/cachebackend_server_restart.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package controller import ( diff --git a/internal/controller/cachebackend_server_restart_integration_test.go b/internal/controller/cachebackend_server_restart_integration_test.go index 8432be89..a8c45a53 100644 --- a/internal/controller/cachebackend_server_restart_integration_test.go +++ b/internal/controller/cachebackend_server_restart_integration_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package controller import ( diff --git a/internal/controller/cachebackend_server_restart_test.go b/internal/controller/cachebackend_server_restart_test.go index ac1b0d55..7d9617a6 100644 --- a/internal/controller/cachebackend_server_restart_test.go +++ b/internal/controller/cachebackend_server_restart_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package controller import ( diff --git a/internal/controller/cachebackend_t2degraded_test.go b/internal/controller/cachebackend_t2degraded_test.go index d17aabd4..078fbbd8 100644 --- a/internal/controller/cachebackend_t2degraded_test.go +++ b/internal/controller/cachebackend_t2degraded_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package controller import ( diff --git a/internal/controller/cacheindex_authed_integration_test.go b/internal/controller/cacheindex_authed_integration_test.go index f66ba026..579826db 100644 --- a/internal/controller/cacheindex_authed_integration_test.go +++ b/internal/controller/cacheindex_authed_integration_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package controller import ( diff --git a/internal/controller/cacheindex_controller.go b/internal/controller/cacheindex_controller.go index 565d3a2b..ccf43bc4 100644 --- a/internal/controller/cacheindex_controller.go +++ b/internal/controller/cacheindex_controller.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package controller import ( diff --git a/internal/controller/cacheindex_controller_test.go b/internal/controller/cacheindex_controller_test.go index 31be7e4f..cdf9b7ed 100644 --- a/internal/controller/cacheindex_controller_test.go +++ b/internal/controller/cacheindex_controller_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package controller import ( diff --git a/internal/controller/cacheindex_integration_test.go b/internal/controller/cacheindex_integration_test.go index f3af3cbd..e5d982ba 100644 --- a/internal/controller/cacheindex_integration_test.go +++ b/internal/controller/cacheindex_integration_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package controller import ( diff --git a/internal/controller/cacheindex_metrics.go b/internal/controller/cacheindex_metrics.go index 7f65996c..b541bc14 100644 --- a/internal/controller/cacheindex_metrics.go +++ b/internal/controller/cacheindex_metrics.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package controller import ( diff --git a/internal/controller/cachepolicy_affinity_routing_integration_test.go b/internal/controller/cachepolicy_affinity_routing_integration_test.go index bc8c311f..61aaeabb 100644 --- a/internal/controller/cachepolicy_affinity_routing_integration_test.go +++ b/internal/controller/cachepolicy_affinity_routing_integration_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package controller import ( diff --git a/internal/controller/cachepolicy_authed_integration_test.go b/internal/controller/cachepolicy_authed_integration_test.go index 1838afff..157c7aaf 100644 --- a/internal/controller/cachepolicy_authed_integration_test.go +++ b/internal/controller/cachepolicy_authed_integration_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package controller import ( diff --git a/internal/controller/cachepolicy_eviction_integration_test.go b/internal/controller/cachepolicy_eviction_integration_test.go index 65d711c5..ef651beb 100644 --- a/internal/controller/cachepolicy_eviction_integration_test.go +++ b/internal/controller/cachepolicy_eviction_integration_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package controller import ( diff --git a/internal/controller/cachepolicy_matched_tokens_floor_integration_test.go b/internal/controller/cachepolicy_matched_tokens_floor_integration_test.go index 188be66f..54904adf 100644 --- a/internal/controller/cachepolicy_matched_tokens_floor_integration_test.go +++ b/internal/controller/cachepolicy_matched_tokens_floor_integration_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package controller import ( diff --git a/internal/controller/cachepolicy_routing_floor_integration_test.go b/internal/controller/cachepolicy_routing_floor_integration_test.go index 49336f2a..2d7cb893 100644 --- a/internal/controller/cachepolicy_routing_floor_integration_test.go +++ b/internal/controller/cachepolicy_routing_floor_integration_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package controller import ( diff --git a/internal/controller/cachepolicy_strategy_integration_test.go b/internal/controller/cachepolicy_strategy_integration_test.go index 1878d47b..ac4dd9c2 100644 --- a/internal/controller/cachepolicy_strategy_integration_test.go +++ b/internal/controller/cachepolicy_strategy_integration_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package controller import ( diff --git a/internal/controller/contract_coverage_sweep_test.go b/internal/controller/contract_coverage_sweep_test.go index 09bd9986..8a6a9ac5 100644 --- a/internal/controller/contract_coverage_sweep_test.go +++ b/internal/controller/contract_coverage_sweep_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package controller // Cross-system contract coverage and edge-case sweep for the CacheIndex diff --git a/internal/controller/controlplane_controller.go b/internal/controller/controlplane_controller.go index f71429c8..f4150ef8 100644 --- a/internal/controller/controlplane_controller.go +++ b/internal/controller/controlplane_controller.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package controller import ( diff --git a/internal/controller/controlplane_controller_test.go b/internal/controller/controlplane_controller_test.go index 3d6e8349..152f7e02 100644 --- a/internal/controller/controlplane_controller_test.go +++ b/internal/controller/controlplane_controller_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package controller import ( diff --git a/internal/controller/engine_pod_events_controller.go b/internal/controller/engine_pod_events_controller.go index 8996fb2c..90369758 100644 --- a/internal/controller/engine_pod_events_controller.go +++ b/internal/controller/engine_pod_events_controller.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package controller import ( diff --git a/internal/controller/engine_pod_events_controller_test.go b/internal/controller/engine_pod_events_controller_test.go index 90f6cd44..fe35790a 100644 --- a/internal/controller/engine_pod_events_controller_test.go +++ b/internal/controller/engine_pod_events_controller_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package controller import ( diff --git a/internal/controller/integration_test.go b/internal/controller/integration_test.go index 52db5f10..425469ea 100644 --- a/internal/controller/integration_test.go +++ b/internal/controller/integration_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package controller import ( diff --git a/internal/controller/probe_client.go b/internal/controller/probe_client.go index b7021073..0d2864f2 100644 --- a/internal/controller/probe_client.go +++ b/internal/controller/probe_client.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package controller import ( diff --git a/internal/controller/probe_client_test.go b/internal/controller/probe_client_test.go index 52a4ffef..c509d3fa 100644 --- a/internal/controller/probe_client_test.go +++ b/internal/controller/probe_client_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package controller import ( diff --git a/internal/controller/tenant_quota_integration_test.go b/internal/controller/tenant_quota_integration_test.go index 37e5f299..55b2ab1c 100644 --- a/internal/controller/tenant_quota_integration_test.go +++ b/internal/controller/tenant_quota_integration_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package controller import ( diff --git a/internal/controlplaneapi/contracts_test.go b/internal/controlplaneapi/contracts_test.go index a7f34fd1..6da16bc3 100644 --- a/internal/controlplaneapi/contracts_test.go +++ b/internal/controlplaneapi/contracts_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package controlplaneapi import ( diff --git a/internal/controlplaneapi/doc.go b/internal/controlplaneapi/doc.go index d6692865..8db45f6b 100644 --- a/internal/controlplaneapi/doc.go +++ b/internal/controlplaneapi/doc.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + // Package controlplaneapi defines the private HTTP wire contracts shared by // the inference-cache controller and server binaries. // diff --git a/internal/controlplaneapi/policy.go b/internal/controlplaneapi/policy.go index 12e223c1..393c7c5b 100644 --- a/internal/controlplaneapi/policy.go +++ b/internal/controlplaneapi/policy.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package controlplaneapi import "time" diff --git a/internal/controlplaneapi/probe.go b/internal/controlplaneapi/probe.go index 4962853a..3f374419 100644 --- a/internal/controlplaneapi/probe.go +++ b/internal/controlplaneapi/probe.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package controlplaneapi // ProbeTenantID is reserved for synthetic functional-probe state. diff --git a/internal/enginebinding/doc.go b/internal/enginebinding/doc.go index 8fcab7b1..242e3a51 100644 --- a/internal/enginebinding/doc.go +++ b/internal/enginebinding/doc.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + // Package enginebinding owns metadata shared by engine-pod admission and the // controllers that observe or reconcile injected pods. package enginebinding diff --git a/internal/enginebinding/metadata.go b/internal/enginebinding/metadata.go index fda9fc71..a9993003 100644 --- a/internal/enginebinding/metadata.go +++ b/internal/enginebinding/metadata.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package enginebinding import ( diff --git a/internal/enginebinding/metadata_test.go b/internal/enginebinding/metadata_test.go index 97df852d..97fdf07d 100644 --- a/internal/enginebinding/metadata_test.go +++ b/internal/enginebinding/metadata_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package enginebinding import "testing" diff --git a/internal/webhook/pod/doc.go b/internal/webhook/pod/doc.go index 5809236a..48a023eb 100644 --- a/internal/webhook/pod/doc.go +++ b/internal/webhook/pod/doc.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + // Package pod is the controller-owned mutating admission webhook that auto- // wires user-provided inference engine pods to a matching cache backend — // either a managed provider or an externally owned remote binding. diff --git a/internal/webhook/pod/envtest_integration_test.go b/internal/webhook/pod/envtest_integration_test.go index a425d81b..c74bf414 100644 --- a/internal/webhook/pod/envtest_integration_test.go +++ b/internal/webhook/pod/envtest_integration_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package pod import ( diff --git a/internal/webhook/pod/overrides.go b/internal/webhook/pod/overrides.go index c851b26e..789ec31b 100644 --- a/internal/webhook/pod/overrides.go +++ b/internal/webhook/pod/overrides.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package pod import ( diff --git a/internal/webhook/pod/overrides_test.go b/internal/webhook/pod/overrides_test.go index b91b394b..0660932c 100644 --- a/internal/webhook/pod/overrides_test.go +++ b/internal/webhook/pod/overrides_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package pod import ( diff --git a/internal/webhook/pod/podinjector.go b/internal/webhook/pod/podinjector.go index 4123cae6..06c3a896 100644 --- a/internal/webhook/pod/podinjector.go +++ b/internal/webhook/pod/podinjector.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package pod import ( diff --git a/internal/webhook/pod/podinjector_test.go b/internal/webhook/pod/podinjector_test.go index 8b82e160..d28f2a90 100644 --- a/internal/webhook/pod/podinjector_test.go +++ b/internal/webhook/pod/podinjector_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package pod import ( diff --git a/internal/webhook/v1alpha1/cachebackend_defaulter_envtest_test.go b/internal/webhook/v1alpha1/cachebackend_defaulter_envtest_test.go index 989fbf83..51802c53 100644 --- a/internal/webhook/v1alpha1/cachebackend_defaulter_envtest_test.go +++ b/internal/webhook/v1alpha1/cachebackend_defaulter_envtest_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package v1alpha1 import ( diff --git a/internal/webhook/v1alpha1/cachebackend_webhook.go b/internal/webhook/v1alpha1/cachebackend_webhook.go index ef175d51..f8d93b2e 100644 --- a/internal/webhook/v1alpha1/cachebackend_webhook.go +++ b/internal/webhook/v1alpha1/cachebackend_webhook.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package v1alpha1 import ( diff --git a/internal/webhook/v1alpha1/cachebackend_webhook_test.go b/internal/webhook/v1alpha1/cachebackend_webhook_test.go index c31555f0..5f03d57e 100644 --- a/internal/webhook/v1alpha1/cachebackend_webhook_test.go +++ b/internal/webhook/v1alpha1/cachebackend_webhook_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package v1alpha1 import ( diff --git a/internal/webhook/v1alpha1/cachepolicy_cachetenant_envtest_test.go b/internal/webhook/v1alpha1/cachepolicy_cachetenant_envtest_test.go index e0352eb4..dd708172 100644 --- a/internal/webhook/v1alpha1/cachepolicy_cachetenant_envtest_test.go +++ b/internal/webhook/v1alpha1/cachepolicy_cachetenant_envtest_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package v1alpha1 import ( diff --git a/internal/webhook/v1alpha1/cachepolicy_webhook.go b/internal/webhook/v1alpha1/cachepolicy_webhook.go index 27739042..ee3d73b5 100644 --- a/internal/webhook/v1alpha1/cachepolicy_webhook.go +++ b/internal/webhook/v1alpha1/cachepolicy_webhook.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package v1alpha1 import ( diff --git a/internal/webhook/v1alpha1/cachepolicy_webhook_test.go b/internal/webhook/v1alpha1/cachepolicy_webhook_test.go index 666880b1..d24e49be 100644 --- a/internal/webhook/v1alpha1/cachepolicy_webhook_test.go +++ b/internal/webhook/v1alpha1/cachepolicy_webhook_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package v1alpha1 import ( diff --git a/internal/webhook/v1alpha1/cachetenant_webhook.go b/internal/webhook/v1alpha1/cachetenant_webhook.go index fa583d3c..cf109024 100644 --- a/internal/webhook/v1alpha1/cachetenant_webhook.go +++ b/internal/webhook/v1alpha1/cachetenant_webhook.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package v1alpha1 import ( diff --git a/internal/webhook/v1alpha1/cachetenant_webhook_test.go b/internal/webhook/v1alpha1/cachetenant_webhook_test.go index 15786fd5..3aae6b14 100644 --- a/internal/webhook/v1alpha1/cachetenant_webhook_test.go +++ b/internal/webhook/v1alpha1/cachetenant_webhook_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package v1alpha1 import ( diff --git a/internal/webhook/v1alpha1/doc.go b/internal/webhook/v1alpha1/doc.go index 12c4fd3f..8110f4ee 100644 --- a/internal/webhook/v1alpha1/doc.go +++ b/internal/webhook/v1alpha1/doc.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + // Package v1alpha1 hosts the admission webhooks (defaulting + validating) for // the operator-facing v1alpha1 CRDs: CacheBackend, CachePolicy, and // CacheTenant. Each webhook keeps "obviously broken" or operator-trust-eroding diff --git a/pkg/adapters/backend/backend.go b/pkg/adapters/backend/backend.go index 33369ca0..4e8c6878 100644 --- a/pkg/adapters/backend/backend.go +++ b/pkg/adapters/backend/backend.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + // Package backend defines the remote-storage provider boundary. Runtime // adapters consume the resulting Binding; they do not select or provision a // provider. diff --git a/pkg/adapters/backend/backend_test.go b/pkg/adapters/backend/backend_test.go index 79b23b2e..65000fd2 100644 --- a/pkg/adapters/backend/backend_test.go +++ b/pkg/adapters/backend/backend_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package backend import ( diff --git a/pkg/adapters/engine/config.go b/pkg/adapters/engine/config.go index 9bd5441b..cda73d88 100644 --- a/pkg/adapters/engine/config.go +++ b/pkg/adapters/engine/config.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package engine import ( diff --git a/pkg/adapters/engine/coverage_test.go b/pkg/adapters/engine/coverage_test.go index fcd5ac71..d4b0ce70 100644 --- a/pkg/adapters/engine/coverage_test.go +++ b/pkg/adapters/engine/coverage_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package engine import ( diff --git a/pkg/adapters/engine/doc.go b/pkg/adapters/engine/doc.go index 234ca072..4dd604e5 100644 --- a/pkg/adapters/engine/doc.go +++ b/pkg/adapters/engine/doc.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + // Package engine is the KV-event subscriber. It runs as a sidecar next to a vLLM // engine replica, subscribes to the engine's KV cache events over ZMQ, decodes // them, and reports cache state to the inferencecache-server over gRPC. diff --git a/pkg/adapters/engine/events.go b/pkg/adapters/engine/events.go index 7b903f47..4c02222c 100644 --- a/pkg/adapters/engine/events.go +++ b/pkg/adapters/engine/events.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package engine import ( diff --git a/pkg/adapters/engine/events_test.go b/pkg/adapters/engine/events_test.go index 79d4a0b6..fb9d1c46 100644 --- a/pkg/adapters/engine/events_test.go +++ b/pkg/adapters/engine/events_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package engine import ( diff --git a/pkg/adapters/engine/forwarder.go b/pkg/adapters/engine/forwarder.go index a9b6dc85..9c3126ec 100644 --- a/pkg/adapters/engine/forwarder.go +++ b/pkg/adapters/engine/forwarder.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package engine import ( diff --git a/pkg/adapters/engine/forwarder_test.go b/pkg/adapters/engine/forwarder_test.go index d38b61e5..861433fc 100644 --- a/pkg/adapters/engine/forwarder_test.go +++ b/pkg/adapters/engine/forwarder_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package engine import ( diff --git a/pkg/adapters/engine/lora_adapter_test.go b/pkg/adapters/engine/lora_adapter_test.go index f469de56..4eea9934 100644 --- a/pkg/adapters/engine/lora_adapter_test.go +++ b/pkg/adapters/engine/lora_adapter_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package engine import ( diff --git a/pkg/adapters/engine/mapper.go b/pkg/adapters/engine/mapper.go index c4c6e565..c69727e3 100644 --- a/pkg/adapters/engine/mapper.go +++ b/pkg/adapters/engine/mapper.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package engine import ( diff --git a/pkg/adapters/engine/mapper_test.go b/pkg/adapters/engine/mapper_test.go index f87faba8..dfd4cbf4 100644 --- a/pkg/adapters/engine/mapper_test.go +++ b/pkg/adapters/engine/mapper_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package engine import ( diff --git a/pkg/adapters/engine/metrics_scraper.go b/pkg/adapters/engine/metrics_scraper.go index 53e78bb6..eee9058e 100644 --- a/pkg/adapters/engine/metrics_scraper.go +++ b/pkg/adapters/engine/metrics_scraper.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package engine import ( diff --git a/pkg/adapters/engine/metrics_scraper_test.go b/pkg/adapters/engine/metrics_scraper_test.go index 5f2ba82f..23f6a50c 100644 --- a/pkg/adapters/engine/metrics_scraper_test.go +++ b/pkg/adapters/engine/metrics_scraper_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package engine import ( diff --git a/pkg/adapters/engine/positional.go b/pkg/adapters/engine/positional.go index dbf730ec..e5524fd9 100644 --- a/pkg/adapters/engine/positional.go +++ b/pkg/adapters/engine/positional.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package engine import ( diff --git a/pkg/adapters/engine/positional_test.go b/pkg/adapters/engine/positional_test.go index 4a169227..93718755 100644 --- a/pkg/adapters/engine/positional_test.go +++ b/pkg/adapters/engine/positional_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package engine import ( diff --git a/pkg/adapters/engine/sglang_wire_test.go b/pkg/adapters/engine/sglang_wire_test.go index 6b86f82e..345e514f 100644 --- a/pkg/adapters/engine/sglang_wire_test.go +++ b/pkg/adapters/engine/sglang_wire_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package engine import ( diff --git a/pkg/adapters/engine/stats_reporter.go b/pkg/adapters/engine/stats_reporter.go index 216326f4..ec0af707 100644 --- a/pkg/adapters/engine/stats_reporter.go +++ b/pkg/adapters/engine/stats_reporter.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package engine import ( diff --git a/pkg/adapters/engine/stats_reporter_test.go b/pkg/adapters/engine/stats_reporter_test.go index 95da7b75..7d3132d2 100644 --- a/pkg/adapters/engine/stats_reporter_test.go +++ b/pkg/adapters/engine/stats_reporter_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package engine import ( diff --git a/pkg/adapters/engine/subscriber.go b/pkg/adapters/engine/subscriber.go index 5b4a264e..05b67d01 100644 --- a/pkg/adapters/engine/subscriber.go +++ b/pkg/adapters/engine/subscriber.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package engine import ( diff --git a/pkg/adapters/engine/subscriber_test.go b/pkg/adapters/engine/subscriber_test.go index d3e5005e..29e77b49 100644 --- a/pkg/adapters/engine/subscriber_test.go +++ b/pkg/adapters/engine/subscriber_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package engine import ( diff --git a/pkg/adapters/engine/wire_test.go b/pkg/adapters/engine/wire_test.go index b1e94581..3e761b81 100644 --- a/pkg/adapters/engine/wire_test.go +++ b/pkg/adapters/engine/wire_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package engine_test // End-to-end wire test: the StatsReporter scrapes a synthetic /metrics endpoint, diff --git a/pkg/adapters/engineclient/canary.go b/pkg/adapters/engineclient/canary.go index 575ff059..74b61fd4 100644 --- a/pkg/adapters/engineclient/canary.go +++ b/pkg/adapters/engineclient/canary.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package engineclient import ( diff --git a/pkg/adapters/engineclient/canary_test.go b/pkg/adapters/engineclient/canary_test.go index d4ed644b..ba0fd42d 100644 --- a/pkg/adapters/engineclient/canary_test.go +++ b/pkg/adapters/engineclient/canary_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package engineclient import ( diff --git a/pkg/adapters/engineclient/engineclient.go b/pkg/adapters/engineclient/engineclient.go index 3ddb6553..174d2ec1 100644 --- a/pkg/adapters/engineclient/engineclient.go +++ b/pkg/adapters/engineclient/engineclient.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + // Package engineclient sends a PRE-TOKENIZED prompt (token IDs) to an inference // engine. It is the "pass tokens to the engine" half of server-side tokenization: // the engine caches exactly the tokens the router fingerprinted, so the routing diff --git a/pkg/adapters/engineclient/grpc.go b/pkg/adapters/engineclient/grpc.go index 6ed32bef..f40813d8 100644 --- a/pkg/adapters/engineclient/grpc.go +++ b/pkg/adapters/engineclient/grpc.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package engineclient import "context" diff --git a/pkg/adapters/engineclient/openai.go b/pkg/adapters/engineclient/openai.go index 1eb54b7d..f8731368 100644 --- a/pkg/adapters/engineclient/openai.go +++ b/pkg/adapters/engineclient/openai.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package engineclient import ( diff --git a/pkg/adapters/engineclient/openai_test.go b/pkg/adapters/engineclient/openai_test.go index e74d179b..3c5e3365 100644 --- a/pkg/adapters/engineclient/openai_test.go +++ b/pkg/adapters/engineclient/openai_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package engineclient import ( diff --git a/pkg/adapters/runtime/adapter.go b/pkg/adapters/runtime/adapter.go index c5aae7fe..969219eb 100644 --- a/pkg/adapters/runtime/adapter.go +++ b/pkg/adapters/runtime/adapter.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package runtime import ( diff --git a/pkg/adapters/runtime/adapter_test.go b/pkg/adapters/runtime/adapter_test.go index 194aafcd..065e525b 100644 --- a/pkg/adapters/runtime/adapter_test.go +++ b/pkg/adapters/runtime/adapter_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package runtime import ( diff --git a/pkg/adapters/runtime/doc.go b/pkg/adapters/runtime/doc.go index 7ecb6e0c..a82d4e93 100644 --- a/pkg/adapters/runtime/doc.go +++ b/pkg/adapters/runtime/doc.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + // Package runtime is the controller-owned runtime-adapter seam: the plug-point // that keeps engine-specific cache wiring out of the core CacheBackend // reconciler. Adapters implement [KVCacheRuntimeAdapter] (lifted from diff --git a/pkg/adapters/runtime/kernelcheck.go b/pkg/adapters/runtime/kernelcheck.go index b58cdb97..0c17764f 100644 --- a/pkg/adapters/runtime/kernelcheck.go +++ b/pkg/adapters/runtime/kernelcheck.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package runtime import ( diff --git a/pkg/adapters/runtime/kvevent_subscriber.go b/pkg/adapters/runtime/kvevent_subscriber.go index 0ea488d6..bb1ccdf3 100644 --- a/pkg/adapters/runtime/kvevent_subscriber.go +++ b/pkg/adapters/runtime/kvevent_subscriber.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package runtime import ( diff --git a/pkg/adapters/runtime/lmcache_shared.go b/pkg/adapters/runtime/lmcache_shared.go index 7bdebcad..5ee934b5 100644 --- a/pkg/adapters/runtime/lmcache_shared.go +++ b/pkg/adapters/runtime/lmcache_shared.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package runtime // Shared kvevent-subscriber sidecar defaults. Vendor-neutral; production diff --git a/pkg/adapters/runtime/reference.go b/pkg/adapters/runtime/reference.go index e982c946..cf13d7dd 100644 --- a/pkg/adapters/runtime/reference.go +++ b/pkg/adapters/runtime/reference.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package runtime import ( diff --git a/pkg/adapters/runtime/wire_contract.go b/pkg/adapters/runtime/wire_contract.go index eacea57b..b88a4810 100644 --- a/pkg/adapters/runtime/wire_contract.go +++ b/pkg/adapters/runtime/wire_contract.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package runtime import ( diff --git a/pkg/cli/doctor/checks/cachebackend.go b/pkg/cli/doctor/checks/cachebackend.go index f5127fa3..0d227d69 100644 --- a/pkg/cli/doctor/checks/cachebackend.go +++ b/pkg/cli/doctor/checks/cachebackend.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package checks import ( diff --git a/pkg/cli/doctor/checks/checks.go b/pkg/cli/doctor/checks/checks.go index 69a6f785..d3ce5445 100644 --- a/pkg/cli/doctor/checks/checks.go +++ b/pkg/cli/doctor/checks/checks.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + // Package checks implements the `inferencecache doctor` pre-flight diagnostics. // // Each exported Check* function inspects one facet of an inference-cache diff --git a/pkg/cli/doctor/checks/checks_test.go b/pkg/cli/doctor/checks/checks_test.go index 1977db8d..caf83469 100644 --- a/pkg/cli/doctor/checks/checks_test.go +++ b/pkg/cli/doctor/checks/checks_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package checks import ( diff --git a/pkg/cli/doctor/checks/endpoints.go b/pkg/cli/doctor/checks/endpoints.go index c28baca3..461a105c 100644 --- a/pkg/cli/doctor/checks/endpoints.go +++ b/pkg/cli/doctor/checks/endpoints.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package checks import ( diff --git a/pkg/cli/doctor/checks/podaudit.go b/pkg/cli/doctor/checks/podaudit.go index ff0244b5..5fb6d397 100644 --- a/pkg/cli/doctor/checks/podaudit.go +++ b/pkg/cli/doctor/checks/podaudit.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package checks import ( diff --git a/pkg/cli/doctor/checks/tenant_policy.go b/pkg/cli/doctor/checks/tenant_policy.go index 831b49f2..cf346a1a 100644 --- a/pkg/cli/doctor/checks/tenant_policy.go +++ b/pkg/cli/doctor/checks/tenant_policy.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package checks import ( diff --git a/pkg/cli/doctor/finding.go b/pkg/cli/doctor/finding.go index 82f1fb91..c7dbafa6 100644 --- a/pkg/cli/doctor/finding.go +++ b/pkg/cli/doctor/finding.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + // Package doctor defines the diagnostic result vocabulary shared by the // `inferencecache doctor` pre-flight checks and their output formatters. // diff --git a/pkg/cli/doctor/finding_test.go b/pkg/cli/doctor/finding_test.go index 31e3339b..a71b9b1d 100644 --- a/pkg/cli/doctor/finding_test.go +++ b/pkg/cli/doctor/finding_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package doctor import ( diff --git a/pkg/cli/doctor/output/human.go b/pkg/cli/doctor/output/human.go index 60802e8e..cd8cb897 100644 --- a/pkg/cli/doctor/output/human.go +++ b/pkg/cli/doctor/output/human.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package output import ( diff --git a/pkg/cli/doctor/output/json.go b/pkg/cli/doctor/output/json.go index 4968995b..772a9650 100644 --- a/pkg/cli/doctor/output/json.go +++ b/pkg/cli/doctor/output/json.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package output import ( diff --git a/pkg/cli/doctor/output/output.go b/pkg/cli/doctor/output/output.go index 5088e9bd..c21076c0 100644 --- a/pkg/cli/doctor/output/output.go +++ b/pkg/cli/doctor/output/output.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + // Package output renders a doctor [doctor.Report] in the three operator-facing // formats the `inferencecache doctor` command supports: human (default, // color-coded when writing to a TTY), json (a documented, stable schema for diff --git a/pkg/cli/doctor/output/output_test.go b/pkg/cli/doctor/output/output_test.go index b1177bbe..470d551f 100644 --- a/pkg/cli/doctor/output/output_test.go +++ b/pkg/cli/doctor/output/output_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package output import ( diff --git a/pkg/cli/doctor/output/table.go b/pkg/cli/doctor/output/table.go index 8586b72e..17666429 100644 --- a/pkg/cli/doctor/output/table.go +++ b/pkg/cli/doctor/output/table.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package output import ( diff --git a/pkg/fingerprint/chain.go b/pkg/fingerprint/chain.go index e657e527..d73a8124 100644 --- a/pkg/fingerprint/chain.go +++ b/pkg/fingerprint/chain.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package fingerprint // Chain turns a flat token-ID slice into the block-hash chain a diff --git a/pkg/fingerprint/chain_test.go b/pkg/fingerprint/chain_test.go index 040ac962..d67ca9ad 100644 --- a/pkg/fingerprint/chain_test.go +++ b/pkg/fingerprint/chain_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package fingerprint import ( diff --git a/pkg/fingerprint/fingerprint.go b/pkg/fingerprint/fingerprint.go index 9525c709..6ce41875 100644 --- a/pkg/fingerprint/fingerprint.go +++ b/pkg/fingerprint/fingerprint.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + // Package fingerprint computes deterministic, content-addressed prefix hashes // from token IDs. // diff --git a/pkg/fingerprint/fingerprint_test.go b/pkg/fingerprint/fingerprint_test.go index a7b91c58..b1e6a9af 100644 --- a/pkg/fingerprint/fingerprint_test.go +++ b/pkg/fingerprint/fingerprint_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package fingerprint import ( diff --git a/pkg/fingerprint/testdata/gen_golden.py b/pkg/fingerprint/testdata/gen_golden.py index 353929b6..8229b2ca 100644 --- a/pkg/fingerprint/testdata/gen_golden.py +++ b/pkg/fingerprint/testdata/gen_golden.py @@ -1,4 +1,9 @@ #!/usr/bin/env python3 + +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + """Regenerate golden_vectors.json — the canonical, language-neutral golden fixture for the content-fingerprint scheme. diff --git a/pkg/fingerprint/testdata/requirements.txt b/pkg/fingerprint/testdata/requirements.txt index 7e0ac483..71b25c8c 100644 --- a/pkg/fingerprint/testdata/requirements.txt +++ b/pkg/fingerprint/testdata/requirements.txt @@ -1 +1,5 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + xxhash==3.7.0 diff --git a/pkg/index/adapter_partition_test.go b/pkg/index/adapter_partition_test.go index bfdb7b51..eb0f002d 100644 --- a/pkg/index/adapter_partition_test.go +++ b/pkg/index/adapter_partition_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package index import "testing" diff --git a/pkg/index/affinity_test.go b/pkg/index/affinity_test.go index 62503d41..2bbe8712 100644 --- a/pkg/index/affinity_test.go +++ b/pkg/index/affinity_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package index import ( diff --git a/pkg/index/aggregate_test.go b/pkg/index/aggregate_test.go index f33bfefa..c9a7fb2d 100644 --- a/pkg/index/aggregate_test.go +++ b/pkg/index/aggregate_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package index import ( diff --git a/pkg/index/diagnostics_test.go b/pkg/index/diagnostics_test.go index a7012e88..f4c7768f 100644 --- a/pkg/index/diagnostics_test.go +++ b/pkg/index/diagnostics_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package index import "testing" diff --git a/pkg/index/distinguishing_power_lookup_test.go b/pkg/index/distinguishing_power_lookup_test.go index 87a5ae02..75cbbef4 100644 --- a/pkg/index/distinguishing_power_lookup_test.go +++ b/pkg/index/distinguishing_power_lookup_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package index import ( diff --git a/pkg/index/distinguishing_power_test.go b/pkg/index/distinguishing_power_test.go index a774a801..a1e3e101 100644 --- a/pkg/index/distinguishing_power_test.go +++ b/pkg/index/distinguishing_power_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package index import ( diff --git a/pkg/index/doc.go b/pkg/index/doc.go index ae0751d7..100468d6 100644 --- a/pkg/index/doc.go +++ b/pkg/index/doc.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + // Package index is part of inferencecache-server: the cluster cache-state aggregator // (the CacheIndex), populated from engine KV events and queried by LookupRoute. // Observability and routing input only — not a routing-decision substrate. diff --git a/pkg/index/index.go b/pkg/index/index.go index e227cc7c..f707d725 100644 --- a/pkg/index/index.go +++ b/pkg/index/index.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + // Package index is part of inferencecache-server: the cluster cache-state aggregator // (the CacheIndex), populated from engine KV events and queried by LookupRoute. // Observability and routing input only — not a routing-decision substrate. diff --git a/pkg/index/index_test.go b/pkg/index/index_test.go index 92968fe7..08faa7d2 100644 --- a/pkg/index/index_test.go +++ b/pkg/index/index_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package index import ( diff --git a/pkg/index/lfu_eviction_test.go b/pkg/index/lfu_eviction_test.go index 4e2f2f0d..15fae6ba 100644 --- a/pkg/index/lfu_eviction_test.go +++ b/pkg/index/lfu_eviction_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package index import ( diff --git a/pkg/index/snapshot_wire_contract_test.go b/pkg/index/snapshot_wire_contract_test.go index fcbb2311..f6db3a26 100644 --- a/pkg/index/snapshot_wire_contract_test.go +++ b/pkg/index/snapshot_wire_contract_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package index // Frozen wire-shape contract for pkg/index.Snapshot — the JSON the policy diff --git a/pkg/index/tenant_quota_test.go b/pkg/index/tenant_quota_test.go index 91638424..2262f614 100644 --- a/pkg/index/tenant_quota_test.go +++ b/pkg/index/tenant_quota_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package index import ( diff --git a/pkg/render/doc.go b/pkg/render/doc.go index 14dc1b42..e4347a39 100644 --- a/pkg/render/doc.go +++ b/pkg/render/doc.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + // Package render is the mutable-slot prompt rendering engine (the "wedge"): it turns // templated prompts into stable cache keys so a gateway's cache-aware routing matches // on real prompts. Used by inferencecache-server's RenderTemplate RPC; kept importable diff --git a/pkg/server/adapter_partition_test.go b/pkg/server/adapter_partition_test.go index 15c83c23..4525121c 100644 --- a/pkg/server/adapter_partition_test.go +++ b/pkg/server/adapter_partition_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package server import ( diff --git a/pkg/server/affinity_routing_test.go b/pkg/server/affinity_routing_test.go index 00970927..5882a759 100644 --- a/pkg/server/affinity_routing_test.go +++ b/pkg/server/affinity_routing_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package server import ( diff --git a/pkg/server/auth/audience.go b/pkg/server/auth/audience.go index d0ef67d3..3159e9a9 100644 --- a/pkg/server/auth/audience.go +++ b/pkg/server/auth/audience.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package auth // ControllerAudience is the audience identifier bound onto the projected diff --git a/pkg/server/auth/doc.go b/pkg/server/auth/doc.go index cc8dc22f..d7bff204 100644 --- a/pkg/server/auth/doc.go +++ b/pkg/server/auth/doc.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + // Package auth provides HTTP middleware that gates the policy server's // internal controller-facing endpoints (/snapshot, /policy, and /probe) on a // Kubernetes ServiceAccount bearer token. diff --git a/pkg/server/auth/integration_test.go b/pkg/server/auth/integration_test.go index afd21f15..d02ae6c4 100644 --- a/pkg/server/auth/integration_test.go +++ b/pkg/server/auth/integration_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package auth_test import ( diff --git a/pkg/server/auth/middleware.go b/pkg/server/auth/middleware.go index b36d39de..617c9464 100644 --- a/pkg/server/auth/middleware.go +++ b/pkg/server/auth/middleware.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package auth import ( diff --git a/pkg/server/auth/middleware_test.go b/pkg/server/auth/middleware_test.go index 7b3d443b..9231687e 100644 --- a/pkg/server/auth/middleware_test.go +++ b/pkg/server/auth/middleware_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package auth import ( diff --git a/pkg/server/diagnostics_test.go b/pkg/server/diagnostics_test.go index 754d7e58..eb72fdac 100644 --- a/pkg/server/diagnostics_test.go +++ b/pkg/server/diagnostics_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package server import ( diff --git a/pkg/server/doc.go b/pkg/server/doc.go index 743966e0..2273b3ea 100644 --- a/pkg/server/doc.go +++ b/pkg/server/doc.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + // Package server implements the inference-cache server binary's gRPC and HTTP // surfaces. It is an in-repository implementation package, not a supported // extension API; it remains under pkg only while the staged internal/server diff --git a/pkg/server/inferencecache_service.go b/pkg/server/inferencecache_service.go index a283b49c..19a252af 100644 --- a/pkg/server/inferencecache_service.go +++ b/pkg/server/inferencecache_service.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package server import ( diff --git a/pkg/server/lfu_credit_test.go b/pkg/server/lfu_credit_test.go index 684094cd..b5f3e2de 100644 --- a/pkg/server/lfu_credit_test.go +++ b/pkg/server/lfu_credit_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package server import ( diff --git a/pkg/server/lmcache_offload_integration_test.go b/pkg/server/lmcache_offload_integration_test.go index f7b04527..b85366ed 100644 --- a/pkg/server/lmcache_offload_integration_test.go +++ b/pkg/server/lmcache_offload_integration_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package server import ( diff --git a/pkg/server/logging.go b/pkg/server/logging.go index 0272b1d9..4afb8dfe 100644 --- a/pkg/server/logging.go +++ b/pkg/server/logging.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package server import ( diff --git a/pkg/server/logging_test.go b/pkg/server/logging_test.go index c83b09ef..e0596dac 100644 --- a/pkg/server/logging_test.go +++ b/pkg/server/logging_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package server import ( diff --git a/pkg/server/matched_tokens_floor_test.go b/pkg/server/matched_tokens_floor_test.go index 166d36e0..91ffa5f8 100644 --- a/pkg/server/matched_tokens_floor_test.go +++ b/pkg/server/matched_tokens_floor_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package server import ( diff --git a/pkg/server/metrics.go b/pkg/server/metrics.go index 0ca1f501..076c0878 100644 --- a/pkg/server/metrics.go +++ b/pkg/server/metrics.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package server import ( diff --git a/pkg/server/metrics_test.go b/pkg/server/metrics_test.go index 00e5b54d..d19d37b7 100644 --- a/pkg/server/metrics_test.go +++ b/pkg/server/metrics_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package server import ( diff --git a/pkg/server/policy.go b/pkg/server/policy.go index 22efe8ab..3a757c83 100644 --- a/pkg/server/policy.go +++ b/pkg/server/policy.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package server import ( diff --git a/pkg/server/policy_test.go b/pkg/server/policy_test.go index 41aaab4b..1217e0da 100644 --- a/pkg/server/policy_test.go +++ b/pkg/server/policy_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package server import ( diff --git a/pkg/server/probe.go b/pkg/server/probe.go index b830b9dd..4dd9c77a 100644 --- a/pkg/server/probe.go +++ b/pkg/server/probe.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package server import ( diff --git a/pkg/server/probe_test.go b/pkg/server/probe_test.go index e59e4e38..7d33b631 100644 --- a/pkg/server/probe_test.go +++ b/pkg/server/probe_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package server import ( diff --git a/pkg/server/proto/inferencecache/v1alpha1/doc.go b/pkg/server/proto/inferencecache/v1alpha1/doc.go index c9e1e6da..c1da31a7 100644 --- a/pkg/server/proto/inferencecache/v1alpha1/doc.go +++ b/pkg/server/proto/inferencecache/v1alpha1/doc.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + // Package v1alpha1 contains generated Go bindings for the public // inferencecache.v1alpha1 protobuf API. The current import path is retained // during the documented migration to gen/inferencecache/v1alpha1. diff --git a/pkg/server/proto/inferencecache/v1alpha1/inferencecache.pb.go b/pkg/server/proto/inferencecache/v1alpha1/inferencecache.pb.go index c4f330e7..fbe0e975 100644 --- a/pkg/server/proto/inferencecache/v1alpha1/inferencecache.pb.go +++ b/pkg/server/proto/inferencecache/v1alpha1/inferencecache.pb.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.36.5 diff --git a/pkg/server/proto/inferencecache/v1alpha1/inferencecache_grpc.pb.go b/pkg/server/proto/inferencecache/v1alpha1/inferencecache_grpc.pb.go index 8d6d732f..5e3833c0 100644 --- a/pkg/server/proto/inferencecache/v1alpha1/inferencecache_grpc.pb.go +++ b/pkg/server/proto/inferencecache/v1alpha1/inferencecache_grpc.pb.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.5.1 diff --git a/pkg/server/proto/inferencecache/v1alpha1/replica_stats_client_version_test.go b/pkg/server/proto/inferencecache/v1alpha1/replica_stats_client_version_test.go index a73531a5..3222dbc6 100644 --- a/pkg/server/proto/inferencecache/v1alpha1/replica_stats_client_version_test.go +++ b/pkg/server/proto/inferencecache/v1alpha1/replica_stats_client_version_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package inferencecachev1alpha1pb_test // Wire-level backward-compat coverage for the ReplicaStats.client_version diff --git a/pkg/server/route_dual_input_test.go b/pkg/server/route_dual_input_test.go index 53096d28..b608b829 100644 --- a/pkg/server/route_dual_input_test.go +++ b/pkg/server/route_dual_input_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package server import ( diff --git a/pkg/server/route_lookup_hitmiss_test.go b/pkg/server/route_lookup_hitmiss_test.go index 31cec9ff..047ce9d8 100644 --- a/pkg/server/route_lookup_hitmiss_test.go +++ b/pkg/server/route_lookup_hitmiss_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package server import ( diff --git a/pkg/server/routing_floor_response_test.go b/pkg/server/routing_floor_response_test.go index 85136e86..8a4f0c50 100644 --- a/pkg/server/routing_floor_response_test.go +++ b/pkg/server/routing_floor_response_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package server import ( diff --git a/pkg/server/routing_floor_score_test.go b/pkg/server/routing_floor_score_test.go index 0cf0f468..250eea8f 100644 --- a/pkg/server/routing_floor_score_test.go +++ b/pkg/server/routing_floor_score_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package server import ( diff --git a/pkg/server/server.go b/pkg/server/server.go index fdd24be3..0a52360f 100644 --- a/pkg/server/server.go +++ b/pkg/server/server.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package server import ( diff --git a/pkg/server/server_test.go b/pkg/server/server_test.go index af3428b0..9cff5bfd 100644 --- a/pkg/server/server_test.go +++ b/pkg/server/server_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package server import ( diff --git a/pkg/server/tenant_quota_test.go b/pkg/server/tenant_quota_test.go index 6b512412..f2fd8a6c 100644 --- a/pkg/server/tenant_quota_test.go +++ b/pkg/server/tenant_quota_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package server import ( diff --git a/pkg/server/tls.go b/pkg/server/tls.go index 46cf723a..3c8f77c3 100644 --- a/pkg/server/tls.go +++ b/pkg/server/tls.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package server import ( diff --git a/pkg/server/tls_test.go b/pkg/server/tls_test.go index a458081f..9eb866aa 100644 --- a/pkg/server/tls_test.go +++ b/pkg/server/tls_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package server import ( diff --git a/pkg/testing/doc.go b/pkg/testing/doc.go index 398a2bae..2ca7f282 100644 --- a/pkg/testing/doc.go +++ b/pkg/testing/doc.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + // Package testing provides envtest helpers used by this repository's test // suites. It is not a supported external testing API and is awaiting migration // to internal/testutil. diff --git a/pkg/testing/envtest_setup.go b/pkg/testing/envtest_setup.go index 97fa45a8..5b3f1643 100644 --- a/pkg/testing/envtest_setup.go +++ b/pkg/testing/envtest_setup.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package testing import ( diff --git a/pkg/tokenize/cgo_smg.go b/pkg/tokenize/cgo_smg.go index b2ea4523..a3b1650c 100644 --- a/pkg/tokenize/cgo_smg.go +++ b/pkg/tokenize/cgo_smg.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + //go:build smgcgo // This file is the cgo-backed Tokenizer, compiled only with the `smgcgo` build diff --git a/pkg/tokenize/cgo_smg_test.go b/pkg/tokenize/cgo_smg_test.go index 3919a06f..994fa2c9 100644 --- a/pkg/tokenize/cgo_smg_test.go +++ b/pkg/tokenize/cgo_smg_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + //go:build smgcgo package tokenize diff --git a/pkg/tokenize/new_cgo.go b/pkg/tokenize/new_cgo.go index adb1569b..6f3ea0e1 100644 --- a/pkg/tokenize/new_cgo.go +++ b/pkg/tokenize/new_cgo.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + //go:build smgcgo package tokenize diff --git a/pkg/tokenize/new_default.go b/pkg/tokenize/new_default.go index 047a40e3..324f5e80 100644 --- a/pkg/tokenize/new_default.go +++ b/pkg/tokenize/new_default.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + //go:build !smgcgo package tokenize diff --git a/pkg/tokenize/tokenize.go b/pkg/tokenize/tokenize.go index 1980f686..dd3c17f6 100644 --- a/pkg/tokenize/tokenize.go +++ b/pkg/tokenize/tokenize.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + // Package tokenize is the server-owned tokenization seam: it turns a // (model, prompt) request into engine-aligned token IDs so the lookup path can // fingerprint over the same tokens the engine caches. diff --git a/pkg/tokenize/tokenize_test.go b/pkg/tokenize/tokenize_test.go index f091b1aa..2fd2468d 100644 --- a/pkg/tokenize/tokenize_test.go +++ b/pkg/tokenize/tokenize_test.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package tokenize import ( diff --git a/pkg/version/doc.go b/pkg/version/doc.go index 977dfe48..157b8aa2 100644 --- a/pkg/version/doc.go +++ b/pkg/version/doc.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + // Package version exposes build metadata to repository binaries. It is an // implementation detail and is awaiting migration to internal/version. package version diff --git a/pkg/version/version.go b/pkg/version/version.go index 8ffc86b2..4aaef683 100644 --- a/pkg/version/version.go +++ b/pkg/version/version.go @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + package version var ( diff --git a/plugins/inferencecache.yaml b/plugins/inferencecache.yaml index db997534..18675b56 100644 --- a/plugins/inferencecache.yaml +++ b/plugins/inferencecache.yaml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + # krew plugin manifest for the inferencecache CLI. # # STATUS: PREPARED, NOT YET SUBMITTED to krew-index. The full krew publish flow diff --git a/proto/inferencecache/v1alpha1/inferencecache.proto b/proto/inferencecache/v1alpha1/inferencecache.proto index 8e7e5fa5..948b0371 100644 --- a/proto/inferencecache/v1alpha1/inferencecache.proto +++ b/proto/inferencecache/v1alpha1/inferencecache.proto @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + syntax = "proto3"; package inferencecache.v1alpha1; diff --git a/ruff.toml b/ruff.toml index 77dc75b6..0259084c 100644 --- a/ruff.toml +++ b/ruff.toml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + [lint] select = [ "B", diff --git a/rust/ictokenizer/Cargo.toml b/rust/ictokenizer/Cargo.toml index 3a27b6da..560efb38 100644 --- a/rust/ictokenizer/Cargo.toml +++ b/rust/ictokenizer/Cargo.toml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + [package] name = "ictokenizer" version = "0.1.0" diff --git a/rust/ictokenizer/src/lib.rs b/rust/ictokenizer/src/lib.rs index 6fd5c7c1..ab198473 100644 --- a/rust/ictokenizer/src/lib.rs +++ b/rust/ictokenizer/src/lib.rs @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + //! C-ABI shim over `llm-tokenizer` for the inference-cache Go server. //! //! Exposes the minimum needed to turn (model, prompt) into engine-aligned token diff --git a/site/.gitignore b/site/.gitignore index cc87aecd..36c4e1df 100644 --- a/site/.gitignore +++ b/site/.gitignore @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + public/ # Modules generated by node.js for CSS editing diff --git a/site/assets/scss/_styles_project.scss b/site/assets/scss/_styles_project.scss index 3ce0fd54..9a260aba 100644 --- a/site/assets/scss/_styles_project.scss +++ b/site/assets/scss/_styles_project.scss @@ -1,3 +1,9 @@ +/* + * SPDX-FileCopyrightText: 2026 The inference-cache Authors + * + * SPDX-License-Identifier: Apache-2.0 + */ + a { text-decoration: none; } diff --git a/site/assets/scss/_variables_project.scss b/site/assets/scss/_variables_project.scss index ad52d000..990edcf0 100644 --- a/site/assets/scss/_variables_project.scss +++ b/site/assets/scss/_variables_project.scss @@ -1,3 +1,9 @@ +/* + * SPDX-FileCopyrightText: 2026 The inference-cache Authors + * + * SPDX-License-Identifier: Apache-2.0 + */ + /* Add styles or override the theme's variables here. */ diff --git a/site/go.mod b/site/go.mod index ff71b41e..f72a9ef9 100644 --- a/site/go.mod +++ b/site/go.mod @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2026 The inference-cache Authors +// +// SPDX-License-Identifier: Apache-2.0 + module github.com/cachebox-project/inference-cache/site go 1.21 diff --git a/site/hugo.toml b/site/hugo.toml index e75e007a..f210640c 100644 --- a/site/hugo.toml +++ b/site/hugo.toml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: 2026 The inference-cache Authors +# +# SPDX-License-Identifier: Apache-2.0 + baseURL = "/" title = "inference-cache" diff --git a/site/layouts/404.html b/site/layouts/404.html index 4429eab8..1c30e57b 100644 --- a/site/layouts/404.html +++ b/site/layouts/404.html @@ -1,3 +1,9 @@ + + {{ define "main"}}