All 19 open actions/cache-poisoning/poisonable-step alerts (#88-#106) sit in
release.yml, release-candidate.yml and release-artifacts.yml: jobs interpolated
the caller SHA into ref/caches and let setup-node's implicit npm cache key on
run identity. Now caller source_sha is pinned against github.sha by a pin job
(refusing any retarget), checkout and build identity use GITHUB_SHA through
env indirection instead of template interpolation, rust-cache keys use stable
prefix-key values, and setup-node's implicit package cache is off where it
cannot be keyed safely.
Also carries the CodeQL #107 fix from the same lane: catalog_models_dev.py
prints remote limit values as numbers/null/redacted only and drops query and
fragment material from source URLs before logging.
Harvested from #5401 (workflow+script files; CHANGELOG edit intentionally
excluded here and lands with the release branch; GHSA advisory text split to
a later PR as advised).
No-Issue: CodeQL alert remediation (alerts #88-#107); no single user-facing issue tracks these
Signed-off-by: Hunter Bown <hunter@hmbown.com>
Privileged release workflows no longer attach rust-cache, sccache, or
npm caches to a workflow_dispatch checkout (CodeQL #88-#106). Catalog
drift no longer prints raw bundled/upstream blobs (#107).
Add a read-only drift subcommand that compares bundled model and provider-offering context/output limits with models.dev, reports removed upstream IDs, and exits non-zero on limit drift.
The command performs no writes and is not wired as a mandatory CI gate in this change.
Signed-off-by: CodeWhale Bot <bot@codewhale.net>
Promote the expanded underwater release from the 0.8.68 candidate number to 0.9.0 across Cargo, npm, generated facts, changelogs, current docs, and the authoritative release ledger.\n\nDocument the final runtime, Operate, Fleet, motion, Inkling, community, and deferred-work cutlines without rewriting historical fixtures. Version and release-helper checks pass.
Update the catalog automation docs and tests to reflect the final dry-run-only design after CodeQL triage. Also preserve the already-merged #3985 feature-intro auth guard so this PR does not regress main.
Drop disk writes entirely so CodeQL clear-text-storage does not fire.
Automation still fetches/prints Models.dev stats, validates the offline
seed with snapshot --check, and scrubs credential-shaped keys in-memory.
Signed-off-by: CodeWhale Agent <codewhale-agent@hmbown.local>
Network-fetched catalogs stay dry-run; disk writes require
CODEWHALE_MODELS_DEV_PATH so CodeQL clear-text storage does not fire on
remote JSON. OpenRouter listing remains inspect-only.
Signed-off-by: CodeWhale Agent <codewhale-agent@hmbown.local>
Document that write_json only receives projected public metadata and
add a CodeQL suppression for clear-text storage on that path.
Signed-off-by: CodeWhale Agent <codewhale-agent@hmbown.local>
Rebuild Models.dev/OpenRouter cache documents from allowlisted keys so
CodeQL does not treat network JSON as clear-text secret storage.
Signed-off-by: CodeWhale Agent <codewhale-agent@hmbown.local>
Add scripts/catalog_models_dev.py for secret-free Models.dev catalog
refresh and snapshot validation, plus OpenRouter public /models listing
with sort/limit. Offline unit tests cover scrubbing and seed checks.
Signed-off-by: CodeWhale Agent <codewhale-agent@hmbown.local>