diff --git a/.github/workflows/publish-first-cohort.yml b/.github/workflows/publish-first-cohort.yml index 87c1aa6..9535a79 100644 --- a/.github/workflows/publish-first-cohort.yml +++ b/.github/workflows/publish-first-cohort.yml @@ -1,33 +1,28 @@ -name: Publish first cohort +name: Publish package release on: workflow_dispatch: inputs: release_tag: - description: Signed annotated release tag for the authorized first cohort + description: Signed annotated tag for the authorized package release required: true type: choice options: - - v0.3.0 + - v0.3.1 confirm: - description: I have configured the required registry publishers and reviewed the release notes + description: I have reviewed the release evidence, package scope, and release notes required: true type: boolean - npm_direct_token_published: - description: The authorized local direct-token publication of vyral-client is complete and ready for exact archive verification - required: true - default: false - type: boolean permissions: {} concurrency: - group: publish-first-cohort-v0.3.0 + group: publish-package-release-v0.3.1 cancel-in-progress: false jobs: validate: - name: Validate release authority + name: Validate package release authority runs-on: ubuntu-22.04 permissions: actions: read @@ -45,14 +40,12 @@ jobs: env: CONFIRM: ${{ inputs.confirm }} GITHUB_TOKEN: ${{ github.token }} - NPM_DIRECT_TOKEN_PUBLISHED: ${{ inputs.npm_direct_token_published }} RELEASE_TAG: ${{ inputs.release_tag }} run: | set -euo pipefail test "$GITHUB_REF" = "refs/heads/main" test "$CONFIRM" = "true" - test "$NPM_DIRECT_TOKEN_PUBLISHED" = "true" - test "$RELEASE_TAG" = "v0.3.0" + test "$RELEASE_TAG" = "v0.3.1" git fetch --force --tags origin test "$(git cat-file -t "refs/tags/${RELEASE_TAG}")" = "tag" source_sha="$(git rev-parse "${RELEASE_TAG}^{commit}")" @@ -71,11 +64,13 @@ jobs: printf 'source_sha=%s\n' "$source_sha" >> "$GITHUB_OUTPUT" build: - name: Build authorized artifacts + name: Build authorized package artifacts needs: validate runs-on: ubuntu-22.04 permissions: contents: read + env: + SOURCE_DATE_EPOCH: "315532800" steps: - name: Check out the authorized release commit uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 @@ -87,11 +82,6 @@ jobs: with: dotnet-version: 10.0.x - - name: Set up Node - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 - with: - node-version: 22.x - - name: Set up Python uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0 with: @@ -103,52 +93,38 @@ jobs: python -m pip install --disable-pip-version-check build==1.3.0 python3 scripts/verify-publication-cohort.py dotnet restore Vyral.sln --locked-mode - mkdir -p artifacts/publish/nuget artifacts/publish/npm artifacts/publish/pypi + mkdir -p artifacts/publish/nuget artifacts/publish/pypi for project in \ src/Vyral.Abstractions/Vyral.Abstractions.csproj \ - src/Vyral.Local/Vyral.Local.csproj \ - src/Vyral.Primitives/Vyral.Primitives.csproj \ - src/Vyral.Execution/Vyral.Execution.csproj \ - src/Vyral.Execution.Local/Vyral.Execution.Local.csproj; do + src/Vyral.Local/Vyral.Local.csproj; do dotnet pack "$project" --configuration Release --no-restore \ --output artifacts/publish/nuget done python -m build --outdir artifacts/publish/pypi runtimes/python - ( - cd clients/javascript - npm ci --ignore-scripts - npm run check - npm run typecheck - npm test - npm pack --pack-destination ../../artifacts/publish/npm - ) for package in \ - Vyral.Abstractions.0.3.0 \ - Vyral.Local.0.3.0 \ - Vyral.Primitives.0.2.0 \ - Vyral.Execution.0.2.0 \ - Vyral.Execution.Local.0.2.0; do + Vyral.Abstractions.0.3.1 \ + Vyral.Local.0.3.1; do test -s "artifacts/publish/nuget/${package}.nupkg" test -s "artifacts/publish/nuget/${package}.snupkg" done - test -s artifacts/publish/pypi/vyral-0.1.1-py3-none-any.whl - test -s artifacts/publish/pypi/vyral-0.1.1.tar.gz - test -s artifacts/publish/npm/vyral-client-0.3.0.tgz + test -s artifacts/publish/pypi/vyral-0.1.2-py3-none-any.whl + test -s artifacts/publish/pypi/vyral-0.1.2.tar.gz - name: Retain immutable publication distributions uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: - name: first-cohort-v0.3.0 + name: package-release-v0.3.1 path: artifacts/publish if-no-files-found: error - retention-days: 7 + retention-days: 30 publish-nuget: - name: Publish NuGet first cohort + name: Publish authorized NuGet packages needs: build runs-on: ubuntu-22.04 environment: name: publish-nuget + url: https://www.nuget.org/profiles/Univeracity permissions: id-token: write steps: @@ -160,7 +136,7 @@ jobs: - name: Download the authorized distributions uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 with: - name: first-cohort-v0.3.0 + name: package-release-v0.3.1 path: dist - name: Exchange the GitHub OIDC token for a short-lived NuGet key @@ -175,11 +151,8 @@ jobs: run: | set -euo pipefail for package in \ - Vyral.Abstractions.0.3.0 \ - Vyral.Local.0.3.0 \ - Vyral.Primitives.0.2.0 \ - Vyral.Execution.0.2.0 \ - Vyral.Execution.Local.0.2.0; do + Vyral.Abstractions.0.3.1 \ + Vyral.Local.0.3.1; do dotnet nuget push "dist/nuget/${package}.nupkg" \ --api-key "$NUGET_API_KEY" \ --skip-duplicate \ @@ -191,7 +164,7 @@ jobs: done publish-pypi: - name: Publish PyPI first cohort + name: Publish authorized Python runtime needs: build runs-on: ubuntu-22.04 environment: @@ -203,7 +176,7 @@ jobs: - name: Download the authorized distributions uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 with: - name: first-cohort-v0.3.0 + name: package-release-v0.3.1 path: dist - name: Publish the Python runtime with its PyPI attestation @@ -212,87 +185,26 @@ jobs: packages-dir: dist/pypi skip-existing: true - publish-npm: - name: Verify direct-token npm first cohort - needs: build + verify: + name: Verify public package availability + needs: + - publish-nuget + - publish-pypi runs-on: ubuntu-22.04 - environment: - name: publish-npm - url: https://www.npmjs.com/package/vyral-client - permissions: - contents: read + permissions: {} steps: - - name: Set up a trusted-publishing-compatible Node and npm CLI - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 - with: - node-version: "22.14.0" - registry-url: https://registry.npmjs.org - package-manager-cache: false - - - name: Install the minimum trusted-publishing npm CLI - run: | - npm install --global --ignore-scripts npm@11.5.1 - test "$(npm --version)" = "11.5.1" - - - name: Download the authorized distribution - uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 - with: - name: first-cohort-v0.3.0 - path: dist - - - name: Verify the authorized direct-token archive - working-directory: dist/npm + - name: Wait for exact registry versions run: | set -euo pipefail - expected_integrity="sha512-$(openssl dgst -sha512 -binary vyral-client-0.3.0.tgz | base64 -w 0)" - test "$(npm view vyral-client@0.3.0 version)" = "0.3.0" - test "$(npm view vyral-client@0.3.0 repository.url)" = "git+https://github.com/univeracity/vyral.git" - test "$(npm view vyral-client@0.3.0 dist.integrity)" = "$expected_integrity" - - publish-container: - name: Publish server container - needs: - - validate - - build - runs-on: ubuntu-22.04 - environment: - name: publish-container - url: https://github.com/Univeracity/vyral/pkgs/container/vyral-server - permissions: - attestations: write - contents: read - id-token: write - packages: write - steps: - - name: Check out the authorized release commit - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - ref: ${{ needs.validate.outputs.source_sha }} - - - name: Set up an attestation-capable BuildKit builder - uses: docker/setup-buildx-action@37fe631027851001ddb9b187196cc803df7f5f0e # v4.3.0 - with: - driver: docker-container - - - name: Log in to the GitHub Container Registry - uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4.6.0 - with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Build, attest, and publish the authorized server image - uses: docker/build-push-action@53b7df96c91f9c12dcc8a07bcb9ccacbed38856a # v7.3.0 - with: - context: . - push: true - sbom: true - provenance: mode=max - build-args: | - VYRAL_IMAGE_VERSION=0.3.0 - VYRAL_IMAGE_REVISION=${{ needs.validate.outputs.source_sha }} - tags: ghcr.io/univeracity/vyral-server:0.3.0 - labels: | - org.opencontainers.image.source=https://github.com/Univeracity/vyral - org.opencontainers.image.version=0.3.0 - org.opencontainers.image.revision=${{ needs.validate.outputs.source_sha }} + for attempt in {1..40}; do + nuget_abstractions="$(curl --fail --silent --show-error https://api.nuget.org/v3-flatcontainer/vyral.abstractions/index.json | jq -r '.versions[-1]')" || true + nuget_local="$(curl --fail --silent --show-error https://api.nuget.org/v3-flatcontainer/vyral.local/index.json | jq -r '.versions[-1]')" || true + pypi="$(curl --fail --silent --show-error https://pypi.org/pypi/vyral/json | jq -r '.info.version')" || true + if [[ "$nuget_abstractions" == "0.3.1" && "$nuget_local" == "0.3.1" && "$pypi" == "0.1.2" ]]; then + printf 'NuGet and PyPI expose every authorized package version.\n' >> "$GITHUB_STEP_SUMMARY" + exit 0 + fi + sleep 15 + done + echo "The authorized package versions were not all visible before the verification deadline." >&2 + exit 1 diff --git a/.github/workflows/publish-worker-container.yml b/.github/workflows/publish-worker-container.yml index 2088478..d0601ad 100644 --- a/.github/workflows/publish-worker-container.yml +++ b/.github/workflows/publish-worker-container.yml @@ -1,14 +1,14 @@ -name: Publish worker-capable server container +name: Publish server container on: workflow_dispatch: inputs: release_tag: - description: Signed server container tag for the reviewed worker-capable release + description: Signed server container tag for the reviewed release required: true type: choice options: - - server-v0.3.2 + - server-v0.3.3 confirm: description: I have reviewed the release evidence and worker capability notes required: true @@ -17,7 +17,7 @@ on: permissions: {} concurrency: - group: publish-server-container-v0.3.2 + group: publish-server-container-v0.3.3 cancel-in-progress: false jobs: @@ -45,7 +45,7 @@ jobs: set -euo pipefail test "$GITHUB_REF" = "refs/heads/main" test "$CONFIRM" = "true" - test "$RELEASE_TAG" = "server-v0.3.2" + test "$RELEASE_TAG" = "server-v0.3.3" git fetch --force --tags origin test "$(git cat-file -t "refs/tags/${RELEASE_TAG}")" = "tag" source_sha="$(git rev-parse "${RELEASE_TAG}^{commit}")" @@ -102,12 +102,12 @@ jobs: sbom: true provenance: mode=max build-args: | - VYRAL_IMAGE_VERSION=0.3.2 + VYRAL_IMAGE_VERSION=0.3.3 VYRAL_IMAGE_REVISION=${{ needs.validate.outputs.source_sha }} - tags: ghcr.io/univeracity/vyral-server:0.3.2 + tags: ghcr.io/univeracity/vyral-server:0.3.3 labels: | org.opencontainers.image.source=https://github.com/Univeracity/vyral - org.opencontainers.image.version=0.3.2 + org.opencontainers.image.version=0.3.3 org.opencontainers.image.revision=${{ needs.validate.outputs.source_sha }} - name: Qualify the exact published worker image @@ -122,6 +122,9 @@ jobs: scripts/verify-hosted-worker-container.sh \ "$image" \ artifacts/publish/hosted-worker-container.json + scripts/verify-mcp-container.sh \ + "$image" \ + artifacts/publish/mcp-container.json printf '%s\n' "$IMAGE_DIGEST" > artifacts/publish/image-digest.txt printf 'Published immutable digest: `%s`\n' "$IMAGE_DIGEST" >> "$GITHUB_STEP_SUMMARY" @@ -143,7 +146,7 @@ jobs: - name: Retain published-image evidence uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: - name: worker-container-server-v0.3.2 + name: server-container-server-v0.3.3 path: artifacts/publish if-no-files-found: error retention-days: 30 diff --git a/.github/workflows/release-integrity.yml b/.github/workflows/release-integrity.yml index 3b0a98f..a9102eb 100644 --- a/.github/workflows/release-integrity.yml +++ b/.github/workflows/release-integrity.yml @@ -148,7 +148,7 @@ jobs: docker buildx build \ --file Dockerfile \ --tag "vyral-server-mcp-qualification:${{ github.sha }}" \ - --build-arg VYRAL_IMAGE_VERSION=0.3.2 \ + --build-arg VYRAL_IMAGE_VERSION=0.3.3 \ --build-arg VYRAL_IMAGE_REVISION="${{ github.sha }}" \ --sbom=true \ --provenance=mode=max \ diff --git a/Dockerfile b/Dockerfile index ba31cf9..41301fd 100644 --- a/Dockerfile +++ b/Dockerfile @@ -18,7 +18,7 @@ RUN dotnet restore src/Vyral.Server/Vyral.Server.csproj --locked-mode --disable- FROM mcr.microsoft.com/dotnet/aspnet:10.0-noble-chiseled-extra@sha256:f5b3b2e2e548828d50e349726f51a5de001286f02c4bbde77db0dd34eb9f55ff -ARG VYRAL_IMAGE_VERSION=0.3.2 +ARG VYRAL_IMAGE_VERSION=0.3.3 ARG VYRAL_IMAGE_REVISION=local LABEL org.opencontainers.image.title="Vyral Server" \ org.opencontainers.image.description="Provider-portable records, retrieval, durable execution, and MCP server" \ diff --git a/PUBLIC-EXPORT-MANIFEST.json b/PUBLIC-EXPORT-MANIFEST.json index 71206fe..d301ac4 100644 --- a/PUBLIC-EXPORT-MANIFEST.json +++ b/PUBLIC-EXPORT-MANIFEST.json @@ -1,5 +1,5 @@ { - "fileCount": 869, + "fileCount": 972, "files": [ { "mode": "644", @@ -44,7 +44,7 @@ { "mode": "644", "path": ".github/dependabot.yml", - "sha256": "1167ead29f8a22ba41eae94ed552197921d2a4232b06fb9be3a968a8ca6aec68" + "sha256": "2a3aeccff96af72f743fba27989e0987605630c2387f82708d14c6eaab244767" }, { "mode": "644", @@ -59,7 +59,7 @@ { "mode": "644", "path": ".github/workflows/azure-live-qualification.yml", - "sha256": "c33de9c057308375ebe1a2432ce6a765da14d0ef2c315c0c90c42563af1e0035" + "sha256": "6c195fc42c2f372711153ad69bd0d71a2b2037aaca511f1b50bc86c2d3ac017b" }, { "mode": "644", @@ -69,27 +69,27 @@ { "mode": "644", "path": ".github/workflows/ci.yml", - "sha256": "f83de3c0dc25f6357051051d9e79f2f2637c545edfdea89ca31c3e8576fa2053" + "sha256": "584c39723bc2fd3727edc8124ceac497b5fb211bcc44ae93a1ce6a9af2048f9e" }, { "mode": "644", "path": ".github/workflows/codeql.yml", - "sha256": "bd340e2bee1d0065ff91f526b7da769813ea6554888247bb45797fcf9af72e66" + "sha256": "d238e8e2228b6f62d4b4a422646cf51bd78c6751cdb5bb1e6ba914187637b583" }, { "mode": "644", "path": ".github/workflows/container-security.yml", - "sha256": "6c8162e8ed8ff30bb1e29aa69f2a4f0d1745cbb80f9c24ca0654e64dc3ecba9a" + "sha256": "9a9a499f91d8e81d7d3516c2d657879d7a9f727203b8555b6a93da38bfefb0cb" }, { "mode": "644", "path": ".github/workflows/dependency-review.yml", - "sha256": "bec29a99790da6bf4d2e99ce5730716664c3435f624e331d4a760706ab114fa0" + "sha256": "eb4be0ced4a300b3849ca0315b0d434b896510cf9222fb1c62fbb02c552cbfd0" }, { "mode": "644", "path": ".github/workflows/execution-runtime-consumer.yml", - "sha256": "5f71c83524a8a8ba10d4d0a57751411537534e6ad8935fe59187909107006867" + "sha256": "68fa0dc492c0c527a94c9f549163064e07c2455a3979b730288f627c516c8c2c" }, { "mode": "644", @@ -101,10 +101,20 @@ "path": ".github/workflows/google-live-qualification.yml", "sha256": "75ae0891dd5079a3002ec3081a662406df597c536d788cbc81742630d2382b46" }, + { + "mode": "644", + "path": ".github/workflows/publish-container-security-patch.yml", + "sha256": "ed0b37be77e922a3e03d00d63961b6f3ba99a549fdb05d8fc6cefd26efe5714f" + }, { "mode": "644", "path": ".github/workflows/publish-first-cohort.yml", - "sha256": "299a4b65dfcc761552ebab89a0c35e7803b4a010cdafd35a248f5a53f38797ba" + "sha256": "e284e207093db210af427fcc0581cef2c3b9cab6285ae2628e93be1f870ee737" + }, + { + "mode": "644", + "path": ".github/workflows/publish-worker-container.yml", + "sha256": "281f8b835feb4923e46cecd47a02a6891366ddac5d838d5c3a7fd985fd35dcac" }, { "mode": "644", @@ -114,7 +124,7 @@ { "mode": "644", "path": ".github/workflows/release-integrity.yml", - "sha256": "17f40687f89cb8a367bf5c90453a3126f7ff765fb1f471029068cc5227c1adf2" + "sha256": "8c075ff1a4e9966d43d3ae5a25c0d717fa07fe5434b26898e6b40260920c306b" }, { "mode": "644", @@ -129,7 +139,7 @@ { "mode": "644", "path": ".gitignore", - "sha256": "bfbbbbbe7c513010d57d287730d5488630c979ec722173abcc6143999dd53070" + "sha256": "77adffa664f10d4c6c5e91ea95cb8205870d90cf61e9a8cace2e0df1485c4e85" }, { "mode": "644", @@ -144,12 +154,12 @@ { "mode": "644", "path": "Directory.Build.props", - "sha256": "a1c784755c5c32de9a926c8b154c6b75585c4f1dcca42d4a7767851f8fc72be9" + "sha256": "c74eace2bc73a204aa2f24bd4a23765cf3f694b7b817026a85b61c3fe4c4ef34" }, { "mode": "644", "path": "Dockerfile", - "sha256": "c6ed326377de65deb847c648f2be19beae24a643a987c83b3e99746fac423c91" + "sha256": "3867f33a3679dc66884607f353c294a2684fcdad239406a0b6004f4346df8a6d" }, { "mode": "644", @@ -159,7 +169,7 @@ { "mode": "644", "path": "README.md", - "sha256": "cf48f150db20b3a4798fd241895438771620298b0a57aa29ff5e26dead44f1ab" + "sha256": "32b80033074bede01d9e3d493f380441075ed65034ae4d25a9e3b65cb70ded73" }, { "mode": "644", @@ -174,7 +184,7 @@ { "mode": "644", "path": "THIRD-PARTY-NOTICES.md", - "sha256": "7ab8700ff51da763fa26185f87f50db986a8594307a3f0a0d20f62053b173e90" + "sha256": "9f963170de16973464f5052318cb27eff73f61716a6ee86ea8455675cb37f893" }, { "mode": "644", @@ -184,7 +194,7 @@ { "mode": "644", "path": "Vyral.sln", - "sha256": "76bb1946205a0e4e4f02ee5ce5889044a359b5a7e6d416c1a3bc28730997dde3" + "sha256": "ed43e903ff3b5ffb8d1fb37809f240bb685084080b65ce5dd11c46472b4a21df" }, { "mode": "644", @@ -359,7 +369,7 @@ { "mode": "644", "path": "conformance/runtime/v1/manifest.json", - "sha256": "2082331de12089b8696f686e38bea8e2338642b7fb3458b7651f17d805c4cfc4" + "sha256": "5e84ba62986c5bd8e59489e56d7d73e022a0f82ca4e89f15fa4c99011232930d" }, { "mode": "644", @@ -416,6 +426,11 @@ "path": "conformance/runtime/v1/scenarios/goldens/rag-ingestion-plan.json", "sha256": "50c1dbc3427cd44b95c5a3c64c6c81d5136e4d9bce8efd2ef5adcad967603f56" }, + { + "mode": "644", + "path": "conformance/runtime/v1/scenarios/goldens/record-search-projection-generation.json", + "sha256": "98e7a37d649b8008d29118a8cfe51c1ca3a178e58c3a602145717fb26fd8f0ca" + }, { "mode": "644", "path": "conformance/runtime/v1/scenarios/records/core-crud.json", @@ -426,6 +441,11 @@ "path": "conformance/runtime/v1/scenarios/records/query-semantics.json", "sha256": "08fcbb848f1738c5404c2ceae926a753b6ed28a5c943d7394224818eaa34be7b" }, + { + "mode": "644", + "path": "conformance/runtime/v1/scenarios/retrieval/generation-bound-lifecycle.json", + "sha256": "7a5433eb745637004155322a76abbb0a5eaf6cf26148b7e18397c1e26c194875" + }, { "mode": "644", "path": "contracts/public-sdk-surface.json", @@ -444,7 +464,7 @@ { "mode": "644", "path": "deploy/README.md", - "sha256": "c8ef0681b7901122baad204d9dcade5029ac0caa4f84175280cc4eaaa301c488" + "sha256": "899ac68346e54f7e8175d71318cb8b12d1c397f6470e8e00c1280b53ce395005" }, { "mode": "644", @@ -494,7 +514,12 @@ { "mode": "644", "path": "deploy/google-cloud-run.env.example", - "sha256": "a40e15fa8d786103a7b46ede9a946c403400c74d8aed7e223e67e3bb07420bb8" + "sha256": "5756afbe3776f0257914b548c90132d695fe9c040e376c6fe14a7d3d97038fa1" + }, + { + "mode": "644", + "path": "deploy/google-hosted-worker.env.example", + "sha256": "7eb76ae85c124e072481b32ba44ef9ce5c273da8ea3b56eb8758450b4a64826a" }, { "mode": "755", @@ -504,7 +529,7 @@ { "mode": "755", "path": "deploy/preflight-google-execution.sh", - "sha256": "2ebcc6f06f7de3b9d35a4ae49d1e5d9d0750ee8dca9c3511b7cac6b88b7cf833" + "sha256": "4e3f3657c537b2091aabf385a9441983d270726a97191ab7d26479bf2cf3b908" }, { "mode": "755", @@ -599,27 +624,42 @@ { "mode": "644", "path": "docs/README.md", - "sha256": "00f4c5c0e3725214931099e8fc37f9e9e6b99d7942a7f9e498ed38296a3f50af" + "sha256": "d5fc8128408a0c3dcac3b1a5975a6cd3eaa1c7222ba3ae10aa703f776d0d250f" }, { "mode": "644", "path": "docs/assets/vyral-logo-50.png", "sha256": "e16d114eca77df19bd7ba81100b2725286de8f84e49ecf57c3736a82cb4e3ed9" }, + { + "mode": "644", + "path": "docs/assets/vyral-portability-proof-static.png", + "sha256": "e4a890ca95e39a11de1c2196b5377ecc8f19d16ca5d0f7ced7e2c884229eae51" + }, + { + "mode": "644", + "path": "docs/assets/vyral-portability-proof.png", + "sha256": "0ed72330abbcb57c7b4e64ad77517608c97767b954925c3aa197256eff5b3895" + }, { "mode": "644", "path": "docs/concepts/canonical-store.md", "sha256": "acb551738cf50c1faf44fbbb7dc03fa612a7622228968665368a59d223efaf11" }, + { + "mode": "644", + "path": "docs/concepts/generation-bound-retrieval.md", + "sha256": "3c7e0d801b9c5a98864fcb3b92992d38df8e12c9eabbcd7654d2e06e24d11b8b" + }, { "mode": "644", "path": "docs/contributing/adapter-contributor.md", - "sha256": "45e2638bd0ee2b54b4f9eb94c4074bed7e206de40a758ed2f8bab57338bd8f93" + "sha256": "d801627a63092585807480c05c08e048b40f53dc13e2236bc84b3319ddfbb7f1" }, { "mode": "644", "path": "docs/guides/consumer-handoff.md", - "sha256": "ff99f0a7a52f73cdb827a046e61f00fe0cedb9415c717d8038e87ed954bad33e" + "sha256": "b70770e5be45b6fd87d4f6c4cdb50753d0e40ec7eceea72d2e77c1ac70e62225" }, { "mode": "644", @@ -649,7 +689,7 @@ { "mode": "644", "path": "docs/maintainers/releasing.md", - "sha256": "92c752ff86622eed85574f9a9b2539e2e2a79fcf5502cdd7edb9874bbba9f4a4" + "sha256": "7beb84a183f16ba8863e01abf859a00e32f8c452fd731b09e48c60d756e76698" }, { "mode": "644", @@ -659,7 +699,7 @@ { "mode": "644", "path": "docs/reference/stability.md", - "sha256": "74965d1db6728637991441f4af0da9b22320be8aa791ebc45bb057c0e67ebc59" + "sha256": "9b51cc0c4a6a88f56cd10fbf9c2f7a9c394095b9444e9ecb6b184c40bb28cb02" }, { "mode": "644", @@ -726,6 +766,11 @@ "path": "examples/python/stateless_mcp_round_robin.py", "sha256": "f7226842b8a942ca6e52bd6d5241e11e51737dd58482757a44fcb8a2ebd5f4df" }, + { + "mode": "644", + "path": "packaging/container-security-release.json", + "sha256": "e70377e5f3fa9a2b9cc60ed17c9559ef5a641e27ff37eef5a28216002b234bb3" + }, { "mode": "644", "path": "packaging/nuget/README.md", @@ -734,12 +779,17 @@ { "mode": "644", "path": "packaging/publication-cohort.json", - "sha256": "e8f6e44324df4798f5f04559e567c6f2fe57f2f6ed1ef45eb4b48008cb282530" + "sha256": "7cec489e1cceace8d88a643456e1df22df527d9ca138baaa3ed70119c29dc908" + }, + { + "mode": "644", + "path": "packaging/worker-container-release.json", + "sha256": "686a4e17a593cbea0618bc47d6644dea4ee5a5e17b37094ab925d258b022f37a" }, { "mode": "644", "path": "qualification/README.md", - "sha256": "2867f510497d913be49e091563351ae492879cf1d4179ba78995186214352b69" + "sha256": "d17a7d8d4349d5500d47bc0cf914558e4687edadbcb3306e56a356f8db386df3" }, { "mode": "644", @@ -749,7 +799,17 @@ { "mode": "644", "path": "qualification/adapter-qualification.schema.json", - "sha256": "204377d9fd8f57dd6b457a340f27fd55408c8c502a7f0ba6a293ed4201c6e8d7" + "sha256": "71b90464e7bc237e7d871f95788f2c75ea93398a6234c8e5ecc974a9e9f38dfc" + }, + { + "mode": "644", + "path": "qualification/retrieval-projection-qualification.json", + "sha256": "4ec5743de99f8e475471a529df4264ea18d60efcacad70aa2ec380ac2a9b56e5" + }, + { + "mode": "644", + "path": "qualification/retrieval-projection-qualification.schema.json", + "sha256": "79ac2ce45b9dfdc0311c82bd6d657db74ba7b33cb9ded16aa1e26ea6a7a5ebe5" }, { "mode": "644", @@ -759,7 +819,7 @@ { "mode": "644", "path": "runtimes/python/README.md", - "sha256": "953fb3073e6d6d5c7db698a24971c94d0d7573c6d724c25dd12b6f9b6971ec18" + "sha256": "27b8c5b49e891c22078d1e463cbdd22eb2df116c416125ccd1b4d9cbdc14f85d" }, { "mode": "644", @@ -779,12 +839,22 @@ { "mode": "644", "path": "runtimes/python/pyproject.toml", - "sha256": "28b292a7ecf9c14afc46d4a90a00bd67d1072406716daa16e02be44f0ba41b3e" + "sha256": "883f9eee8a1a63ca9c910bf17a258f7ccb8964f58646d815a2a76fc5c5501427" + }, + { + "mode": "644", + "path": "runtimes/python/requirements-server.in", + "sha256": "51c2696ac9e9187a79a61873f99118c46f3f4015eb1171327ebecc746454afa2" + }, + { + "mode": "644", + "path": "runtimes/python/requirements-server.lock", + "sha256": "8be06ccb8250e735e73079dd1039f88b9540fba6239f44a678c54f4e9a4e6c57" }, { "mode": "644", "path": "runtimes/python/src/vyral_runtime/__init__.py", - "sha256": "53bee66f10feda8414074d167efbf24657256b722659a3eb0686a04f755b0125" + "sha256": "9ca26a387622efdf3db5965b5845a962e428f8eb63b9f9a47f6a017fa744dfe2" }, { "mode": "644", @@ -799,7 +869,7 @@ { "mode": "644", "path": "runtimes/python/src/vyral_runtime/_conformance/runtime/v1/manifest.json", - "sha256": "2082331de12089b8696f686e38bea8e2338642b7fb3458b7651f17d805c4cfc4" + "sha256": "5e84ba62986c5bd8e59489e56d7d73e022a0f82ca4e89f15fa4c99011232930d" }, { "mode": "644", @@ -856,6 +926,11 @@ "path": "runtimes/python/src/vyral_runtime/_conformance/runtime/v1/scenarios/goldens/rag-ingestion-plan.json", "sha256": "50c1dbc3427cd44b95c5a3c64c6c81d5136e4d9bce8efd2ef5adcad967603f56" }, + { + "mode": "644", + "path": "runtimes/python/src/vyral_runtime/_conformance/runtime/v1/scenarios/goldens/record-search-projection-generation.json", + "sha256": "98e7a37d649b8008d29118a8cfe51c1ca3a178e58c3a602145717fb26fd8f0ca" + }, { "mode": "644", "path": "runtimes/python/src/vyral_runtime/_conformance/runtime/v1/scenarios/records/core-crud.json", @@ -866,6 +941,11 @@ "path": "runtimes/python/src/vyral_runtime/_conformance/runtime/v1/scenarios/records/query-semantics.json", "sha256": "08fcbb848f1738c5404c2ceae926a753b6ed28a5c943d7394224818eaa34be7b" }, + { + "mode": "644", + "path": "runtimes/python/src/vyral_runtime/_conformance/runtime/v1/scenarios/retrieval/generation-bound-lifecycle.json", + "sha256": "7a5433eb745637004155322a76abbb0a5eaf6cf26148b7e18397c1e26c194875" + }, { "mode": "644", "path": "runtimes/python/src/vyral_runtime/_contracts/__init__.py", @@ -904,7 +984,7 @@ { "mode": "644", "path": "runtimes/python/src/vyral_runtime/_version.py", - "sha256": "49595c56327946147ea38011f790213aea76c9c05835e7ba974937b7f0c85c8c" + "sha256": "5e27ee39e404e4f4bbe2433bcb2288046a26e95fe7715ac1595945bdb3ec797f" }, { "mode": "644", @@ -944,7 +1024,7 @@ { "mode": "644", "path": "runtimes/python/src/vyral_runtime/conformance.py", - "sha256": "f91c6058ca426fe5809ccd49771b16b3b86e9aa8a35c3615fbc3b3926589b0e9" + "sha256": "584f8d8a0e8b8870efd22aabe82ce92c507aaf505feb13f004f9ccaad941d135" }, { "mode": "644", @@ -1184,7 +1264,7 @@ { "mode": "644", "path": "runtimes/python/src/vyral_runtime/profiles.py", - "sha256": "8fc5b553ebc823eadb76a2a789f247811df895abc9800b509b5875d8f16ffb5f" + "sha256": "54b536a5942de4020cf6cd431690ef4bc4a2fca75ceff94053bc6f3bcc4f53a9" }, { "mode": "644", @@ -1319,7 +1399,7 @@ { "mode": "644", "path": "runtimes/python/tests/test_host_cli.py", - "sha256": "7103eb141f5d3003e4244c52578bf758e02da1f49785779c3cef7209527abc81" + "sha256": "1345a4c9c08a15d69744edc8784ef4301bcaa776c201b83bc5fb33743217978e" }, { "mode": "644", @@ -1384,7 +1464,7 @@ { "mode": "644", "path": "runtimes/python/tests/test_runtime.py", - "sha256": "d236c03fd298d5bec477df99f524dbd2d3f0b95978a68f21a5a487a0872217c8" + "sha256": "a56fccabccf85cc3671ebaa627b0fb01ce184877d2ef3d9ddf81652ffd47442f" }, { "mode": "644", @@ -1429,7 +1509,12 @@ { "mode": "644", "path": "samples/Vyral.CanonicalProjectionStarter/Vyral.CanonicalProjectionStarter.csproj", - "sha256": "a050649f62e93ce495f5486e6edcaa4751b5a53169cd95427beba0fbb21ad273" + "sha256": "a2bdf2bec9b43dc1218abae8b40f67bdb8e9b158aa085bd76fa05f67a6e865e2" + }, + { + "mode": "644", + "path": "samples/Vyral.CanonicalProjectionStarter/packages.lock.json", + "sha256": "7717b890bd537ad066cbf32465a2281be9c4926ef3bffe7838e850f686c669fa" }, { "mode": "644", @@ -1449,7 +1534,7 @@ { "mode": "644", "path": "samples/Vyral.Execution.AzureDurableFunctionsSmoke/Vyral.Execution.AzureDurableFunctionsSmoke.csproj", - "sha256": "92a491d9effd6ad26f46a78149faaf565f655a1a81b416e7e573b732ce370ef6" + "sha256": "e699cb0e132318d6ba6a39d35bd3c4a122ffa38a18faaf95de97b70fe2e1db3e" }, { "mode": "644", @@ -1461,6 +1546,11 @@ "path": "samples/Vyral.Execution.AzureDurableFunctionsSmoke/local.settings.sample.json", "sha256": "9465b0eff9ff715be5d459fbef1aa78ba3602bb9228ff59bb056b7f261e1582f" }, + { + "mode": "644", + "path": "samples/Vyral.Execution.AzureDurableFunctionsSmoke/packages.lock.json", + "sha256": "62b09ebbf326d5d8850845843d51e59c9d6f29641eae68e4542e792cc816d176" + }, { "mode": "644", "path": "samples/Vyral.Execution.AzureDurableLocalHost/README.md", @@ -1491,6 +1581,11 @@ "path": "samples/Vyral.Execution.LocalSample/Vyral.Execution.LocalSample.csproj", "sha256": "84369f3c200cd13c467b7f831ba1885bf02b22f94d950d15b7fa342eadf7a1ed" }, + { + "mode": "644", + "path": "samples/Vyral.Execution.LocalSample/packages.lock.json", + "sha256": "9026227513b619ba85bba17faa7a2a8c97b562ef7bfc336e5fa3cdbba60c559f" + }, { "mode": "644", "path": "samples/Vyral.Execution.PackageConsumerTemplate/Program.cs", @@ -1521,6 +1616,11 @@ "path": "samples/Vyral.Execution.TemporalSample/Vyral.Execution.TemporalSample.csproj", "sha256": "e79378432c68a7fea9098710aabd60e3f0923c8a77aa0cf6be209c70d953da90" }, + { + "mode": "644", + "path": "samples/Vyral.Execution.TemporalSample/packages.lock.json", + "sha256": "f36749c126d8bce278a70a0cc9d3c7970f7cf03c2fcec0b8b37825fdc31340fd" + }, { "mode": "644", "path": "scripts/audit-github-launch-controls.py", @@ -1546,6 +1646,11 @@ "path": "scripts/classify-ci-changes.py", "sha256": "a6a78371d047e30aa05e24bad1fe75a9899a4f7b663693a27772a5d88f3575a5" }, + { + "mode": "644", + "path": "scripts/compute-source-tree-evidence.py", + "sha256": "5386da0f7e8c0f02f5ba2aa89a787b3f10640abeca60066d9c4f1d9ff7b54eb4" + }, { "mode": "755", "path": "scripts/download-benchmark-onnx-models.sh", @@ -1559,12 +1664,17 @@ { "mode": "755", "path": "scripts/export-public-tree.py", - "sha256": "17d010b81f2a31910bb770b324a11856d3910b5fa6e2cfc3f37b6548e77400c8" + "sha256": "3db44b330349d5423010e9e4702dc7707ffd72969863b3f5a7725fd7776ce29e" }, { "mode": "755", "path": "scripts/generate-adapter-qualification.sh", - "sha256": "54ab81b3d042252649ed8d01d900fb6280e66f8bb62a68595a7e12578e0a8258" + "sha256": "00b8aef37e31e7a255b3568863647b345ea4b40843b32b6383e9c73ea0daeda7" + }, + { + "mode": "755", + "path": "scripts/generate-readme-portability-proof.py", + "sha256": "ebbdf4f89f74fc7a450c9544706387008223ad05071a335a7574d9606c6c7f02" }, { "mode": "644", @@ -1579,7 +1689,7 @@ { "mode": "755", "path": "scripts/render-adapter-qualification.py", - "sha256": "9438b0b49becaeafa842ce2a7558706f915a74c9de7c5be4333ea6c51186aa05" + "sha256": "831f9b279571ba3cff3d2c89628b031b9e67f19ce29c01a86ffeea57129e96c1" }, { "mode": "755", @@ -1681,6 +1791,11 @@ "path": "scripts/test-classify-ci-changes.py", "sha256": "36897f07a9e39b058d6bb4b75b0c26d9d92af1cbca9d85726c1271063823aaa2" }, + { + "mode": "644", + "path": "scripts/test-compute-source-tree-evidence.py", + "sha256": "87ff0213151a87cea51e58850f7eb60fce207ad96575ff53ddcfa19e6e6d7486" + }, { "mode": "644", "path": "scripts/test-export-public-tree.py", @@ -1689,12 +1804,12 @@ { "mode": "755", "path": "scripts/test-generate-adapter-qualification.sh", - "sha256": "f456ddb49a39844052be20a5096c2c5ea0779f98db6486cdbafceb3642237aa3" + "sha256": "8b5884df5cd60f256387785a10ecb033cce7152bbec24f8de5c410d73aa28166" }, { "mode": "644", "path": "scripts/test-python-runtime-platform-matrix.py", - "sha256": "aac7fe630798498481afc5ba0ee7732ab578832a84399ebd27ffb84bd6804b7d" + "sha256": "16a2df09df205bab99a1a47bb538c334093ee8a09cde8f497a245699f73ff96e" }, { "mode": "755", @@ -1739,7 +1854,7 @@ { "mode": "755", "path": "scripts/test-validate-canonical-mysql-benchmark-report.sh", - "sha256": "a1dad72b1c39304d6b8fb15f5222203b5dd2209ddb5878458e199393eb2a9df0" + "sha256": "5069a2a8d4bfe9445cf92eeb9312641b5dd01a096c29b0eab0e0b6ec4659cad3" }, { "mode": "755", @@ -1756,6 +1871,11 @@ "path": "scripts/test-verify-oci-image-identity.py", "sha256": "dd9b14fc6c1e01c03f8e2c179484dc6513b2bfcf72e48658fe1591ade2acfa72" }, + { + "mode": "644", + "path": "scripts/test-verify-retrieval-projection-qualification.py", + "sha256": "d451c0babd7ea5509e188820714d7ab9ed2205b2b239fda4da18fe25d288bceb" + }, { "mode": "755", "path": "scripts/validate-aws-execution-live.sh", @@ -1789,7 +1909,7 @@ { "mode": "755", "path": "scripts/validate-canonical-mysql-benchmark-report.sh", - "sha256": "ff42316c8c9fe1ba9444632413c00930e8180e5237e5953e69b181cdfcc172ae" + "sha256": "a4d7a74af130aa93f42325125af1272820bdc6ae6cbdb35ad7b420f121d3a789" }, { "mode": "755", @@ -1804,7 +1924,7 @@ { "mode": "755", "path": "scripts/validate-execution-runtime-package-consumer.sh", - "sha256": "60e475cc8c504b71fc67e9fd72e2bc94e6268002d80b4e68aeac2600b2843b97" + "sha256": "5bfcecc33891e5977c67e9cc0a8131d448af09df6468eb658af4af43eb815563" }, { "mode": "755", @@ -1851,6 +1971,11 @@ "path": "scripts/verify-azure-durable-package-graph.py", "sha256": "5f0aba62417ed3a46d88dea75cebb98c4eda3755940d2ecbbe2e66e08992d984" }, + { + "mode": "644", + "path": "scripts/verify-container-security-release.py", + "sha256": "a34272ddc0b00eaf6cf3b682795cc2cd99983652b6d6c581af743711e5f31430" + }, { "mode": "755", "path": "scripts/verify-execution-smoke-container.sh", @@ -1861,6 +1986,11 @@ "path": "scripts/verify-fresh-developer-path.sh", "sha256": "86dd17d563f72ae048928f9b081eee2903ef8d59e13c3dd93f2cf1b9cb5dfe1c" }, + { + "mode": "755", + "path": "scripts/verify-hosted-worker-container.sh", + "sha256": "6e833ffbc3c7ae356fe8e5ddd3058469574278960d94be6694b983a24715d0c7" + }, { "mode": "755", "path": "scripts/verify-lexical-http-quickstarts.sh", @@ -1879,7 +2009,7 @@ { "mode": "755", "path": "scripts/verify-mcp-container.sh", - "sha256": "efd6d368b6c7953fc3886f1eb96afd5e7fc1aaec6788a2f66465d9b806d93ece" + "sha256": "2c0dafe8ab6da67e08345ce69b2c8c615d25c4683b98aaa73e76878a33d979a6" }, { "mode": "644", @@ -1894,7 +2024,7 @@ { "mode": "755", "path": "scripts/verify-pr-release-boundary.sh", - "sha256": "f22ee780b9f017d7a75c71e39b03fcf801db4e94c0cfe0b9860b4c1d9c114e19" + "sha256": "7cf7e12c129a93e8d84a9857b1ee74ac4b79873f513f8c6f3a44771c275a7605" }, { "mode": "644", @@ -1912,14 +2042,14 @@ "sha256": "342889e432211f89016bc3cdb0770140e531f4c12c120fded0a5fb4fd4a60aea" }, { - "mode": "644", + "mode": "755", "path": "scripts/verify-publication-cohort.py", - "sha256": "f7e4768131816f33044d891f55c8597de7e1ccccc500787a798f4db55ad5b429" + "sha256": "ca8798ee81d9fa139dfd04546343fee43db68d42e0aa0e50d6ca0d289c5387ac" }, { "mode": "644", "path": "scripts/verify-publication-policy.py", - "sha256": "abaadfd4d853db8b1e2cc41917fc8a07f47a3a8ac27ab81cf34a27f81d6ca235" + "sha256": "fd5c8afd68d89d9e0d4ea2cb90473d193137f517042823976939808b2df6a9d4" }, { "mode": "755", @@ -1954,7 +2084,7 @@ { "mode": "755", "path": "scripts/verify-python-runtime-install.py", - "sha256": "0e707ece4586fc9ca2723bc248a5200aafeaa0323ed660cbeb2ffb89824df5ca" + "sha256": "3c436e396f97163025b1154688c64c2f8b739e4035becebb517f21455cd564c0" }, { "mode": "755", @@ -1979,12 +2109,22 @@ { "mode": "755", "path": "scripts/verify-python-runtime.sh", - "sha256": "bb4288dd6ff53a5d89ab3055a143375740b94843011c523971659c2e6b2a7889" + "sha256": "071bac6af70e0a6b0efddd70d55b6559ee38b7c937cc9e9d473c0f5b783fffed" + }, + { + "mode": "644", + "path": "scripts/verify-python-server-lock.py", + "sha256": "25bb6c4a5bba27291f9659aee05ef8519bc6e5dee7faf1868c33c09cfb6e8f65" }, { "mode": "755", "path": "scripts/verify-release-artifacts.sh", - "sha256": "e6409d656e5f12aa2bbd7469a4f66080af8e160128266a5e81210dffc2970d31" + "sha256": "7ef264829aec76f125dd1201defee7e04161292ac0075088b21a60fc90d2353a" + }, + { + "mode": "644", + "path": "scripts/verify-retrieval-projection-qualification.py", + "sha256": "dc1706dc588d95cf5694fb5abade931d8127ec59a9e6d2ab31d7b3796ca80e28" }, { "mode": "755", @@ -1994,7 +2134,7 @@ { "mode": "755", "path": "scripts/verify-runtime-conformance.py", - "sha256": "14f4e46a8093804e522982f980d474441ce3829413cbb7b6923bddb7fac5764d" + "sha256": "eba519b668260f9e9b8b08a3a6924b0279fd0207fdd2cf18ea69e82a7216cb30" }, { "mode": "644", @@ -2004,7 +2144,17 @@ { "mode": "755", "path": "scripts/verify-version-policy.py", - "sha256": "d634def4195ccaab665bf076925d450422bf8869212000e62de0f488000ad9a3" + "sha256": "1626ad749fb25fa11e4a7c4f66d66435b4e09750822c3b41920fa9435cedcf5c" + }, + { + "mode": "755", + "path": "scripts/verify-worker-container-release.py", + "sha256": "a34349c9427f7a234074bd4128a803094b0aabbbe35375218e6eb6bf2c1fbe72" + }, + { + "mode": "755", + "path": "scripts/verify-worker-r2-generation-projection.py", + "sha256": "26a17f0e48517fe6210f4b86b30770698fda3cb8111a783b3c7eda5adef648c2" }, { "mode": "755", @@ -2026,11 +2176,21 @@ "path": "src/Vyral.Abstractions/Interfaces/CanonicalStorePreflightExtensions.cs", "sha256": "02aab2396b67b7710491926cc99b519bc4aea933a9d1b75ebdc2325d7bb03da3" }, + { + "mode": "644", + "path": "src/Vyral.Abstractions/Interfaces/ContentAddressedObjectStoreExtensions.cs", + "sha256": "4f18eaedf6ebdeb2aded9497bca320df208c984b7dbe6781b7505f9c594bfc0d" + }, { "mode": "644", "path": "src/Vyral.Abstractions/Interfaces/EvidenceBriefStoreExtensions.cs", "sha256": "7b2f682fa366225034eac98af485e7a42bed0a715db5775b1c9be10358859e01" }, + { + "mode": "644", + "path": "src/Vyral.Abstractions/Interfaces/GenerationBoundRecordSearchProjectionExtensions.cs", + "sha256": "5a51dc4c0a186634dd3fdf91fdaefa1b6b8042fc245ef4a267ba3e8b5c3fa194" + }, { "mode": "644", "path": "src/Vyral.Abstractions/Interfaces/GraphCollectionStoreExtensions.cs", @@ -2056,6 +2216,11 @@ "path": "src/Vyral.Abstractions/Interfaces/IEmbeddingProviderFactory.cs", "sha256": "1b711cb3d051fb452029b9a24010feee2c74db8f2bb08787ebf0b2c0fedb357a" }, + { + "mode": "644", + "path": "src/Vyral.Abstractions/Interfaces/IGenerationBoundRecordSearchProjection.cs", + "sha256": "1cd8dbc03577cadbe057f6c42cabddd1ddd3dae4920be2c3e1d206a22121341c" + }, { "mode": "644", "path": "src/Vyral.Abstractions/Interfaces/IObjectStore.cs", @@ -2086,6 +2251,11 @@ "path": "src/Vyral.Abstractions/Interfaces/IRecordSearchProjection.cs", "sha256": "b2248f3a68c35d2d0db2f0ac663936e983dac5b61ff888e9fd131db8f052d3cc" }, + { + "mode": "644", + "path": "src/Vyral.Abstractions/Interfaces/IRecordSearchProjectionGenerationBuilder.cs", + "sha256": "14e1314e45514165dbe7c17d33a7544a17ab041fed6c4c746c66704358878986" + }, { "mode": "644", "path": "src/Vyral.Abstractions/Interfaces/IRerankingService.cs", @@ -2094,7 +2264,12 @@ { "mode": "644", "path": "src/Vyral.Abstractions/Interfaces/IRetrievalEvaluationService.cs", - "sha256": "0a81856a4c907cabdca68cd14989bbcfe1d8b84300d9695b246eda7588c943a5" + "sha256": "27020f4ff7c0511b664eb7cf79b5a6fde5d3f74cd6fdab06633c2fa4b7281466" + }, + { + "mode": "644", + "path": "src/Vyral.Abstractions/Interfaces/IRetrievalEvaluationTargetResolver.cs", + "sha256": "c827e586ffa2d1962f1de2f00d86c13b32bb49cff34978127d4532c1478f5602" }, { "mode": "644", @@ -2166,6 +2341,11 @@ "path": "src/Vyral.Abstractions/Models/FilterValueNormalizer.cs", "sha256": "28a7cd1ae91d3b4474272781b5facf41e584b84048b8f59911a9045354bf9be6" }, + { + "mode": "644", + "path": "src/Vyral.Abstractions/Models/GenerationBoundRecordSearchProjectionModels.cs", + "sha256": "177abcedd4b0239e87ce7c295ce06ff690cdfd7f423d7553eef3219a24784c07" + }, { "mode": "644", "path": "src/Vyral.Abstractions/Models/GraphModels.cs", @@ -2184,7 +2364,7 @@ { "mode": "644", "path": "src/Vyral.Abstractions/Models/ObjectStoreModels.cs", - "sha256": "4b76c6140ae97d80751ba515afc712e360cc3b1aab1b9043eb4ad3e11be57ed3" + "sha256": "8a667acb9a62de362ae179ad0d03ee7bee5959434d50abf1ad7bcba81b6acffc" }, { "mode": "644", @@ -2254,7 +2434,7 @@ { "mode": "644", "path": "src/Vyral.Abstractions/Vyral.Abstractions.csproj", - "sha256": "5380cae0744ed68e6137d8751368c2c20f4614d2f7f88aa135d2c56fe43d681f" + "sha256": "66935e20305c5cf73204430aab10c988c6075d461d8fdb4e9fd49807cc2946ff" }, { "mode": "644", @@ -2266,6 +2446,21 @@ "path": "src/Vyral.Abstractions/contracts/fixtures/evidence-brief.v1.valid.json", "sha256": "422ceacdf58b986011f5f356727d59c045e0d82b4bd2f4488e1a4da8bcc6c98a" }, + { + "mode": "644", + "path": "src/Vyral.Abstractions/contracts/fixtures/record-search-projection-generation.v1.valid.json", + "sha256": "9c9fdfc652e17cb5bc660bb85e42898da73592bd549cf17e787183f07bc5ba50" + }, + { + "mode": "644", + "path": "src/Vyral.Abstractions/contracts/record-search-projection-generation.v1.schema.json", + "sha256": "bfe20a3c03d3f7f744bdbfd84d45e091485fd46bda245b9368a48299cbaae0e2" + }, + { + "mode": "644", + "path": "src/Vyral.Abstractions/packages.lock.json", + "sha256": "d02176e80b6628982ee20a6e4dc790588e205cef43aea5a86dfd5daae440b71d" + }, { "mode": "644", "path": "src/Vyral.Aws/DynamoDbRecordCollectionStore.cs", @@ -2276,15 +2471,20 @@ "path": "src/Vyral.Aws/DynamoDbStreamsRecordProjectionConsumer.cs", "sha256": "5fac930da91826aab9abf709f57a7757dea5520f485b25bfc2effa3ccbf5abe8" }, + { + "mode": "644", + "path": "src/Vyral.Aws/OpenSearchGenerationBoundRecordSearchProjection.cs", + "sha256": "b9fbd3d2c7004b9cd3e7c99515bd7d748cb3cf92f13e3bc2e80b318ab5935c38" + }, { "mode": "644", "path": "src/Vyral.Aws/OpenSearchRecordSearchProjection.cs", - "sha256": "eb20e8309c206fb8578b040967d2aa6b409a23aefc7e4bec3c46aed84c1f75b4" + "sha256": "d4e699dd390451dfeaf2d16d23fd3e64687c38cbc0d820fe8cb1988d416e9e8c" }, { "mode": "644", "path": "src/Vyral.Aws/OpenSearchRecordSearchProjectionOptions.cs", - "sha256": "0e22aaf3bd19ad57e1d58d18e42fc6437852aa2221d11a483ad01bda49488f27" + "sha256": "97d8e7f56b35c5aeef8e032e9eeaf29101820c64729de6f42f110f8a67c9a4fa" }, { "mode": "644", @@ -2294,7 +2494,7 @@ { "mode": "644", "path": "src/Vyral.Aws/README.md", - "sha256": "b2c235929b5f3409eda6b9afbc29b5b6b603599e6e28a43c44c630a617aa738d" + "sha256": "e6844a9a85057ede223bd2bebdbd457b41833f543f1e9a5570b91ed68bc2d268" }, { "mode": "644", @@ -2304,7 +2504,12 @@ { "mode": "644", "path": "src/Vyral.Aws/Vyral.Aws.csproj", - "sha256": "cf93b9886ac7a9a86b4bbf719c162291c9f3c314ab5dfc82045939cd74bee631" + "sha256": "e41ed1987554879ce73bee785c015f8987aab53c0c7bbece5062f8cb8dd7b4ab" + }, + { + "mode": "644", + "path": "src/Vyral.Aws/packages.lock.json", + "sha256": "8ab243ae8b2defffb8c3aa223404f945992d9fe4b6e0f7d149d14feb61444673" }, { "mode": "644", @@ -2339,12 +2544,17 @@ { "mode": "644", "path": "src/Vyral.Azure/Vyral.Azure.csproj", - "sha256": "4c2ff57eb392d50daea70d69597928a5695ac6974021ba9ee88c2296336a71ea" + "sha256": "7d8701c750392e5e176ab1555591beedeb31dee9e59e38e0d21405aacb06d185" + }, + { + "mode": "644", + "path": "src/Vyral.Azure/packages.lock.json", + "sha256": "3f9d824d3eb4f324ec178fbb33c4860ee6f52b730b471da38c6ea063d55ecec0" }, { "mode": "644", "path": "src/Vyral.Bridge.SemanticKernel/Vyral.Bridge.SemanticKernel.csproj", - "sha256": "4239b3c9dc695b1c89045de4c3bd4dafca3acf9f9365c48308e0c8317e9be2dc" + "sha256": "282dc3b20c7350715f06d573fa10d0b30d3e0db896af494f2a1445ad47380ffd" }, { "mode": "644", @@ -2366,6 +2576,11 @@ "path": "src/Vyral.Bridge.SemanticKernel/VyralVectorStoreCollectionOptions.cs", "sha256": "9bfe36f584bb2b8c1ae118100e347761730520fa7e0f5b3b94800962553a35fd" }, + { + "mode": "644", + "path": "src/Vyral.Bridge.SemanticKernel/packages.lock.json", + "sha256": "629bb6731ea670a243422e8ae339da15b585a3e53291ffd49435be054349c81d" + }, { "mode": "644", "path": "src/Vyral.Cli/Program.cs", @@ -2376,6 +2591,11 @@ "path": "src/Vyral.Cli/Vyral.Cli.csproj", "sha256": "12e3adfa68c5b383a7c247e2fa47d26903d128f1d123224693afdb56bdedf448" }, + { + "mode": "644", + "path": "src/Vyral.Cli/packages.lock.json", + "sha256": "3991178db439c4b9ba403b70bcf00347325187f158f70fc817d674b37884cc21" + }, { "mode": "644", "path": "src/Vyral.Cloudflare/CloudflareR2Options.cs", @@ -2389,7 +2609,42 @@ { "mode": "644", "path": "src/Vyral.Cloudflare/Vyral.Cloudflare.csproj", - "sha256": "5ca6abfa6b76e395b854b7fc07fd74fa3148af985c0548c69bdf1150bb73a21a" + "sha256": "435ebc695730bb648fdfa423e5734c0a73b65f5f1e61c2966de4e23f20c9be30" + }, + { + "mode": "644", + "path": "src/Vyral.Cloudflare/WorkerR2GenerationProjection/README.md", + "sha256": "1894e7eaefeeed28059e772d023b83e865e74022b7b8cc3ec5e1b498a2702b68" + }, + { + "mode": "644", + "path": "src/Vyral.Cloudflare/WorkerR2GenerationProjection/package-lock.json", + "sha256": "38b91fb49ea718924200b6ffb9752d88cb25a3ab6c19b194011c1b4908afe1a0" + }, + { + "mode": "644", + "path": "src/Vyral.Cloudflare/WorkerR2GenerationProjection/package.json", + "sha256": "d6756d50f171874e26043473fae1dfc64d24b4f07a18a0aacd8c9e19c4abd1cc" + }, + { + "mode": "644", + "path": "src/Vyral.Cloudflare/WorkerR2GenerationProjection/src/object-reader.mjs", + "sha256": "9fe0cba9c743210314ef6a91d9306a867527a6267068f75108fd5d868bd15a28" + }, + { + "mode": "644", + "path": "src/Vyral.Cloudflare/WorkerR2GenerationProjection/src/worker.mjs", + "sha256": "e9311869f2e671397b6f2a017882002bde33b46b9a78d4367d3e7ea192f0d6fc" + }, + { + "mode": "644", + "path": "src/Vyral.Cloudflare/WorkerR2GenerationProjection/verify.mjs", + "sha256": "1c4aa3638395e3ae2985d55bdd3f80ab56ad42bd2f2b8e1d26d63a6c09e963ec" + }, + { + "mode": "644", + "path": "src/Vyral.Cloudflare/packages.lock.json", + "sha256": "b0a91fd0cc0673e221c89460bdcf711681dd61a4f4f43736cf4fc2ea35467eef" }, { "mode": "644", @@ -2419,13 +2674,18 @@ { "mode": "644", "path": "src/Vyral.Embeddings.Onnx/Vyral.Embeddings.Onnx.csproj", - "sha256": "d95322aa463f7817dfac49673461166d269fecc7b6e8f02326612771b38b32d2" + "sha256": "02eb836b3a6abc5b54f2dba26894839612dc25630120109bc266b92274a7c284" }, { "mode": "644", "path": "src/Vyral.Embeddings.Onnx/WordPieceTokenizer.cs", "sha256": "4dc607cedab04f0dab9b07d0d850aed8ee3815f462bd349facfe74aa65f80ec1" }, + { + "mode": "644", + "path": "src/Vyral.Embeddings.Onnx/packages.lock.json", + "sha256": "035c8a5170af6448d5584f69a21e7d1b26e8fe1a4eb8b9d0099b4b706bfb5fd2" + }, { "mode": "644", "path": "src/Vyral.Execution.Aws/AwsDynamoExecutionRuntimeAdapter.cs", @@ -2454,7 +2714,12 @@ { "mode": "644", "path": "src/Vyral.Execution.Aws/Vyral.Execution.Aws.csproj", - "sha256": "4c578228b135d8f81b62cd228ea49923208fefcd9ff3c4b5c7c982c863cbe1a9" + "sha256": "dbd1ad30ae1a9501bb54461b4eddb2995102f5c89a8d1dabce0e761e9960dc18" + }, + { + "mode": "644", + "path": "src/Vyral.Execution.Aws/packages.lock.json", + "sha256": "a1a5ac7aa7aa6ef12a30770484056bb823d37c2ab0fcbd4660a6971245501ab8" }, { "mode": "644", @@ -2471,6 +2736,11 @@ "path": "src/Vyral.Execution.AzureDurable.Functions/Vyral.Execution.AzureDurable.Functions.csproj", "sha256": "1cd55c81b29729d6e471e5414ef2bc488d77e37eb99926494f3e96fb685ba891" }, + { + "mode": "644", + "path": "src/Vyral.Execution.AzureDurable.Functions/packages.lock.json", + "sha256": "9b59597d8b03bfb39abc7d67e65790a9afe39af2b9bf3f5ca88bfac700b8a1ae" + }, { "mode": "644", "path": "src/Vyral.Execution.AzureDurable/AzureDurableExecutionContracts.cs", @@ -2531,6 +2801,11 @@ "path": "src/Vyral.Execution.AzureDurable/Vyral.Execution.AzureDurable.csproj", "sha256": "5de27a31d1941995aab88dbc70b92b07f4877a5979913c182a805e013b988021" }, + { + "mode": "644", + "path": "src/Vyral.Execution.AzureDurable/packages.lock.json", + "sha256": "d2d10029ec2a0133754f777a90371a59b767efc8497136ccd662aa486e0cc12a" + }, { "mode": "644", "path": "src/Vyral.Execution.Local/LocalExecutionProductPolicy.cs", @@ -2564,7 +2839,12 @@ { "mode": "644", "path": "src/Vyral.Execution.Local/Vyral.Execution.Local.csproj", - "sha256": "1c020cabfd2d488eace8771077e16c1db70402c28af5d6f3548c1ab74d39381f" + "sha256": "24113ec187dd8f8a726e053cbe2b8f1a1212892b74302b057ecde8165a314cfd" + }, + { + "mode": "644", + "path": "src/Vyral.Execution.Local/packages.lock.json", + "sha256": "a66e6e3fecee4a6d2698e7e5170c43cb1dbb88386b3aca7163b2b64b6ebb3b49" }, { "mode": "644", @@ -2619,7 +2899,12 @@ { "mode": "644", "path": "src/Vyral.Execution.Temporal.Hosting/Vyral.Execution.Temporal.Hosting.csproj", - "sha256": "21327e57913766ed1e32238f001da280a6e18c32b6ca4a19b486e49893ebd206" + "sha256": "4b9cadeceea382716ec21b8c548d5b172bb2071ab6515664cddf698b172de17c" + }, + { + "mode": "644", + "path": "src/Vyral.Execution.Temporal.Hosting/packages.lock.json", + "sha256": "1413c21e967bac10e87ebd759899fb141d0e52e689e3ec3c79e6aef924eaac41" }, { "mode": "644", @@ -2671,6 +2956,11 @@ "path": "src/Vyral.Execution.Temporal.Postgres/Vyral.Execution.Temporal.Postgres.csproj", "sha256": "7efef81de9ab2dd7fbbec63f57b9d62442995ea3d596eb3b2d405f6bc46eb61e" }, + { + "mode": "644", + "path": "src/Vyral.Execution.Temporal.Postgres/packages.lock.json", + "sha256": "b6e6d831d740900596f5fdc77e54b683da57772cf574cb87003d71a9b2e506e7" + }, { "mode": "644", "path": "src/Vyral.Execution.Temporal/AssemblyInfo.cs", @@ -2734,7 +3024,12 @@ { "mode": "644", "path": "src/Vyral.Execution.Temporal/Vyral.Execution.Temporal.csproj", - "sha256": "7761e03dd7e9785fc5f30539281efab92159a0a5e2b6fd57f56c60a155d92d00" + "sha256": "e703ab4c9f2083fc2a4cade03800d4f2756dc7ed21598004cad0cc0d70082292" + }, + { + "mode": "644", + "path": "src/Vyral.Execution.Temporal/packages.lock.json", + "sha256": "80355df0ee85ccf550a438824ce32e97d4dc169ef07282678dfd2d13e3769c54" }, { "mode": "644", @@ -2744,7 +3039,7 @@ { "mode": "644", "path": "src/Vyral.Execution.WorkerClient/ExecutionWorkerClient.cs", - "sha256": "5ad2994d863c7023fef70b3990607b1f563fa8e9f49e51cc8d91221b615c3fd7" + "sha256": "a63ca1c72090c0121d3427e7e0f70ca57df7ab52ef589231fa10ccea4ee19427" }, { "mode": "644", @@ -2766,6 +3061,11 @@ "path": "src/Vyral.Execution.WorkerClient/Vyral.Execution.WorkerClient.csproj", "sha256": "9d9ecccb39a32e32e685315ce6277773270b3ddd2b8fb78b884be7a1f0254fa1" }, + { + "mode": "644", + "path": "src/Vyral.Execution.WorkerClient/packages.lock.json", + "sha256": "d2d10029ec2a0133754f777a90371a59b767efc8497136ccd662aa486e0cc12a" + }, { "mode": "644", "path": "src/Vyral.Execution/ExecutionAdmission.cs", @@ -2831,6 +3131,11 @@ "path": "src/Vyral.Execution/Vyral.Execution.csproj", "sha256": "eebec63034648642563cc16c138a0e0bad48fe82b55b08478a38ec0a3aeb06a8" }, + { + "mode": "644", + "path": "src/Vyral.Execution/packages.lock.json", + "sha256": "d02176e80b6628982ee20a6e4dc790588e205cef43aea5a86dfd5daae440b71d" + }, { "mode": "644", "path": "src/Vyral.Google/AlloyDbRecordCollectionStore.cs", @@ -2889,7 +3194,32 @@ { "mode": "644", "path": "src/Vyral.Google/Vyral.Google.csproj", - "sha256": "c84337e45815872e5fcabc7c3c3b520eb899f5577e6864ca0873f0f671417b14" + "sha256": "f5bbc4e3af769c4f4f05e2d222f10737cc472e9e31eafb609a3fb1711a8c6888" + }, + { + "mode": "644", + "path": "src/Vyral.Google/packages.lock.json", + "sha256": "dc10be09119126aacf813ce7a38fd429128160d11ed01c2bd2e6ccaa90b4e39d" + }, + { + "mode": "644", + "path": "src/Vyral.HostedWorker/HostedWorkerOptions.cs", + "sha256": "a454c65e244f7f890717c9e2014328269791c088a55b3711a948d393d2c767e4" + }, + { + "mode": "644", + "path": "src/Vyral.HostedWorker/Program.cs", + "sha256": "bfccdb64f41285b63991ddd49b0c9334283beec63df1342e7f9bb078508baa20" + }, + { + "mode": "644", + "path": "src/Vyral.HostedWorker/Vyral.HostedWorker.csproj", + "sha256": "4f74a73df430c5536b37c1cdfe23c32dc70f23a36ff7395f214158ecce1aea64" + }, + { + "mode": "644", + "path": "src/Vyral.HostedWorker/packages.lock.json", + "sha256": "4edc8250d6bdc090820d6d2321904ecf24bc550ecb46d0c61de5f3a60e0f2575" }, { "mode": "644", @@ -2911,6 +3241,11 @@ "path": "src/Vyral.Local/FileObjectStoreDiagnostics.cs", "sha256": "f6b293844d2380df529f8bef6937c75891dd9d85c0754d3800a98c11520bdcef" }, + { + "mode": "644", + "path": "src/Vyral.Local/GenerationBoundRetrievalEvaluationTargetResolver.cs", + "sha256": "f645762aa5286111d749a9ae5e724ae94884426a48fa660b811949eb4b18b237" + }, { "mode": "644", "path": "src/Vyral.Local/LocalCollectionInspectionService.cs", @@ -2921,6 +3256,11 @@ "path": "src/Vyral.Local/LocalEmbeddingProviders.cs", "sha256": "e1d4df90df3de78282917b7399eca5b34aa32e82d725c57268d7485e7cadcbec" }, + { + "mode": "644", + "path": "src/Vyral.Local/LocalGenerationBoundRecordSearchProjection.cs", + "sha256": "5168c9e1d491528d15448c1b0733a995af9f6809681f86298c6c1871a990caae" + }, { "mode": "644", "path": "src/Vyral.Local/LocalLexicalScorer.cs", @@ -2944,7 +3284,7 @@ { "mode": "644", "path": "src/Vyral.Local/LocalRetrievalEvaluationService.cs", - "sha256": "8b2ca7571ce08951a0ad03fbfd0720231c45fa3ef15df2073e8f71411d91832e" + "sha256": "7c8cfdaa1183653c2f01a5b332db8aa6f883ecb87380911a771fc8afc2fc9227" }, { "mode": "644", @@ -2994,7 +3334,12 @@ { "mode": "644", "path": "src/Vyral.Local/Vyral.Local.csproj", - "sha256": "339077726216da8a21cc10ce83270ac15e0310d9e24b0a770cf43c597f969d0c" + "sha256": "24481df5fc3c139e89fa140ba4d263c07fbeba3bd9c80bd57bf0b70a0c5ca96e" + }, + { + "mode": "644", + "path": "src/Vyral.Local/packages.lock.json", + "sha256": "4caf7e70a64f45fcdba886042bfa51be9368627ff7f29f320b316576d229d499" }, { "mode": "644", @@ -3009,7 +3354,7 @@ { "mode": "644", "path": "src/Vyral.Mcp/Vyral.Mcp.csproj", - "sha256": "4db6c8662140a39bfaec23ed24d39f25cbcf3689f031c32e38f51df7eac8a430" + "sha256": "c5ab5a15e2613eb3285c5f780717febdcd38c074e050b4ab5cd6ce60e35113a2" }, { "mode": "644", @@ -3056,6 +3401,11 @@ "path": "src/Vyral.Mcp/VyralMcpTools.cs", "sha256": "f6fd84bcd298a168349e6d266f04a0b05aa485ea0a05a5b5658948145f029c71" }, + { + "mode": "644", + "path": "src/Vyral.Mcp/packages.lock.json", + "sha256": "c9fe151f281668e5a63d4fcfdcd5cc34169939a5c7504cfbec0622834fa5fecd" + }, { "mode": "644", "path": "src/Vyral.MySql/MySqlCanonicalStore.cs", @@ -3064,7 +3414,12 @@ { "mode": "644", "path": "src/Vyral.MySql/Vyral.MySql.csproj", - "sha256": "9f979dfce999135a5c4234245ced47032779ef4867ee65a42d57261681777d2c" + "sha256": "75ce2fd78c1bb5bc04f769e88d7c808a8bc9d0029fa1394aec506d2df3e5e489" + }, + { + "mode": "644", + "path": "src/Vyral.MySql/packages.lock.json", + "sha256": "df8ff259a2cb5e60217ce2ad83f478471deac9ae5e29f1a9745f600a51426073" }, { "mode": "644", @@ -3101,6 +3456,11 @@ "path": "src/Vyral.Pgvector/Vyral.Pgvector.csproj", "sha256": "938ff075e1baae5309b50ec459fd2ab158e09b8794e75195951fb87a9a44e611" }, + { + "mode": "644", + "path": "src/Vyral.Pgvector/packages.lock.json", + "sha256": "59f3b37e6e431db56f004f0056e080e37227c53eac9bfeaf2e26f46ad5267a4b" + }, { "mode": "644", "path": "src/Vyral.Primitives/AdmissionReceipt.cs", @@ -3121,6 +3481,11 @@ "path": "src/Vyral.Primitives/Vyral.Primitives.csproj", "sha256": "ae283e66dd5b9f2a7401fab80510c02fb6863b51dd5d9e54f3cd1fb649f634c2" }, + { + "mode": "644", + "path": "src/Vyral.Primitives/packages.lock.json", + "sha256": "d2c1f69e209968701d332739d7006e456941d7884635b7df70f7247e84d9b5a5" + }, { "mode": "644", "path": "src/Vyral.Providers.Abstractions/AiCapabilityModels.cs", @@ -3301,6 +3666,11 @@ "path": "src/Vyral.Providers.Abstractions/WorkspaceCodingAgentProviderTarget.cs", "sha256": "9ffa14b45a373c33540df1d7ef73476bf5241cfc408cff25534f5e33df3da34e" }, + { + "mode": "644", + "path": "src/Vyral.Providers.Abstractions/packages.lock.json", + "sha256": "d02176e80b6628982ee20a6e4dc790588e205cef43aea5a86dfd5daae440b71d" + }, { "mode": "644", "path": "src/Vyral.Providers.Cli/CliExecutableIdentity.cs", @@ -3361,6 +3731,11 @@ "path": "src/Vyral.Providers.Cli/Vyral.Providers.Cli.csproj", "sha256": "b4af81078733a8e922cebe174fd0eeea0b0b1687a186b1d029ebb4d023a51e3a" }, + { + "mode": "644", + "path": "src/Vyral.Providers.Cli/packages.lock.json", + "sha256": "10a3c395faccaabc720a5135ee08579ab4c481b19476cd2a114c63325dbd69ca" + }, { "mode": "644", "path": "src/Vyral.Providers.Jules/JulesFailureClassifier.cs", @@ -3386,6 +3761,11 @@ "path": "src/Vyral.Providers.Jules/Vyral.Providers.Jules.csproj", "sha256": "b4af81078733a8e922cebe174fd0eeea0b0b1687a186b1d029ebb4d023a51e3a" }, + { + "mode": "644", + "path": "src/Vyral.Providers.Jules/packages.lock.json", + "sha256": "10a3c395faccaabc720a5135ee08579ab4c481b19476cd2a114c63325dbd69ca" + }, { "mode": "644", "path": "src/Vyral.Providers.Local/DeterministicAiProviderTarget.cs", @@ -3401,6 +3781,11 @@ "path": "src/Vyral.Providers.Local/Vyral.Providers.Local.csproj", "sha256": "b4af81078733a8e922cebe174fd0eeea0b0b1687a186b1d029ebb4d023a51e3a" }, + { + "mode": "644", + "path": "src/Vyral.Providers.Local/packages.lock.json", + "sha256": "10a3c395faccaabc720a5135ee08579ab4c481b19476cd2a114c63325dbd69ca" + }, { "mode": "644", "path": "src/Vyral.Providers.Onnx/OnnxCrossEncoderRerankerProviderOptions.cs", @@ -3416,15 +3801,25 @@ "path": "src/Vyral.Providers.Onnx/Vyral.Providers.Onnx.csproj", "sha256": "c5739fa4d29842d5055bbd8a1c614fbe19a9822d9d0af0e07345da73ccb17ed8" }, + { + "mode": "644", + "path": "src/Vyral.Providers.Onnx/packages.lock.json", + "sha256": "0f1e47e341ac8c27f14f4cf83d57a5ef7141625986f90e52e45d9d8515d926a9" + }, { "mode": "644", "path": "src/Vyral.Server/AdmissionHttpResults.cs", "sha256": "88f09621994a662e3fb5c4333056a66e8f8ac5d85f3442095e1a4818908c557e" }, + { + "mode": "644", + "path": "src/Vyral.Server/ArtifactRecordIngestionHostedPlugin.cs", + "sha256": "9bbadd9224da163be4fd61fbf58c1559902cbe255570e37458539557bf27a490" + }, { "mode": "644", "path": "src/Vyral.Server/ArtifactRecordIngestionService.cs", - "sha256": "99d6118da07530ac67e13448b9c0fdbe42ab2e3ffcdcf2b383f9b23cc7ebc155" + "sha256": "13aa9b0ea5d7cb0359595818b0ac92265cfc4da0d3d04e2ec996e6ebfc6387d1" }, { "mode": "644", @@ -3449,7 +3844,7 @@ { "mode": "644", "path": "src/Vyral.Server/ExecutionRuntimeArtifactRecordIngestionAdapter.cs", - "sha256": "fad8bac84b7505748b7c9a4d8da03bebffabd74389bdcc09baa30c81b1b90960" + "sha256": "599ec25fccb005775bbb361e44f92cf2c71b1c8ad7df35b310645c4a1e4010f2" }, { "mode": "644", @@ -3471,6 +3866,11 @@ "path": "src/Vyral.Server/ExecutionRuntimeProductPolicyShape.cs", "sha256": "98bc7a3d84e970d2e51ac9134377e1293ba92d775b4395e15fefdd41477ec134" }, + { + "mode": "644", + "path": "src/Vyral.Server/ExecutionRuntimeProjectionGenerationAdapter.cs", + "sha256": "33b9b0e03294d6d27a395011526bfe0f2b0eabf37fb2d760a88740554952907e" + }, { "mode": "644", "path": "src/Vyral.Server/ExecutionRuntimeProviderRunJobAdapter.cs", @@ -3499,7 +3899,7 @@ { "mode": "644", "path": "src/Vyral.Server/Program.cs", - "sha256": "d5f5d4f2e2cdd05eb1b5e5546c0cf71b7361d49dfd1d59d6ebe3e74ad638dfd6" + "sha256": "1aa10acd8c08ff5ad6a79c5bfc4badfed8b80693bc0aaeb468c84fa6215f8e71" }, { "mode": "644", @@ -3536,6 +3936,11 @@ "path": "src/Vyral.Server/ServerAccessOptions.cs", "sha256": "868ec629e8f0189d046b56ec0018a57fe132e98442c9bd81aef8e115d640f01d" }, + { + "mode": "644", + "path": "src/Vyral.Server/ServerStorageFactory.cs", + "sha256": "3bfd564aa8994d7837946a61fbb5aecc03339a2eed57d983dac9a7a3a8d617df" + }, { "mode": "644", "path": "src/Vyral.Server/ServerStorageOptions.cs", @@ -3544,7 +3949,7 @@ { "mode": "644", "path": "src/Vyral.Server/Vyral.Server.csproj", - "sha256": "8a6eec6363a011fc9d4c8268c0f7778237f1a91362e787f1f97511c3e62112e8" + "sha256": "567c8c0ac7f2f55f15177104657562169b77d2ca0a261bc5d95fb0c18e82f3c7" }, { "mode": "644", @@ -3559,7 +3964,7 @@ { "mode": "644", "path": "src/Vyral.Server/VyralExecutionAccess.cs", - "sha256": "196564c3ac0dd0b56c4d58ae7f680cbeaee9292081b99b14e5aa7f5f5ac99cda" + "sha256": "76cdebb04230b32729de4a6036f8b2ae8e44f1942c451c3a0f301e02f995b790" }, { "mode": "644", @@ -3591,6 +3996,11 @@ "path": "src/Vyral.Server/contracts/vyral.openapi.json", "sha256": "e444adf2ce96ce4cb41425b5e3fb6cea5ec63c12df3ea2da136e65ff8a7bdcd9" }, + { + "mode": "644", + "path": "src/Vyral.Server/packages.lock.json", + "sha256": "e603ed4c821a2ac546fb9b6830865c6ba5371a63c5052ff9284adc4a3e9148db" + }, { "mode": "644", "path": "tests/Vyral.Tests.Aws/AwsConformanceTests.cs", @@ -3626,6 +4036,11 @@ "path": "tests/Vyral.Tests.Aws/GlobalUsings.cs", "sha256": "fa067fbd9e2cc6af985945bdfceca9bf12b60143b5958b88133eda1d95b4a9cc" }, + { + "mode": "644", + "path": "tests/Vyral.Tests.Aws/OpenSearchGenerationBoundRecordSearchProjectionTests.cs", + "sha256": "760ee69b6d734e54ff72f2eb06f935f17a5d7947400cabb27f7907789b0bfbd4" + }, { "mode": "644", "path": "tests/Vyral.Tests.Aws/OpenSearchRecordSearchProjectionLiveTests.cs", @@ -3634,7 +4049,7 @@ { "mode": "644", "path": "tests/Vyral.Tests.Aws/OpenSearchRecordSearchProjectionLocalTests.cs", - "sha256": "5f6a661a0b0d3894e765056c717b23c9e568b3aa2aec59a3550a52e484a1e260" + "sha256": "fef0d14c1e59726a31ac0b017c006d73672a52846a31c20535c5607cdddb6130" }, { "mode": "644", @@ -3644,7 +4059,12 @@ { "mode": "644", "path": "tests/Vyral.Tests.Aws/Vyral.Tests.Aws.csproj", - "sha256": "cef7e7c46078fcc700f4eac6e591bd47a8f324950737d21de14660ce28392d7a" + "sha256": "56e683dc4a797dd90ef007eea88aee05a51c570b1560755d6ab3f272d92aec9e" + }, + { + "mode": "644", + "path": "tests/Vyral.Tests.Aws/packages.lock.json", + "sha256": "fb3b5e5561371da7fa301da1d1813550b59d049dddfeafe656de60433793078a" }, { "mode": "644", @@ -3719,7 +4139,12 @@ { "mode": "644", "path": "tests/Vyral.Tests.Azure/Vyral.Tests.Azure.csproj", - "sha256": "9d9212f0ab30740e5e9ca4e259f56cf1c9ba7fedce857cd24f255b73990ccaea" + "sha256": "9e214d2c437a3ecdbe33e69da021375ec22a0d0c1a655f9a93a692f7a6916a73" + }, + { + "mode": "644", + "path": "tests/Vyral.Tests.Azure/packages.lock.json", + "sha256": "780671d34909a661d58b39be290963f1ad8985c5ff9727a1ee3f3a41eda43659" }, { "mode": "644", @@ -3739,7 +4164,12 @@ { "mode": "644", "path": "tests/Vyral.Tests.Cloudflare/Vyral.Tests.Cloudflare.csproj", - "sha256": "6a14db8f3c12f7bce709fb9fc70f925b81a8ea5ab97b5b03ec7555f23f9fec7e" + "sha256": "a76da4f4cdcfea71f73452cf21b884b5c8ab5370b2609fd4b2f205bcbd24b5c0" + }, + { + "mode": "644", + "path": "tests/Vyral.Tests.Cloudflare/packages.lock.json", + "sha256": "ce5c7e7e0e6ff7fe137ad65fe3cc43c59f903a0c582f01d05bb8e2dd209e4251" }, { "mode": "644", @@ -3784,7 +4214,7 @@ { "mode": "644", "path": "tests/Vyral.Tests.Conformance/ExecutionRuntimeConformanceTests.cs", - "sha256": "291693e1a7e3d0fdb681f25de4f641bb32c9fcf568618d94c38c08ef35acb279" + "sha256": "4ab640a546e69e7ff78635162bb83417c155eb0c6bed0e7059945a7bc18c0578" }, { "mode": "644", @@ -3801,6 +4231,11 @@ "path": "tests/Vyral.Tests.Conformance/ExternalExecutionWorkerRuntimeConformanceTests.cs", "sha256": "b98f4420a8d60b835bf051a0b3c6600a8224c94d9fddb3e703d6fb9922c347a9" }, + { + "mode": "644", + "path": "tests/Vyral.Tests.Conformance/GenerationBoundProjectionLifecycleFixtureTests.cs", + "sha256": "1b8ee6d811ec4b762b4039e6794b3a74353b48758a0698e8a43ee20b1c125df3" + }, { "mode": "644", "path": "tests/Vyral.Tests.Conformance/GlobalUsings.cs", @@ -3841,6 +4276,11 @@ "path": "tests/Vyral.Tests.Conformance/PortableExternalWorkerLifecycleFixtureTests.cs", "sha256": "9495fa10b4f88a57b3685bd5eb4399376306ee62c62a34eb8b4d7cc03b80c6a9" }, + { + "mode": "644", + "path": "tests/Vyral.Tests.Conformance/PortableGenerationBoundProjectionFixtureTests.cs", + "sha256": "92e962aeb3bbf232620aba95315bbbfc9cc495d9de5ee12ed799fcd79c8cbc07" + }, { "mode": "644", "path": "tests/Vyral.Tests.Conformance/PortableGraphRecordMappingGoldenFixtureTests.cs", @@ -3849,7 +4289,7 @@ { "mode": "644", "path": "tests/Vyral.Tests.Conformance/PortableNativeExecutionLifecycleFixtureTests.cs", - "sha256": "4954dce087f8c13ee709195b505e3456b8f288460993505039b1defb8ce7d4e9" + "sha256": "15da753f0c61103d54edf702e7447f8f27f147cc1273907a37f0c54dcc13bea7" }, { "mode": "644", @@ -3866,10 +4306,20 @@ "path": "tests/Vyral.Tests.Conformance/RecordCollectionStoreConformanceTests.cs", "sha256": "85f66f5493f719e94c234862ff08f6217e45b1281afff96ff5e890aaf547d356" }, + { + "mode": "644", + "path": "tests/Vyral.Tests.Conformance/RetrievalProjectionQualificationSchemaTests.cs", + "sha256": "4e6c080ccdbec704eb325bcc68c5dc46f0d328e84cdfba8893142185b1fdf19f" + }, { "mode": "644", "path": "tests/Vyral.Tests.Conformance/Vyral.Tests.Conformance.csproj", - "sha256": "66abcd3498e510b2617f76120cff2d7d2f9166b7885cb31e4f4d67261d3ddedc" + "sha256": "8ee3a9f416dbd12206bc02f53fa459ca38011801aac78e57e88acb8a03c91874" + }, + { + "mode": "644", + "path": "tests/Vyral.Tests.Conformance/packages.lock.json", + "sha256": "1c6286220b8e606fcc08e27febbba5ff51f580f561749fff305c7aec0efe8e6c" }, { "mode": "644", @@ -3879,12 +4329,17 @@ { "mode": "644", "path": "tests/Vyral.Tests.ExecutionWorkerClient/ExecutionWorkerClientTests.cs", - "sha256": "576dcf4bc18203f30e2ce5ee8cad07d8f9cae1a833fa139d19cebdaa5d799d88" + "sha256": "31a74d3dbb774f331eb1d305df55d07a470cfbe3658f312ad35a2ba329ffeaf0" }, { "mode": "644", "path": "tests/Vyral.Tests.ExecutionWorkerClient/Vyral.Tests.ExecutionWorkerClient.csproj", - "sha256": "d6c1ff22c8c538e20991928b4f0912313cabbdff963314661c8d6d21eaa35a78" + "sha256": "463ae2eb87073f883141c986fd125548c2c8c57c53746a7504322ad8eaca63a3" + }, + { + "mode": "644", + "path": "tests/Vyral.Tests.ExecutionWorkerClient/packages.lock.json", + "sha256": "898c58a06ec20b6d845da9e68de0e6489ded2071bb3d65d804ff0adec87875e6" }, { "mode": "644", @@ -3909,7 +4364,7 @@ { "mode": "644", "path": "tests/Vyral.Tests.Google/GoogleCloudExecutionDispatchOptionsTests.cs", - "sha256": "0953d558342106e7e043a3e58b02f26671257bdadc3fe0de6f37e8415822af50" + "sha256": "07bf981bb60ebdc17d1ebba2f2019880b01058a042b184bdbeaecac15053cb62" }, { "mode": "644", @@ -3939,7 +4394,12 @@ { "mode": "644", "path": "tests/Vyral.Tests.Google/Vyral.Tests.Google.csproj", - "sha256": "8d476cef3a88db54df5648440c1c08f9d30e6d5dd93dc44ab9590e7d5ee31c90" + "sha256": "e7f1a70f7b970a9d304ef57cf80c6977b31a61a13e916302df326a484ab18452" + }, + { + "mode": "644", + "path": "tests/Vyral.Tests.Google/packages.lock.json", + "sha256": "ceac72b05ef42063ee79e4ae7445d4e0ad34e50d12cb72bb80e62fbfaa3f1835" }, { "mode": "644", @@ -3999,22 +4459,32 @@ { "mode": "644", "path": "tests/Vyral.Tests.Local/ExecutionRuntimeFactoryTests.cs", - "sha256": "9989ef3cfa8436e6a94a822ff17fe4a9ac046875527255a891df94e1e4e4ebf0" + "sha256": "08ff95a32a9f86748f0aa76d2505a3ece193459d2b65393784ead2c6bc94d0bd" }, { "mode": "644", "path": "tests/Vyral.Tests.Local/ExecutionRuntimeHostingTests.cs", "sha256": "06f44a9ae69b2948d6b1c87c43aa2cf3a43108d12b5223b40c3567c33ecf38b0" }, + { + "mode": "644", + "path": "tests/Vyral.Tests.Local/ExecutionRuntimeProjectionGenerationAdapterTests.cs", + "sha256": "77ab9026ff548f27ad18ff77fc02b20ca2b0839ef98951864e396feb508f14e5" + }, { "mode": "644", "path": "tests/Vyral.Tests.Local/ExecutionRuntimeTests.cs", - "sha256": "ed6e31821e875fd2ac866f35b75dd5ab538fc20d63e60d7e153cd2536ddea258" + "sha256": "3362ac4f68efe85e42a9f59449badc6f89f43730f31b11d4f34ebb1e611a4c1a" }, { "mode": "644", "path": "tests/Vyral.Tests.Local/FileObjectStoreTests.cs", - "sha256": "c62ff5cc22682c3936a5ffd0a6fe1a16ccde72e061fff96e4ed299792db7753a" + "sha256": "d58937f60273e2dc8ed204bba993e538c780e93e93a9a1117d3144ea06aa5d3b" + }, + { + "mode": "644", + "path": "tests/Vyral.Tests.Local/GenerationBoundRetrievalEvaluationTargetTests.cs", + "sha256": "ab043dc82822a2113697dee93e6b3a5232743950c528e9ebba63587034a08f49" }, { "mode": "644", @@ -4051,6 +4521,11 @@ "path": "tests/Vyral.Tests.Local/LocalExternalExecutionWorkerRuntimeConformanceTests.cs", "sha256": "c18343c58df57b0d08a96273f36677d19ee6312f3cc6d72a553e16288688bd6d" }, + { + "mode": "644", + "path": "tests/Vyral.Tests.Local/LocalGenerationBoundRecordSearchProjectionTests.cs", + "sha256": "5b2d725fd43b974213b9395fe7c90d3c6181c5f082f34b7917e3148443211493" + }, { "mode": "644", "path": "tests/Vyral.Tests.Local/McpServerTests.cs", @@ -4109,7 +4584,12 @@ { "mode": "644", "path": "tests/Vyral.Tests.Local/Vyral.Tests.Local.csproj", - "sha256": "b0efd76cd130bde9352b0bf109028354729935585ca5ab7c38c1bd870a45e5ec" + "sha256": "f219c39c6c5d473b2f31f2a27f51874eff31260efd31e3fec4f0a035f56e5664" + }, + { + "mode": "644", + "path": "tests/Vyral.Tests.Local/packages.lock.json", + "sha256": "43273820c4ea59d3b380a6161660c8792f9810b944a40c4a26cc4b859d46bfb3" }, { "mode": "644", @@ -4134,7 +4614,12 @@ { "mode": "644", "path": "tests/Vyral.Tests.MySql/Vyral.Tests.MySql.csproj", - "sha256": "49f0bf4733ea743ccbf73dc29aeb357e8180137bd683a4717afaaf0a5f9e65a9" + "sha256": "46f888bd960625a73084ea361b527a1fa9fb385c95367e453f14e0e9b8152d71" + }, + { + "mode": "644", + "path": "tests/Vyral.Tests.MySql/packages.lock.json", + "sha256": "bf9c164cdc51190f1f405609be0f32ed365973b7aaeb030f2c23d67dadac78e2" }, { "mode": "644", @@ -4164,7 +4649,12 @@ { "mode": "644", "path": "tests/Vyral.Tests.Pgvector/Vyral.Tests.Pgvector.csproj", - "sha256": "c26754f62558b75bee45f7f9c07e876ff65c50abb2e5f56b96c853a0ae432eef" + "sha256": "50e58e82ab10327bc7d0cf40f3933046ba9b7172bbeeb0d30d79d4c6a0f4d2ce" + }, + { + "mode": "644", + "path": "tests/Vyral.Tests.Pgvector/packages.lock.json", + "sha256": "df63f8843a5a179b497c9943cd82690a7d5bad3f7bb68062171fd53d179f557d" }, { "mode": "644", @@ -4209,13 +4699,18 @@ { "mode": "644", "path": "tests/Vyral.Tests.Providers/Vyral.Tests.Providers.csproj", - "sha256": "80ff1d7ed17758987902064bf3d2b98af6e08e15e1e55573338e0659338a6a2f" + "sha256": "42e8027c92e6910f8c88e2cbb17b2c0e0f9a3b1656ca2c5111bcb4e71b448751" }, { "mode": "644", "path": "tests/Vyral.Tests.Providers/WorkspaceCodingAgentProviderTargetTests.cs", "sha256": "da1949fcbf4994d91f21ec9630e5559e55ce5d5fc813f2cdb862609e86a84f97" }, + { + "mode": "644", + "path": "tests/Vyral.Tests.Providers/packages.lock.json", + "sha256": "9f5c0dd27aca7e0c49f9288cc5272dc5e11986a117452649327cafedad6ab560" + }, { "mode": "644", "path": "tests/Vyral.Tests.Temporal.WorkerHost/Program.cs", @@ -4226,6 +4721,11 @@ "path": "tests/Vyral.Tests.Temporal.WorkerHost/Vyral.Tests.Temporal.WorkerHost.csproj", "sha256": "1ddfedb917d6e3126e30710e8ec61b6d24bef877cc7f3df038975a2a3daa3b6b" }, + { + "mode": "644", + "path": "tests/Vyral.Tests.Temporal.WorkerHost/packages.lock.json", + "sha256": "f36749c126d8bce278a70a0cc9d3c7970f7cf03c2fcec0b8b37825fdc31340fd" + }, { "mode": "644", "path": "tests/Vyral.Tests.Temporal/Fixtures/README.md", @@ -4249,7 +4749,7 @@ { "mode": "644", "path": "tests/Vyral.Tests.Temporal/TemporalContainerExecutionRuntimeConformanceTests.cs", - "sha256": "deaa0428ed4d0701a8d46080158b959bec7526c1e96a58ece8ccadc8ddd16684" + "sha256": "b1f6a970ee5487b6ecf6c4ea0fa7e46bf624725f380ce0bfe39ff62776418a3e" }, { "mode": "644", @@ -4294,7 +4794,12 @@ { "mode": "644", "path": "tests/Vyral.Tests.Temporal/Vyral.Tests.Temporal.csproj", - "sha256": "8789ae52ed2ce687c71ae1860cb272d1ff6b5cf0fa78747518c25cc0c8e015f2" + "sha256": "a3f3f5d9d536b68322616959772d208395f3f108a33ab99b8899a59aa45fcb99" + }, + { + "mode": "644", + "path": "tests/Vyral.Tests.Temporal/packages.lock.json", + "sha256": "5d82ba05aac5b16f21306c6257c6e7f110df12ad607cff0bbc51aaee3a3301ad" }, { "mode": "644", @@ -4306,6 +4811,11 @@ "path": "tools/Vyral.Benchmarks/Vyral.Benchmarks.csproj", "sha256": "7b1495481dcf3e762d43c389fd95b5b2e2019fa1bc67c324a1b2344d9328aa66" }, + { + "mode": "644", + "path": "tools/Vyral.Benchmarks/packages.lock.json", + "sha256": "e98864fd38f8639b5ca7a6b95de804e9fa25ef7d575ebf00e60057e28fbe7315" + }, { "mode": "644", "path": "tools/Vyral.CanonicalStore.Benchmarks/CanonicalMySqlContentionBenchmark.cs", @@ -4324,12 +4834,17 @@ { "mode": "644", "path": "tools/Vyral.CanonicalStore.Benchmarks/Vyral.CanonicalStore.Benchmarks.csproj", - "sha256": "1af7fad2f303b174435c97e8e75d0dfe502bdfe4c11af794275fbcea3b3f2a21" + "sha256": "22ada7ce54607ceae65d70d1ce0c0e9e0d99bd87b9eb926e91f7ee413607aaa5" + }, + { + "mode": "644", + "path": "tools/Vyral.CanonicalStore.Benchmarks/packages.lock.json", + "sha256": "1afa9084f355e4f77eab0216d02ab468d1f02b013d63bd2617ef148c54da945d" }, { "mode": "644", "path": "workers/execution-smoke-go/Dockerfile", - "sha256": "c0df5844c01808b6dbe8c909e27cfe6fd93ec758149ebc75fdd055c8b76017b9" + "sha256": "af04d2ed0695485ca8c7dfb463a149937b930bf1c2f8b23e94d61a8cbcb81b54" }, { "mode": "644", @@ -4349,5 +4864,5 @@ ], "schemaVersion": 1, "sourceDirty": false, - "treeSha256": "d148ce8c81ee687170eb9e466f0e77c8de62f205c3ba2170ec06063042012ba5" + "treeSha256": "a1c559183934cad0b1136a5c11990d964b679675e40664d4cc9a06e389a79cf4" } diff --git a/README.md b/README.md index 25814c7..7bea5bf 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@
-
+
@@ -194,7 +194,7 @@ also need TLS, rate limits, authenticated ingress, and deployment-specific
identity policy. See the [CanonicalStore guide](docs/concepts/canonical-store.md)
and the [deployment guide](deploy).
-The worker-capable server image is `ghcr.io/univeracity/vyral-server:0.3.2`;
+The worker-capable server image is `ghcr.io/univeracity/vyral-server:0.3.3`;
production deployments should pin its published digest and use the same API-key
and runtime restrictions shown above. The default entrypoint remains the public
API server. A separate, least-privilege deployment can run the preview generic
diff --git a/docs/maintainers/releasing.md b/docs/maintainers/releasing.md
index 8214279..a1b62f6 100644
--- a/docs/maintainers/releasing.md
+++ b/docs/maintainers/releasing.md
@@ -93,14 +93,17 @@ retained as release evidence.
The version lines and maturity promises are defined in the [stability policy](../reference/stability.md) and enforced by
`scripts/verify-version-policy.py`. Source versions do not prove registry publication.
-The exact authorized first cohort is recorded in
+The exact currently authorized package cohort is recorded in
[`packaging/publication-cohort.json`](../../packaging/publication-cohort.json).
-The manual [`Publish first cohort`](../../.github/workflows/publish-first-cohort.yml)
-workflow is the only source path allowed to publish that cohort. It accepts only the
-reviewed `v0.3.0` cohort, and before packaging requires a GitHub-verified signed
+The manual [`Publish package release`](../../.github/workflows/publish-first-cohort.yml)
+workflow is the only source path allowed to publish that cohort. Its filename is retained because
+NuGet and PyPI trusted-publisher identities include the workflow filename. It accepts only the
+reviewed `v0.3.1` package patch, and before packaging requires a GitHub-verified signed
annotated tag at current `main` plus a successful canonical Release Integrity
push run for that commit. Each registry job uses its own protected environment
-and least-privilege identity. It has no automatic trigger.
+and least-privilege identity. It has no automatic trigger. The patch publishes
+`Vyral.Abstractions` and `Vyral.Local` `0.3.1` plus the Python runtime `0.1.2`;
+unchanged execution and JavaScript packages are not rebuilt or republished.
The server's `0.3.1` security correction is a deliberately separate,
container-only delivery: [`packaging/container-security-release.json`](../../packaging/container-security-release.json)
@@ -110,13 +113,13 @@ GitHub-verified signed `server-v0.3.1` tag at current `main` and a successful
Release Integrity run for that commit. It does not republish the unaffected
NuGet, PyPI, or npm artifacts.
-The server's `0.3.2` worker-capable delivery is likewise container-only:
+The server's current `0.3.3` delivery is likewise container-only:
[`packaging/worker-container-release.json`](../../packaging/worker-container-release.json)
-and the manual [`Publish worker-capable server container`](../../.github/workflows/publish-worker-container.yml)
-workflow authorize only `ghcr.io/univeracity/vyral-server:0.3.2`. It requires a
-GitHub-verified signed `server-v0.3.2` tag at current `main`, successful canonical
+and the manual [`Publish server container`](../../.github/workflows/publish-worker-container.yml)
+workflow authorize only `ghcr.io/univeracity/vyral-server:0.3.3`. It requires a
+GitHub-verified signed `server-v0.3.3` tag at current `main`, successful canonical
Release Integrity evidence containing the hosted-worker receipt, and a second
-qualification plus pinned Trivy scan against the exact published digest. The
+MCP and hosted-worker qualification plus pinned Trivy scan against the exact published digest. The
hosted-worker entrypoint is preview and initially hosts only
`vyral.artifacts.record-ingest`; the API server and other capability maturity
boundaries remain unchanged.
@@ -125,17 +128,14 @@ Before dispatching it, configure the exact publisher tuple in the cohort
manifest at each trusted registry: `Univeracity/vyral`, workflow file
`publish-first-cohort.yml`, and its named environment. NuGet and PyPI use
GitHub Actions OIDC trusted publishing; NuGet additionally needs the
-`NUGET_USERNAME` environment variable for its short-lived-key exchange. npm is
-published locally under the approved direct-token exception and its isolated
-workflow job verifies the exact registered archive. The
-container job uses only the repository-scoped `GITHUB_TOKEN` with
-`packages: write`. This source authorization is not a claim that any package is
+`NUGET_USERNAME` environment variable for its short-lived-key exchange. The separate
+container workflow uses only the repository-scoped `GITHUB_TOKEN` with
+`packages: write`. npm remains outside the current patch. This source authorization is not a claim that any package is
already available: absent registry trust or an environment approval, the manual
job fails closed and publishes nothing.
Prepare release notes before the dispatch and publish the GitHub release only
-after every authorized registry job has succeeded. The
-The separate Python HTTP client (`vyral-client`), provider-specific packages,
+after every authorized registry job has succeeded. The separate Python HTTP client (`vyral-client`), provider-specific packages,
Temporal packages, and prototype integrations remain outside this cohort.
Before the first public release, the repository owner must also configure the hosted controls that
diff --git a/packaging/publication-cohort.json b/packaging/publication-cohort.json
index c41a878..ac07cab 100644
--- a/packaging/publication-cohort.json
+++ b/packaging/publication-cohort.json
@@ -1,11 +1,11 @@
{
- "schemaVersion": "vyral.publication-cohort.v1",
+ "schemaVersion": "vyral.publication-cohort.v2",
"publicationAuthorized": true,
"artifacts": [
{
"ecosystem": "nuget",
"name": "Vyral.Abstractions",
- "version": "0.3.0",
+ "version": "0.3.1",
"source": "src/Vyral.Abstractions/Vyral.Abstractions.csproj",
"environment": "publish-nuget",
"maturity": "public"
@@ -13,76 +13,43 @@
{
"ecosystem": "nuget",
"name": "Vyral.Local",
- "version": "0.3.0",
+ "version": "0.3.1",
"source": "src/Vyral.Local/Vyral.Local.csproj",
"environment": "publish-nuget",
"maturity": "public"
},
- {
- "ecosystem": "nuget",
- "name": "Vyral.Primitives",
- "version": "0.2.0",
- "source": "src/Vyral.Primitives/Vyral.Primitives.csproj",
- "environment": "publish-nuget",
- "maturity": "public"
- },
- {
- "ecosystem": "nuget",
- "name": "Vyral.Execution",
- "version": "0.2.0",
- "source": "src/Vyral.Execution/Vyral.Execution.csproj",
- "environment": "publish-nuget",
- "maturity": "public"
- },
- {
- "ecosystem": "nuget",
- "name": "Vyral.Execution.Local",
- "version": "0.2.0",
- "source": "src/Vyral.Execution.Local/Vyral.Execution.Local.csproj",
- "environment": "publish-nuget",
- "maturity": "preview"
- },
{
"ecosystem": "pypi",
"name": "vyral",
- "version": "0.1.1",
+ "version": "0.1.2",
"source": "runtimes/python/pyproject.toml",
"environment": "publish-pypi",
"maturity": "prototype"
- },
- {
- "ecosystem": "npm",
- "name": "vyral-client",
- "version": "0.3.0",
- "source": "clients/javascript/package.json",
- "environment": "publish-npm",
- "maturity": "public"
- },
- {
- "ecosystem": "container",
- "name": "ghcr.io/univeracity/vyral-server",
- "version": "0.3.0",
- "source": "Dockerfile",
- "environment": "publish-container",
- "maturity": "mixed"
}
],
- "excludedFromFirstCohort": [
+ "unchangedArtifacts": [
+ "Vyral.Primitives 0.2.0",
+ "Vyral.Execution 0.2.0",
+ "Vyral.Execution.Local 0.2.0",
+ "vyral-client 0.3.0"
+ ],
+ "excludedFromRelease": [
"cloud-provider packages",
"provider-specific execution adapters",
"Temporal packages",
"Python HTTP client distribution (vyral-client)",
- "prototype integrations"
+ "prototype integrations",
+ "server container"
],
"authorization": {
"mode": "manual-protected-environment",
- "releaseTag": "v0.3.0",
+ "releaseTag": "v0.3.1",
"workflow": ".github/workflows/publish-first-cohort.yml",
"requirements": [
"a GitHub-verified signed annotated release tag that resolves to current main",
"a successful canonical Release Integrity push run for that exact commit",
- "the exact NuGet and PyPI registry trust relationships, plus the explicitly authorized direct-token npm delivery exception",
- "a manual dispatch from main through the named protected environment"
+ "the exact NuGet and PyPI registry trusted-publisher relationships",
+ "a manual dispatch from main through the named protected environments"
],
"publishers": [
{
@@ -98,22 +65,8 @@
"workflowFile": "publish-first-cohort.yml",
"environment": "publish-pypi",
"authentication": "GitHub Actions OIDC trusted publishing"
- },
- {
- "ecosystem": "npm",
- "registry": "https://registry.npmjs.org/",
- "workflowFile": "publish-first-cohort.yml",
- "environment": "publish-npm",
- "authentication": "Locally controlled direct-token publication, exact archive verified by the protected workflow"
- },
- {
- "ecosystem": "container",
- "registry": "https://ghcr.io",
- "workflowFile": "publish-first-cohort.yml",
- "environment": "publish-container",
- "authentication": "repository-scoped GitHub Actions GITHUB_TOKEN"
}
]
},
- "authorizationBoundary": "This reviewed authorization permits only the listed first cohort through the named manual workflow. It does not claim registry availability and never causes a push without the external trust relationships and protected-environment dispatch."
+ "authorizationBoundary": "This reviewed authorization permits only the listed package patch through the named manual workflow. It excludes unchanged packages, npm, provider packages, and container publication."
}
diff --git a/packaging/worker-container-release.json b/packaging/worker-container-release.json
index 3b622f0..a18ea4b 100644
--- a/packaging/worker-container-release.json
+++ b/packaging/worker-container-release.json
@@ -3,7 +3,7 @@
"publicationAuthorized": true,
"image": {
"name": "ghcr.io/univeracity/vyral-server",
- "version": "0.3.2",
+ "version": "0.3.3",
"source": "Dockerfile",
"environment": "publish-container",
"maturity": "mixed",
@@ -17,13 +17,13 @@
},
"authorization": {
"mode": "manual-protected-environment",
- "releaseTag": "server-v0.3.2",
+ "releaseTag": "server-v0.3.3",
"workflow": ".github/workflows/publish-worker-container.yml",
"requirements": [
"a GitHub-verified signed annotated server tag that resolves to current main",
"a successful canonical Release Integrity run for that exact commit, including the packaged hosted-worker receipt",
"a manual dispatch from main through the publish-container protected environment",
- "a passing hosted-worker qualification and vulnerability scan against the exact published digest"
+ "passing MCP and hosted-worker qualification plus a vulnerability scan against the exact published digest"
],
"publisher": {
"ecosystem": "container",
diff --git a/runtimes/python/README.md b/runtimes/python/README.md
index 60baad5..65fb09d 100644
--- a/runtimes/python/README.md
+++ b/runtimes/python/README.md
@@ -2,7 +2,7 @@
Python-first implementation of Vyral's portable local runtime.
-Current version: `0.1.1`
+Current version: `0.1.2`
Current maturity: `prototype`
diff --git a/runtimes/python/pyproject.toml b/runtimes/python/pyproject.toml
index a3aff4c..5b54b34 100644
--- a/runtimes/python/pyproject.toml
+++ b/runtimes/python/pyproject.toml
@@ -1,6 +1,6 @@
[project]
name = "vyral"
-version = "0.1.1"
+version = "0.1.2"
description = "Python-first local runtime for the portable Vyral contract"
requires-python = ">=3.10"
readme = "README.md"
@@ -57,7 +57,7 @@ Repository = "https://github.com/univeracity/vyral"
Issues = "https://github.com/univeracity/vyral/issues"
[build-system]
-requires = ["hatchling"]
+requires = ["hatchling==1.32.0"]
build-backend = "hatchling.build"
[tool.hatch.build.targets.wheel]
diff --git a/runtimes/python/requirements-server.in b/runtimes/python/requirements-server.in
index d2f0748..d14ab61 100644
--- a/runtimes/python/requirements-server.in
+++ b/runtimes/python/requirements-server.in
@@ -1,3 +1,3 @@
# The published Python host and its production server extra. Keep this version
# aligned with pyproject.toml; regenerate requirements-server.lock on release.
-vyral[server]==0.1.1
+vyral[server]==0.1.2
diff --git a/runtimes/python/requirements-server.lock b/runtimes/python/requirements-server.lock
index a63d4a2..1230f33 100644
--- a/runtimes/python/requirements-server.lock
+++ b/runtimes/python/requirements-server.lock
@@ -1,11 +1,12 @@
-# This file is autogenerated by pip-compile with Python 3.12 using:
+# The dependency portion is generated by pip-compile with Python 3.12 using:
#
# pip-compile --generate-hashes --strip-extras \
# --output-file=runtimes/python/requirements-server.lock \
# runtimes/python/requirements-server.in
#
# It is the reproducible, hash-verified deployment profile for the published
-# Python REST/MCP host. Update its input and regenerate it for a new release.
+# Python REST/MCP host. The vyral wheel and source hashes come from the pinned
+# Hatchling build with SOURCE_DATE_EPOCH=315532800 used by the publisher.
click==8.4.2 \
--hash=sha256:9a6cea6e60b17ebe0a44c5cc636d94f09bd66142c1cd7d8b4cd731c4917a15f6 \
--hash=sha256:e6f9f66136c816745b9d65817da91d61d957fb16e02e4dcd0552553c5a197b76
@@ -18,7 +19,7 @@ uvicorn==0.52.3 \
--hash=sha256:116af2710dbf47c80f463cd20ee4884b6662f4c9f227d797ddc7279d2fcc2c7c \
--hash=sha256:18857b9e6579300be55c91c0a1cfd37d9a2cf0cabea33b88275f199eb73b8b58
# via vyral
-vyral==0.1.1 \
- --hash=sha256:f18adc5b9ea9057e0bbf293749383b0e2ac08d786d794c75c6e1ad414b528d67 \
- --hash=sha256:f28b0c9b2bdc533821ce4e8f6369965fa07b6817bead0942bcc008fb2295dc8a
+vyral==0.1.2 \
+ --hash=sha256:bf1355f5e8733783825c084d5050defbec550c9f8ca00f47d17b66be1b6803fd \
+ --hash=sha256:d9333d748f55cbd2e28a30cfdef7f3d32af54b9d28ab4b504c4f58a89456b6b7
# via -r runtimes/python/requirements-server.in
diff --git a/runtimes/python/src/vyral_runtime/_version.py b/runtimes/python/src/vyral_runtime/_version.py
index c83fd5c..b891bba 100644
--- a/runtimes/python/src/vyral_runtime/_version.py
+++ b/runtimes/python/src/vyral_runtime/_version.py
@@ -1,5 +1,5 @@
"""Versions intentionally kept explicit for package and release-policy checks."""
-RUNTIME_VERSION = "0.1.1"
+RUNTIME_VERSION = "0.1.2"
CONTRACT_VERSION = "0.3.0"
FIXTURE_VERSION = "1.0.0"
diff --git a/runtimes/python/tests/test_host_cli.py b/runtimes/python/tests/test_host_cli.py
index 227607f..7f850bc 100644
--- a/runtimes/python/tests/test_host_cli.py
+++ b/runtimes/python/tests/test_host_cli.py
@@ -140,7 +140,7 @@ def test_inspect_subcommand_summarizes_local_providers(self) -> None:
"rootPath": "/tmp/vyral-demo",
"topology": "local-single-node",
"runtime": {
- "version": "0.1.1",
+ "version": "0.1.2",
"contractVersion": "0.3.0",
"maturity": "prototype",
"fullLocalReady": False,
@@ -180,7 +180,7 @@ def test_inspect_uses_the_quickstart_default(self) -> None:
"rootPath": "/tmp/vyral-demo",
"topology": "local-single-node",
"runtime": {
- "version": "0.1.1",
+ "version": "0.1.2",
"contractVersion": "0.3.0",
"maturity": "prototype",
"fullLocalReady": False,
diff --git a/samples/Vyral.CanonicalProjectionStarter/packages.lock.json b/samples/Vyral.CanonicalProjectionStarter/packages.lock.json
index eac3c5a..878b898 100644
--- a/samples/Vyral.CanonicalProjectionStarter/packages.lock.json
+++ b/samples/Vyral.CanonicalProjectionStarter/packages.lock.json
@@ -74,7 +74,7 @@
"SQLitePCLRaw.bundle_e_sqlite3": "[3.0.5, )",
"SQLitePCLRaw.core": "[3.0.5, )",
"System.Numerics.Tensors": "[10.0.11, )",
- "Vyral.Abstractions": "[0.3.0, )"
+ "Vyral.Abstractions": "[0.3.1, )"
}
},
"vyral.primitives": {
diff --git a/samples/Vyral.Execution.AzureDurableFunctionsSmoke/packages.lock.json b/samples/Vyral.Execution.AzureDurableFunctionsSmoke/packages.lock.json
index f9cf87f..f113763 100644
--- a/samples/Vyral.Execution.AzureDurableFunctionsSmoke/packages.lock.json
+++ b/samples/Vyral.Execution.AzureDurableFunctionsSmoke/packages.lock.json
@@ -419,7 +419,7 @@
"Azure.Storage.Blobs": "[12.29.2, )",
"Microsoft.Azure.Cosmos": "[3.62.1, )",
"Newtonsoft.Json": "[13.0.4, )",
- "Vyral.Abstractions": "[0.3.0, )",
+ "Vyral.Abstractions": "[0.3.1, )",
"Vyral.Execution.AzureDurable": "[0.2.0, )"
}
},
diff --git a/samples/Vyral.Execution.TemporalSample/packages.lock.json b/samples/Vyral.Execution.TemporalSample/packages.lock.json
index d9f1865..7be98e1 100644
--- a/samples/Vyral.Execution.TemporalSample/packages.lock.json
+++ b/samples/Vyral.Execution.TemporalSample/packages.lock.json
@@ -404,7 +404,7 @@
"dependencies": {
"Temporalio": "[1.18.0, )",
"Temporalio.Extensions.Hosting": "[1.18.0, )",
- "Vyral.Abstractions": "[0.3.0, )",
+ "Vyral.Abstractions": "[0.3.1, )",
"Vyral.Execution.Temporal": "[0.2.0, )"
}
},
@@ -422,7 +422,7 @@
"SQLitePCLRaw.bundle_e_sqlite3": "[3.0.5, )",
"SQLitePCLRaw.core": "[3.0.5, )",
"System.Numerics.Tensors": "[10.0.11, )",
- "Vyral.Abstractions": "[0.3.0, )"
+ "Vyral.Abstractions": "[0.3.1, )"
}
},
"vyral.primitives": {
diff --git a/scripts/test-python-runtime-platform-matrix.py b/scripts/test-python-runtime-platform-matrix.py
index b503efa..39c5672 100644
--- a/scripts/test-python-runtime-platform-matrix.py
+++ b/scripts/test-python-runtime-platform-matrix.py
@@ -34,7 +34,7 @@ def _receipt(system: str, python: str) -> dict[str, object]:
"fts5Available": True,
},
"runtime": {
- "version": "0.1.1",
+ "version": "0.1.2",
"contractVersion": "0.3.0",
"fixtureVersion": "1.0.0",
"profiles": [{"id": "portable", "available": True}],
diff --git a/scripts/verify-publication-cohort.py b/scripts/verify-publication-cohort.py
old mode 100644
new mode 100755
index 2c93931..288ba83
--- a/scripts/verify-publication-cohort.py
+++ b/scripts/verify-publication-cohort.py
@@ -1,5 +1,5 @@
#!/usr/bin/env python3
-"""Verify the authorized first-publication cohort and its package metadata."""
+"""Verify the explicitly authorized package-release cohort and metadata."""
from __future__ import annotations
@@ -15,7 +15,7 @@
(
"nuget",
"Vyral.Abstractions",
- "0.3.0",
+ "0.3.1",
"src/Vyral.Abstractions/Vyral.Abstractions.csproj",
"publish-nuget",
"public",
@@ -23,59 +23,25 @@
(
"nuget",
"Vyral.Local",
- "0.3.0",
+ "0.3.1",
"src/Vyral.Local/Vyral.Local.csproj",
"publish-nuget",
"public",
),
- (
- "nuget",
- "Vyral.Primitives",
- "0.2.0",
- "src/Vyral.Primitives/Vyral.Primitives.csproj",
- "publish-nuget",
- "public",
- ),
- (
- "nuget",
- "Vyral.Execution",
- "0.2.0",
- "src/Vyral.Execution/Vyral.Execution.csproj",
- "publish-nuget",
- "public",
- ),
- (
- "nuget",
- "Vyral.Execution.Local",
- "0.2.0",
- "src/Vyral.Execution.Local/Vyral.Execution.Local.csproj",
- "publish-nuget",
- "preview",
- ),
(
"pypi",
"vyral",
- "0.1.1",
+ "0.1.2",
"runtimes/python/pyproject.toml",
"publish-pypi",
"prototype",
),
- (
- "npm",
- "vyral-client",
- "0.3.0",
- "clients/javascript/package.json",
- "publish-npm",
- "public",
- ),
- (
- "container",
- "ghcr.io/univeracity/vyral-server",
- "0.3.0",
- "Dockerfile",
- "publish-container",
- "mixed",
- ),
+)
+UNCHANGED = (
+ "Vyral.Primitives 0.2.0",
+ "Vyral.Execution 0.2.0",
+ "Vyral.Execution.Local 0.2.0",
+ "vyral-client 0.3.0",
)
EXCLUDED = {
"cloud-provider packages",
@@ -83,16 +49,17 @@
"Temporal packages",
"Python HTTP client distribution (vyral-client)",
"prototype integrations",
+ "server container",
}
AUTHORIZATION = {
"mode": "manual-protected-environment",
- "releaseTag": "v0.3.0",
+ "releaseTag": "v0.3.1",
"workflow": ".github/workflows/publish-first-cohort.yml",
"requirements": (
"a GitHub-verified signed annotated release tag that resolves to current main",
"a successful canonical Release Integrity push run for that exact commit",
- "the exact NuGet and PyPI registry trust relationships, plus the explicitly authorized direct-token npm delivery exception",
- "a manual dispatch from main through the named protected environment",
+ "the exact NuGet and PyPI registry trusted-publisher relationships",
+ "a manual dispatch from main through the named protected environments",
),
"publishers": (
(
@@ -109,20 +76,6 @@
"publish-pypi",
"GitHub Actions OIDC trusted publishing",
),
- (
- "npm",
- "https://registry.npmjs.org/",
- "publish-first-cohort.yml",
- "publish-npm",
- "Locally controlled direct-token publication, exact archive verified by the protected workflow",
- ),
- (
- "container",
- "https://ghcr.io",
- "publish-first-cohort.yml",
- "publish-container",
- "repository-scoped GitHub Actions GITHUB_TOKEN",
- ),
),
}
@@ -130,29 +83,16 @@
def _dotnet_identity(path: Path) -> tuple[str, str]:
project = ElementTree.parse(path).getroot()
package_id = next(
- (
- element.text
- for element in project.iter("PackageId")
- if element.text
- ),
+ (element.text for element in project.iter("PackageId") if element.text),
path.stem,
)
version = next(
- (
- element.text
- for element in project.iter("Version")
- if element.text
- ),
+ (element.text for element in project.iter("PackageVersion") if element.text),
None,
)
if version is None:
- defaults = ElementTree.parse(ROOT / "Directory.Build.props").getroot()
version = next(
- (
- element.text
- for element in defaults.iter("VyralReleaseVersion")
- if element.text
- ),
+ (element.text for element in project.iter("Version") if element.text),
None,
)
if not package_id or not version:
@@ -169,32 +109,21 @@ def _python_identity(path: Path) -> tuple[str, str]:
return name.group(1), version.group(1)
-def _source_identity(
- ecosystem: str,
- source: Path,
- declared_name: str,
- declared_version: str,
-) -> tuple[str, str]:
+def _source_identity(ecosystem: str, source: Path) -> tuple[str, str]:
if ecosystem == "nuget":
return _dotnet_identity(source)
if ecosystem == "pypi":
return _python_identity(source)
- if ecosystem == "npm":
- package = json.loads(source.read_text(encoding="utf-8"))
- return str(package.get("name")), str(package.get("version"))
- if ecosystem == "container":
- return declared_name, declared_version
raise SystemExit(f"Unsupported publication ecosystem: {ecosystem}")
def main() -> int:
manifest = json.loads(MANIFEST.read_text(encoding="utf-8"))
- if manifest.get("schemaVersion") != "vyral.publication-cohort.v1":
+ if manifest.get("schemaVersion") != "vyral.publication-cohort.v2":
raise SystemExit("Publication cohort schemaVersion is invalid.")
if manifest.get("publicationAuthorized") is not True:
- raise SystemExit(
- "The first publication cohort must remain explicitly authorized."
- )
+ raise SystemExit("The package release must remain explicitly authorized.")
+
artifacts = manifest.get("artifacts")
if not isinstance(artifacts, list):
raise SystemExit("Publication cohort artifacts must be an array.")
@@ -212,57 +141,53 @@ def main() -> int:
)
if actual != EXPECTED:
raise SystemExit(
- "The first publication cohort changed without updating its "
- "reviewed verifier boundary."
+ "The package release cohort changed without updating its reviewed verifier boundary."
)
- excluded = manifest.get("excludedFromFirstCohort")
+ if tuple(manifest.get("unchangedArtifacts", ())) != UNCHANGED:
+ raise SystemExit("The package release must identify every unchanged first-cohort artifact.")
+ excluded = manifest.get("excludedFromRelease")
if not isinstance(excluded, list) or set(excluded) != EXCLUDED:
- raise SystemExit("Publication cohort exclusions are incomplete.")
+ raise SystemExit("Package release exclusions are incomplete.")
authorization = manifest.get("authorization")
if not isinstance(authorization, dict):
- raise SystemExit("Publication cohort authorization is missing.")
+ raise SystemExit("Package release authorization is missing.")
if (
authorization.get("mode") != AUTHORIZATION["mode"]
or authorization.get("releaseTag") != AUTHORIZATION["releaseTag"]
or authorization.get("workflow") != AUTHORIZATION["workflow"]
):
- raise SystemExit("Publication cohort authorization boundary changed.")
+ raise SystemExit("Package release authorization boundary changed.")
if tuple(authorization.get("requirements", ())) != AUTHORIZATION["requirements"]:
- raise SystemExit("Publication authorization requirements changed.")
+ raise SystemExit("Package release authorization requirements changed.")
publishers = authorization.get("publishers")
- actual_publishers = tuple(
- (
- item.get("ecosystem"),
- item.get("registry"),
- item.get("workflowFile"),
- item.get("environment"),
- item.get("authentication"),
+ actual_publishers = (
+ tuple(
+ (
+ item.get("ecosystem"),
+ item.get("registry"),
+ item.get("workflowFile"),
+ item.get("environment"),
+ item.get("authentication"),
+ )
+ for item in publishers
+ if isinstance(item, dict)
)
- for item in publishers
- if isinstance(item, dict)
- ) if isinstance(publishers, list) else ()
+ if isinstance(publishers, list)
+ else ()
+ )
if actual_publishers != AUTHORIZATION["publishers"]:
- raise SystemExit("Publication registry-publisher boundary changed.")
+ raise SystemExit("Package release registry-publisher boundary changed.")
for ecosystem, name, version, relative, _environment, _maturity in EXPECTED:
source = ROOT / relative
if not source.is_file():
raise SystemExit(f"Publication source is missing: {relative}")
- actual_name, actual_version = _source_identity(
- ecosystem,
- source,
- name,
- version,
- )
- if (actual_name, actual_version) != (name, version):
- raise SystemExit(
- f"Publication identity drift for {relative}: "
- f"{actual_name} {actual_version}"
- )
+ if _source_identity(ecosystem, source) != (name, version):
+ raise SystemExit(f"Publication identity drift for {relative}.")
print(
- "publication-cohort=ok mode=authorized-first-cohort "
+ "publication-cohort=ok mode=authorized-package-patch "
f"artifacts={len(EXPECTED)} publishers={len(AUTHORIZATION['publishers'])} "
f"excluded={len(EXCLUDED)}"
)
diff --git a/scripts/verify-publication-policy.py b/scripts/verify-publication-policy.py
index f9484fd..b17597d 100644
--- a/scripts/verify-publication-policy.py
+++ b/scripts/verify-publication-policy.py
@@ -1,5 +1,5 @@
#!/usr/bin/env python3
-"""Verify that first-cohort publishing is manual, bounded, and fail-closed."""
+"""Verify that package and container publishing is manual, bounded, and fail-closed."""
from __future__ import annotations
@@ -94,11 +94,11 @@ def main() -> int:
if cohort.get("publicationAuthorized") is not True:
errors.append(
"publication-cohort.json must explicitly authorize the reviewed "
- "first cohort"
+ "package release"
)
publisher = workflow_text.get(FIRST_COHORT_PUBLISH_WORKFLOW)
if publisher is None:
- errors.append("the authorized first-cohort publisher workflow is missing")
+ errors.append("the authorized package publisher workflow is missing")
publisher = ""
container_publisher = workflow_text.get(CONTAINER_SECURITY_PUBLISH_WORKFLOW)
if container_publisher is None:
@@ -126,10 +126,9 @@ def main() -> int:
for requirement in (
"workflow_dispatch:",
"release_tag:",
- "v0.3.0",
+ "v0.3.1",
"confirm:",
"type: boolean",
- "npm_direct_token_published:",
"GITHUB_TOKEN: ${{ github.token }}",
"refs/heads/main",
"git cat-file -t \"refs/tags/${RELEASE_TAG}\"",
@@ -137,20 +136,12 @@ def main() -> int:
"release-integrity.yml/runs?head_sha=",
"name: publish-nuget",
"name: publish-pypi",
- "name: publish-npm",
- "name: publish-container",
- "node-version: \"22.14.0\"",
- "npm@11.5.1",
- "Verify direct-token npm first cohort",
- "Verify the authorized direct-token archive",
- 'npm view vyral-client@0.3.0 dist.integrity',
+ "name: package-release-v0.3.1",
+ 'SOURCE_DATE_EPOCH: "315532800"',
"NuGet/login@8d196754b4036150537f80ac539e15c2f1028841",
"pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33",
"skip-existing: true",
- "docker/setup-buildx-action@37fe631027851001ddb9b187196cc803df7f5f0e",
- "driver: docker-container",
- "docker/build-push-action@53b7df96c91f9c12dcc8a07bcb9ccacbed38856a",
- "ghcr.io/univeracity/vyral-server:0.3.0",
+ "Verify public package availability",
):
if requirement not in publisher:
errors.append(
@@ -165,14 +156,16 @@ def main() -> int:
pattern = PUBLISH_PATTERNS[label]
if not pattern.search(publisher):
errors.append(f"{FIRST_COHORT_PUBLISH_WORKFLOW} is missing expected {label}")
- if not re.search(
- r"npm\s+view\s+vyral-client@0\.3\.0\s+dist\.integrity",
- publisher,
- re.IGNORECASE,
+ for label in (
+ "JavaScript package publish",
+ "Docker push",
+ "OCI or Helm push",
+ "GitHub release creation",
):
- errors.append(
- f"{FIRST_COHORT_PUBLISH_WORKFLOW} is missing exact npm archive verification"
- )
+ if PUBLISH_PATTERNS[label].search(publisher):
+ errors.append(
+ f"{FIRST_COHORT_PUBLISH_WORKFLOW} may publish only the reviewed NuGet and PyPI packages, not {label}"
+ )
if re.search(
r"VYRAL_ENABLE_AUTOMATED_WORKFLOWS\s*[:=]\s*['\"]?true\b",
publisher,
@@ -214,18 +207,19 @@ def main() -> int:
for requirement in (
"workflow_dispatch:",
- "server-v0.3.2",
+ "server-v0.3.3",
'test "$GITHUB_REF" = "refs/heads/main"',
'git cat-file -t "refs/tags/${RELEASE_TAG}"',
".verification.verified == true",
"release-integrity.yml/runs?head_sha=",
"name: publish-container",
"docker/build-push-action@53b7df96c91f9c12dcc8a07bcb9ccacbed38856a",
- "VYRAL_IMAGE_VERSION=0.3.2",
- "ghcr.io/univeracity/vyral-server:0.3.2",
+ "VYRAL_IMAGE_VERSION=0.3.3",
+ "ghcr.io/univeracity/vyral-server:0.3.3",
"scripts/verify-hosted-worker-container.sh",
+ "scripts/verify-mcp-container.sh",
"aquasec/trivy:0.73.0@sha256:",
- "worker-container-server-v0.3.2",
+ "server-container-server-v0.3.3",
):
if requirement not in worker_container_publisher:
errors.append(
@@ -361,7 +355,7 @@ def main() -> int:
else "frozen-requirements-missing"
)
print(
- "publication-policy=ok mode=authorized-first-cohort "
+ "publication-policy=ok mode=authorized-package-patch "
f"pausedQualificationWorkflows={len(PAUSED_QUALIFICATION_WORKFLOWS)} "
f"coreAssuranceWorkflows={len(CORE_ASSURANCE_WORKFLOWS)} "
f"authorizedPublishers={len(PUBLISH_WORKFLOWS)} "
diff --git a/scripts/verify-python-runtime.sh b/scripts/verify-python-runtime.sh
index 6e9c517..7198aa3 100755
--- a/scripts/verify-python-runtime.sh
+++ b/scripts/verify-python-runtime.sh
@@ -4,6 +4,7 @@ umask 077
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
cd "$ROOT"
+export SOURCE_DATE_EPOCH=315532800
work_root="$(mktemp -d "${TMPDIR:-/tmp}/vyral-python-runtime-XXXXXX")"
cleanup() {
@@ -50,8 +51,8 @@ python3 -m build \
--outdir "$work_root/dist" \
runtimes/python
-wheel="$(find "$work_root/dist" -maxdepth 1 -type f -name 'vyral-0.1.1-*.whl' -print -quit)"
-sdist="$work_root/dist/vyral-0.1.1.tar.gz"
+wheel="$(find "$work_root/dist" -maxdepth 1 -type f -name 'vyral-0.1.2-*.whl' -print -quit)"
+sdist="$work_root/dist/vyral-0.1.2.tar.gz"
if [[ -z "$wheel" || ! -f "$sdist" ]]; then
echo "Python runtime build did not produce the expected wheel and source distribution." >&2
exit 1
diff --git a/scripts/verify-release-artifacts.sh b/scripts/verify-release-artifacts.sh
index 64fb6a9..ffcebd9 100755
--- a/scripts/verify-release-artifacts.sh
+++ b/scripts/verify-release-artifacts.sh
@@ -309,6 +309,8 @@ for package in packages:
package_id = value("id")
package_version = value("version")
expected_versions = {
+ "Vyral.Abstractions": "0.3.1",
+ "Vyral.Local": "0.3.1",
"Vyral.Primitives": "0.2.0",
"Vyral.Execution": "0.2.0",
"Vyral.Execution.Aws": "0.2.0",
@@ -460,7 +462,7 @@ scripts/verify-python-runtime.sh
--editable "runtimes/python[extropic]"
"$extropic_venv/bin/python" scripts/verify-python-extropic-sdk-surface.py
)
-python3 -m build \
+SOURCE_DATE_EPOCH=315532800 python3 -m build \
--outdir "$ARTIFACT_ROOT/python-runtime" \
runtimes/python
(
@@ -514,8 +516,8 @@ from pathlib import Path
import sys
artifacts = Path(sys.argv[1])
-wheels = list(artifacts.glob("vyral-0.1.1-*.whl"))
-sdists = list(artifacts.glob("vyral-0.1.1.tar.gz"))
+wheels = list(artifacts.glob("vyral-0.1.2-*.whl"))
+sdists = list(artifacts.glob("vyral-0.1.2.tar.gz"))
if len(wheels) != 1 or len(sdists) != 1:
raise SystemExit(
"Expected one vyral runtime wheel and one source distribution."
diff --git a/scripts/verify-version-policy.py b/scripts/verify-version-policy.py
index 9af75fa..3cf076a 100755
--- a/scripts/verify-version-policy.py
+++ b/scripts/verify-version-policy.py
@@ -13,9 +13,10 @@
ROOT = Path(__file__).resolve().parent.parent
PRODUCT_VERSION = "0.3.0"
-SERVER_IMAGE_VERSION = "0.3.2"
+CORE_PACKAGE_VERSION = "0.3.1"
+SERVER_IMAGE_VERSION = "0.3.3"
EXECUTION_VERSION = "0.2.0"
-PYTHON_RUNTIME_VERSION = "0.1.1"
+PYTHON_RUNTIME_VERSION = "0.1.2"
PYTHON_RUNTIME_FIXTURE_MINIMUM = "0.1.0"
GO_MINIMUM_VERSION = "1.25.0"
GO_BUILD_VERSION = "1.26.6"
@@ -74,6 +75,14 @@ def main() -> int:
directory_props = project_properties("Directory.Build.props")
require(directory_props.get("VyralReleaseVersion"), PRODUCT_VERSION, "default product version")
+ for relative in (
+ "src/Vyral.Abstractions/Vyral.Abstractions.csproj",
+ "src/Vyral.Local/Vyral.Local.csproj",
+ ):
+ properties = project_properties(relative)
+ require(properties.get("Version"), CORE_PACKAGE_VERSION, f"{relative} assembly version")
+ require(properties.get("PackageVersion"), CORE_PACKAGE_VERSION, f"{relative} package version")
+
catalog = json.loads((ROOT / "contracts/public-sdk-surface.json").read_text(encoding="utf-8"))
openapi = json.loads((ROOT / "src/Vyral.Server/contracts/vyral.openapi.json").read_text(encoding="utf-8"))
schema = json.loads((ROOT / "contracts/schemas/vyral-public.schema.json").read_text(encoding="utf-8"))
@@ -212,7 +221,7 @@ def main() -> int:
if "| Server container | `0.3.x` |" not in stability:
raise SystemExit("The stability policy must document the server container version line.")
- allowed_explicit_versions = {PRODUCT_VERSION, EXECUTION_VERSION}
+ allowed_explicit_versions = {PRODUCT_VERSION, CORE_PACKAGE_VERSION, EXECUTION_VERSION}
for project in sorted((ROOT / "src").glob("*/**/*.csproj")):
text = project.read_text(encoding="utf-8-sig")
explicit = set(re.findall(r"<(?:Version|PackageVersion)>([^<$]+)", text))
@@ -223,7 +232,8 @@ def main() -> int:
)
print(
- f"version-policy=ok product={PRODUCT_VERSION} server-image={SERVER_IMAGE_VERSION} execution={EXECUTION_VERSION} "
+ f"version-policy=ok product={PRODUCT_VERSION} core-packages={CORE_PACKAGE_VERSION} "
+ f"server-image={SERVER_IMAGE_VERSION} execution={EXECUTION_VERSION} "
f"python-runtime={PYTHON_RUNTIME_VERSION} go-minimum={GO_MINIMUM_VERSION} "
f"go-build={GO_BUILD_VERSION} bubblewrap-build={BUBBLEWRAP_BUILD_VERSION} "
"core-tfms=net8.0,net10.0"
diff --git a/scripts/verify-worker-container-release.py b/scripts/verify-worker-container-release.py
index b339bb4..f5bead3 100755
--- a/scripts/verify-worker-container-release.py
+++ b/scripts/verify-worker-container-release.py
@@ -16,7 +16,7 @@
"publicationAuthorized": True,
"image": {
"name": "ghcr.io/univeracity/vyral-server",
- "version": "0.3.2",
+ "version": "0.3.3",
"source": "Dockerfile",
"environment": "publish-container",
"maturity": "mixed",
@@ -28,13 +28,13 @@
},
"authorization": {
"mode": "manual-protected-environment",
- "releaseTag": "server-v0.3.2",
+ "releaseTag": "server-v0.3.3",
"workflow": ".github/workflows/publish-worker-container.yml",
"requirements": [
"a GitHub-verified signed annotated server tag that resolves to current main",
"a successful canonical Release Integrity run for that exact commit, including the packaged hosted-worker receipt",
"a manual dispatch from main through the publish-container protected environment",
- "a passing hosted-worker qualification and vulnerability scan against the exact published digest",
+ "passing MCP and hosted-worker qualification plus a vulnerability scan against the exact published digest",
],
"publisher": {
"ecosystem": "container",
@@ -55,7 +55,7 @@ def main() -> int:
workflow = WORKFLOW.read_text(encoding="utf-8")
for requirement in (
"workflow_dispatch:",
- "server-v0.3.2",
+ "server-v0.3.3",
'test "$GITHUB_REF" = "refs/heads/main"',
'git cat-file -t "refs/tags/${RELEASE_TAG}"',
".verification.verified == true",
@@ -71,11 +71,12 @@ def main() -> int:
"docker/build-push-action@53b7df96c91f9c12dcc8a07bcb9ccacbed38856a",
"sbom: true",
"provenance: mode=max",
- "VYRAL_IMAGE_VERSION=0.3.2",
- "ghcr.io/univeracity/vyral-server:0.3.2",
+ "VYRAL_IMAGE_VERSION=0.3.3",
+ "ghcr.io/univeracity/vyral-server:0.3.3",
"scripts/verify-hosted-worker-container.sh",
+ "scripts/verify-mcp-container.sh",
"aquasec/trivy:0.73.0@sha256:",
- "worker-container-server-v0.3.2",
+ "server-container-server-v0.3.3",
):
if requirement not in workflow:
raise SystemExit(f"Worker container publisher is missing {requirement!r}.")
@@ -85,7 +86,7 @@ def main() -> int:
if "\n push:" in workflow:
raise SystemExit("Worker container publisher must not have an automatic push trigger.")
- print("worker-container-release=ok tag=server-v0.3.2 image=0.3.2")
+ print("worker-container-release=ok tag=server-v0.3.3 image=0.3.3")
return 0
diff --git a/src/Vyral.Abstractions/Vyral.Abstractions.csproj b/src/Vyral.Abstractions/Vyral.Abstractions.csproj
index bb72e14..7a2ad39 100644
--- a/src/Vyral.Abstractions/Vyral.Abstractions.csproj
+++ b/src/Vyral.Abstractions/Vyral.Abstractions.csproj
@@ -6,6 +6,8 @@