Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
109 commits
Select commit Hold shift + click to select a range
3f7750a
feat(platform): extract calendar evaluation from casework-core
jeremi Sep 14, 2026
99fe933
feat(auth): add scheduling bounds to task grants
jeremi Sep 14, 2026
b7bcd9f
fix(platform): keep exceptional reopenings inside published hours
jeremi Sep 14, 2026
6767426
feat(platform): export the scheduling permission and pin its wire form
jeremi Sep 14, 2026
9f50227
test(breg): refuse a scheduling grant in the registry binding
jeremi Sep 14, 2026
cb2c906
feat(scheduling): add the offline core and authoring tooling
jeremi Sep 14, 2026
a3bdb76
feat(scheduling): author reminder offsets on offerings
jeremi Sep 14, 2026
d433944
feat(scheduling): add the wire documents to the core
jeremi Sep 14, 2026
6bd9ead
feat(scheduling): pin the problem status map in the core
jeremi Sep 14, 2026
ab8147f
feat(scheduling): pin the HTTP wire names and catalogue listings
jeremi Sep 14, 2026
ad9f0ca
feat(scheduling): add the bounded Rust client
jeremi Sep 14, 2026
869cf17
feat(scheduling): add the service layer over the capacity store
jeremi Sep 14, 2026
e0051bb
feat(scheduling): add schedulingctl records apply and package
jeremi Sep 14, 2026
58279d8
feat(scheduling): type the request edge as product problem codes
jeremi Sep 15, 2026
87beb0b
feat(scheduling): add the product checkpoint and starter example
jeremi Sep 15, 2026
9f3adfc
fix(scheduling): correct review findings in the committed runtime half
jeremi Sep 15, 2026
eb253a4
feat(scheduling): serve the runtime edge with auth, workers, and schema
jeremi Sep 15, 2026
2a8f0d8
feat(scheduling): register problem and schema identifiers
jeremi Sep 15, 2026
7d0e0b7
docs(scheduling): describe the product in agent guidance
jeremi Sep 15, 2026
110c66f
feat(scheduling): publish the scheduling command lines in the CLI ref…
jeremi Sep 15, 2026
349532b
feat(scheduling): add the local acceptance demo over the public contract
jeremi Sep 15, 2026
6c81981
feat(scheduling): generate the OpenAPI contract document with drift c…
jeremi Sep 15, 2026
de035f0
docs(scheduling): publish the Scheduling API reference on the docs site
jeremi Sep 15, 2026
e8c9717
fix(ci): register the five Scheduling crates in the Rust shard inventory
jeremi Sep 15, 2026
ed7cbd8
test(scheduling): require a database for the runtime commitment suite
jeremi Sep 15, 2026
97fcbe9
fix(platform-calendar): name no caller's vocabulary in a gap or fold …
jeremi Sep 15, 2026
c0f5dc0
fix(scheduling): resolve one location's openings into a canonical pub…
jeremi Sep 15, 2026
e8d2241
chore: sync the workspace lock to 0.32.0
jeremi Sep 15, 2026
8a352a1
fix(scheduling): keep the reschedule exclusion inside the runtime's t…
jeremi Sep 15, 2026
75030ce
fix(scheduling): assess a subquota a proposal introduces, not only on…
jeremi Sep 15, 2026
bf74e95
fix(scheduling): compare standing claims against the proposed window …
jeremi Sep 15, 2026
a05beb9
fix(scheduling): refuse a staffing pool that an exact-time offering a…
jeremi Sep 15, 2026
44ece00
feat(scheduling): emit a runtime configuration example beside each in…
jeremi Sep 15, 2026
769e7f5
docs(scheduling): document every runtime configuration block and its …
jeremi Sep 15, 2026
c85157a
docs(scheduling): document the task-grant shape and how the runtime m…
jeremi Sep 15, 2026
80c0c0e
docs(scheduling): add the product changelog and contributor orientation
jeremi Sep 15, 2026
aa11e44
docs(scheduling): state the product boundary, its exclusions, and its…
jeremi Sep 15, 2026
40085fe
docs: list Registry Scheduling among the stack's products
jeremi Sep 15, 2026
4182fb1
fix(scheduling): close the channel vocabulary a subquota is drawn from
jeremi Sep 15, 2026
c880943
fix(scheduling): refuse a leftover capacity policy nothing reads
jeremi Sep 15, 2026
09db5ae
feat(scheduling): hold the product's security invariants in a checked…
jeremi Sep 15, 2026
2699471
docs: bound scheduling composition and ledger authority in agent guid…
jeremi Sep 15, 2026
9f28f5a
docs(scheduling): state what the in-transaction grant re-check covers
jeremi Sep 15, 2026
d864467
ci(scheduling): run the product's gates and database suite on every c…
jeremi Sep 15, 2026
9a41b1e
test(scheduling): make the checkpoint prove what it claims to check
jeremi Sep 15, 2026
387a5ba
feat(scheduling): ship the runtime image and installer
jeremi Sep 15, 2026
7aa9db3
refactor(casework): re-export only the calendar evaluator Casework uses
jeremi Sep 15, 2026
950360a
fix(scheduling): admit only the RFC 9068 access-token type
jeremi Sep 15, 2026
c093263
fix(scheduling): make a production deployment name the clients it admits
jeremi Sep 15, 2026
013a28c
fix(scheduling): tombstone spent idempotency receipts instead of dele…
jeremi Sep 15, 2026
d6e5d34
fix(scheduling): refuse a raced idempotency key instead of failing th…
jeremi Sep 15, 2026
97e4977
feat(scheduling): bind exchanged credentials to declared assertion au…
jeremi Sep 15, 2026
75575d6
fix(scheduling): admit commitments against the stored policy revision
jeremi Sep 15, 2026
57216ef
fix(scheduling): hold a failing reminder intent until its back-off pa…
jeremi Sep 15, 2026
d24c925
fix(scheduling): answer a verifier outage with a retry, not a challenge
jeremi Sep 15, 2026
100787c
fix(scheduling): refuse to judge an expiry the clock cannot date
jeremi Sep 15, 2026
e98a786
fix(scheduling): refuse a records swap that strands a live claim
jeremi Sep 15, 2026
e6bd124
fix(schedulingctl): report calendar-only fixture failures per fixture
jeremi Sep 15, 2026
4e5ecaa
fix(scheduling): bound the caller strings a commitment stores
jeremi Sep 15, 2026
c06ac4a
docs(scheduling): state the cursor actor-binding contract where it is…
jeremi Sep 15, 2026
5f20398
fix(scheduling): name the step and the cause when the database fails …
jeremi Sep 15, 2026
535afcf
fix(schedulingctl): report ok:false when check --deny-findings or tes…
jeremi Sep 15, 2026
3a75e8d
fix(scheduling-client): declare a workspace.dependencies entry
jeremi Sep 15, 2026
0bffd3b
fix(schedulingctl): accept --format human|json, matching every siblin…
jeremi Sep 15, 2026
14ac456
fix(scheduling): declare the refusal a malformed path segment already…
jeremi Sep 15, 2026
7b47646
fix(schedulingctl): name the authored policy path by its own constant…
jeremi Sep 15, 2026
9a920ea
fix(scheduling): audit a permission refused before the transaction opens
jeremi Sep 15, 2026
33942fc
fix(scheduling): bound the caller-chosen duplicate key in the ledger
jeremi Sep 15, 2026
365e23e
fix(scheduling): let a client outlive the deployment it reads
jeremi Sep 15, 2026
9499d8e
fix(scheduling): answer an unknown offering and a malformed body thei…
jeremi Sep 15, 2026
72f9f99
feat(scheduling): read the delivery intents nothing will carry further
jeremi Sep 15, 2026
363c77f
fix(schedulingctl): print expected and actual codes for a failing fix…
jeremi Sep 15, 2026
0608eb4
fix(scheduling): say where and why a configuration was refused
jeremi Sep 15, 2026
f61ddc6
test(scheduling): pin that two callers racing for one unit book it once
jeremi Sep 15, 2026
7ae3158
fix(scheduling): hold the caller, not just the pool, at the hold ceiling
jeremi Sep 15, 2026
c7f94e6
test(scheduling): pin what the retention sweep erases and what it leaves
jeremi Sep 15, 2026
e7f2029
fix(scheduling): document the absence an unknown offering answers
jeremi Sep 15, 2026
b1751e5
fix(scheduling): publish the audit journal in the order it was written
jeremi Sep 15, 2026
4b2dba4
fix(scheduling): name the package manifest apart from the policy
jeremi Sep 15, 2026
fb099e4
test(scheduling): pin what a dispatch pass sends and what it concludes
jeremi Sep 15, 2026
20514e3
chore(identifiers): regenerate the catalog for the scheduling runtime…
jeremi Sep 15, 2026
9c0957d
feat(schedulingctl): read undelivered delivery intents
jeremi Sep 15, 2026
01020bd
docs(scheduling): say which clients and which authorities a deploymen…
jeremi Sep 15, 2026
7c63cbb
docs: answer an unknown offering as absent in the Scheduling API refe…
jeremi Sep 15, 2026
0d14cb7
docs(scheduling): record the deferred schedulingctl dev verb
jeremi Sep 15, 2026
894acd4
docs(schedulingctl): correct allowedClients and document assertionIss…
jeremi Sep 15, 2026
316c3e0
fix(scheduling): name a member only when the offering books one
jeremi Sep 15, 2026
3480c1e
chore(scheduling): write the store and runtime prose without em dashes
jeremi Sep 15, 2026
77d6868
feat(scheduling-core): say when an authored value's text is outside i…
jeremi Sep 15, 2026
d2ab85e
feat(schedulingctl): refuse a malformed authored value unconditionally
jeremi Sep 15, 2026
7b228f9
docs(scheduling): record the edge hardening as invariants rather than…
jeremi Sep 15, 2026
9d5b17a
docs: say the journal records a permission refused before a commitment
jeremi Sep 15, 2026
cbd9569
chore(scheduling): write the edge and core prose without em dashes
jeremi Sep 15, 2026
394ed4f
chore(schedulingctl): write the records module doc without em dashes
jeremi Sep 15, 2026
f0d55b9
feat(schedulingctl): give the arrival-window template a banded units …
jeremi Sep 15, 2026
bd76738
fix(schedulingctl): keep the runtime database suite out of database-f…
jeremi Sep 15, 2026
3c15a6a
test(scheduling): gate that the database suites stay opt-in
jeremi Sep 15, 2026
734836e
ci: run the Scheduling delivery intent suite
jeremi Sep 15, 2026
d7259c3
test(release): bind each PostgreSQL image pin to the job that runs it
jeremi Sep 15, 2026
477a799
docs(site): record the reviewed CLI publication state for 0.32.0
jeremi Sep 15, 2026
a715c2b
test(schedulingctl): compare intent due times at the resolution Postg…
jeremi Sep 15, 2026
50525c4
fix(scheduling): guard lifecycle revisions, dispatch ownership, and a…
jeremi Sep 17, 2026
a2eb4bd
fix(scheduling): recheck the grant at commit and stop sends past the …
jeremi Sep 17, 2026
7be7edc
fix(scheduling): hold the database suites' opt-in gate under forwarding
jeremi Sep 17, 2026
4c12601
fix(scheduling): prove contract citations selectable and suites opt-in
jeremi Sep 17, 2026
7857a25
Merge origin/main and align Scheduling hooks
jeremi Sep 19, 2026
5b04df3
feat(scheduling): deliver appointment observer hooks
jeremi Sep 19, 2026
9674e86
fix(scheduling): close beta release gaps
jeremi Sep 19, 2026
4bf86bc
Merge branch 'main' into feat/scheduling-mvp
jeremi Sep 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions .github/scripts/ci_changes.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
"registry-platform-audit",
"registry-platform-authcommon",
"registry-platform-buildinfo",
"registry-platform-calendar",
"registry-platform-canonical-json",
"registry-platform-config",
"registry-platform-crypto",
Expand Down Expand Up @@ -64,6 +65,12 @@
"registry-casework-client-node",
"registry-casework-client-py",
),
"scheduling": (
"registry-scheduling-core",
"registry-scheduling",
"registry-schedulingctl",
"registry-scheduling-client",
),
"stack-client": ("registry-record", "registry-stack-client"),
"evidence": (
"registry-evidence",
Expand Down Expand Up @@ -92,6 +99,7 @@
RELAY_CLIENT_PACKAGES = frozenset(SHARDS["relay-client"])
BREG_PACKAGES = frozenset(SHARDS["breg"])
CASEWORK_PACKAGES = frozenset(SHARDS["casework"])
SCHEDULING_PACKAGES = frozenset(SHARDS["scheduling"])
STACK_CLIENT_PACKAGES = frozenset(SHARDS["stack-client"])

# These are the cross-product semantic commitments implemented independently by
Expand Down Expand Up @@ -688,6 +696,8 @@ def classify(
seeds.update(BREG_PACKAGES)
elif path.startswith("products/casework/"):
seeds.update(CASEWORK_PACKAGES)
elif path.startswith("products/scheduling/"):
seeds.update(SCHEDULING_PACKAGES)
elif path.startswith("products/identifiers/"):
# The catalog gate compiles its focused Relay V2 exporter.
# Catalog-only tooling does not require the full Rust matrix.
Expand Down Expand Up @@ -939,7 +949,9 @@ def classify(
for path in paths
),
"evidence_contracts": bool(affected & EVIDENCE_PACKAGES),
"scheduling_contracts": bool(affected & SCHEDULING_PACKAGES),
"casework_postgres": bool(affected & CASEWORK_PACKAGES),
"scheduling_postgres": bool(affected & SCHEDULING_PACKAGES),
"release_tool": release_tool,
"release_source_proof": release_source_proof,
"docs": docs,
Expand Down
14 changes: 13 additions & 1 deletion .github/scripts/test_ci_changes.py
Original file line number Diff line number Diff line change
Expand Up @@ -273,6 +273,12 @@ def test_deferred_ci_work_keeps_its_selector_and_explicit_status_guard(
) -> None:
selectors = {
"casework-postgres": "needs.changes.outputs.casework_postgres == 'true'",
"scheduling-postgres": (
"needs.changes.outputs.scheduling_postgres == 'true'"
),
"scheduling-contracts": (
"needs.changes.outputs.scheduling_contracts == 'true'"
),
"platform-fuzz": "needs.changes.outputs.platform == 'true'",
"platform-coverage": "needs.changes.outputs.platform == 'true'",
"rust-quality": "needs.changes.outputs.rust == 'true'",
Expand Down Expand Up @@ -338,6 +344,8 @@ def test_ci_scheduling_graph_retains_every_job_and_aggregate_dependency(
"identifiers",
"rust-result",
"casework-postgres",
"scheduling-contracts",
"scheduling-postgres",
"release-tool",
"release-tool-required",
"release-source-proof",
Expand Down Expand Up @@ -371,6 +379,8 @@ def test_ci_scheduling_graph_retains_every_job_and_aggregate_dependency(
"breg-wasm",
"identifiers",
"casework-postgres",
"scheduling-postgres",
"scheduling-contracts",
),
"release-tool-required": ("changes", "release-tool"),
"release-source-proof-required": ("changes", "release-source-proof"),
Expand All @@ -394,6 +404,8 @@ def test_ci_scheduling_graph_retains_every_job_and_aggregate_dependency(
"breg-wasm",
"identifiers",
"casework-postgres",
"scheduling-postgres",
"scheduling-contracts",
"release-tool",
"release-source-proof",
"evidence-tutorials",
Expand Down Expand Up @@ -449,7 +461,7 @@ def test_final_aggregate_flattens_rust_results_with_equivalent_outcomes(
final_needs,
previous_final_needs.difference({"rust-result"}).union(rust_needs),
)
self.assertEqual(29, len(final_needs))
self.assertEqual(31, len(final_needs))

def embedded_python(job: dict[str, Any]) -> str:
run = job["steps"][0]["run"]
Expand Down
1 change: 1 addition & 0 deletions .github/scripts/test_nightly_rust_coverage.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ def test_all_live_shards_have_stable_flags_and_owned_packages(self) -> None:
"relay-v2": "relay-v2",
"breg": "breg",
"casework": "casework",
"scheduling": "scheduling",
"stack-client": "stack-client",
"evidence": "evidence",
"developer-tools": "developer-tools",
Expand Down
95 changes: 93 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,9 @@ jobs:
relay_client_contracts: ${{ steps.filter.outputs.relay_client_contracts }}
breg_contracts: ${{ steps.filter.outputs.breg_contracts }}
casework_postgres: ${{ steps.filter.outputs.casework_postgres }}
scheduling_postgres: ${{ steps.filter.outputs.scheduling_postgres }}
evidence_contracts: ${{ steps.filter.outputs.evidence_contracts }}
scheduling_contracts: ${{ steps.filter.outputs.scheduling_contracts }}
release_tool: ${{ steps.filter.outputs.release_tool }}
release_source_proof: ${{ steps.filter.outputs.release_source_proof }}
docs: ${{ steps.filter.outputs.docs }}
Expand Down Expand Up @@ -702,6 +704,88 @@ jobs:
CASEWORK_SOURCE_RETENTION_TEST_DATABASE_URL: postgresql://casework:casework_test@localhost:${{ job.services.postgres.ports['5432'] }}/casework_source_retention
run: cargo test --locked --profile ci -p registry-casework --features postgres-test --test source_retention_postgres

scheduling-contracts:
name: Scheduling product contracts
needs: [changes, rust-policy]
if: ${{ !cancelled() && needs.changes.result == 'success' && needs.changes.outputs.scheduling_contracts == 'true' }}
runs-on: ubuntu-24.04
timeout-minutes: 20
steps:
- name: Checkout
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
with:
persist-credentials: false
submodules: false

- name: Cache Cargo registry
uses: Swatinem/rust-cache@f0d9c3887740aee45f6153b24b3a6b815192ec16 # v2
with:
shared-key: workspace-registry
cache-targets: false
save-if: ${{ github.ref == 'refs/heads/main' }}

- name: Scheduling contract consistency
run: products/scheduling/scripts/check-contracts.sh

scheduling-postgres:
name: Scheduling PostgreSQL transactions
needs: [changes, rust-policy]
if: ${{ !cancelled() && needs.changes.result == 'success' && needs.changes.outputs.scheduling_postgres == 'true' }}
runs-on: ubuntu-24.04
timeout-minutes: 30
services:
postgres:
image: postgres:17.11@sha256:67f41722b7a8cbdb868a44a4995c846eddfdc2973bccb291ce937dce88ad5675
env:
POSTGRES_DB: scheduling
POSTGRES_USER: scheduling
POSTGRES_PASSWORD: scheduling_test
options: >-
--health-cmd "pg_isready -U scheduling -d scheduling"
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports:
- 5432/tcp
steps:
- name: Checkout
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
with:
persist-credentials: false
submodules: false
- name: Rust cache
uses: Swatinem/rust-cache@f0d9c3887740aee45f6153b24b3a6b815192ec16 # v2
with:
shared-key: workspace-registry
cache-targets: false
save-if: ${{ github.ref == 'refs/heads/main' }}
- name: Build the Scheduling authoring tool
run: cargo build --locked --profile ci -p registry-schedulingctl
- name: Verify Scheduling product contracts and offline authoring journeys
env:
SCHEDULINGCTL_BIN: ${{ github.workspace }}/target/ci/schedulingctl
run: products/scheduling/scripts/check-checkpoint.sh
- name: Verify commitment ledger transactions
env:
SCHEDULING_TEST_DATABASE_URL: postgresql://scheduling:scheduling_test@localhost:${{ job.services.postgres.ports['5432'] }}/scheduling
run: cargo test --locked --profile ci -p registry-scheduling --features postgres-test --test postgres_commitments
- name: Create isolated authoring-apply test database
env:
POSTGRES_CONTAINER_ID: ${{ job.services.postgres.id }}
run: docker exec "$POSTGRES_CONTAINER_ID" createdb -U scheduling scheduling_records_apply
- name: Verify offline authoring record application
env:
SCHEDULING_TEST_DATABASE_URL: postgresql://scheduling:scheduling_test@localhost:${{ job.services.postgres.ports['5432'] }}/scheduling_records_apply
run: cargo test --locked --profile ci -p registry-schedulingctl --features postgres-test --test records_apply_postgres
- name: Create isolated delivery-intent test database
env:
POSTGRES_CONTAINER_ID: ${{ job.services.postgres.id }}
run: docker exec "$POSTGRES_CONTAINER_ID" createdb -U scheduling scheduling_intents
- name: Verify undelivered delivery intent reads
env:
SCHEDULING_TEST_DATABASE_URL: postgresql://scheduling:scheduling_test@localhost:${{ job.services.postgres.ports['5432'] }}/scheduling_intents
run: cargo test --locked --profile ci -p registry-schedulingctl --features postgres-test --test intents_postgres

breg-contracts:
name: Base Registry Engine product contracts (${{ matrix.lane }})
needs: changes
Expand Down Expand Up @@ -777,15 +861,18 @@ jobs:
BREG_POSTGRES_LANE: ${{ matrix.lane }}
run: products/breg/scripts/test-postgres.sh --lane "$BREG_POSTGRES_LANE"

- name: Casework task approval through stock issuer and BReg
- name: Casework task approval through stock issuer to Evidence, BReg, and Scheduling
if: matrix.lane == 'postgres'
shell: bash
run: |
set -euo pipefail
cargo build --locked --profile ci -p registry-scheduling \
--example scheduling-auth-probe
SCHEDULING_AUTH_PROBE_BIN="${GITHUB_WORKSPACE}/target/ci/examples/scheduling-auth-probe" \
CASEWORK_ASSIGNMENT_TEST_DATABASE_URL="${BREG_TEST_DATABASE_URL}" \
cargo test --locked --profile ci -p registry-casework \
--features postgres-test --lib \
approved_casework_tasks_exchange_on_stock_thunderid_for_evidence_and_revoke_breg_writes \
approved_casework_tasks_reach_evidence_breg_and_scheduling_through_stock_thunderid \
-- --ignored
cargo build --locked --profile ci -p registry-casework -p registry-caseworkctl
cargo test --locked --profile ci -p registry-casework \
Expand Down Expand Up @@ -921,6 +1008,8 @@ jobs:
- breg-wasm
- identifiers
- casework-postgres
- scheduling-postgres
- scheduling-contracts
runs-on: ubuntu-slim
env:
RUST_JOB_RESULTS: ${{ toJSON(needs) }}
Expand Down Expand Up @@ -1875,6 +1964,8 @@ jobs:
- breg-wasm
- identifiers
- casework-postgres
- scheduling-postgres
- scheduling-contracts
- release-tool
- release-source-proof
- evidence-tutorials
Expand Down
3 changes: 2 additions & 1 deletion .github/workflows/release-canary.yml
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ jobs:
PY
printf '{"spdxVersion":"SPDX-2.3","name":"release-canary"}\n' \
> canary/bundle-root/registry-stack-${tag}.sbom.spdx.json
image_names=(relay evidence discovery breg casework)
image_names=(relay evidence discovery breg casework scheduling)

write_image_reports() {
local name="$1"
Expand Down Expand Up @@ -109,6 +109,7 @@ jobs:
"evidence-image",
"breg-image",
"casework-image",
"scheduling-image",
"relay-image"
]
}' > "${evidence_root}/advisory-verdict.json"
Expand Down
13 changes: 12 additions & 1 deletion .github/workflows/release-candidate.yml
Original file line number Diff line number Diff line change
Expand Up @@ -255,7 +255,7 @@ jobs:
strategy:
fail-fast: false
matrix:
group: [core, breg, casework]
group: [core, breg, casework, scheduling]
steps:
- name: Checkout exact candidate source
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
Expand Down Expand Up @@ -340,6 +340,12 @@ jobs:
name: canonical-linux-binaries-casework-${{ needs.validate.outputs.source_sha }}-${{ github.run_id }}-${{ github.run_attempt }}
path: binary-shards/casework

- name: Download canonical Linux Scheduling binary shard
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: canonical-linux-binaries-scheduling-${{ needs.validate.outputs.source_sha }}-${{ github.run_id }}-${{ github.run_attempt }}
path: binary-shards/scheduling

- name: Merge and smoke the canonical Linux payload
run: |
set -euo pipefail
Expand All @@ -349,6 +355,7 @@ jobs:
--core binary-shards/core \
--breg binary-shards/breg \
--casework binary-shards/casework \
--scheduling binary-shards/scheduling \
--output dist \
--builder-image "${RELEASE_BUILDER_IMAGE}"
test "$("dist/bin/relay-${{ needs.validate.outputs.tag }}-linux-amd64" --version)" = \
Expand All @@ -369,6 +376,10 @@ jobs:
test "$("dist/bin/caseworkctl-${{ needs.validate.outputs.tag }}-linux-amd64" --version)" = \
"caseworkctl ${{ needs.validate.outputs.version }}"
fi
if (( release_major > 0 || release_minor >= 33 )); then
test "$(dist/image-bin/scheduling --version)" = \
"scheduling ${{ needs.validate.outputs.version }}"
fi

- name: Set up Docker Buildx
id: buildx
Expand Down
13 changes: 12 additions & 1 deletion .github/workflows/release-rehearsal.yml
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ jobs:
strategy:
fail-fast: false
matrix:
group: [core, breg, casework]
group: [core, breg, casework, scheduling]
steps:
- name: Checkout exact prepared source
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
Expand Down Expand Up @@ -225,6 +225,12 @@ jobs:
name: release-rehearsal-binaries-casework-${{ github.sha }}-${{ github.run_id }}-${{ github.run_attempt }}
path: binary-shards/casework

- name: Download canonical Linux Scheduling binary shard
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: release-rehearsal-binaries-scheduling-${{ github.sha }}-${{ github.run_id }}-${{ github.run_attempt }}
path: binary-shards/scheduling

- name: Merge and smoke the canonical Linux payload
env:
REHEARSAL_VERSION: ${{ inputs.version }}
Expand All @@ -237,6 +243,7 @@ jobs:
--core binary-shards/core \
--breg binary-shards/breg \
--casework binary-shards/casework \
--scheduling binary-shards/scheduling \
--output dist \
--builder-image "${RELEASE_BUILDER_IMAGE}"
test "$("dist/bin/breg-v${REHEARSAL_VERSION}-linux-amd64" --version)" = \
Expand All @@ -251,6 +258,10 @@ jobs:
test "$("dist/bin/caseworkctl-v${REHEARSAL_VERSION}-linux-amd64" --version)" = \
"caseworkctl ${REHEARSAL_VERSION}"
fi
if (( release_major > 0 || release_minor >= 33 )); then
test "$(dist/image-bin/scheduling --version)" = \
"scheduling ${REHEARSAL_VERSION}"
fi

- name: Set up Docker Buildx for advisory evidence
if: ${{ inputs.advisory_evidence }}
Expand Down
Loading
Loading