Skip to content

security: multi-arch publish + WS49/WS50 hardening + docs#1

Merged
brokenbot merged 2 commits into
mainfrom
security/ws49-ws50-hardening
Jun 7, 2026
Merged

security: multi-arch publish + WS49/WS50 hardening + docs#1
brokenbot merged 2 commits into
mainfrom
security/ws49-ws50-hardening

Conversation

@brokenbot

Copy link
Copy Markdown
Contributor

Summary

Hardens the Python adapter starter and unblocks its build.

Unblock + correctness

  • The SDK dependency was criteria-adapter-sdk (wrong — the distribution is criteria-python-adapter-sdk) and isn't on PyPI. Repointed to a git source via [tool.uv.sources]; uv lock/uv sync now resolve, import works, and the generated uv.lock is committed.

Multi-arch publishing (req 1)

  • Nuitka can't cross-compile, so publish.yml builds each platform on its own native runner (ubuntu-latest, ubuntu-24.04-arm, macos-14) and a final job assembles bin/<os>/<arch>/ into one multi-platform, signed OCI artifact (was: single binary).

WS49/WS50

  • osv-scanner.toml; new ci.yml with a blocking osv-scan (pinned action) scanning uv.lock explicitly; make vuln-scan. Tree clean (18 packages).
  • docs/dependency-policy.md (no update bot; uv tooling); non-blocking deps-report.
  • README security section; SECURITY.md; all-checks gate.

Switch the SDK back to a PyPI version constraint once the SDK is published.

Test plan

  • uv lock + uv sync resolve from git; from criteria_adapter_sdk import serve works
  • osv-scanner clean on uv.lock; YAML valid
  • CI green on branch (incl. the per-runner Nuitka build matrix on publish)

Dave Sanderson added 2 commits June 6, 2026 21:26
…S49/WS50)

- Repoint SDK to a git source: the dep name was wrong (criteria-adapter-sdk; the
  distribution is criteria-python-adapter-sdk) and the SDK is not on PyPI. Use
  [tool.uv.sources] git so it resolves; commit the generated uv.lock.
- Multi-arch publish: Nuitka can't cross-compile, so publish.yml now builds each
  platform on its own native runner (ubuntu x64, ubuntu-24.04-arm, macos-14) and
  assembles bin/<os>/<arch>/ into one multi-platform signed OCI artifact (was:
  single binary).
- WS49: osv-scanner.toml; NEW ci.yml with blocking osv-scan (scans uv.lock
  explicitly); make vuln-scan. Tree clean.
- WS50: docs/dependency-policy.md (no update bot; uv tooling); deps-report job.
- Docs: README security section; SECURITY.md; all-checks gate.
main.py awaited serve(), but the SDK's serve() is synchronous and returns an int
exit code, so 'await serve(...)' raised 'object int can't be used in await' and
--emit-manifest (used by the publish pipeline) was broken. Call it synchronously
and sys.exit() its return code. Async handlers (_run) are still driven by serve().
@brokenbot brokenbot merged commit 99267ee into main Jun 7, 2026
4 checks passed
@brokenbot brokenbot deleted the security/ws49-ws50-hardening branch June 7, 2026 03:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant