mirror of
https://github.com/affaan-m/everything-claude-code.git
synced 2026-05-20 07:43:07 +08:00
docs: refresh May 19 operator dashboard
This commit is contained in:
committed by
Affaan Mustafa
parent
c07276a347
commit
d135e03da0
@@ -78,14 +78,16 @@ As of 2026-05-19:
|
||||
- `docs/releases/2.0.0-rc.1/publication-evidence-2026-05-19.md` records the
|
||||
current May 19 queue-zero state, canonical ECC identity merge, release video
|
||||
suite gate, partner/sponsor/talk outreach pack, preview-pack smoke digest
|
||||
`3bb55807407b`, local 2544-test suite, and PR #1993 CI success. The May 18
|
||||
`bc2bf157616e`, local 2544-test suite, and PR #1993 CI success. The May 18
|
||||
evidence remains the detailed supply-chain and publication-path snapshot.
|
||||
- `docs/releases/2.0.0-rc.1/operator-readiness-dashboard-2026-05-18.md`
|
||||
- `docs/releases/2.0.0-rc.1/operator-readiness-dashboard-2026-05-19.md`
|
||||
regenerates the ITO-44 prompt-to-artifact dashboard from live platform audit
|
||||
evidence: PR queue, issue queue, discussion queue, local worktree gate,
|
||||
dashboard generation, and supply-chain loop are current; publication, plugin,
|
||||
billing, AgentShield, ECC Tools, legacy, and Linear/productized sync lanes
|
||||
remain the next work.
|
||||
dashboard generation, and supply-chain loop are current; the dashboard now
|
||||
also tracks the `$1,728/mo` to `$10,000/mo` hypergrowth baseline, release
|
||||
video-suite lane, and partner/sponsor/talk outbound pack; publication,
|
||||
plugin, billing, AgentShield, ECC Tools, and final outbound approval remain
|
||||
the next work.
|
||||
- `docs/releases/2.0.0-rc.1/publication-evidence-2026-05-17.md` records the
|
||||
May 17 queue-zero state, Japanese localization merge, Dependabot TypeScript
|
||||
and Node type merges, post-merge ja-JP lint repair, Mini Shai-Hulud/TanStack
|
||||
@@ -735,7 +737,7 @@ is not complete unless the evidence column exists and has been freshly verified.
|
||||
| Manage repository discussions | Repo-family discussion recheck plus response playbook | Platform audit reports 0 discussion maintainer-touch gaps and 0 answerable Q&A missing accepted answers; trunk still has 58 total discussions; `docs/architecture/discussion-response-playbook.md` distinguishes support, maintainer coordination, stale/concluded, release, informational, and security-sensitive response paths | Complete |
|
||||
| Manage PR discussions | PR review/comment closure plus merge/close state | ECC #1990-#1993 merged through the harness audit, canonical identity, release video suite, and growth outreach batch; no open tracked PRs remain | Complete |
|
||||
| Salvage useful stale work | `docs/stale-pr-salvage-ledger.md` plus `docs/legacy-artifact-inventory.md` | Ledger records salvaged, superseded, skipped, and manual-review tails; #1815-#1818 added cost tracking, skill scout, frontend design guidance, code-reviewer false-positive guardrails, and the May 12 gap pass; #1687, #1609, #1563, #1564, and #1565 localization tails are attached to Linear ITO-55 for language-owner review and no automatic import remains release-blocking | Complete; repeat legacy scan before release |
|
||||
| ECC 2.0 preview pack ready | Release docs, quickstart, publication readiness, release notes | `docs/releases/2.0.0-rc.1/` and readiness docs are in-tree; May 19 evidence records queue-zero state, canonical ECC identity, release video suite, growth outreach pack, local 2544-test suite, PR #1993 CI success, and preview-pack smoke digest `3bb55807407b` | Needs final release approval |
|
||||
| ECC 2.0 preview pack ready | Release docs, quickstart, publication readiness, release notes | `docs/releases/2.0.0-rc.1/` and readiness docs are in-tree; May 19 evidence records queue-zero state, canonical ECC identity, release video suite, growth outreach pack, local 2544-test suite, PR #1993 CI success, May 19 operator dashboard, and preview-pack smoke digest `bc2bf157616e` | Needs final release approval |
|
||||
| Hermes specialized skills included safely | Hermes setup/import docs and sanitized skill surface | Hermes setup and import playbook are public; secrets stay local | Needs final release review |
|
||||
| Naming and rename readiness | Naming matrix across package/plugin/docs/social surfaces | `docs/releases/2.0.0-rc.1/naming-and-publication-matrix.md` records current package, repo, Claude plugin, Codex plugin, OpenCode, and npm availability evidence | Complete for rc.1; post-rc rename remains future work |
|
||||
| Claude and Codex plugin publication | Contact/submission path with required artifacts and status | Publication readiness, naming matrix, and May 12 dry-run evidence document plugin validation, clean-checkout Claude tag/install smoke, and Codex marketplace CLI shape | Needs explicit approval for real tag/push and marketplace submission |
|
||||
|
||||
@@ -0,0 +1,65 @@
|
||||
# ECC Operator Readiness Dashboard
|
||||
|
||||
This dashboard is generated by `npm run operator:dashboard`. It is an operator snapshot, not release approval.
|
||||
|
||||
Generated: 2026-05-19T11:58:26.640Z
|
||||
Commit: dafd447977d07d1fdc84e200a9523f9b296cb269
|
||||
Status: work remaining
|
||||
|
||||
## Current Status
|
||||
|
||||
| Area | Status | Evidence |
|
||||
| --- | --- | --- |
|
||||
| PR queue | Current | 0 open PRs across tracked repos |
|
||||
| Issue queue | Current | 0 open issues across tracked repos |
|
||||
| Discussions | Current | 0 need maintainer touch; 0 missing accepted answer |
|
||||
| Local worktree | Current | 0 blocking dirty files; 0 ignored dirty entries |
|
||||
| Dashboard generation | Current | platform audit ready: true; GitHub skipped: false |
|
||||
| Publication | Not complete | release, npm, plugin, billing, and announcement gates are tracked below |
|
||||
|
||||
## Growth Baseline
|
||||
|
||||
| Metric | Current | Target | Gap |
|
||||
| --- | ---: | ---: | ---: |
|
||||
| MRR | $1,728/mo | $10,000/mo | $8,272/mo |
|
||||
|
||||
Growth lanes: GitHub Sponsors and OSS partner sponsors; ECC Tools Pro subscriptions; consulting and implementation contracts; talks, podcasts, conference demos, and partner webinars.
|
||||
|
||||
## Prompt-To-Artifact Checklist
|
||||
|
||||
| Objective requirement | Artifact or gate | Status | Evidence | Gap |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| Keep public PRs below 20 | scripts/platform-audit.js live GitHub sweep plus owner-wide queue cleanup ledger | current | 0 open PRs across 5 tracked repos; 0 owner-wide open PRs after cleanup | repeat platform:audit and owner-wide gh search before release |
|
||||
| Keep public issues below 20 | scripts/platform-audit.js live GitHub sweep plus owner-wide queue cleanup ledger | current | 0 open issues across 5 tracked repos; 0 owner-wide open issues after cleanup | repeat platform:audit and owner-wide gh search before release |
|
||||
| Respond and manage repository discussions | scripts/platform-audit.js discussion summary | current | 0 need maintainer touch; 0 answerable discussions missing accepted answer | repeat before release |
|
||||
| Build ITO-44 completion dashboard into a repeatable command | npm run operator:dashboard | complete | operator:dashboard package script exists | keep generated dashboard attached to publication evidence |
|
||||
| ECC 2.0 preview pack ready | docs/releases/2.0.0-rc.1/preview-pack-manifest.md | current | preview pack manifest and deterministic smoke gate are in-tree | repeat clean-checkout preview-pack smoke before publication |
|
||||
| Include Hermes specialized skills safely | docs/HERMES-SETUP.md and skills/hermes-imports/SKILL.md | current | Hermes setup/import artifacts are covered by preview-pack smoke | repeat preview-pack smoke before release review |
|
||||
| Prepare name-change, Claude plugin, and Codex plugin paths | naming-and-publication-matrix plus release-name-plugin-publication checklist plus publication-readiness | in_progress | naming matrix, release publication checklist, and plugin readiness gates exist | real tag/push, marketplace submission, and final channel choice remain approval-gated |
|
||||
| Prepare release notes, articles, tweets, and push notifications | docs/releases/2.0.0-rc.1 social and release-copy files | in_progress | release notes, X thread, LinkedIn draft, and URL ledger are present | final live release/npm/plugin/billing URLs and publish approval still pending |
|
||||
| Create a second-phase hypergrowth release command center | docs/releases/2.0.0/ecc-2-hypergrowth-release-command-center.md plus May 19 evidence | current | current MRR, target MRR, gap, release claim, video lane, distribution plan, and approval boundaries are in-tree | refresh after every MRR, channel, or approval-state change before public launch |
|
||||
| Produce the ECC 2.0 release video suite | docs/releases/2.0.0-rc.1/video-suite-production.md and npm run release:video-suite | in_progress | video production manifest and deterministic video-suite gate are wired for launch video, short clips, captions, timeline, and self-eval evidence | render final owner-approved MP4s, captions, platform reframes, and editable timeline before posting |
|
||||
| Prepare sponsor, partner, consulting, podcast, talk, and Discussion copy | docs/releases/2.0.0-rc.1/partner-sponsor-talks-pack.md | in_progress | sponsor outbound, platform partner DM, consulting intro, talk/podcast pitch, GitHub Discussion announcement, CTA hooks, and do-not-send gate are drafted | replace final URLs after publication gates, then get explicit approval before outbound or personal-account posts |
|
||||
| Advance AgentShield enterprise iteration | AgentShield PR evidence plus enterprise roadmap | in_progress | AgentShield policy promotion `reviewItems` landed in `87aec47`; package-manager hardening drift detection landed in `28d08c7`; workflow action runtime pins were refreshed in `659f569`; npm age-gate guidance was corrected in `ee585cd`; package-manager hardening Action outputs landed in `1124535`; policy-promotion Action outputs and runtime-smoke job-summary evidence landed in `1593925`; fleet review ticket payloads and current Mini Shai-Hulud IOC breadcrumbs landed in `840952a`; ECC-Tools consumes those outputs in `8658951`, surfaces operator-readable status/pack/count/digest telemetry in `16c537f`, and renders hosted promotion judge audit traces in `05d4e82`; all are mirrored in the GA roadmap | deepen live operator approval/readback after Marketplace/payment gates |
|
||||
| Advance ECC Tools native payments and AI-native harness-agnostic app | ECC Tools PR evidence, billing gate, hosted analysis lanes | in_progress | billing announcement gate, hosted analysis lanes, AgentShield fleet-summary consumption, hosted finding evidence paths, harness-route policy linking, policy-promotion Action-output telemetry, operator-visible promotion output details, hosted promotion judge audit traces, billing announcement preflight, aggregate production billing KV readback, Wrangler OAuth readback, target-account billing readback, provenance-aware Marketplace billing-state gates, sanitized Marketplace plan/action provenance counts, hosted team-learning feedback controls, and ECC-Tools Dependabot alert remediation are mirrored in the GA roadmap | create or verify Marketplace-managed Pro target billing-state with webhook provenance, configure the target account and INTERNAL_API_SECRET, then rerun target readback and the live announcement gate |
|
||||
| Audit, prune, or attach legacy work | docs/stale-pr-salvage-ledger.md and legacy inventory | current | legacy salvage ledger and inventory are current; all localization tails are attached to Linear ITO-55 for manual language-owner review | repeat legacy scan before release |
|
||||
| Keep Linear roadmap detailed and progress tracking synchronized | Linear project mirror plus progress-sync contract | current | Linear live sync and project progress surface are current; progress-sync contract defines the file-backed work-items/status path | repeat Linear/project status update and local work-items sync after each significant merge batch |
|
||||
| Provide ECC 2.0 observability for self-use | observability readiness gate | complete | observability:ready command and readiness doc exist | runtime/dashboard implementation can continue after release gates |
|
||||
| Keep Mini Shai-Hulud/TanStack protection loop current | supply-chain watch plus runbook plus AgentShield package-manager hardening | current | scheduled supply-chain watch emits IOC/advisory-source refresh artifacts; ECC scanner covers gh-token-monitor token-store persistence; AgentShield now detects known AI-tool persistence IOCs, npm lifecycle/token drift, unsupported npm age-key drift, and pnpm/Yarn cooldown drift; current-head watch evidence and ITO-57 May 18 Linear evidence updates are current | repeat advisory/source refresh and Linear sync after each significant supply-chain batch |
|
||||
|
||||
## Top Actions
|
||||
|
||||
- `naming-and-plugin-publication`: real tag/push, marketplace submission, and final channel choice remain approval-gated
|
||||
- `release-notes-and-notifications`: final live release/npm/plugin/billing URLs and publish approval still pending
|
||||
- `release-video-suite`: render final owner-approved MP4s, captions, platform reframes, and editable timeline before posting
|
||||
- `partner-sponsor-talks-pack`: replace final URLs after publication gates, then get explicit approval before outbound or personal-account posts
|
||||
- `agentshield-enterprise-iteration`: deepen live operator approval/readback after Marketplace/payment gates
|
||||
- `ecc-tools-next-level`: create or verify Marketplace-managed Pro target billing-state with webhook provenance, configure the target account and INTERNAL_API_SECRET, then rerun target readback and the live announcement gate
|
||||
|
||||
## Next Work Order
|
||||
|
||||
1. Regenerate this dashboard from the final release commit before publication evidence is recorded.
|
||||
2. Render the owner-approved primary launch video, short clips, captions, reframes, and editable timeline from the video-suite production manifest.
|
||||
3. Replace final release, npm, plugin, billing, and video URLs in the partner/sponsor/talk pack, then get explicit approval before outbound.
|
||||
4. Repeat ITO-57 Linear/project status sync after the next significant merge batch or advisory-source refresh.
|
||||
5. Create or verify Marketplace-managed Pro target billing-state with webhook provenance, configure the target account and INTERNAL_API_SECRET, then rerun target readback and the live announcement gate before publishing native-payments copy.
|
||||
@@ -25,9 +25,10 @@ surfaces, or posting announcements.
|
||||
| `docs/releases/2.0.0-rc.1/publication-evidence-2026-05-16.md` | Current May 16/17 queue cleanup, recsys skill merge, GateGuard triage, PR #1947 supply-chain protection, AgentShield #87 plugin-cache confidence evidence, AgentShield #88 evidence-pack inspect/readback, AgentShield #89 evidence-pack fleet routing, AgentShield #90 fleet review items, AgentShield #91 policy export, AgentShield #92 policy promotion, ECC-Tools #76 fleet-summary consumption, ECC-Tools #77 hosted finding evidence paths, ECC-Tools #78 harness policy-route linking, dashboard refresh, and combined Node/Rust/release-surface gate evidence through the May 16 mirror | Must still be repeated from a strict clean checkout before real publication |
|
||||
| `docs/releases/2.0.0-rc.1/publication-evidence-2026-05-17.md` | May 17 queue-zero state, Japanese localization merge, Dependabot TypeScript and Node type merges, post-merge ja-JP lint repair, Mini Shai-Hulud/TanStack protection recheck, npm audit/signature checks, legacy and Linear progress routing, deterministic preview-pack smoke, operator dashboard refresh, Linear sync, and GitHub CI evidence for `27dc2918` | Superseded by the May 18 evidence snapshot; repeat from a strict clean checkout before real publication |
|
||||
| `docs/releases/2.0.0-rc.1/publication-evidence-2026-05-18.md` | May 18 queue-zero state, #1970/#1971/#1972 merge batch, #1978 review/closure, supply-chain recheck, AgentShield evidence mirror, Linear sync, current-head CI/security scan success for `4470e2e6`, and ITO-46 naming/plugin publication closure | Superseded by the May 19 ECC identity, video, and growth evidence snapshot |
|
||||
| `docs/releases/2.0.0-rc.1/publication-evidence-2026-05-19.md` | Current May 19 evidence for canonical ECC identity, release video suite, partner/sponsor/talk outreach pack, preview-pack smoke digest `3bb55807407b`, 2544-test local suite, and PR #1993 CI success | Current strongest readiness snapshot; must still be repeated from a strict clean checkout before real publication |
|
||||
| `docs/releases/2.0.0-rc.1/publication-evidence-2026-05-19.md` | Current May 19 evidence for canonical ECC identity, release video suite, partner/sponsor/talk outreach pack, May 19 operator dashboard, preview-pack smoke digest `bc2bf157616e`, 2544-test local suite, and PR #1993 CI success | Current strongest readiness snapshot; must still be repeated from a strict clean checkout before real publication |
|
||||
| `docs/releases/2.0.0-rc.1/operator-readiness-dashboard-2026-05-17.md` | Previous prompt-to-artifact operator dashboard | Superseded by the May 18 generated dashboard |
|
||||
| `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/operator-readiness-dashboard-2026-05-18.md` | Previous prompt-to-artifact operator dashboard | Superseded by the May 19 generated dashboard |
|
||||
| `docs/releases/2.0.0-rc.1/operator-readiness-dashboard-2026-05-19.md` | Current prompt-to-artifact operator dashboard | Shows PR/issue/discussion/platform/supply-chain gates current and adds the current `$1,728/mo` to `$10,000/mo` hypergrowth, release-video, and outbound-pack operating lanes |
|
||||
| `docs/releases/2.0.0-rc.1/release-url-ledger-2026-05-19.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/video-suite-production.md` | Release video production manifest | Gates local media inventory, rough primary render, captions, timeline, self-eval, and no-private-path publication rules |
|
||||
| `docs/releases/2.0.0-rc.1/partner-sponsor-talks-pack.md` | Partner, sponsor, consulting, conference, podcast, and discussion copy | Must stay approval-gated and avoid live billing, release, package, or plugin claims without evidence |
|
||||
|
||||
@@ -8,9 +8,9 @@ social announcement.
|
||||
|
||||
| Field | Evidence |
|
||||
| --- | --- |
|
||||
| Upstream main | `7a0645ed47d6a3aca54b4a214aab6dfaa58e770d` |
|
||||
| Upstream main | `c07276a347f8dac4945d2ad294124a708c19b108` |
|
||||
| Git remote | `https://github.com/affaan-m/ECC.git` |
|
||||
| Evidence scope | Current `main` after PR #1990 harness-audit GitHub integration scoring, PR #1991 canonical ECC identity gate, PR #1992 release video-suite gate, and PR #1993 growth outreach pack |
|
||||
| Evidence scope | Current `main` after PR #1990 harness-audit GitHub integration scoring, PR #1991 canonical ECC identity gate, PR #1992 release video-suite gate, PR #1993 growth outreach pack, and PR #1994 May 19 publication evidence refresh |
|
||||
| Local status caveat | `git status --short --branch` was clean after pulling `origin/main`; generated evidence files are committed after the source snapshot they describe |
|
||||
|
||||
The release operator must repeat all publish-facing checks from the exact final
|
||||
@@ -42,13 +42,15 @@ Tracked repositories in the platform audit were:
|
||||
| PR #1991 | Merged canonical ECC release identity gate across README, plugin/package metadata, OpenCode surfaces, Marketplace metadata, audit defaults, quickstart, release URL ledger, naming/publication matrix, and release tests |
|
||||
| PR #1992 | Merged the release video-suite gate, production manifest, validator, package file surface, preview-pack smoke wiring, release-surface tests, and compact CI JSON output |
|
||||
| PR #1993 | Merged the partner, sponsor, consulting, conference, podcast, GitHub Discussion, and video CTA pack for the hypergrowth outbound lane |
|
||||
| PR #1994 | Merged the May 19 publication-evidence refresh, platform-audit evidence gate, preview-pack smoke evidence gate, and URL/readiness/roadmap references |
|
||||
|
||||
## Release And Growth Evidence
|
||||
|
||||
| Gate | Command | Result |
|
||||
| --- | --- | --- |
|
||||
| Release-surface tests | `node tests/docs/ecc2-release-surface.test.js` | 25 passed, 0 failed |
|
||||
| Preview-pack smoke | `npm run preview-pack:smoke -- --format json` | Ready true; digest `3bb55807407b`; 29 required artifacts; 5 passed, 0 failed |
|
||||
| Preview-pack smoke | `npm run preview-pack:smoke -- --format json` | Ready true; digest `bc2bf157616e`; 30 required artifacts; 5 passed, 0 failed |
|
||||
| Operator dashboard | `npm run operator:dashboard -- --markdown --write docs/releases/2.0.0-rc.1/operator-readiness-dashboard-2026-05-19.md` | Generated May 19 dashboard with platform audit ready true, 0 tracked PRs, 0 tracked issues, 0 discussion gaps, `$1,728/mo` current MRR, `$10,000/mo` target MRR, and top actions for plugin publication, notifications, release video, outbound approval, AgentShield, and ECC Tools billing |
|
||||
| Release video suite | `npm run release:video-suite -- --format json --summary` with `ECC_VIDEO_SOURCE_ROOT` and `ECC_VIDEO_RELEASE_SUITE_ROOT` | Ready true; 15/15 source assets present; 13/13 render, timeline, caption, EDL, and segment artifacts present; primary rough render is 144.759 seconds and 106.78 MB |
|
||||
| Full local suite | `node tests/run-all.js` | 2544 passed, 0 failed |
|
||||
| PR #1993 CI | GitHub Actions run `26093792219` | Completed successfully for `d9ac22c697d9a8a8771512ab01e6df857c16776d`; all reported checks passed, including lint, validation, security scan, coverage, GitGuardian, and the macOS/Ubuntu/Windows test matrix |
|
||||
@@ -64,6 +66,7 @@ Tracked repositories in the platform audit were:
|
||||
| Video proof | `video-suite-production.md` gates the local rough render, timeline, captions, source inventory, self-eval, and no-private-path publication rules |
|
||||
| Growth proof | `partner-sponsor-talks-pack.md` provides approval-gated copy for sponsors, partners, consulting, talks, podcasts, GitHub Discussion, and video CTAs |
|
||||
| Business baseline | Hypergrowth command center and partner pack use `$1,728/mo` current MRR, `$10,000/mo` target MRR, and `$8,272/mo` gap |
|
||||
| Operator dashboard | `operator-readiness-dashboard-2026-05-19.md` pulls the growth baseline into the same queue, publication, video, outbound, AgentShield, ECC Tools, Linear, and supply-chain control surface |
|
||||
|
||||
## Current Publication Blockers
|
||||
|
||||
@@ -89,7 +92,8 @@ Tracked repositories in the platform audit were:
|
||||
The tracked public PR queue, issue queue, discussion queue, canonical ECC
|
||||
identity, release video suite, preview pack, and growth outreach packet are
|
||||
current on May 19, 2026 for `main` through
|
||||
`7a0645ed47d6a3aca54b4a214aab6dfaa58e770d`.
|
||||
`c07276a347f8dac4945d2ad294124a708c19b108`, with the May 19 dashboard
|
||||
refresh staged for the next merge.
|
||||
|
||||
This improves publication readiness but does not replace the approval-gated
|
||||
release, package, plugin, billing, Discord, and announcement steps in
|
||||
|
||||
@@ -55,6 +55,9 @@ For the May 17 operator dashboard refresh, see
|
||||
[`operator-readiness-dashboard-2026-05-17.md`](operator-readiness-dashboard-2026-05-17.md).
|
||||
For the May 18 operator dashboard refresh, see
|
||||
[`operator-readiness-dashboard-2026-05-18.md`](operator-readiness-dashboard-2026-05-18.md).
|
||||
|
||||
The current May 19 hypergrowth/operator dashboard is
|
||||
[`operator-readiness-dashboard-2026-05-19.md`](operator-readiness-dashboard-2026-05-19.md).
|
||||
For the May 19 live/pending release URL ledger after the public repo rename, see
|
||||
[`release-url-ledger-2026-05-19.md`](release-url-ledger-2026-05-19.md).
|
||||
|
||||
@@ -96,7 +99,7 @@ Record the exact commit SHA and command output before any publication action:
|
||||
| Evidence | Command | Required result | Recorded output |
|
||||
| --- | --- | --- | --- |
|
||||
| Clean release branch | `git status --short --branch` | On intended release commit; no unrelated files | `7a0645ed`: `## main...origin/main`; repeat from the exact final publication commit before release |
|
||||
| Preview-pack smoke | `npm run preview-pack:smoke` | Preview pack artifacts, Hermes boundary, final verification command list, and publication blockers pass | `publication-evidence-2026-05-19.md`: ready yes, digest `3bb55807407b`, 29 artifacts, 5 passed, 0 failed; repeat in the final strict clean-checkout release pass |
|
||||
| Preview-pack smoke | `npm run preview-pack:smoke` | Preview pack artifacts, Hermes boundary, final verification command list, and publication blockers pass | `publication-evidence-2026-05-19.md`: ready yes, digest `bc2bf157616e`, 30 artifacts, 5 passed, 0 failed; repeat in the final strict clean-checkout release pass |
|
||||
| Harness audit | `npm run harness:audit -- --format json` | 70/70 passing | `99e01ded`: 70/70, 0 top actions |
|
||||
| Adapter scorecard | `npm run harness:adapters -- --check` | PASS | `99e01ded`: PASS, 11 adapters |
|
||||
| Observability readiness | `npm run observability:ready` | 21/21 passing | `publication-evidence-2026-05-18.md`: 21/21, ready yes |
|
||||
|
||||
@@ -19,7 +19,8 @@ with output from the exact release commit.
|
||||
| Hermes setup guide | <https://github.com/affaan-m/ECC/blob/main/docs/HERMES-SETUP.md> | In-tree sanitized Hermes guide |
|
||||
| May 19 evidence snapshot | <https://github.com/affaan-m/ECC/blob/main/docs/releases/2.0.0-rc.1/publication-evidence-2026-05-19.md> | Current strongest identity, video, growth, and CI readiness evidence |
|
||||
| May 18 evidence snapshot | <https://github.com/affaan-m/ECC/blob/main/docs/releases/2.0.0-rc.1/publication-evidence-2026-05-18.md> | Previous supply-chain and publication-path readiness evidence |
|
||||
| May 18 operator dashboard | <https://github.com/affaan-m/ECC/blob/main/docs/releases/2.0.0-rc.1/operator-readiness-dashboard-2026-05-18.md> | Prompt-to-artifact dashboard |
|
||||
| May 18 operator dashboard | <https://github.com/affaan-m/ECC/blob/main/docs/releases/2.0.0-rc.1/operator-readiness-dashboard-2026-05-18.md> | Previous prompt-to-artifact dashboard |
|
||||
| May 19 operator dashboard | <https://github.com/affaan-m/ECC/blob/main/docs/releases/2.0.0-rc.1/operator-readiness-dashboard-2026-05-19.md> | Current prompt-to-artifact dashboard with hypergrowth, video, and outbound lanes |
|
||||
| npm package page | <https://www.npmjs.com/package/ecc-universal> | `npm view ecc-universal name version dist-tags --json` returned `latest: 1.10.0`; rc.1 is not published yet |
|
||||
| Codex marketplace CLI docs | <https://developers.openai.com/codex/cli/reference#codex-plugin-marketplace> | Official docs list `codex plugin marketplace add` for GitHub shorthand, Git URLs, SSH URLs, and local marketplace roots |
|
||||
| Codex official Plugin Directory status | <https://developers.openai.com/codex/plugins/build#publish-official-public-plugins> | Official docs say public Plugin Directory publishing and self-serve management are coming soon |
|
||||
|
||||
@@ -543,15 +543,54 @@ function isCurrentOrComplete(status) {
|
||||
return status === 'current' || status === 'complete';
|
||||
}
|
||||
|
||||
function extractGrowthBaseline(hypergrowth) {
|
||||
const mrrMatch = hypergrowth.match(/\| MRR \| `([^`]+)` \| `([^`]+)` \| `([^`]+)` \|/);
|
||||
|
||||
if (!mrrMatch) {
|
||||
return {
|
||||
currentMrr: 'unknown',
|
||||
targetMrr: 'unknown',
|
||||
gapMrr: 'unknown',
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
currentMrr: mrrMatch[1],
|
||||
targetMrr: mrrMatch[2],
|
||||
gapMrr: mrrMatch[3],
|
||||
};
|
||||
}
|
||||
|
||||
function buildGrowthSummary(rootDir) {
|
||||
const hypergrowth = readText(rootDir, 'docs/releases/2.0.0/ecc-2-hypergrowth-release-command-center.md');
|
||||
const partnerPack = readText(rootDir, 'docs/releases/2.0.0-rc.1/partner-sponsor-talks-pack.md');
|
||||
const baseline = extractGrowthBaseline(hypergrowth || partnerPack);
|
||||
|
||||
return {
|
||||
...baseline,
|
||||
lanes: [
|
||||
'GitHub Sponsors and OSS partner sponsors',
|
||||
'ECC Tools Pro subscriptions',
|
||||
'consulting and implementation contracts',
|
||||
'talks, podcasts, conference demos, and partner webinars',
|
||||
],
|
||||
};
|
||||
}
|
||||
|
||||
function buildRequirements(rootDir, platformReport) {
|
||||
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 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-19.md');
|
||||
const publicationEvidenceMay19 = readText(rootDir, 'docs/releases/2.0.0-rc.1/publication-evidence-2026-05-19.md');
|
||||
const hypergrowthCommandCenter = readText(rootDir, 'docs/releases/2.0.0/ecc-2-hypergrowth-release-command-center.md');
|
||||
const partnerSponsorTalksPack = readText(rootDir, 'docs/releases/2.0.0-rc.1/partner-sponsor-talks-pack.md');
|
||||
const releaseVideoProduction = readText(rootDir, 'docs/releases/2.0.0-rc.1/video-suite-production.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 previewPackSmoke = readText(rootDir, 'scripts/preview-pack-smoke.js');
|
||||
const releaseVideoSuite = readText(rootDir, 'scripts/release-video-suite.js');
|
||||
const progressSync = readText(rootDir, 'docs/architecture/progress-sync-contract.md');
|
||||
const observabilityReadiness = readText(rootDir, 'docs/architecture/observability-readiness.md');
|
||||
const stalePrSalvage = readText(rootDir, 'docs/stale-pr-salvage-ledger.md');
|
||||
@@ -577,6 +616,39 @@ function buildRequirements(rootDir, platformReport) {
|
||||
]);
|
||||
const hermesArtifactsReady = fileExists(rootDir, 'docs/HERMES-SETUP.md')
|
||||
&& fileExists(rootDir, 'skills/hermes-imports/SKILL.md');
|
||||
const hypergrowthCommandCenterReady = includesAll(hypergrowthCommandCenter, [
|
||||
'harness-native operator system',
|
||||
'$1,728/mo',
|
||||
'$10,000/mo',
|
||||
'Video Suite',
|
||||
'Distribution Plan',
|
||||
'Owner Approvals',
|
||||
]) && includesAll(publicationEvidenceMay19, [
|
||||
'Business baseline',
|
||||
'$1,728/mo',
|
||||
'$8,272/mo',
|
||||
]);
|
||||
const releaseVideoSuiteReady = scripts['release:video-suite'] === 'node scripts/release-video-suite.js'
|
||||
&& fileExists(rootDir, 'scripts/release-video-suite.js')
|
||||
&& includesAll(releaseVideoProduction, [
|
||||
'ECC 2.0 Video Suite Production Manifest',
|
||||
'Primary launch video',
|
||||
'Self-Eval Gate',
|
||||
'timeline',
|
||||
])
|
||||
&& includesAll(releaseVideoSuite, [
|
||||
'ecc.release-video-suite.v1',
|
||||
'video-source-assets-present',
|
||||
'video-release-artifacts-present',
|
||||
]);
|
||||
const partnerSponsorTalksReady = includesAll(partnerSponsorTalksPack, [
|
||||
'Sponsor Outbound',
|
||||
'Platform Partner DM',
|
||||
'Consulting Intro',
|
||||
'Talk And Podcast Pitch',
|
||||
'GitHub Discussion Announcement',
|
||||
'Do Not Send Or Publish If',
|
||||
]);
|
||||
|
||||
const githubLive = !platformReport.github.skipped && platformReport.github.totals.errors === 0;
|
||||
const ownerWideOpenPrs = extractLabeledCount(ownerQueueCleanup, 'Owner-wide open PRs after cleanup');
|
||||
@@ -714,6 +786,42 @@ function buildRequirements(rootDir, platformReport) {
|
||||
? 'final live release/npm/plugin/billing URLs and publish approval still pending'
|
||||
: 'URL-backed refresh and publish approval still pending'
|
||||
),
|
||||
buildRequirement(
|
||||
'hypergrowth-command-center',
|
||||
'Create a second-phase hypergrowth release command center',
|
||||
'docs/releases/2.0.0/ecc-2-hypergrowth-release-command-center.md plus May 19 evidence',
|
||||
hypergrowthCommandCenterReady ? 'current' : 'in_progress',
|
||||
hypergrowthCommandCenterReady
|
||||
? 'current MRR, target MRR, gap, release claim, video lane, distribution plan, and approval boundaries are in-tree'
|
||||
: 'hypergrowth command center or May 19 business baseline evidence is incomplete',
|
||||
hypergrowthCommandCenterReady
|
||||
? 'refresh after every MRR, channel, or approval-state change before public launch'
|
||||
: 'add current MRR, target gap, channel plan, video lane, and approval boundaries'
|
||||
),
|
||||
buildRequirement(
|
||||
'release-video-suite',
|
||||
'Produce the ECC 2.0 release video suite',
|
||||
'docs/releases/2.0.0-rc.1/video-suite-production.md and npm run release:video-suite',
|
||||
releaseVideoSuiteReady ? 'in_progress' : 'not_complete',
|
||||
releaseVideoSuiteReady
|
||||
? 'video production manifest and deterministic video-suite gate are wired for launch video, short clips, captions, timeline, and self-eval evidence'
|
||||
: 'video production manifest or release:video-suite gate is incomplete',
|
||||
releaseVideoSuiteReady
|
||||
? 'render final owner-approved MP4s, captions, platform reframes, and editable timeline before posting'
|
||||
: 'wire release:video-suite and production manifest before final content work'
|
||||
),
|
||||
buildRequirement(
|
||||
'partner-sponsor-talks-pack',
|
||||
'Prepare sponsor, partner, consulting, podcast, talk, and Discussion copy',
|
||||
'docs/releases/2.0.0-rc.1/partner-sponsor-talks-pack.md',
|
||||
partnerSponsorTalksReady ? 'in_progress' : 'not_complete',
|
||||
partnerSponsorTalksReady
|
||||
? 'sponsor outbound, platform partner DM, consulting intro, talk/podcast pitch, GitHub Discussion announcement, CTA hooks, and do-not-send gate are drafted'
|
||||
: 'partner, sponsor, consulting, talk, or discussion copy is missing',
|
||||
partnerSponsorTalksReady
|
||||
? 'replace final URLs after publication gates, then get explicit approval before outbound or personal-account posts'
|
||||
: 'draft the full outbound pack and approval gate'
|
||||
),
|
||||
buildRequirement(
|
||||
'agentshield-enterprise-iteration',
|
||||
'Advance AgentShield enterprise iteration',
|
||||
@@ -802,12 +910,14 @@ function buildReport(options) {
|
||||
fix: item.gap,
|
||||
}));
|
||||
const head = runCommand('git', ['rev-parse', 'HEAD'], { cwd: rootDir });
|
||||
const growth = buildGrowthSummary(rootDir);
|
||||
|
||||
return {
|
||||
schema_version: SCHEMA_VERSION,
|
||||
generatedAt,
|
||||
root: rootDir,
|
||||
head,
|
||||
growth,
|
||||
ready: incompleteRequirements.length === 0,
|
||||
dashboardReady: platformReport.ready,
|
||||
publicationReady: false,
|
||||
@@ -827,9 +937,10 @@ function buildReport(options) {
|
||||
top_actions: topActions,
|
||||
next_work_order: [
|
||||
'Regenerate this dashboard from the final release commit before publication evidence is recorded.',
|
||||
'Render the owner-approved primary launch video, short clips, captions, reframes, and editable timeline from the video-suite production manifest.',
|
||||
'Replace final release, npm, plugin, billing, and video URLs in the partner/sponsor/talk pack, then get explicit approval before outbound.',
|
||||
'Repeat ITO-57 Linear/project status sync after the next significant merge batch or advisory-source refresh.',
|
||||
'Create or verify Marketplace-managed Pro target billing-state with webhook provenance, configure the target account and INTERNAL_API_SECRET, then rerun target readback and the live announcement gate before publishing native-payments copy.',
|
||||
'Resume ITO-45, ITO-46, and ITO-56 only after the generated dashboard and final release gates are refreshed.',
|
||||
],
|
||||
};
|
||||
}
|
||||
@@ -848,6 +959,9 @@ function renderText(report) {
|
||||
`Dashboard ready: ${report.dashboardReady}`,
|
||||
`Publication ready: ${report.publicationReady}`,
|
||||
'',
|
||||
'Growth baseline:',
|
||||
` MRR: ${report.growth ? report.growth.currentMrr : 'unknown'} -> ${report.growth ? report.growth.targetMrr : 'unknown'} (gap ${report.growth ? report.growth.gapMrr : 'unknown'})`,
|
||||
'',
|
||||
'Platform:',
|
||||
` PRs: ${report.platform.openPrs}`,
|
||||
` Issues: ${report.platform.openIssues}`,
|
||||
@@ -895,6 +1009,14 @@ function renderMarkdown(report) {
|
||||
`| Dashboard generation | ${report.dashboardReady ? 'Current' : 'Needs work'} | platform audit ready: ${report.platform.ready}; GitHub skipped: ${report.platform.githubSkipped} |`,
|
||||
`| Publication | ${report.publicationReady ? 'Ready' : 'Not complete'} | release, npm, plugin, billing, and announcement gates are tracked below |`,
|
||||
'',
|
||||
'## Growth Baseline',
|
||||
'',
|
||||
'| Metric | Current | Target | Gap |',
|
||||
'| --- | ---: | ---: | ---: |',
|
||||
`| MRR | ${markdownEscape(report.growth ? report.growth.currentMrr : 'unknown')} | ${markdownEscape(report.growth ? report.growth.targetMrr : 'unknown')} | ${markdownEscape(report.growth ? report.growth.gapMrr : 'unknown')} |`,
|
||||
'',
|
||||
'Growth lanes: GitHub Sponsors and OSS partner sponsors; ECC Tools Pro subscriptions; consulting and implementation contracts; talks, podcasts, conference demos, and partner webinars.',
|
||||
'',
|
||||
'## Prompt-To-Artifact Checklist',
|
||||
'',
|
||||
'| Objective requirement | Artifact or gate | Status | Evidence | Gap |',
|
||||
|
||||
@@ -427,7 +427,7 @@ function buildLocalEvidenceChecks(rootDir) {
|
||||
const progressSync = readText(rootDir, 'docs/architecture/progress-sync-contract.md');
|
||||
const supplyChain = readText(rootDir, 'docs/security/supply-chain-incident-response.md');
|
||||
const evidence = readText(rootDir, 'docs/releases/2.0.0-rc.1/publication-evidence-2026-05-19.md');
|
||||
const operatorDashboard = readText(rootDir, 'docs/releases/2.0.0-rc.1/operator-readiness-dashboard-2026-05-18.md');
|
||||
const operatorDashboard = readText(rootDir, 'docs/releases/2.0.0-rc.1/operator-readiness-dashboard-2026-05-19.md');
|
||||
|
||||
return [
|
||||
buildCheck(
|
||||
@@ -472,7 +472,7 @@ function buildLocalEvidenceChecks(rootDir) {
|
||||
),
|
||||
buildCheck(
|
||||
'release-evidence-current',
|
||||
includesAll(evidence, ['Release video suite', 'growth outreach', 'GitGuardian', 'macOS/Ubuntu/Windows test matrix', '2544 passed']) ? 'pass' : 'fail',
|
||||
includesAll(evidence, ['Release video suite', 'growth outreach', 'Operator dashboard', 'GitGuardian', 'macOS/Ubuntu/Windows test matrix', '2544 passed']) ? 'pass' : 'fail',
|
||||
'rc.1 evidence includes current release, video, growth, and CI artifacts',
|
||||
{ path: 'docs/releases/2.0.0-rc.1/publication-evidence-2026-05-19.md' }
|
||||
),
|
||||
@@ -480,13 +480,15 @@ function buildLocalEvidenceChecks(rootDir) {
|
||||
'operator-readiness-dashboard',
|
||||
includesAll(operatorDashboard, [
|
||||
'This dashboard is generated by `npm run operator:dashboard`',
|
||||
'Growth Baseline',
|
||||
'hypergrowth release command center',
|
||||
'Prompt-To-Artifact Checklist',
|
||||
'PR queue',
|
||||
'Not complete',
|
||||
'Next Work Order',
|
||||
]) ? 'pass' : 'fail',
|
||||
'operator dashboard maps macro-goal requirements to current evidence and open gaps',
|
||||
{ path: 'docs/releases/2.0.0-rc.1/operator-readiness-dashboard-2026-05-18.md' }
|
||||
{ path: 'docs/releases/2.0.0-rc.1/operator-readiness-dashboard-2026-05-19.md' }
|
||||
),
|
||||
];
|
||||
}
|
||||
|
||||
@@ -29,6 +29,7 @@ const REQUIRED_ARTIFACTS = [
|
||||
`${RELEASE_DIR}/publication-evidence-2026-05-19.md`,
|
||||
`${RELEASE_DIR}/operator-readiness-dashboard-2026-05-17.md`,
|
||||
`${RELEASE_DIR}/operator-readiness-dashboard-2026-05-18.md`,
|
||||
`${RELEASE_DIR}/operator-readiness-dashboard-2026-05-19.md`,
|
||||
`${RELEASE_DIR}/release-url-ledger-2026-05-19.md`,
|
||||
`${RELEASE_DIR}/video-suite-production.md`,
|
||||
`${RELEASE_DIR}/partner-sponsor-talks-pack.md`,
|
||||
|
||||
@@ -33,7 +33,8 @@ function seedRepo(rootDir, overrides = {}) {
|
||||
'scripts/observability-readiness.js',
|
||||
'scripts/operator-readiness-dashboard.js',
|
||||
'scripts/platform-audit.js',
|
||||
'scripts/preview-pack-smoke.js'
|
||||
'scripts/preview-pack-smoke.js',
|
||||
'scripts/release-video-suite.js'
|
||||
],
|
||||
scripts: {
|
||||
'discussion:audit': 'node scripts/discussion-audit.js',
|
||||
@@ -41,6 +42,7 @@ function seedRepo(rootDir, overrides = {}) {
|
||||
'operator:dashboard': 'node scripts/operator-readiness-dashboard.js',
|
||||
'platform:audit': 'node scripts/platform-audit.js',
|
||||
'preview-pack:smoke': 'node scripts/preview-pack-smoke.js',
|
||||
'release:video-suite': 'node scripts/release-video-suite.js',
|
||||
'security:ioc-scan': 'node scripts/ci/scan-supply-chain-iocs.js',
|
||||
'security:advisory-sources': 'node scripts/ci/supply-chain-advisory-sources.js'
|
||||
}
|
||||
@@ -52,6 +54,11 @@ function seedRepo(rootDir, overrides = {}) {
|
||||
'hermes-boundary-sanitized',
|
||||
'publication-blockers-preserved'
|
||||
].join('\n'),
|
||||
'scripts/release-video-suite.js': [
|
||||
'ecc.release-video-suite.v1',
|
||||
'video-source-assets-present',
|
||||
'video-release-artifacts-present'
|
||||
].join('\n'),
|
||||
'docs/ECC-2.0-GA-ROADMAP.md': [
|
||||
'https://linear.app/itomarkets/project/ecc-platform-roadmap-52b328ee03e1',
|
||||
'Linear ITO-44 ITO-59',
|
||||
@@ -109,6 +116,18 @@ function seedRepo(rootDir, overrides = {}) {
|
||||
'PR queue',
|
||||
'Not complete'
|
||||
].join('\n'),
|
||||
'docs/releases/2.0.0-rc.1/operator-readiness-dashboard-2026-05-19.md': [
|
||||
'This dashboard is generated by `npm run operator:dashboard`',
|
||||
'operator:dashboard',
|
||||
'Growth Baseline',
|
||||
'hypergrowth release command center',
|
||||
'Prompt-To-Artifact Checklist',
|
||||
'Next Work Order',
|
||||
'ITO-44',
|
||||
'ITO-59',
|
||||
'PR queue',
|
||||
'Not complete'
|
||||
].join('\n'),
|
||||
'docs/releases/2.0.0-rc.1/owner-queue-cleanup-2026-05-18.md': [
|
||||
'Owner-wide open PRs after cleanup: 0.',
|
||||
'Owner-wide open issues after cleanup: 0.',
|
||||
@@ -156,9 +175,34 @@ function seedRepo(rootDir, overrides = {}) {
|
||||
'docs/releases/2.0.0-rc.1/publication-evidence-2026-05-19.md': [
|
||||
'Release video suite',
|
||||
'growth outreach',
|
||||
'Operator dashboard',
|
||||
'GitGuardian',
|
||||
'macOS/Ubuntu/Windows test matrix',
|
||||
'2544 passed'
|
||||
'2544 passed',
|
||||
'Business baseline',
|
||||
'$1,728/mo',
|
||||
'$8,272/mo'
|
||||
].join('\n'),
|
||||
'docs/releases/2.0.0/ecc-2-hypergrowth-release-command-center.md': [
|
||||
'harness-native operator system',
|
||||
'| MRR | `$1,728/mo` | `$10,000/mo` | `$8,272/mo` |',
|
||||
'Video Suite',
|
||||
'Distribution Plan',
|
||||
'Owner Approvals'
|
||||
].join('\n'),
|
||||
'docs/releases/2.0.0-rc.1/video-suite-production.md': [
|
||||
'ECC 2.0 Video Suite Production Manifest',
|
||||
'Primary launch video',
|
||||
'Self-Eval Gate',
|
||||
'timeline'
|
||||
].join('\n'),
|
||||
'docs/releases/2.0.0-rc.1/partner-sponsor-talks-pack.md': [
|
||||
'Sponsor Outbound',
|
||||
'Platform Partner DM',
|
||||
'Consulting Intro',
|
||||
'Talk And Podcast Pitch',
|
||||
'GitHub Discussion Announcement',
|
||||
'Do Not Send Or Publish If'
|
||||
].join('\n'),
|
||||
'.github/workflows/supply-chain-watch.yml': 'name: Supply-Chain Watch supply-chain-advisory-sources.js supply-chain-advisory-sources.json'
|
||||
};
|
||||
@@ -308,6 +352,35 @@ function runTests() {
|
||||
&& item.evidence.includes('release publication checklist')
|
||||
&& item.gap === 'real tag/push, marketplace submission, and final channel choice remain approval-gated'
|
||||
)));
|
||||
assert.deepStrictEqual(report.growth, {
|
||||
currentMrr: '$1,728/mo',
|
||||
targetMrr: '$10,000/mo',
|
||||
gapMrr: '$8,272/mo',
|
||||
lanes: [
|
||||
'GitHub Sponsors and OSS partner sponsors',
|
||||
'ECC Tools Pro subscriptions',
|
||||
'consulting and implementation contracts',
|
||||
'talks, podcasts, conference demos, and partner webinars',
|
||||
],
|
||||
});
|
||||
assert.ok(report.requirements.some(item => (
|
||||
item.id === 'hypergrowth-command-center'
|
||||
&& item.status === 'current'
|
||||
&& item.evidence.includes('current MRR')
|
||||
&& item.gap === 'refresh after every MRR, channel, or approval-state change before public launch'
|
||||
)));
|
||||
assert.ok(report.requirements.some(item => (
|
||||
item.id === 'release-video-suite'
|
||||
&& item.status === 'in_progress'
|
||||
&& item.evidence.includes('deterministic video-suite gate')
|
||||
&& item.gap === 'render final owner-approved MP4s, captions, platform reframes, and editable timeline before posting'
|
||||
)));
|
||||
assert.ok(report.requirements.some(item => (
|
||||
item.id === 'partner-sponsor-talks-pack'
|
||||
&& item.status === 'in_progress'
|
||||
&& 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 === 'supply-chain-local-protection'
|
||||
&& item.artifact.includes('AgentShield package-manager hardening')
|
||||
@@ -328,8 +401,11 @@ function runTests() {
|
||||
&& item.gap === 'repeat Linear/project status update and local work-items sync after each significant merge batch'
|
||||
)));
|
||||
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 === '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'));
|
||||
assert.ok(!report.top_actions.some(item => item.id === 'legacy-salvage'));
|
||||
assert.ok(!report.top_actions.some(item => item.id === 'linear-roadmap-and-progress'));
|
||||
} finally {
|
||||
@@ -526,6 +602,8 @@ function runTests() {
|
||||
assert.strictEqual(stdout, written);
|
||||
assert.ok(written.includes('# ECC Operator Readiness Dashboard'));
|
||||
assert.ok(written.includes('Generated: 2026-05-15T00:00:00.000Z'));
|
||||
assert.ok(written.includes('## Growth Baseline'));
|
||||
assert.ok(written.includes('| MRR | $1,728/mo | $10,000/mo | $8,272/mo |'));
|
||||
assert.ok(written.includes('## Prompt-To-Artifact Checklist'));
|
||||
assert.ok(written.includes('Build ITO-44 completion dashboard into a repeatable command'));
|
||||
assert.ok(written.includes('## Next Work Order'));
|
||||
@@ -550,6 +628,7 @@ function runTests() {
|
||||
assert.ok(stdout.includes('work remaining'));
|
||||
assert.ok(stdout.includes('Dashboard ready: true'));
|
||||
assert.ok(stdout.includes('Publication ready: false'));
|
||||
assert.ok(stdout.includes('MRR: $1,728/mo -> $10,000/mo (gap $8,272/mo)'));
|
||||
assert.ok(stdout.includes('Top actions:'));
|
||||
assert.ok(stdout.includes('naming-and-plugin-publication'));
|
||||
} finally {
|
||||
|
||||
@@ -65,12 +65,15 @@ function seedRepo(rootDir, overrides = {}) {
|
||||
'docs/releases/2.0.0-rc.1/publication-evidence-2026-05-19.md': [
|
||||
'Release video suite',
|
||||
'growth outreach',
|
||||
'Operator dashboard',
|
||||
'GitGuardian',
|
||||
'macOS/Ubuntu/Windows test matrix',
|
||||
'2544 passed'
|
||||
].join('\n'),
|
||||
'docs/releases/2.0.0-rc.1/operator-readiness-dashboard-2026-05-18.md': [
|
||||
'docs/releases/2.0.0-rc.1/operator-readiness-dashboard-2026-05-19.md': [
|
||||
'This dashboard is generated by `npm run operator:dashboard`',
|
||||
'Growth Baseline',
|
||||
'hypergrowth release command center',
|
||||
'Prompt-To-Artifact Checklist',
|
||||
'ITO-44',
|
||||
'ITO-59',
|
||||
|
||||
Reference in New Issue
Block a user