mirror of
https://github.com/affaan-m/everything-claude-code.git
synced 2026-05-20 19:29:58 +08:00
Track owner approval packet in dashboard
This commit is contained in:
committed by
Affaan Mustafa
parent
8148340ad1
commit
c7d662c3c6
@@ -100,9 +100,21 @@ function seedRepo(rootDir, overrides = {}) {
|
||||
'docs/releases/2.0.0-rc.1/preview-pack-manifest.md': [
|
||||
'publication-readiness.md release-notes.md quickstart.md',
|
||||
'release-name-plugin-publication-checklist-2026-05-18.md',
|
||||
'owner-approval-packet-2026-05-19.md',
|
||||
'`scripts/preview-pack-smoke.js`',
|
||||
'npm run preview-pack:smoke'
|
||||
].join('\n'),
|
||||
'docs/releases/2.0.0-rc.1/owner-approval-packet-2026-05-19.md': [
|
||||
'Owner Approval Packet',
|
||||
'Decision Register',
|
||||
'GitHub prerelease',
|
||||
'npm `next` publish',
|
||||
'Claude plugin tag',
|
||||
'Video upload',
|
||||
'Final URL Fill-In',
|
||||
'Do Not Approve If',
|
||||
'No outbound email, personal-account post, package publish, plugin tag, or billing announcement is authorized by this packet alone.'
|
||||
].join('\n'),
|
||||
'docs/releases/2.0.0-rc.1/release-notes.md': 'release notes',
|
||||
'docs/releases/2.0.0-rc.1/x-thread.md': 'x thread',
|
||||
'docs/releases/2.0.0-rc.1/linkedin-post.md': 'linkedin post',
|
||||
@@ -178,7 +190,7 @@ function seedRepo(rootDir, overrides = {}) {
|
||||
'Operator dashboard',
|
||||
'GitGuardian',
|
||||
'macOS/Ubuntu/Windows test matrix',
|
||||
'2548 passed',
|
||||
'2550 passed',
|
||||
'Business baseline',
|
||||
'$1,728/mo',
|
||||
'$8,272/mo'
|
||||
@@ -381,6 +393,12 @@ function runTests() {
|
||||
&& item.evidence.includes('sponsor outbound')
|
||||
&& item.gap === 'replace final URLs after publication gates, then get explicit approval before outbound or personal-account posts'
|
||||
)));
|
||||
assert.ok(report.requirements.some(item => (
|
||||
item.id === 'owner-approval-packet'
|
||||
&& item.status === 'current'
|
||||
&& item.evidence.includes('release, package, plugin, video, billing, social, and outbound decisions')
|
||||
&& item.gap === 'review owner approvals from the final release commit before any publication or outbound action'
|
||||
)));
|
||||
assert.ok(report.requirements.some(item => (
|
||||
item.id === 'supply-chain-local-protection'
|
||||
&& item.artifact.includes('AgentShield package-manager hardening')
|
||||
@@ -403,6 +421,7 @@ function runTests() {
|
||||
assert.ok(report.top_actions.some(item => item.id === 'naming-and-plugin-publication'));
|
||||
assert.ok(report.top_actions.some(item => item.id === 'release-video-suite'));
|
||||
assert.ok(report.top_actions.some(item => item.id === 'partner-sponsor-talks-pack'));
|
||||
assert.ok(!report.top_actions.some(item => item.id === 'owner-approval-packet'));
|
||||
assert.ok(!report.top_actions.some(item => item.id === 'ecc-preview-pack'));
|
||||
assert.ok(!report.top_actions.some(item => item.id === 'hermes-specialized-skills'));
|
||||
assert.ok(!report.top_actions.some(item => item.id === 'hypergrowth-command-center'));
|
||||
@@ -424,7 +443,7 @@ function runTests() {
|
||||
'Operator dashboard',
|
||||
'GitGuardian',
|
||||
'macOS/Ubuntu/Windows test matrix',
|
||||
'2548 passed',
|
||||
'2550 passed',
|
||||
'Business baseline',
|
||||
'$1,728/mo',
|
||||
'$8,272/mo',
|
||||
@@ -517,6 +536,32 @@ function runTests() {
|
||||
}
|
||||
})) passed++; else failed++;
|
||||
|
||||
if (test('owner approval packet fails closed when it is missing from the release pack', () => {
|
||||
const rootDir = createTempDir('operator-dashboard-owner-packet-');
|
||||
|
||||
try {
|
||||
seedRepo(rootDir, {
|
||||
'docs/releases/2.0.0-rc.1/owner-approval-packet-2026-05-19.md': null,
|
||||
'docs/releases/2.0.0-rc.1/preview-pack-manifest.md': [
|
||||
'publication-readiness.md release-notes.md quickstart.md',
|
||||
'release-name-plugin-publication-checklist-2026-05-18.md',
|
||||
'`scripts/preview-pack-smoke.js`',
|
||||
'npm run preview-pack:smoke'
|
||||
].join('\n')
|
||||
});
|
||||
|
||||
const report = buildSeededReport(rootDir);
|
||||
const ownerPacket = report.requirements.find(item => item.id === 'owner-approval-packet');
|
||||
|
||||
assert.strictEqual(ownerPacket.status, 'not_complete');
|
||||
assert.strictEqual(ownerPacket.evidence, 'owner approval packet is missing or incomplete');
|
||||
assert.strictEqual(ownerPacket.gap, 'add the owner decision sheet before publication review');
|
||||
assert.ok(report.top_actions.some(item => item.id === 'owner-approval-packet'));
|
||||
} finally {
|
||||
cleanup(rootDir);
|
||||
}
|
||||
})) passed++; else failed++;
|
||||
|
||||
if (test('AgentShield enterprise evidence covers export and policy promotion markers', () => {
|
||||
const cases = [
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user