Skip to content

[P0 Release] Establish the protected npm next prerelease channel for v0.33.0-beta.1 #687

Description

@mohanagy

Parent: #649
Milestone: v0.33.0-beta.1 — Trust Foundation
Blocks: the first beta publication
Does not block: ordinary issue implementation or draft PR review on next
Related broader release initiative: #676

Outcome

Publish immutable prerelease versions from exact reviewed commits on next.

  • npm dist-tag next for prereleases.
  • npm dist-tag latest preserved unchanged.
  • GitHub releases marked as prereleases.
  • Provenance and clean-install verification required.
  • Publication unavailable until a human approves the protected environment.

Branch policy

Branch Role
main stable only (latest)
next prerelease integration (next)
issue branches created from next
roadmap PRs target next
stable promotion reviewed next → main PR

Version policy

0.33.0-beta.1
0.33.0-beta.2
0.33.0-rc.1
0.33.0

Every npm version is immutable. The next dist-tag moves between prerelease versions; latest moves only for stable releases.

Publishing requirements

  • exact tag / package.json / CHANGELOG.md match;
  • the tagged commit is contained in origin/next;
  • complete protected validation on the exact tagged commit;
  • npm Trusted Publishing via GitHub OIDC;
  • provenance required;
  • no fallback to an unreviewed workstation token;
  • protected GitHub environment (npm-next);
  • human approval before publish;
  • pre-publication dist-tag snapshot;
  • post-publication verification that latest did not move;
  • exact-version and @next clean installation checks;
  • packaged CLI smoke test run against a controlled workspace, not the repository checkout;
  • GitHub prerelease receipt;
  • documented rollback / remediation policy.

Current-state notes for the implementer

Verified at main = 3371ada8:

  • .github/workflows/release.yml fires on v* and its regex accepts v1.2.3-beta.1. It creates a GitHub release without --prerelease, so a beta tag today would produce a stable-looking release. This must be separated.
  • release.yml does not publish to npm. There is currently no npm publish workflow, so publish-next.yml is new and conflicts with nothing.
  • package.json already defines publish:next as npm publish --tag next --access public — note the missing --provenance.
  • Available scripts: typecheck, test:run, test:coverage, build, verify:pack-parity, registry:validate, release:verify, pack:dry-run.
  • qualify:validate exists only on the [P0] Freeze the natural qualification corpus, independent rubrics, and stop rule #655 branch today. Once PR feat(qualification): freeze the independent qualification contract (#655) #681 lands on next, it becomes mandatory in the prerelease pipeline.
  • Package name is @lubab/madar; bin is madar.

Explicit non-goals

  • Do not publish during this issue's implementation PR.
  • Do not create a beta tag before Phase 0 beta readiness.
  • Do not publish stable latest.
  • Do not publish MCP Registry metadata automatically for the beta.
  • Do not merge next into main.
  • Do not create another long-lived development branch.
  • Do not permit publication between partial graph slices.

Acceptance criteria

  • Prerelease workflow validates on the exact tagged commit and fails closed on any check error.
  • Publication uses npm Trusted Publishing (OIDC) with id-token: write; provenance is attached.
  • Publication requires approval in the protected npm-next environment.
  • The tagged commit is proven to be an ancestor of origin/next; a tag outside next is rejected.
  • Tag, package.json version, and CHANGELOG.md section match exactly.
  • An already-published version is rejected rather than overwritten.
  • latest is captured before publication and verified unchanged afterwards.
  • Clean install of the exact version reports that version.
  • Clean install of @next reports that version.
  • The GitHub release is created with prerelease: true.
  • No publish command can execute from push or pull_request events.
  • Stable workflow rejects prerelease tags; prerelease workflow rejects stable tags.
  • Rollback and incident response are documented (deprecate, dist-tag correction, never unpublish silently).

Release-readiness boundary

The pipeline may be prepared and merged into next before the beta is publishable. Three decisions are distinct and must not be conflated:

  1. pipeline ready for review;
  2. pipeline ready for merge into next;
  3. beta ready to publish.

The beta remains blocked until Phase 0 beta readiness is met. In particular, do not publish during a partial graph-integrity migration. The graph sequence is #656 → #657 → #658 → #659; publishing after only #657 or #658 would ship artifact, integrity, and answerability behavior in an intentionally incomplete state.

Related tracking issue: #654 remains open, and roadmap PR merges remain blocked by it.

Agent handoff

The implementation agent must stop before publishing, tagging, merging, or changing repository environment settings. Repository and environment configuration is human-managed; the agent reports the exact required setup rather than applying it.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions