diff --git a/docs/ECC-2.0-REFERENCE-ARCHITECTURE.md b/docs/ECC-2.0-REFERENCE-ARCHITECTURE.md index b08c3158..fdd91976 100644 --- a/docs/ECC-2.0-REFERENCE-ARCHITECTURE.md +++ b/docs/ECC-2.0-REFERENCE-ARCHITECTURE.md @@ -229,7 +229,8 @@ Required safeguards: ## Near-Term Implementation Order 1. Extend the harness adapter matrix and public scorecard onramp. -2. Add the release/name/plugin publication checklist with evidence fields. +2. Keep the release/name/plugin publication checklist current with fresh + final-commit evidence before rc.1 publication. 3. Define the HUD/status JSON contract and fixture directory. 4. Start AgentShield policy schema plus SARIF fixtures. 5. Audit ECC Tools billing and check-run surfaces. diff --git a/docs/releases/2.0.0-rc.1/launch-checklist.md b/docs/releases/2.0.0-rc.1/launch-checklist.md index 469a8d8b..cdb40559 100644 --- a/docs/releases/2.0.0-rc.1/launch-checklist.md +++ b/docs/releases/2.0.0-rc.1/launch-checklist.md @@ -12,6 +12,8 @@ - verify `preview-pack-manifest.md` lists the public release, Hermes, adapter, observability, publication, and announcement artifacts before running final publish checks +- verify `release-name-plugin-publication-checklist-2026-05-18.md` still + matches current GitHub, npm, Claude, Codex, OpenCode, and billing surfaces - keep private tokens, personal docs, and raw workspace exports out of the repo ## Release Surface @@ -19,6 +21,9 @@ - verify package, plugin, marketplace, OpenCode, and agent metadata stays at `2.0.0-rc.1` - verify `ecc2/Cargo.toml` stays at `0.1.0` for rc.1; `ecc2/` remains an alpha control-plane scaffold - complete `publication-readiness.md` with fresh evidence before any GitHub release, npm publish, plugin submission, or announcement post +- rerun the release name/plugin publication checklist before creating a + GitHub prerelease, publishing npm, pushing Claude plugin tags, recording the + Codex marketplace path, or posting public copy - include `publication-evidence-2026-05-17.md` and `operator-readiness-dashboard-2026-05-17.md` in the final evidence review, then rerun publish-facing checks from the exact release commit diff --git a/docs/releases/2.0.0-rc.1/preview-pack-manifest.md b/docs/releases/2.0.0-rc.1/preview-pack-manifest.md index 2b9fcd42..3bd680ba 100644 --- a/docs/releases/2.0.0-rc.1/preview-pack-manifest.md +++ b/docs/releases/2.0.0-rc.1/preview-pack-manifest.md @@ -29,6 +29,7 @@ surfaces, or posting announcements. | `docs/releases/2.0.0-rc.1/operator-readiness-dashboard-2026-05-18.md` | Current prompt-to-artifact operator dashboard | Shows PR/issue/discussion/platform/supply-chain gates current and publication, plugin, billing, AgentShield, ECC Tools, legacy, and Linear productization gaps still open | | `docs/releases/2.0.0-rc.1/release-url-ledger-2026-05-18.md` | Live URL and approval-gated URL ledger for release copy | Must be regenerated from the final release commit before public announcements | | `docs/releases/2.0.0-rc.1/naming-and-publication-matrix.md` | Naming, slug, and publication-path decision record | Keeps `Everything Claude Code / ECC`, npm `ecc-universal`, and plugin slug `ecc` for rc.1 | +| `docs/releases/2.0.0-rc.1/release-name-plugin-publication-checklist-2026-05-18.md` | Release name, package, Claude plugin, Codex plugin, and publication-order checklist | Freezes rc.1 identity and requires final commit evidence before release, npm, plugin, billing, or announcement actions | | `docs/releases/2.0.0-rc.1/x-thread.md` | X launch draft | Must replace placeholders with live URLs after release/package/plugin publication | | `docs/releases/2.0.0-rc.1/linkedin-post.md` | LinkedIn launch draft | Must replace placeholders with live URLs after release/package/plugin publication | | `docs/releases/2.0.0-rc.1/article-outline.md` | Longform launch outline | Must stay release-candidate framed until GA evidence exists | @@ -91,6 +92,8 @@ The preview pack is assembled, but publication is still blocked until these live surfaces exist and are recorded in a final evidence file: - final release URL ledger regenerated from the intended release commit; +- final release name/plugin publication checklist rerun from the intended + release commit; - GitHub prerelease `v2.0.0-rc.1`; - npm `ecc-universal@2.0.0-rc.1` on the `next` dist-tag; - Claude plugin tag / marketplace propagation for `ecc@ecc`; diff --git a/docs/releases/2.0.0-rc.1/publication-readiness.md b/docs/releases/2.0.0-rc.1/publication-readiness.md index 5b15d41e..37b0ecce 100644 --- a/docs/releases/2.0.0-rc.1/publication-readiness.md +++ b/docs/releases/2.0.0-rc.1/publication-readiness.md @@ -6,6 +6,9 @@ URLs from the exact commit being released. For the current rc.1 naming decision and package/plugin publication path, see [`naming-and-publication-matrix.md`](naming-and-publication-matrix.md). +For the May 18 release name, package, Claude plugin, Codex plugin, and +publication-order gate, see +[`release-name-plugin-publication-checklist-2026-05-18.md`](release-name-plugin-publication-checklist-2026-05-18.md). For the assembled rc.1 preview pack boundary, see [`preview-pack-manifest.md`](preview-pack-manifest.md). For the May 12 dry-run evidence pass, see @@ -105,6 +108,7 @@ Record the exact commit SHA and command output before any publication action: | Linear roadmap | Linear project and issue readback | Detailed roadmap exists with release, security, AgentShield, ECC Tools, legacy, and observability lanes | `publication-evidence-2026-05-15.md`: project and 16 issue lanes recorded | | Operator readiness dashboard | `npm run operator:dashboard -- --json --allow-untracked docs/drafts/` | Current queue state mapped to macro-goal deliverables and incomplete gaps | `publication-evidence-2026-05-18.md`: generated from `3b7e0ba3`, platform ready true, dashboard ready true, 0 open PRs, 0 open issues, 0 discussion gaps; regenerated May 18 dashboard now also tracks the URL ledger | | Release URL ledger | `docs/releases/2.0.0-rc.1/release-url-ledger-2026-05-18.md` plus placeholder-marker scan | Live links and approval-gated links are separated before announcement copy is posted | Ledger records public repo/docs/CI/supply-chain/npm/OpenAI Codex documentation URLs and blocks GitHub release/npm/plugin/billing/social URLs until approval-gated checks pass | +| Release name and plugin publication checklist | `docs/releases/2.0.0-rc.1/release-name-plugin-publication-checklist-2026-05-18.md` | Name/package/plugin values are frozen, final-release commands are listed, and Claude/Codex publication paths cite current official docs | Checklist keeps `Everything Claude Code / ECC`, `ecc-universal`, and plugin slug `ecc` for rc.1; no rename, npm publish, plugin tag, official listing, billing claim, or announcement before final evidence | ## Do Not Publish If diff --git a/docs/releases/2.0.0-rc.1/release-name-plugin-publication-checklist-2026-05-18.md b/docs/releases/2.0.0-rc.1/release-name-plugin-publication-checklist-2026-05-18.md new file mode 100644 index 00000000..2bd7399a --- /dev/null +++ b/docs/releases/2.0.0-rc.1/release-name-plugin-publication-checklist-2026-05-18.md @@ -0,0 +1,115 @@ +# ECC v2.0.0-rc.1 Release Name And Plugin Publication Checklist + +Snapshot date: 2026-05-18. + +This checklist is the operator gate for release naming, package publication, +and Claude/Codex plugin distribution. It is not a publication action by itself. +Run it from the exact release commit before creating tags, publishing npm, +submitting marketplace forms, or posting announcements. + +## Fixed rc.1 Decision + +Ship `v2.0.0-rc.1` as **Everything Claude Code (ECC)**. + +- Keep the GitHub repo at `affaan-m/everything-claude-code`. +- Keep the npm package as `ecc-universal`. +- Keep Claude and Codex plugin slugs as `ecc`. +- Publish the npm prerelease on the `next` dist-tag, not `latest`. +- Do not rename to `affaan-m/ecc`, `ecc`, or `@affaan-m/ecc` before rc.1. + +Reasons: + +- `ecc-universal` is the current working install and package surface. +- `ecc` on npm is occupied by an unrelated elliptic-curve package. +- `@affaan-m/ecc` is unclaimed on npm, but would require a migration plan. +- `affaan-m/ecc` is not available to the current GitHub auth context. +- Claude and Codex already expose the desired short namespace as `ecc`. + +## Current Surface Evidence + +| Surface | Current value | Evidence command | 2026-05-18 result | Release action | +| --- | --- | --- | --- | --- | +| Git commit | `0e88e6a4ddf9968e55faa07f3ad8a03d3943b58c` | `git rev-parse HEAD` | Recorded from `main` | Re-run from final release commit | +| GitHub repo | `affaan-m/everything-claude-code` | `git remote get-url origin` | `https://github.com/affaan-m/everything-claude-code.git` | Keep for rc.1 | +| Possible short repo | `affaan-m/ecc` | `gh repo view affaan-m/ecc --json nameWithOwner,url,isPrivate` | GraphQL could not resolve repository | Do not depend on it for rc.1 | +| npm package | `ecc-universal@2.0.0-rc.1` local, `1.10.0` registry latest | `node -p "require('./package.json').name + '@' + require('./package.json').version"` and `npm view ecc-universal name version dist-tags --json` | Local rc.1 ready; registry still latest `1.10.0` | Publish rc.1 with `--tag next` after approval | +| Exact npm short name | `ecc` | `npm view ecc name version description repository.url --json` | Occupied by unrelated `ecc@0.0.2` | Do not use | +| Scoped npm short name | `@affaan-m/ecc` | `npm view @affaan-m/ecc name version --json` | 404 | Candidate only after migration plan | +| Claude plugin | `ecc@2.0.0-rc.1` | `claude plugin validate .claude-plugin/plugin.json` | Validation passed | Run dry-run tag, then tag/push only after approval | +| Claude marketplace | `.claude-plugin/marketplace.json` | `claude plugin marketplace --help`; Anthropic plugin marketplace docs | GitHub, git URL, remote marketplace JSON, and local path marketplace sources are supported | Submit official listing through the current Anthropic forms only after final evidence | +| Codex plugin | `ecc@2.0.0-rc.1` | `node tests/plugin-manifest.test.js`; `codex plugin marketplace add --help`; OpenAI Codex plugin docs | Repo marketplace and local marketplace roots are supported | Use repo marketplace for rc.1; official Plugin Directory is still pending | +| OpenCode package | `ecc-universal@2.0.0-rc.1` | `node -p "require('./.opencode/package.json').name + '@' + require('./.opencode/package.json').version"` | Matches rc.1 package identity | Follow npm package publication | +| Billing claim | Pending ECC Tools readiness | ECC Tools billing gate and Marketplace account readback | Code-side gate exists; live Marketplace account readback still pending | Do not announce native payments | + +## Required Gate + +Run these checks from the final release commit and paste the exact output into +a fresh `publication-evidence-YYYY-MM-DD.md` file before release actions: + +```bash +git status --short --branch +git rev-parse HEAD +git remote get-url origin +npm view ecc name version description repository.url --json +npm view @affaan-m/ecc name version --json +npm view ecc-universal name version dist-tags --json +node tests/plugin-manifest.test.js +node tests/docs/ecc2-release-surface.test.js +claude plugin validate .claude-plugin/plugin.json +claude plugin tag .claude-plugin --dry-run +codex plugin marketplace add --help +HOME="$(mktemp -d)" codex plugin marketplace add ./ +HOME="$(mktemp -d)" codex plugin marketplace add affaan-m/everything-claude-code --ref "$(git rev-parse HEAD)" +npm pack --dry-run --json +npm publish --tag next --dry-run +npm run build:opencode +npm run preview-pack:smoke +``` + +If a command is unavailable on the release machine, record the exact error and +keep the related publication action blocked. + +## Publication Order + +| Step | Action | Required evidence | Stop condition | +| --- | --- | --- | --- | +| 1 | Freeze name and version | Package, Claude plugin, Codex plugin, OpenCode package, `VERSION`, and release docs all say `2.0.0-rc.1` | Any `preview`/`rc.1` mismatch | +| 2 | Verify clean release branch | `git status --short --branch` shows only the intended release commit and no unrelated drift | Any unexplained dirty file | +| 3 | Verify package and plugin manifests | `node tests/plugin-manifest.test.js` and `node tests/docs/ecc2-release-surface.test.js` pass | Manifest or release-surface failure | +| 4 | Dry-run package surface | `npm pack --dry-run --json`; `npm publish --tag next --dry-run` | Missing files, wrong dist-tag, or publish dry-run failure | +| 5 | Dry-run Claude distribution | `claude plugin validate`; `claude plugin tag .claude-plugin --dry-run`; temp install smoke | Validation, tag, or install-smoke failure | +| 6 | Verify Codex repo marketplace | `codex plugin marketplace add --help`; temp-home repo marketplace add smoke; OpenAI official directory status recorded | Missing repo marketplace or unverified official-directory status | +| 7 | Verify OpenCode package | `npm run build:opencode` | Build failure | +| 8 | Regenerate release URL ledger | Live and approval-gated URLs separated in `release-url-ledger-YYYY-MM-DD.md` | Placeholder, private URL, or announcement URL drift | +| 9 | Create GitHub prerelease | `gh release view v2.0.0-rc.1 --json tagName,url,isPrerelease` | Missing URL or wrong prerelease flag | +| 10 | Publish npm rc | `npm view ecc-universal version dist-tags --json` shows rc.1 on `next` | rc.1 lands on `latest` or registry output is unclear | +| 11 | Publish/plugin-submit | Claude official submission and Codex repo marketplace evidence recorded | Form not submitted, listing not visible, or docs status changed | +| 12 | Announce | X, LinkedIn, GitHub release, and longform copy use final live URLs | Any final URL is still pending | + +## Do Not Proceed + +- Do not publish npm before `npm pack --dry-run --json` is captured from the + final release commit. +- Do not create or push Claude plugin tags before `claude plugin tag + .claude-plugin --dry-run` passes from the final release commit. +- Do not claim Codex official Plugin Directory availability unless OpenAI docs + no longer say official public plugin publishing is pending. +- Do not announce billing, Marketplace, or native payments until ECC Tools live + Marketplace account readback returns ready. +- Do not rename the repo or package until rc.1 is published and a migration + guide maps old names to new names. +- Do not post social copy while any release, npm, plugin, or billing URL is + still approval-gated. + +## External Distribution Sources + +- Anthropic Claude Code plugin docs: `https://code.claude.com/docs/en/plugins` +- Anthropic Claude Code marketplace docs: + `https://code.claude.com/docs/en/plugin-marketplaces` +- OpenAI Codex plugin docs: + `https://developers.openai.com/codex/plugins/build#add-a-marketplace-from-the-cli` + +As of this snapshot, Anthropic documents official marketplace submission through +Claude.ai and Console forms. OpenAI documents repo/local marketplace +distribution for Codex and says official public Plugin Directory publishing and +self-serve plugin management are coming soon. diff --git a/tests/docs/ecc2-release-surface.test.js b/tests/docs/ecc2-release-surface.test.js index 0193c8c7..6f312efb 100644 --- a/tests/docs/ecc2-release-surface.test.js +++ b/tests/docs/ecc2-release-surface.test.js @@ -52,6 +52,7 @@ const expectedReleaseFiles = [ 'quickstart.md', 'preview-pack-manifest.md', 'publication-readiness.md', + 'release-name-plugin-publication-checklist-2026-05-18.md', ]; test('release candidate directory includes the public launch pack', () => { @@ -174,6 +175,7 @@ test('preview pack manifest assembles release, Hermes, and publication gates', ( 'scripts/preview-pack-smoke.js', 'docs/releases/2.0.0-rc.1/publication-readiness.md', 'docs/releases/2.0.0-rc.1/naming-and-publication-matrix.md', + 'docs/releases/2.0.0-rc.1/release-name-plugin-publication-checklist-2026-05-18.md', ]) { assert.ok(manifest.includes(artifact), `preview pack manifest missing ${artifact}`); } @@ -288,6 +290,8 @@ test('publication readiness checklist gates public release actions on evidence', assert.ok(may15Evidence.includes('announcementGate.ready === true')); assert.ok(source.includes('ECC-Tools #73 added announcementGate')); assert.ok(source.includes('official Plugin Directory publishing and self-serve management are documented as coming soon')); + assert.ok(source.includes('release-name-plugin-publication-checklist-2026-05-18.md')); + assert.ok(source.includes('Release name and plugin publication checklist')); assert.ok(may15Evidence.includes('| Trunk discussions | GraphQL discussion count and maintainer-touch sweep | 58 total discussions;')); assert.ok(source.includes('58 trunk discussions, 0 without maintainer touch')); assert.ok(may15Evidence.includes('env -u GITHUB_TOKEN')); @@ -295,6 +299,42 @@ test('publication readiness checklist gates public release actions on evidence', assert.ok(may15Evidence.includes('0 open PRs, 0 open issues')); }); +test('release name and plugin publication checklist freezes rc.1 surfaces', () => { + const checklist = read( + 'docs/releases/2.0.0-rc.1/release-name-plugin-publication-checklist-2026-05-18.md' + ); + const launchChecklist = read('docs/releases/2.0.0-rc.1/launch-checklist.md'); + const referenceArchitecture = read('docs/ECC-2.0-REFERENCE-ARCHITECTURE.md'); + + for (const value of [ + 'Everything Claude Code (ECC)', + '`affaan-m/everything-claude-code`', + '`ecc-universal`', + '`ecc` on npm is occupied', + '`@affaan-m/ecc` is unclaimed on npm', + 'Claude plugin', + 'Codex plugin', + 'self-serve plugin management are coming soon', + 'Do not rename the repo or package until rc.1 is published', + 'Do not announce billing, Marketplace, or native payments', + ]) { + assert.ok(checklist.includes(value), `release name/plugin checklist missing ${value}`); + } + + for (const command of [ + 'claude plugin validate .claude-plugin/plugin.json', + 'claude plugin tag .claude-plugin --dry-run', + 'codex plugin marketplace add --help', + 'npm publish --tag next --dry-run', + 'npm run preview-pack:smoke', + ]) { + assert.ok(checklist.includes(command), `release name/plugin checklist missing command ${command}`); + } + + assert.ok(launchChecklist.includes('release-name-plugin-publication-checklist-2026-05-18.md')); + assert.ok(referenceArchitecture.includes('Keep the release/name/plugin publication checklist current')); +}); + test('release checklist and roadmap link to publication readiness evidence gate', () => { const launchChecklist = read('docs/releases/2.0.0-rc.1/launch-checklist.md'); const roadmap = read('docs/ECC-2.0-GA-ROADMAP.md');