mirror of
https://github.com/affaan-m/everything-claude-code.git
synced 2026-05-20 07:43:07 +08:00
test: enforce release publication checklist in readiness gates
This commit is contained in:
@@ -531,6 +531,7 @@ function buildRequirements(rootDir, platformReport) {
|
|||||||
const roadmap = readText(rootDir, 'docs/ECC-2.0-GA-ROADMAP.md');
|
const roadmap = readText(rootDir, 'docs/ECC-2.0-GA-ROADMAP.md');
|
||||||
const publicationReadiness = readText(rootDir, 'docs/releases/2.0.0-rc.1/publication-readiness.md');
|
const publicationReadiness = readText(rootDir, 'docs/releases/2.0.0-rc.1/publication-readiness.md');
|
||||||
const namingMatrix = readText(rootDir, 'docs/releases/2.0.0-rc.1/naming-and-publication-matrix.md');
|
const namingMatrix = readText(rootDir, 'docs/releases/2.0.0-rc.1/naming-and-publication-matrix.md');
|
||||||
|
const releasePublicationChecklist = readText(rootDir, 'docs/releases/2.0.0-rc.1/release-name-plugin-publication-checklist-2026-05-18.md');
|
||||||
const releaseUrlLedger = readText(rootDir, 'docs/releases/2.0.0-rc.1/release-url-ledger-2026-05-18.md');
|
const releaseUrlLedger = readText(rootDir, 'docs/releases/2.0.0-rc.1/release-url-ledger-2026-05-18.md');
|
||||||
const ownerQueueCleanup = readText(rootDir, 'docs/releases/2.0.0-rc.1/owner-queue-cleanup-2026-05-18.md');
|
const ownerQueueCleanup = readText(rootDir, 'docs/releases/2.0.0-rc.1/owner-queue-cleanup-2026-05-18.md');
|
||||||
const previewManifest = readText(rootDir, 'docs/releases/2.0.0-rc.1/preview-pack-manifest.md');
|
const previewManifest = readText(rootDir, 'docs/releases/2.0.0-rc.1/preview-pack-manifest.md');
|
||||||
@@ -665,12 +666,19 @@ function buildRequirements(rootDir, platformReport) {
|
|||||||
buildRequirement(
|
buildRequirement(
|
||||||
'naming-and-plugin-publication',
|
'naming-and-plugin-publication',
|
||||||
'Prepare name-change, Claude plugin, and Codex plugin paths',
|
'Prepare name-change, Claude plugin, and Codex plugin paths',
|
||||||
'naming-and-publication-matrix plus publication-readiness',
|
'naming-and-publication-matrix plus release-name-plugin-publication checklist plus publication-readiness',
|
||||||
includesAll(namingMatrix, ['Claude plugin', 'Codex plugin', 'npm package', 'Publication Paths'])
|
includesAll(namingMatrix, ['Claude plugin', 'Codex plugin', 'npm package', 'Publication Paths'])
|
||||||
|
&& includesAll(releasePublicationChecklist, [
|
||||||
|
'Everything Claude Code (ECC)',
|
||||||
|
'ecc-universal',
|
||||||
|
'claude plugin tag .claude-plugin --dry-run',
|
||||||
|
'codex plugin marketplace add',
|
||||||
|
'Do not rename the repo or package until rc.1 is published'
|
||||||
|
])
|
||||||
&& includesAll(publicationReadiness, ['Claude plugin', 'Codex plugin'])
|
&& includesAll(publicationReadiness, ['Claude plugin', 'Codex plugin'])
|
||||||
? 'in_progress'
|
? 'in_progress'
|
||||||
: 'not_complete',
|
: 'not_complete',
|
||||||
'naming matrix and plugin readiness gates exist',
|
'naming matrix, release publication checklist, and plugin readiness gates exist',
|
||||||
'real tag/push, marketplace submission, and final channel choice remain approval-gated'
|
'real tag/push, marketplace submission, and final channel choice remain approval-gated'
|
||||||
),
|
),
|
||||||
buildRequirement(
|
buildRequirement(
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ const REQUIRED_ARTIFACTS = [
|
|||||||
`${RELEASE_DIR}/operator-readiness-dashboard-2026-05-18.md`,
|
`${RELEASE_DIR}/operator-readiness-dashboard-2026-05-18.md`,
|
||||||
`${RELEASE_DIR}/release-url-ledger-2026-05-18.md`,
|
`${RELEASE_DIR}/release-url-ledger-2026-05-18.md`,
|
||||||
`${RELEASE_DIR}/naming-and-publication-matrix.md`,
|
`${RELEASE_DIR}/naming-and-publication-matrix.md`,
|
||||||
|
`${RELEASE_DIR}/release-name-plugin-publication-checklist-2026-05-18.md`,
|
||||||
`${RELEASE_DIR}/x-thread.md`,
|
`${RELEASE_DIR}/x-thread.md`,
|
||||||
`${RELEASE_DIR}/linkedin-post.md`,
|
`${RELEASE_DIR}/linkedin-post.md`,
|
||||||
`${RELEASE_DIR}/article-outline.md`,
|
`${RELEASE_DIR}/article-outline.md`,
|
||||||
|
|||||||
@@ -75,10 +75,18 @@ function seedRepo(rootDir, overrides = {}) {
|
|||||||
'Linear live sync is current for the May 17 merge batch',
|
'Linear live sync is current for the May 17 merge batch',
|
||||||
'operator progress snapshot'
|
'operator progress snapshot'
|
||||||
].join('\n'),
|
].join('\n'),
|
||||||
'docs/releases/2.0.0-rc.1/publication-readiness.md': 'Claude plugin Codex plugin',
|
'docs/releases/2.0.0-rc.1/publication-readiness.md': 'Claude plugin Codex plugin release-name-plugin-publication-checklist-2026-05-18.md',
|
||||||
'docs/releases/2.0.0-rc.1/naming-and-publication-matrix.md': 'Claude plugin Codex plugin npm package Publication Paths',
|
'docs/releases/2.0.0-rc.1/naming-and-publication-matrix.md': 'Claude plugin Codex plugin npm package Publication Paths',
|
||||||
|
'docs/releases/2.0.0-rc.1/release-name-plugin-publication-checklist-2026-05-18.md': [
|
||||||
|
'Everything Claude Code (ECC)',
|
||||||
|
'ecc-universal',
|
||||||
|
'claude plugin tag .claude-plugin --dry-run',
|
||||||
|
'codex plugin marketplace add',
|
||||||
|
'Do not rename the repo or package until rc.1 is published'
|
||||||
|
].join('\n'),
|
||||||
'docs/releases/2.0.0-rc.1/preview-pack-manifest.md': [
|
'docs/releases/2.0.0-rc.1/preview-pack-manifest.md': [
|
||||||
'publication-readiness.md release-notes.md quickstart.md',
|
'publication-readiness.md release-notes.md quickstart.md',
|
||||||
|
'release-name-plugin-publication-checklist-2026-05-18.md',
|
||||||
'`scripts/preview-pack-smoke.js`',
|
'`scripts/preview-pack-smoke.js`',
|
||||||
'npm run preview-pack:smoke'
|
'npm run preview-pack:smoke'
|
||||||
].join('\n'),
|
].join('\n'),
|
||||||
@@ -279,6 +287,12 @@ function runTests() {
|
|||||||
&& item.evidence.includes('target-account billing readback')
|
&& item.evidence.includes('target-account billing readback')
|
||||||
&& item.evidence.includes('provenance-aware Marketplace billing-state gates')
|
&& item.evidence.includes('provenance-aware Marketplace billing-state gates')
|
||||||
)));
|
)));
|
||||||
|
assert.ok(report.requirements.some(item => (
|
||||||
|
item.id === 'naming-and-plugin-publication'
|
||||||
|
&& item.artifact.includes('release-name-plugin-publication checklist')
|
||||||
|
&& item.evidence.includes('release publication checklist')
|
||||||
|
&& item.gap === 'real tag/push, marketplace submission, and final channel choice remain approval-gated'
|
||||||
|
)));
|
||||||
assert.ok(report.requirements.some(item => (
|
assert.ok(report.requirements.some(item => (
|
||||||
item.id === 'supply-chain-local-protection'
|
item.id === 'supply-chain-local-protection'
|
||||||
&& item.artifact.includes('AgentShield package-manager hardening')
|
&& item.artifact.includes('AgentShield package-manager hardening')
|
||||||
|
|||||||
Reference in New Issue
Block a user