Skip to content

feat(release): add Release Surface Manifest#75

Merged
derek-palmer merged 1 commit into
mainfrom
feat/release-surface-manifest
May 29, 2026
Merged

feat(release): add Release Surface Manifest#75
derek-palmer merged 1 commit into
mainfrom
feat/release-surface-manifest

Conversation

@derek-palmer
Copy link
Copy Markdown
Owner

Summary

Release policy was scattered across workflows, installer shims, package metadata, and version checks with no single catalog of which release surfaces exist or how each publishes. Adds a declarative Release Surface Manifest, mirroring the Task Registry pattern.

  • src/codeforerunner/release_surfaces.json — declarative catalog of surfaces (PyPI, npmjs, GitHub Packages, Docker, Codex marketplace, installer shims sh/ps1). Each records version_source, registry, auth_mode, workflow, validations.
  • src/codeforerunner/release_surfaces.py — typed accessor (all_surfaces, get, names, version_bearing_surfaces, read_surface_version).
  • read_surface_version() makes version-drift detection manifest-driven: read every version-bearing surface and assert the values agree.

Registered release_surfaces.json as package-data.

Tests (tests/test_release_surfaces.py)

  • manifest shape valid (kinds, auth modes, version_source kinds)
  • surface names unique
  • known surfaces represented
  • get raises on unknown
  • version sources resolve and agree in this checkout (no drift)
  • read_surface_version detects drift across a fake checkout

Full suite: 259 python + node green.

Scope

Declarative catalog only — does not change publish behavior, inspect tarballs, or generate workflows (those are #47/#48/#52). #64 will add the Socket badge to this manifest.

Closes #53

🤖 Generated with Claude Code

Release policy was spread across workflows, shims, package metadata, and
version checks with no single catalog of which surfaces exist or how
each publishes. Add a declarative manifest (release_surfaces.json) plus
a typed accessor (release_surfaces.py), mirroring the Task Registry.

Each surface records its version source, registry target, auth mode,
and required validations. read_surface_version() lets version-drift
checks be driven by the manifest: read every version-bearing surface
and assert the values agree.

Closes #53
@derek-palmer derek-palmer merged commit e4984f8 into main May 29, 2026
10 checks passed
@derek-palmer derek-palmer deleted the feat/release-surface-manifest branch May 29, 2026 19:28
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.

Add Release Surface Manifest for release policy

1 participant