Release Ops
Release Package
Release notes, known issues, rollback, manifest, checksums, and signing/trust status for the current paid-beta candidate.
Release Candidate Preflight
Open preflight CSVRun npm run release:candidate:preflight to refresh the version-specific paid-beta/internal-alpha verdict from the latest dashboard, release, cloud, handoff, marketing, visual, billing, support, and legal state.
- User + Codex: Windows signing readiness is Microsoft Artifact Signing Handoffs Missing. Run npm run release:windows-signing:preflight, then finish the listed Microsoft Artifact Signing or PFX handoffs before building a paid beta installer.
- User + Codex: Choose the release trust path and produce signed or store-trusted installer evidence before paid beta.
- User + Codex: 3 P0 deployability blockers remain. Use the Deployability page and Handoffs page before live money.
- User: 3 user handoffs and 0 secret-store handoffs are still waiting.
- User + Codex: Final publication still needs Attorney/accountant review approval for paid beta; Final screenshots approved from the shipping build; Recorded 90-second product demo and 30-second ad using final screenshots and launch values.
- Codex: Final screenshots, diagrams, and demo visuals must match the shipping app before paid beta marketing.
- User + Codex: After the legal and release-trust gates clear, switch rehearsal mode to live and run the guarded final preflight.
- User: Complete attorney/accountant review for the paid beta.
- User: Attorney/accountant review approved for paid beta: Mark Approved only after attorney/accountant review clears paid beta.
- User + Codex: Billing rehearsal mode set to live for final money preflight: Switch to live only after test-mode rehearsal, legal, support, and Stripe gates pass.
Release Blocker Queue
| Status | Severity | Owner | Blocker | Next Step |
|---|---|---|---|---|
| blocked | P0 | User + Codex | Windows signing inputs are ready for a trusted installer build | Windows signing readiness is Microsoft Artifact Signing Handoffs Missing. Run npm run release:windows-signing:preflight, then finish the listed Microsoft Artifact Signing or PFX handoffs before building a paid beta installer. |
| blocked | P0 | User + Codex | Paid beta installer is signed or store-trusted | Choose the release trust path and produce signed or store-trusted installer evidence before paid beta. |
| blocked | P0 | User + Codex | Deployability preflight has no P0 blockers | 3 P0 deployability blockers remain. Use the Deployability page and Handoffs page before live money. |
| blocked | P0 | User | Dashboard handoffs are cleared | 3 user handoffs and 0 secret-store handoffs are still waiting. |
| blocked | P1 | User + Codex | Marketing campaign has final publish values | Final publication still needs Attorney/accountant review approval for paid beta; Final screenshots approved from the shipping build; Recorded 90-second product demo and 30-second ad using final screenshots and launch values. |
| blocked | P1 | Codex | Visuals match the shipping app | Final screenshots, diagrams, and demo visuals must match the shipping app before paid beta marketing. |
| blocked | P0 | User + Codex | Billing live rehearsal inputs are ready | After the legal and release-trust gates clear, switch rehearsal mode to live and run the guarded final preflight. |
| blocked | P0 | User | Support and legal review are ready | Complete attorney/accountant review for the paid beta. |
All Checks
| Status | Severity | Owner | Check | Detail |
|---|---|---|---|---|
| pass | P0 | Codex | Package version agrees with dashboard version | package.json and dashboard both use 0.1.0-alpha.83. |
| pass | P0 | Codex | Product metadata exists | NyrA Swarm Little Buddy / com.porter.nyra.swarm-little-buddy |
| pass | P0 | Codex | Release documents exist for this version | Release runbook, notes, known issues, rollback, and signing decision docs exist. |
| pass | P0 | Codex | Windows installer target is configured | NSIS setup artifact target is configured. |
| pass | P0 | Codex | Release evidence exists for this version | Release manifest and SHA256SUMS match the package version. |
| blocked | P0 | User + Codex | Windows signing inputs are ready for a trusted installer build | Windows signing readiness is Microsoft Artifact Signing Handoffs Missing. Run npm run release:windows-signing:preflight, then finish the listed Microsoft Artifact Signing or PFX handoffs before building a paid beta installer. |
| pass | P0 | User + Codex | Packaged Windows app launches without policy block | Windows packaged launch gate is Packaged EXE Launchable But Unsigned. |
| blocked | P0 | User + Codex | Paid beta installer is signed or store-trusted | Choose the release trust path and produce signed or store-trusted installer evidence before paid beta. |
| blocked | P0 | User + Codex | Deployability preflight has no P0 blockers | 3 P0 deployability blockers remain. Use the Deployability page and Handoffs page before live money. |
| blocked | P0 | User | Dashboard handoffs are cleared | 3 user handoffs and 0 secret-store handoffs are still waiting. |
| pass | P0 | User + Codex | Cloud command center is deploy-ready | Cloudflare Worker/Pages/D1 command-center deploy preflight is ready. |
| pass | P0 | User + Codex | Android companion points at a stable hosted bridge without a bundled shared token | Android companion release metadata points at a stable hosted bridge URL without a bundled shared token. |
| pass | P1 | Codex | Automation policy matches the operator decision | All unattended NyrA jobs are intentionally paused; definitions and prompt coverage remain ready for an explicit future restart. |
| blocked | P1 | User + Codex | Marketing campaign has final publish values | Final publication still needs Attorney/accountant review approval for paid beta; Final screenshots approved from the shipping build; Recorded 90-second product demo and 30-second ad using final screenshots and launch values. |
| blocked | P1 | Codex | Visuals match the shipping app | Final screenshots, diagrams, and demo visuals must match the shipping app before paid beta marketing. |
| blocked | P0 | User + Codex | Billing live rehearsal inputs are ready | After the legal and release-trust gates clear, switch rehearsal mode to live and run the guarded final preflight. |
| blocked | P0 | User | Support and legal review are ready | Complete attorney/accountant review for the paid beta. |
| pass | P0 | User | Business identity and pricing are set | Business name, monthly price, and hosted AI cap are saved. |
| pass | P1 | Codex | Desktop beta and future app version are mapped | Desktop beta, mobile/app companion boundary, and beta exit criteria are mapped. |
Release Candidate JSON
{
"schemaVersion": 1,
"checkedAt": "2026-07-18T13:47:11.739Z",
"app": "NyrA Swarm Little Buddy",
"productName": "NyrA Swarm Little Buddy",
"appId": "com.porter.nyra.swarm-little-buddy",
"version": "0.1.0-alpha.83",
"status": "INTERNAL_ALPHA_ONLY",
"label": "Internal Alpha Only",
"target": "Paid beta",
"paidBetaAllowed": false,
"internalAlphaAllowed": true,
"readinessPercent": 58,
"passCount": 11,
"blockedCount": 8,
"failCount": 0,
"warningCount": 0,
"checks": [
{
"id": "package-version",
"label": "Package version agrees with dashboard version",
"status": "pass",
"owner": "Codex",
"severity": "P0",
"detail": "package.json and dashboard both use 0.1.0-alpha.83.",
"nextStep": ""
},
{
"id": "product-metadata",
"label": "Product metadata exists",
"status": "pass",
"owner": "Codex",
"severity": "P0",
"detail": "NyrA Swarm Little Buddy / com.porter.nyra.swarm-little-buddy",
"nextStep": ""
},
{
"id": "release-docs",
"label": "Release documents exist for this version",
"status": "pass",
"owner": "Codex",
"severity": "P0",
"detail": "Release runbook, notes, known issues, rollback, and signing decision docs exist.",
"nextStep": ""
},
{
"id": "windows-installer-target",
"label": "Windows installer target is configured",
"status": "pass",
"owner": "Codex",
"severity": "P0",
"detail": "NSIS setup artifact target is configured.",
"nextStep": ""
},
{
"id": "release-evidence",
"label": "Release evidence exists for this version",
"status": "pass",
"owner": "Codex",
"severity": "P0",
"detail": "Release manifest and SHA256SUMS match the package version.",
"nextStep": ""
},
{
"id": "windows-signing-readiness",
"label": "Windows signing inputs are ready for a trusted installer build",
"status": "blocked",
"owner": "User + Codex",
"severity": "P0",
"detail": "Windows signing readiness is Microsoft Artifact Signing Handoffs Missing. Run npm run release:windows-signing:preflight, then finish the listed Microsoft Artifact Signing or PFX handoffs before building a paid beta installer.",
"nextStep": "Windows signing readiness is Microsoft Artifact Signing Handoffs Missing. Run npm run release:windows-signing:preflight, then finish the listed Microsoft Artifact Signing or PFX handoffs before building a paid beta installer."
},
{
"id": "windows-launchability",
"label": "Packaged Windows app launches without policy block",
"status": "pass",
"owner": "User + Codex",
"severity": "P0",
"detail": "Windows packaged launch gate is Packaged EXE Launchable But Unsigned.",
"nextStep": ""
},
{
"id": "trusted-installer",
"label": "Paid beta installer is signed or store-trusted",
"status": "blocked",
"owner": "User + Codex",
"severity": "P0",
"detail": "Choose the release trust path and produce signed or store-trusted installer evidence before paid beta.",
"nextStep": "Choose the release trust path and produce signed or store-trusted installer evidence before paid beta."
},
{
"id": "deployability",
"label": "Deployability preflight has no P0 blockers",
"status": "blocked",
"owner": "User + Codex",
"severity": "P0",
"detail": "3 P0 deployability blockers remain. Use the Deployability page and Handoffs page before live money.",
"nextStep": "3 P0 deployability blockers remain. Use the Deployability page and Handoffs page before live money."
},
{
"id": "handoffs",
"label": "Dashboard handoffs are cleared",
"status": "blocked",
"owner": "User",
"severity": "P0",
"detail": "3 user handoffs and 0 secret-store handoffs are still waiting.",
"nextStep": "3 user handoffs and 0 secret-store handoffs are still waiting."
},
{
"id": "cloud-command-center",
"label": "Cloud command center is deploy-ready",
"status": "pass",
"owner": "User + Codex",
"severity": "P0",
"detail": "Cloudflare Worker/Pages/D1 command-center deploy preflight is ready.",
"nextStep": ""
},
{
"id": "stable-mobile-bridge",
"label": "Android companion points at a stable hosted bridge without a bundled shared token",
"status": "pass",
"owner": "User + Codex",
"severity": "P0",
"detail": "Android companion release metadata points at a stable hosted bridge URL without a bundled shared token.",
"nextStep": ""
},
{
"id": "daily-automations",
"label": "Automation policy matches the operator decision",
"status": "pass",
"owner": "Codex",
"severity": "P1",
"detail": "All unattended NyrA jobs are intentionally paused; definitions and prompt coverage remain ready for an explicit future restart.",
"nextStep": ""
},
{
"id": "marketing-final-values",
"label": "Marketing campaign has final publish values",
"status": "blocked",
"owner": "User + Codex",
"severity": "P1",
"detail": "Final publication still needs Attorney/accountant review approval for paid beta; Final screenshots approved from the shipping build; Recorded 90-second product demo and 30-second ad using final screenshots and launch values.",
"nextStep": "Final publication still needs Attorney/accountant review approval for paid beta; Final screenshots approved from the shipping build; Recorded 90-second product demo and 30-second ad using final screenshots and launch values."
},
{
"id": "visuals-final",
"label": "Visuals match the shipping app",
"status": "blocked",
"owner": "Codex",
"severity": "P1",
"detail": "Final screenshots, diagrams, and demo visuals must match the shipping app before paid beta marketing.",
"nextStep": "Final screenshots, diagrams, and demo visuals must match the shipping app before paid beta marketing."
},
{
"id": "billing-live-rehearsal",
"label": "Billing live rehearsal inputs are ready",
"status": "blocked",
"owner": "User + Codex",
"severity": "P0",
"detail": "After the legal and release-trust gates clear, switch rehearsal mode to live and run the guarded final preflight.",
"nextStep": "After the legal and release-trust gates clear, switch rehearsal mode to live and run the guarded final preflight."
},
{
"id": "support-and-legal",
"label": "Support and legal review are ready",
"status": "blocked",
"owner": "User",
"severity": "P0",
"detail": "Complete attorney/accountant review for the paid beta.",
"nextStep": "Complete attorney/accountant review for the paid beta."
},
{
"id": "business-pricing",
"label": "Business identity and pricing are set",
"status": "pass",
"owner": "User",
"severity": "P0",
"detail": "Business name, monthly price, and hosted AI cap are saved.",
"nextStep": ""
},
{
"id": "app-version-roadmap",
"label": "Desktop beta and future app version are mapped",
"status": "pass",
"owner": "Codex",
"severity": "P1",
"detail": "Desktop beta, mobile/app companion boundary, and beta exit criteria are mapped.",
"nextStep": ""
}
],
"blockers": [
{
"id": "windows-signing-readiness",
"status": "blocked",
"severity": "P0",
"owner": "User + Codex",
"label": "Windows signing inputs are ready for a trusted installer build",
"detail": "Windows signing readiness is Microsoft Artifact Signing Handoffs Missing. Run npm run release:windows-signing:preflight, then finish the listed Microsoft Artifact Signing or PFX handoffs before building a paid beta installer.",
"nextStep": "Windows signing readiness is Microsoft Artifact Signing Handoffs Missing. Run npm run release:windows-signing:preflight, then finish the listed Microsoft Artifact Signing or PFX handoffs before building a paid beta installer."
},
{
"id": "trusted-installer",
"status": "blocked",
"severity": "P0",
"owner": "User + Codex",
"label": "Paid beta installer is signed or store-trusted",
"detail": "Choose the release trust path and produce signed or store-trusted installer evidence before paid beta.",
"nextStep": "Choose the release trust path and produce signed or store-trusted installer evidence before paid beta."
},
{
"id": "deployability",
"status": "blocked",
"severity": "P0",
"owner": "User + Codex",
"label": "Deployability preflight has no P0 blockers",
"detail": "3 P0 deployability blockers remain. Use the Deployability page and Handoffs page before live money.",
"nextStep": "3 P0 deployability blockers remain. Use the Deployability page and Handoffs page before live money."
},
{
"id": "handoffs",
"status": "blocked",
"severity": "P0",
"owner": "User",
"label": "Dashboard handoffs are cleared",
"detail": "3 user handoffs and 0 secret-store handoffs are still waiting.",
"nextStep": "3 user handoffs and 0 secret-store handoffs are still waiting."
},
{
"id": "marketing-final-values",
"status": "blocked",
"severity": "P1",
"owner": "User + Codex",
"label": "Marketing campaign has final publish values",
"detail": "Final publication still needs Attorney/accountant review approval for paid beta; Final screenshots approved from the shipping build; Recorded 90-second product demo and 30-second ad using final screenshots and launch values.",
"nextStep": "Final publication still needs Attorney/accountant review approval for paid beta; Final screenshots approved from the shipping build; Recorded 90-second product demo and 30-second ad using final screenshots and launch values."
},
{
"id": "visuals-final",
"status": "blocked",
"severity": "P1",
"owner": "Codex",
"label": "Visuals match the shipping app",
"detail": "Final screenshots, diagrams, and demo visuals must match the shipping app before paid beta marketing.",
"nextStep": "Final screenshots, diagrams, and demo visuals must match the shipping app before paid beta marketing."
},
{
"id": "billing-live-rehearsal",
"status": "blocked",
"severity": "P0",
"owner": "User + Codex",
"label": "Billing live rehearsal inputs are ready",
"detail": "After the legal and release-trust gates clear, switch rehearsal mode to live and run the guarded final preflight.",
"nextStep": "After the legal and release-trust gates clear, switch rehearsal mode to live and run the guarded final preflight."
},
{
"id": "support-and-legal",
"status": "blocked",
"severity": "P0",
"owner": "User",
"label": "Support and legal review are ready",
"detail": "Complete attorney/accountant review for the paid beta.",
"nextStep": "Complete attorney/accountant review for the paid beta."
}
],
"nextCriticalChecks": [
{
"id": "windows-signing-readiness",
"label": "Windows signing inputs are ready for a trusted installer build",
"status": "blocked",
"owner": "User + Codex",
"severity": "P0",
"detail": "Windows signing readiness is Microsoft Artifact Signing Handoffs Missing. Run npm run release:windows-signing:preflight, then finish the listed Microsoft Artifact Signing or PFX handoffs before building a paid beta installer.",
"nextStep": "Windows signing readiness is Microsoft Artifact Signing Handoffs Missing. Run npm run release:windows-signing:preflight, then finish the listed Microsoft Artifact Signing or PFX handoffs before building a paid beta installer."
},
{
"id": "trusted-installer",
"label": "Paid beta installer is signed or store-trusted",
"status": "blocked",
"owner": "User + Codex",
"severity": "P0",
"detail": "Choose the release trust path and produce signed or store-trusted installer evidence before paid beta.",
"nextStep": "Choose the release trust path and produce signed or store-trusted installer evidence before paid beta."
},
{
"id": "deployability",
"label": "Deployability preflight has no P0 blockers",
"status": "blocked",
"owner": "User + Codex",
"severity": "P0",
"detail": "3 P0 deployability blockers remain. Use the Deployability page and Handoffs page before live money.",
"nextStep": "3 P0 deployability blockers remain. Use the Deployability page and Handoffs page before live money."
},
{
"id": "handoffs",
"label": "Dashboard handoffs are cleared",
"status": "blocked",
"owner": "User",
"severity": "P0",
"detail": "3 user handoffs and 0 secret-store handoffs are still waiting.",
"nextStep": "3 user handoffs and 0 secret-store handoffs are still waiting."
},
{
"id": "marketing-final-values",
"label": "Marketing campaign has final publish values",
"status": "blocked",
"owner": "User + Codex",
"severity": "P1",
"detail": "Final publication still needs Attorney/accountant review approval for paid beta; Final screenshots approved from the shipping build; Recorded 90-second product demo and 30-second ad using final screenshots and launch values.",
"nextStep": "Final publication still needs Attorney/accountant review approval for paid beta; Final screenshots approved from the shipping build; Recorded 90-second product demo and 30-second ad using final screenshots and launch values."
},
{
"id": "visuals-final",
"label": "Visuals match the shipping app",
"status": "blocked",
"owner": "Codex",
"severity": "P1",
"detail": "Final screenshots, diagrams, and demo visuals must match the shipping app before paid beta marketing.",
"nextStep": "Final screenshots, diagrams, and demo visuals must match the shipping app before paid beta marketing."
},
{
"id": "billing-live-rehearsal",
"label": "Billing live rehearsal inputs are ready",
"status": "blocked",
"owner": "User + Codex",
"severity": "P0",
"detail": "After the legal and release-trust gates clear, switch rehearsal mode to live and run the guarded final preflight.",
"nextStep": "After the legal and release-trust gates clear, switch rehearsal mode to live and run the guarded final preflight."
},
{
"id": "support-and-legal",
"label": "Support and legal review are ready",
"status": "blocked",
"owner": "User",
"severity": "P0",
"detail": "Complete attorney/accountant review for the paid beta.",
"nextStep": "Complete attorney/accountant review for the paid beta."
}
],
"evidence": {
"packageJson": "package.json",
"builderConfig": "electron-builder.json5",
"releaseManifest": "docs/release/builds/0.1.0-alpha.83/release-manifest.json",
"releaseChecksums": "docs/release/builds/0.1.0-alpha.83/SHA256SUMS.txt",
"androidCurrentManifest": "release/current/android/manifest.json",
"deployabilitySnapshot": "docs/launch_command_center/deployability-snapshot.json",
"handoffReadiness": "docs/launch_command_center/handoff-readiness.json",
"cloudDeployPreflight": "docs/launch_command_center/cloud-deploy-preflight.json",
"releaseTrustPlan": "docs/launch_command_center/release-trust-plan.json",
"windowsSigningReadiness": "docs/launch_command_center/windows-signing-readiness.json",
"windowsReleaseLaunch": "docs/launch_command_center/windows-release-launch-check.json",
"report": "docs/launch_command_center/RELEASE_CANDIDATE_PREFLIGHT.md",
"dashboard": "docs/launch_command_center/pages/release-package.html"
},
"nextActions": [
{
"owner": "User + Codex",
"action": "Windows signing readiness is Microsoft Artifact Signing Handoffs Missing. Run npm run release:windows-signing:preflight, then finish the listed Microsoft Artifact Signing or PFX handoffs before building a paid beta installer."
},
{
"owner": "User + Codex",
"action": "Choose the release trust path and produce signed or store-trusted installer evidence before paid beta."
},
{
"owner": "User + Codex",
"action": "3 P0 deployability blockers remain. Use the Deployability page and Handoffs page before live money."
},
{
"owner": "User",
"action": "3 user handoffs and 0 secret-store handoffs are still waiting."
},
{
"owner": "User + Codex",
"action": "Final publication still needs Attorney/accountant review approval for paid beta; Final screenshots approved from the shipping build; Recorded 90-second product demo and 30-second ad using final screenshots and launch values."
},
{
"owner": "Codex",
"action": "Final screenshots, diagrams, and demo visuals must match the shipping app before paid beta marketing."
},
{
"owner": "User + Codex",
"action": "After the legal and release-trust gates clear, switch rehearsal mode to live and run the guarded final preflight."
},
{
"owner": "User",
"action": "Complete attorney/accountant review for the paid beta."
},
{
"owner": "User",
"action": "Attorney/accountant review approved for paid beta: Mark Approved only after attorney/accountant review clears paid beta.",
"dashboardPage": "pages/billing-rehearsal.html",
"dashboardField": "billingRehearsal.attorneyReviewStatus"
},
{
"owner": "User + Codex",
"action": "Billing rehearsal mode set to live for final money preflight: Switch to live only after test-mode rehearsal, legal, support, and Stripe gates pass.",
"dashboardPage": "pages/billing-rehearsal.html",
"dashboardField": "billingRehearsal.mode"
}
]
}
Release Trust Decision Form
Open plan CSVDo not paste certificate passwords, private keys, token PINs, PFX files, Partner Center secrets, or signing credentials into this dashboard. Use a secret store or temporary signing shell.
Release Trust Pack
Open trust packUse the Release Trust Pack for the actionable channel/signing handoffs, safe command sequence, evidence slots, and daily agent queue.
Signing And Distribution Paths
| Path | Dashboard Value | Best For | User Handoff | Codex Action | Paid Beta Gate |
|---|---|---|---|---|---|
| Direct signed installer | Direct download beta | Fastest controlled paid beta once a Windows code-signing certificate, timestamping, support, policies, and billing are ready. | Choose legal publisher name, buy/verify code-signing certificate, keep private key or token out of the repo, and provide signing method through a secret store. | Enable electron-builder signing, add signing verification evidence, package an installer, and publish checksum/install notes. | Installer must verify as signed, release notes must name the support path, and checkout stays disabled until deployability has no P0 blockers. |
| Microsoft Store or store-trusted channel | Microsoft Store | Higher customer trust and store-managed distribution when Partner Center, package identity, listing assets, screenshots, and review are ready. | Create/confirm Partner Center account, reserve app name, complete identity/tax/profile requirements, and provide store package/listing decisions. | Map Store package identity, listing checklist, screenshots, version metadata, policies, installer/package notes, and submission evidence. | Store account, first manual submission, package/listing assets, policy URLs, support path, and billing posture must match the shipping app. |
| Both direct signed and Microsoft Store | Both | Direct beta speed plus later store trust if support capacity can handle two release channels. | Approve both distribution paths and keep one version/source-of-truth policy for support, rollback, and known issues. | Track channel-specific install, update, rollback, support, and screenshot evidence in the command center. | Both channels must show the same version, policies, support path, checksums where applicable, and rollback plan. |
| Hold unsigned internal alpha | Hold | Internal QA only when the product is still changing or business/support/legal/payment handoffs are not ready. | Acknowledge this is not a paid public release path. | Keep generating clean-build evidence and block paid checkout/distribution. | Cannot be used for paid public beta. |
Release Trust Plan JSON
{
"schemaVersion": 1,
"generatedAt": "2026-07-18T13:46:29.866Z",
"status": "SIGNED_OR_STORE_EVIDENCE_REQUIRED",
"label": "Signed Or Store Evidence Required",
"productName": "NyrA Swarm Little Buddy",
"appId": "com.porter.nyra.swarm-little-buddy",
"version": "0.1.0-alpha.83",
"selectedReleaseChannel": "Direct download beta + Microsoft Store prep",
"selectedCodeSigningDecision": "Microsoft Trusted Signing first",
"currentBuild": {
"artifactTarget": "nsis",
"signingConfigured": false,
"resourceEditingEnabled": true,
"signingStatus": "Unsigned internal alpha evidence only",
"signAndEditExecutable": "enabled-or-default",
"signExecutable": "disabled"
},
"recommendedFirstMove": "Use direct signed installer for the first paid beta if the user buys a Windows code-signing certificate; keep Microsoft Store mapped as a later or parallel trust channel.",
"dashboardFields": [
"decisions.releaseChannel",
"decisions.codeSigningDecision",
"appVersion.publisherName",
"releaseTrust.certificateStatus",
"releaseTrust.storeDeveloperAccount",
"releaseTrust.signingEvidencePath",
"releaseTrust.installerStoragePath"
],
"userInputs": [
"Choose release channel: direct download beta, Microsoft Store, or both.",
"Choose signing path: buy OV certificate, Microsoft Store first, or hold unsigned internal alpha.",
"Enter publisher/legal name after business identity is chosen.",
"Upload certificate purchase/verification proof or Partner Center readiness evidence into the code-signing slot.",
"Do not paste certificate passwords, PFX private keys, token PINs, or Partner Center secrets into the dashboard."
],
"codexActionsAfterDecision": [
"Enable the matching electron-builder signing or store packaging path.",
"Add a signature verification check for the produced installer/package.",
"Regenerate release evidence and checksums from the signed/store-trusted artifact.",
"Update release notes, known issues, support macros, and rollback plan with the chosen channel.",
"Keep checkout disabled until deployability has no P0 blockers."
],
"noGoRules": [
"No paid beta customers receive the raw win-unpacked folder.",
"No paid public release ships with an unsigned direct-download installer.",
"No signing secrets, certificate passwords, token PINs, or Partner Center client secrets are stored in the repo or dashboard JSON.",
"No release is marked beta-ready until support, policy URLs, billing rehearsal, rollback, and installer trust evidence agree."
],
"decisionPaths": [
{
"path": "Direct signed installer",
"dashboardValue": "Direct download beta",
"bestFor": "Fastest controlled paid beta once a Windows code-signing certificate, timestamping, support, policies, and billing are ready.",
"userHandoff": "Choose legal publisher name, buy/verify code-signing certificate, keep private key or token out of the repo, and provide signing method through a secret store.",
"codexAction": "Enable electron-builder signing, add signing verification evidence, package an installer, and publish checksum/install notes.",
"paidBetaGate": "Installer must verify as signed, release notes must name the support path, and checkout stays disabled until deployability has no P0 blockers."
},
{
"path": "Microsoft Store or store-trusted channel",
"dashboardValue": "Microsoft Store",
"bestFor": "Higher customer trust and store-managed distribution when Partner Center, package identity, listing assets, screenshots, and review are ready.",
"userHandoff": "Create/confirm Partner Center account, reserve app name, complete identity/tax/profile requirements, and provide store package/listing decisions.",
"codexAction": "Map Store package identity, listing checklist, screenshots, version metadata, policies, installer/package notes, and submission evidence.",
"paidBetaGate": "Store account, first manual submission, package/listing assets, policy URLs, support path, and billing posture must match the shipping app."
},
{
"path": "Both direct signed and Microsoft Store",
"dashboardValue": "Both",
"bestFor": "Direct beta speed plus later store trust if support capacity can handle two release channels.",
"userHandoff": "Approve both distribution paths and keep one version/source-of-truth policy for support, rollback, and known issues.",
"codexAction": "Track channel-specific install, update, rollback, support, and screenshot evidence in the command center.",
"paidBetaGate": "Both channels must show the same version, policies, support path, checksums where applicable, and rollback plan."
},
{
"path": "Hold unsigned internal alpha",
"dashboardValue": "Hold",
"bestFor": "Internal QA only when the product is still changing or business/support/legal/payment handoffs are not ready.",
"userHandoff": "Acknowledge this is not a paid public release path.",
"codexAction": "Keep generating clean-build evidence and block paid checkout/distribution.",
"paidBetaGate": "Cannot be used for paid public beta."
}
],
"sourceLinks": [
[
"Microsoft SignTool reference",
"https://learn.microsoft.com/en-us/windows/win32/seccrypto/signtool"
],
[
"Microsoft MSIX SignTool package signing",
"https://learn.microsoft.com/en-us/windows/msix/package/sign-app-package-using-signtool"
],
[
"Microsoft package identity overview",
"https://learn.microsoft.com/en-us/windows/apps/desktop/modernize/package-identity-overview"
],
[
"Microsoft Store submission API for MSI/EXE",
"https://learn.microsoft.com/en-us/windows/apps/publish/store-submission-api"
],
[
"electron-builder Windows code signing",
"https://www.electron.build/docs/tutorials/code-signing-windows-apps-on-unix/"
]
],
"outputs": {
"decisionDoc": "docs/release/SIGNING_AND_DISTRIBUTION_DECISION.md",
"planJson": "docs/launch_command_center/release-trust-plan.json",
"planCsv": "docs/launch_command_center/release-trust-plan.csv",
"dashboardPath": "docs/launch_command_center/pages/release-package.html"
}
}
Installer Rehearsal
Use npm run release:installer:rehearsal to build an internal NSIS setup artifact, refresh release evidence, and verify installer checksums. This does not clear the paid-beta signing/store-trust gate.
[
{
"path": "builder-debug.yml",
"absolutePath": "C:\\Users\\porte\\OneDrive\\Desktop\\NyrA\\release\\0.1.0-alpha.83\\builder-debug.yml",
"sizeBytes": 7511,
"sha256": "0cbcc3174837937807ab2aaebc941c29cc4acd0702e4797dd5a3a4222e8a6509",
"signed": false,
"signatureStatus": "NotApplicable",
"signerSubject": "",
"signerThumbprint": "",
"paidBetaStatus": "Internal QA artifact only until signed or store-trusted distribution is verified."
},
{
"path": "NyrA Swarm Little Buddy-Windows-0.1.0-alpha.83-Setup.exe",
"absolutePath": "C:\\Users\\porte\\OneDrive\\Desktop\\NyrA\\release\\0.1.0-alpha.83\\NyrA Swarm Little Buddy-Windows-0.1.0-alpha.83-Setup.exe",
"sizeBytes": 98879672,
"sha256": "579dc28979b3b8917d82221b8e9100baac6e9b48dd1165712653e048093689a2",
"signed": false,
"signatureStatus": "NotSigned",
"signerSubject": "",
"signerThumbprint": "",
"paidBetaStatus": "Internal QA artifact only until signed or store-trusted distribution is verified."
},
{
"path": "NyrA Swarm Little Buddy-Windows-0.1.0-alpha.83-Setup.exe.blockmap",
"absolutePath": "C:\\Users\\porte\\OneDrive\\Desktop\\NyrA\\release\\0.1.0-alpha.83\\NyrA Swarm Little Buddy-Windows-0.1.0-alpha.83-Setup.exe.blockmap",
"sizeBytes": 104504,
"sha256": "6981e1daa35b56b3dc4122ad37f53b28406465a9056ab5fbeddbe53272ff2166",
"signed": false,
"signatureStatus": "NotApplicable",
"signerSubject": "",
"signerThumbprint": "",
"paidBetaStatus": "Internal QA artifact only until signed or store-trusted distribution is verified."
}
]
Release Evidence
{
"schemaVersion": 1,
"generatedAt": "2026-07-17T04:57:28.061Z",
"productName": "NyrA Swarm Little Buddy",
"appId": "com.porter.nyra.swarm-little-buddy",
"version": "0.1.0-alpha.83",
"packageName": "desktop-buddy",
"releaseDirectory": "C:\\Users\\porte\\OneDrive\\Desktop\\NyrA\\release\\0.1.0-alpha.83\\win-unpacked",
"releaseRoot": "C:\\Users\\porte\\OneDrive\\Desktop\\NyrA\\release\\0.1.0-alpha.83",
"executable": {
"path": "NyrA Swarm Little Buddy.exe",
"sizeBytes": 226913280,
"sha256": "6852fb9095a426a5c8128225e93d22b0ca3521c51d4d2af605ca3219327ee863",
"signed": false,
"signatureStatus": "NotSigned",
"signerSubject": "",
"signerThumbprint": ""
},
"installerArtifacts": [
{
"path": "builder-debug.yml",
"absolutePath": "C:\\Users\\porte\\OneDrive\\Desktop\\NyrA\\release\\0.1.0-alpha.83\\builder-debug.yml",
"sizeBytes": 7511,
"sha256": "0cbcc3174837937807ab2aaebc941c29cc4acd0702e4797dd5a3a4222e8a6509",
"signed": false,
"signatureStatus": "NotApplicable",
"signerSubject": "",
"signerThumbprint": "",
"paidBetaStatus": "Internal QA artifact only until signed or store-trusted distribution is verified."
},
{
"path": "NyrA Swarm Little Buddy-Windows-0.1.0-alpha.83-Setup.exe",
"absolutePath": "C:\\Users\\porte\\OneDrive\\Desktop\\NyrA\\release\\0.1.0-alpha.83\\NyrA Swarm Little Buddy-Windows-0.1.0-alpha.83-Setup.exe",
"sizeBytes": 98879672,
"sha256": "579dc28979b3b8917d82221b8e9100baac6e9b48dd1165712653e048093689a2",
"signed": false,
"signatureStatus": "NotSigned",
"signerSubject": "",
"signerThumbprint": "",
"paidBetaStatus": "Internal QA artifact only until signed or store-trusted distribution is verified."
},
{
"path": "NyrA Swarm Little Buddy-Windows-0.1.0-alpha.83-Setup.exe.blockmap",
"absolutePath": "C:\\Users\\porte\\OneDrive\\Desktop\\NyrA\\release\\0.1.0-alpha.83\\NyrA Swarm Little Buddy-Windows-0.1.0-alpha.83-Setup.exe.blockmap",
"sizeBytes": 104504,
"sha256": "6981e1daa35b56b3dc4122ad37f53b28406465a9056ab5fbeddbe53272ff2166",
"signed": false,
"signatureStatus": "NotApplicable",
"signerSubject": "",
"signerThumbprint": "",
"paidBetaStatus": "Internal QA artifact only until signed or store-trusted distribution is verified."
}
],
"androidArtifacts": [
{
"path": "NyrA-Android-alpha-aligned-0.1.0-alpha.83.apk",
"absolutePath": "C:\\Users\\porte\\OneDrive\\Desktop\\NyrA\\release\\0.1.0-alpha.83\\android\\NyrA-Android-alpha-aligned-0.1.0-alpha.83.apk",
"sizeBytes": 3428144,
"sha256": "3b698bcddeeeaae2617b5bf2d3f73df8a67438a361d276a4475adb4d60da3b5d",
"signed": false,
"signerSha256": "",
"signerDn": "",
"paidBetaStatus": "Internal Android debug/intermediate QA artifact only; not for customer distribution."
},
{
"path": "NyrA-Android-alpha-signed-0.1.0-alpha.83.apk",
"absolutePath": "C:\\Users\\porte\\OneDrive\\Desktop\\NyrA\\release\\0.1.0-alpha.83\\android\\NyrA-Android-alpha-signed-0.1.0-alpha.83.apk",
"sizeBytes": 3477419,
"sha256": "b92bbedcc86066f17edc620a105b04a6cdbd284b6d767abdb1b88ecfb07791b0",
"signed": true,
"signerSha256": "19b615c8c76bacdcca00bc13f7bea7a64b92fe2d1b1805efd51d6f35566ac4f7",
"signerDn": "CN=NyrA Alpha Install, OU=Internal Testing, O=Porter Labs LLC, L=Easley, ST=SC, C=US",
"paidBetaStatus": "Porter Labs signed Android alpha APK for internal device and emulator testing; not a Play Store customer release."
}
],
"installerReadiness": {
"hasSetupExe": true,
"signedSetupPresent": false,
"status": "Unsigned installer rehearsal artifact present for internal QA only",
"paidBetaGate": "A paid beta still needs a signed installer or store-trusted distribution path before customers receive the setup artifact."
},
"fileCount": 75,
"totalSizeBytes": 367635820,
"signing": {
"configured": false,
"resourceEditingEnabled": true,
"executableSigned": false,
"installerSigned": false,
"authenticodeStatus": "NotSigned",
"signerSubject": "",
"signerThumbprint": "",
"status": "Unsigned internal alpha evidence only",
"paidBetaGate": "A paid beta still needs a code-signing certificate or store-trusted distribution path."
},
"commandCenter": {
"supportEmail": "nyrasupport@gmail.com",
"releaseChannel": "Direct download beta + Microsoft Store prep",
"codeSigningDecision": "Microsoft Trusted Signing first",
"domain": "porterlabz.com",
"nextVersion": "0.1.0-beta.1"
},
"requiredCompanionDocs": [
"docs/release/RELEASE_RUNBOOK.md",
"docs/release/RELEASE_NOTES_0.1.0-alpha.83.md",
"docs/release/KNOWN_ISSUES_0.1.0-alpha.83.md",
"docs/release/ROLLBACK_PLAN.md"
],
"mobileReadiness": {
"hasDebugApk": true,
"hasSignedAlphaApk": true,
"status": "Porter Labs signed Android alpha APK present for internal device and emulator testing",
"paidBetaGate": "Mobile release still needs signed release builds, store metadata, privacy policy URLs, and device QA before customer distribution."
},
"blockersBeforePaidBeta": [
"Signed or store-trusted installer path",
"Public domain and policy URLs",
"Confirmed support inbox and ticket roundtrip",
"Hosted billing backend and Stripe test/live rehearsal",
"Attorney/accountant review for policy and payment posture"
],
"files": [
{
"path": "chrome_100_percent.pak",
"sizeBytes": 119889,
"sha256": "15a5bcb49a5c02d6a4e736e8dfa11dabb0bac0589641a4e25f0c06472ccaae6d"
},
{
"path": "chrome_200_percent.pak",
"sizeBytes": 197073,
"sha256": "b7acfb068fa681f4ecb8f782bd4e3926590076c61fd0de3de4a12dde227cf52b"
},
{
"path": "d3dcompiler_47.dll",
"sizeBytes": 4741488,
"sha256": "a05f99734f7c4822fefc12b367af21fd0976ed6608752fb1e1e80b6ece7ecbbb"
},
{
"path": "dxcompiler.dll",
"sizeBytes": 25723392,
"sha256": "c067467d36959dc1aff2061ec6a17970e866b5e2a4b20d9a6db1ea598973a66a"
},
{
"path": "dxil.dll",
"sizeBytes": 1509760,
"sha256": "77e039c905030a641e53658a008b74e90635a5ea9b6b79eabd0f2003bdfca59a"
},
{
"path": "ffmpeg.dll",
"sizeBytes": 3036160,
"sha256": "2b8f41656a6bc5c11c289892421c2ddb8232e90a7d74a838057da136fe892bfb"
},
{
"path": "icudtl.dat",
"sizeBytes": 10876560,
"sha256": "bd8c145abdf3f8383276ce01dfa4ae48709bef9fef1c0711eb7c3fab4f6eb7c2"
},
{
"path": "libEGL.dll",
"sizeBytes": 508928,
"sha256": "34998ce757fc1ea58669462d87a1cd6ba27d2ea47a539f4ccfa21c4270f43003"
},
{
"path": "libGLESv2.dll",
"sizeBytes": 8112128,
"sha256": "fe00a94de59674c525aebfc7b9498a96e061d75533ea4412cf78e4c00f5685cb"
},
{
"path": "LICENSE.electron.txt",
"sizeBytes": 1096,
"sha256": "5154e165bd6c2cc0cfbcd8916498c7abab0497923bafcd5cb07673fe8480087d"
},
{
"path": "LICENSES.chromium.html",
"sizeBytes": 20367095,
"sha256": "e3c8a6093358521d4512d68945e16338755e687619196e63948d46c9267537b6"
},
{
"path": "locales/af.pak",
"sizeBytes": 620482,
"sha256": "d990f4ced39e31a1149d2a1842ce2504706885e6ab05957ee2f338c77d94c16b"
},
{
"path": "locales/am.pak",
"sizeBytes": 1006731,
"sha256": "8d3d5dfc64acfbb0c35036d74561d09ddf3b22058eeed0f8d26a2e9c0703248e"
},
{
"path": "locales/ar.pak",
"sizeBytes": 1109627,
"sha256": "295b944f5e032235abd83e7ed5a65ded77e37a0d7911935448a13753fbde0863"
},
{
"path": "locales/bg.pak",
"sizeBytes": 1150764,
"sha256": "2789212aac5f2133ed23c1f84623bc64eb4cfbd93aef7af751d1221e27a21daa"
},
{
"path": "locales/bn.pak",
"sizeBytes": 1479936,
"sha256": "e72b72977b40fb10472fe1a3fcffcda8b434bf52e2bb2da2935faa80da224812"
},
{
"path": "locales/ca.pak",
"sizeBytes": 699584,
"sha256": "49eda8c16449dbe7620f52c3354f6a5f0d14c98e9ffe4624b81465c141420172"
},
{
"path": "locales/cs.pak",
"sizeBytes": 726069,
"sha256": "8386f70e830a565d0674014ae4ad385a61eb43d7e7b99d4d373d14388dfd32ce"
},
{
"path": "locales/da.pak",
"sizeBytes": 652599,
"sha256": "1c25a84efa2fafada0ee38196149b9173bc2570520b9932cd677e382ad70c3ed"
},
{
"path": "locales/de.pak",
"sizeBytes": 700799,
"sha256": "941c4d0ac3de30cdb5922e4bf1423354eca1148aacd3dd71499af3bba1fcea8f"
},
{
"path": "locales/el.pak",
"sizeBytes": 1265039,
"sha256": "3ee2e46a5a569e411ccf9d77ee4f356e1833bfccbaefcc5e71b7c1517206ab5f"
},
{
"path": "locales/en-GB.pak",
"sizeBytes": 565496,
"sha256": "aac3b4904d021d58d053bdea2d8056a219ecda1e341d87cb70070aea2cee418f"
},
{
"path": "locales/en-US.pak",
"sizeBytes": 571518,
"sha256": "bce3ec06227dba2273c4ff12482cba37b709cc8bf5fd29c4380f9a07b92bf821"
},
{
"path": "locales/es-419.pak",
"sizeBytes": 690699,
"sha256": "3a40216501e507071eb6ffb242eff9b9015e209a34434155cd35f78fff57d590"
},
{
"path": "locales/es.pak",
"sizeBytes": 686799,
"sha256": "940fb4b4b54dba60441fd52bdf3175e088c72fef7003a82988be25062a5266d6"
},
{
"path": "locales/et.pak",
"sizeBytes": 627098,
"sha256": "ecc838878412cc9f28dda9efed2fc60b67315f5fdf64e912db33cee7571a5939"
},
{
"path": "locales/fa.pak",
"sizeBytes": 1038151,
"sha256": "5fa7790100ab1e84a0c9b45612943cca98783fb3973cb07a4c083037e0cfe9dd"
},
{
"path": "locales/fi.pak",
"sizeBytes": 638637,
"sha256": "18d904efd7d15a49ef3638c45a40b3aa604e5ec4b68e017ab3f568e6a8202fd4"
},
{
"path": "locales/fil.pak",
"sizeBytes": 723756,
"sha256": "4034bd7ef11f48d7d646aacb7006562f0f9caec888785a13c36e31b9724dd798"
},
{
"path": "locales/fr.pak",
"sizeBytes": 746468,
"sha256": "3f67ef11ecc42bfc8a8f6d1cccc3bb505c028256801e26fd3f784dc0998a3762"
},
{
"path": "locales/gu.pak",
"sizeBytes": 1462607,
"sha256": "b207f2046791aa8150015ca78f9f76f2f6509953a00c5e89b155bb40e3a26474"
},
{
"path": "locales/he.pak",
"sizeBytes": 908717,
"sha256": "eaa7fe5bb25a3690df8a0904d0b190f6a46b87ce71cf5dfff6e5f00c4f3e7037"
},
{
"path": "locales/hi.pak",
"sizeBytes": 1549657,
"sha256": "6e58e12bfc69547d03d61f23445bc996e1b09ed5e8599b00f553bf8d022a08b5"
},
{
"path": "locales/hr.pak",
"sizeBytes": 698898,
"sha256": "6990ba056fcd1cac97ed5b48024be4ab366846a9c517d43a181cbb0eefa095d1"
},
{
"path": "locales/hu.pak",
"sizeBytes": 747469,
"sha256": "b83fc60c6d3ce3a04338ea16ba4627d6dfdf81f4373fe4921ac01c7c9558bcb6"
},
{
"path": "locales/id.pak",
"sizeBytes": 618246,
"sha256": "a6ccb8c77ecd0db5c9d8d3b809937e627fffb136737ffeba65a9c09e6469a243"
},
{
"path": "locales/it.pak",
"sizeBytes": 675917,
"sha256": "e1de70662a2de56345f259ae9c22b08f787d36c51cf1742c827e514e9d034528"
},
{
"path": "locales/ja.pak",
"sizeBytes": 824127,
"sha256": "babf93791e59b57c7b21e850e1bba68b07dedb2a7c5cb8afdbd1a1814527deea"
},
{
"path": "locales/kn.pak",
"sizeBytes": 1681104,
"sha256": "c317f8b5b2bd0ab21cfa93164b3c8f249b59e97aa0e2a392169e8e1bd545a068"
},
{
"path": "locales/ko.pak",
"sizeBytes": 701212,
"sha256": "37f167bdf1c7f0095e256dfdf1d5f40a92e29a350bc78a8fe048f364d5fdbd76"
},
{
"path": "locales/lt.pak",
"sizeBytes": 759941,
"sha256": "0c755ce72d1b71e77d58ab014228458d8ce2b0c51a9b00769635c6609255c9f2"
},
{
"path": "locales/lv.pak",
"sizeBytes": 757295,
"sha256": "911f922f6ab11d04c4913b04088619276994104979b2c5f132182953fabc24a9"
},
{
"path": "locales/ml.pak",
"sizeBytes": 1728736,
"sha256": "8beb5df27b5a1b88d0f441518a807b2c6acd99a81820cd0249710ea12bc179d0"
},
{
"path": "locales/mr.pak",
"sizeBytes": 1431694,
"sha256": "1971da05e4868841c9d9f78be5e17ab09178af99b86a6c07df385015a0c9d9ef"
},
{
"path": "locales/ms.pak",
"sizeBytes": 651309,
"sha256": "b60c552a9ced5d0e1f4ed408f65a04068acad7d80db7cf88528fbebbcd337e23"
},
{
"path": "locales/nb.pak",
"sizeBytes": 623206,
"sha256": "cb50908b03c77263297e63ff75d4d3c58fb0cb491c69a8964239e787c762f52d"
},
{
"path": "locales/nl.pak",
"sizeBytes": 649223,
"sha256": "b6a6cecceeb0097d5fd9628c684d53339f7871948655740e0f625bfedbf526ae"
},
{
"path": "locales/pl.pak",
"sizeBytes": 725422,
"sha256": "dee5b710ca72425cd4d1236ce260f8d68b41bfdfceaeb2f98c8e89217b24208f"
},
{
"path": "locales/pt-BR.pak",
"sizeBytes": 680438,
"sha256": "83e2d22e2caf95780d1659ca05070c26d5988ae50fde36770737d60250ee5d53"
},
{
"path": "locales/pt-PT.pak",
"sizeBytes": 684180,
"sha256": "266e49a497c6bf9e48502c7eb01aea1fa90260b6fb1609165ff50307a3d81b59"
},
{
"path": "locales/ro.pak",
"sizeBytes": 710046,
"sha256": "16b11fb73ea0c5d0336de453d3e2abd2de69b3e6c66dcd72bae318666525bb18"
},
{
"path": "locales/ru.pak",
"sizeBytes": 1177833,
"sha256": "d8e86f2b2fb7232cde6fec3a927678a5923f5844f4e5d87bbe114f5dd717dac6"
},
{
"path": "locales/sk.pak",
"sizeBytes": 738142,
"sha256": "c033373575cc83d84dff00116d504f7a66bdf7ae019c9d5c7c6907b2c808b662"
},
{
"path": "locales/sl.pak",
"sizeBytes": 706747,
"sha256": "1550f8df161a3484a6c7af9bc5321fae524e10d6853467afcb8749054a73e601"
},
{
"path": "locales/sr.pak",
"sizeBytes": 1088532,
"sha256": "a76930f2c72e49dc3a2c9be7e7bce0f9da0c93de03b6e275521fa86da0d2d39c"
},
{
"path": "locales/sv.pak",
"sizeBytes": 630691,
"sha256": "118cbf34d040c8946669f889393364070e88d3f0263f1b66ab4638b1f8f3c291"
},
{
"path": "locales/sw.pak",
"sizeBytes": 667151,
"sha256": "b50bd207747c65aac6888a8c57dc64fc88b74bd835301ef3da509c931af20e2e"
},
{
"path": "locales/ta.pak",
"sizeBytes": 1720238,
"sha256": "2c5f8aaf21c9a035f71d763cfa9a20886892fcde7cf71878168a9df0faa6d417"
},
{
"path": "locales/te.pak",
"sizeBytes": 1591907,
"sha256": "e9e85c763b92b5a98e74290c3ff07e7953269ab6228a4cc343745229819d7f8f"
},
{
"path": "locales/th.pak",
"sizeBytes": 1337523,
"sha256": "0684a30ec9e0fe9baeeb215840b6c6b4f04e11c9afbcf9d18687af9a685e0927"
},
{
"path": "locales/tr.pak",
"sizeBytes": 679644,
"sha256": "7a42e54611e2633c9c999f121abf2ffbda37746237e01ce29dc650510af08b0c"
},
{
"path": "locales/uk.pak",
"sizeBytes": 1185632,
"sha256": "1fafb514e4380b430b19b9031b30249e93aaecd71109b125e5b6d99c2be60b43"
},
{
"path": "locales/ur.pak",
"sizeBytes": 1021689,
"sha256": "0c1cfa61d9a9be6338b0a160b43ff362a982003053ae5be3b3ec867e78374d7b"
},
{
"path": "locales/vi.pak",
"sizeBytes": 808093,
"sha256": "3594ddfb89758a3d87d51bf90e676a5dd6107a6becd96c8840df6739cf268af1"
},
{
"path": "locales/zh-CN.pak",
"sizeBytes": 577794,
"sha256": "2fcc82972ec5b9b3d1c7adbe7f5ccebbcec8f592383fd835c134a03e82bf8a24"
},
{
"path": "locales/zh-TW.pak",
"sizeBytes": 570101,
"sha256": "454d9fc97034cc4009d0903de952e6a3b2fa215969efc9822bbd1c4997afa51e"
},
{
"path": "NyrA Swarm Little Buddy.exe",
"sizeBytes": 226913280,
"sha256": "6852fb9095a426a5c8128225e93d22b0ca3521c51d4d2af605ca3219327ee863",
"signed": false,
"signatureStatus": "NotSigned",
"signerSubject": "",
"signerThumbprint": ""
},
{
"path": "resources.pak",
"sizeBytes": 6876288,
"sha256": "cf35fa43000d3fc4ee885b1309b388a39b27a5d8eab9bc981badec15554a7972"
},
{
"path": "resources/app.asar",
"sizeBytes": 1439124,
"sha256": "46137b1e720d1349c4f2f6530455eb8bd4beba7793d0503b050fb21dd63174cd"
},
{
"path": "resources/elevate.exe",
"sizeBytes": 107520,
"sha256": "9b1fbf0c11c520ae714af8aa9af12cfd48503eedecd7398d8992ee94d1b4dc37"
},
{
"path": "snapshot_blob.bin",
"sizeBytes": 346432,
"sha256": "f9942e15201c6eca99047604e4ec705d527fd3931e45e5abd9e334c999df673b"
},
{
"path": "v8_context_snapshot.bin",
"sizeBytes": 721176,
"sha256": "3285d38d1df75b039238ee2af424fb9d9f1e6a01c3f5b7c7a94dd6566e84a780"
},
{
"path": "vk_swiftshader_icd.json",
"sizeBytes": 106,
"sha256": "32d83ff113fef532a9f97e0d2831f8656628ab1c99e9060f0332b1532839afd9"
},
{
"path": "vk_swiftshader.dll",
"sizeBytes": 5611520,
"sha256": "95777490adba529d5efc082df98d0e603c4e85ff7d1ffe16b175ad6eb2c5454b"
},
{
"path": "vulkan-1.dll",
"sizeBytes": 955392,
"sha256": "6c5a087a8039eea56b26c90115a99bd19791474b6b03056db036a7d86165152c"
}
]
}
Checksum Preview
15a5bcb49a5c02d6a4e736e8dfa11dabb0bac0589641a4e25f0c06472ccaae6d 119889 chrome_100_percent.pak
b7acfb068fa681f4ecb8f782bd4e3926590076c61fd0de3de4a12dde227cf52b 197073 chrome_200_percent.pak
a05f99734f7c4822fefc12b367af21fd0976ed6608752fb1e1e80b6ece7ecbbb 4741488 d3dcompiler_47.dll
c067467d36959dc1aff2061ec6a17970e866b5e2a4b20d9a6db1ea598973a66a 25723392 dxcompiler.dll
77e039c905030a641e53658a008b74e90635a5ea9b6b79eabd0f2003bdfca59a 1509760 dxil.dll
2b8f41656a6bc5c11c289892421c2ddb8232e90a7d74a838057da136fe892bfb 3036160 ffmpeg.dll
bd8c145abdf3f8383276ce01dfa4ae48709bef9fef1c0711eb7c3fab4f6eb7c2 10876560 icudtl.dat
34998ce757fc1ea58669462d87a1cd6ba27d2ea47a539f4ccfa21c4270f43003 508928 libEGL.dll
fe00a94de59674c525aebfc7b9498a96e061d75533ea4412cf78e4c00f5685cb 8112128 libGLESv2.dll
5154e165bd6c2cc0cfbcd8916498c7abab0497923bafcd5cb07673fe8480087d 1096 LICENSE.electron.txt
e3c8a6093358521d4512d68945e16338755e687619196e63948d46c9267537b6 20367095 LICENSES.chromium.html
d990f4ced39e31a1149d2a1842ce2504706885e6ab05957ee2f338c77d94c16b 620482 locales/af.pak
NyrA Signing And Distribution Decision
Generated: 2026-07-18T13:46:29.866Z
Status: Signed Or Store Evidence Required
This page turns the Windows release-trust blocker into a dashboard workflow. It is not legal, tax, or Microsoft/Stripe support advice. It is the operational checklist NyrA needs before a paid beta customer receives an installer.
Current Build
| Field | Value |
|---|---|
| Product | NyrA Swarm Little Buddy |
| Version | 0.1.0-alpha.83 |
| App ID | com.porter.nyra.swarm-little-buddy |
| Windows target | nsis |
| Signing configured | No |
| Signing status | Unsigned internal alpha evidence only |
| Release channel saved | Direct download beta + Microsoft Store prep |
| Code-signing decision saved | Microsoft Trusted Signing first |
Recommended First Move
Use direct signed installer for the first paid beta if the user buys a Windows code-signing certificate; keep Microsoft Store mapped as a later or parallel trust channel.
Dashboard Inputs Needed
- Choose release channel: direct download beta, Microsoft Store, or both.
- Choose signing path: buy OV certificate, Microsoft Store first, or hold unsigned internal alpha.
- Enter publisher/legal name after business identity is chosen.
- Upload certificate purchase/verification proof or Partner Center readiness evidence into the code-signing slot.
- Do not paste certificate passwords, PFX private keys, token PINs, or Partner Center secrets into the dashboard.
Decision Paths
| Path | Dashboard Value | Best For | User Handoff | Codex Action | Paid Beta Gate |
|---|---|---|---|---|---|
| Direct signed installer | Direct download beta | Fastest controlled paid beta once a Windows code-signing certificate, timestamping, support, policies, and billing are ready. | Choose legal publisher name, buy/verify code-signing certificate, keep private key or token out of the repo, and provide signing method through a secret store. | Enable electron-builder signing, add signing verification evidence, package an installer, and publish checksum/install notes. | Installer must verify as signed, release notes must name the support path, and checkout stays disabled until deployability has no P0 blockers. |
| Microsoft Store or store-trusted channel | Microsoft Store | Higher customer trust and store-managed distribution when Partner Center, package identity, listing assets, screenshots, and review are ready. | Create/confirm Partner Center account, reserve app name, complete identity/tax/profile requirements, and provide store package/listing decisions. | Map Store package identity, listing checklist, screenshots, version metadata, policies, installer/package notes, and submission evidence. | Store account, first manual submission, package/listing assets, policy URLs, support path, and billing posture must match the shipping app. |
| Both direct signed and Microsoft Store | Both | Direct beta speed plus later store trust if support capacity can handle two release channels. | Approve both distribution paths and keep one version/source-of-truth policy for support, rollback, and known issues. | Track channel-specific install, update, rollback, support, and screenshot evidence in the command center. | Both channels must show the same version, policies, support path, checksums where applicable, and rollback plan. |
| Hold unsigned internal alpha | Hold | Internal QA only when the product is still changing or business/support/legal/payment handoffs are not ready. | Acknowledge this is not a paid public release path. | Keep generating clean-build evidence and block paid checkout/distribution. | Cannot be used for paid public beta. |
Codex Actions After User Chooses
- Enable the matching electron-builder signing or store packaging path.
- Add a signature verification check for the produced installer/package.
- Regenerate release evidence and checksums from the signed/store-trusted artifact.
- Update release notes, known issues, support macros, and rollback plan with the chosen channel.
- Keep checkout disabled until deployability has no P0 blockers.
No-Go Rules
- No paid beta customers receive the raw win-unpacked folder.
- No paid public release ships with an unsigned direct-download installer.
- No signing secrets, certificate passwords, token PINs, or Partner Center client secrets are stored in the repo or dashboard JSON.
- No release is marked beta-ready until support, policy URLs, billing rehearsal, rollback, and installer trust evidence agree.
Secret Handling
Certificate private keys, PFX files, token PINs, Partner Center client secrets, and timestamp/signing credentials stay outside the repo. Put them in the deployment/signing secret store or a temporary local shell only when signing.
Source Notes
- Microsoft SignTool reference: https://learn.microsoft.com/en-us/windows/win32/seccrypto/signtool
- Microsoft MSIX SignTool package signing: https://learn.microsoft.com/en-us/windows/msix/package/sign-app-package-using-signtool
- Microsoft package identity overview: https://learn.microsoft.com/en-us/windows/apps/desktop/modernize/package-identity-overview
- Microsoft Store submission API for MSI/EXE: https://learn.microsoft.com/en-us/windows/apps/publish/store-submission-api
- electron-builder Windows code signing: https://www.electron.build/docs/tutorials/code-signing-windows-apps-on-unix/
NyrA Release Runbook
Scope: Swarm Little Buddy desktop paid-beta release operations.
This runbook defines the release evidence required before NyrA can be handed to paying beta customers. The current release channel is still blocked on signing or store-trusted distribution, so the unpacked build is evidence for internal verification, not a paid public installer.
Release Candidate Procedure
- Confirm the command center has current business, support, domain, pricing, hosted AI cap, billing backend, and release-channel decisions.
- Run
npm run release:trustto refresh the signing and distribution decision packet. - Run
npm run build:cleanfrom the repo root. - Confirm the clean build finishes from
%TEMP%\nyra-desktop-buddy-clean-build. - Confirm release evidence is generated under
docs/release/builds/<version>/inside the clean-build workspace. - Open the generated
release-manifest.jsonandSHA256SUMS.txt. - Record the executable SHA256 in the command center before sharing the build.
- Confirm release notes, known issues, support path, policy links, signing decision, and rollback plan match the build.
- Do not ship to paid users until the signed or store-trusted distribution path is chosen and tested.
Evidence Required For Every Candidate
- Clean build command and timestamp.
- App version and product name.
- Release directory.
- Executable path.
- SHA256 for the executable.
- SHA256 list for packaged files.
- Release notes.
- Known issues.
- Rollback plan.
- Support contact.
- Signing or store trust status.
- Signing and distribution decision packet.
- Remaining live handoff blockers.
Release Channels
| Channel | Use | Paid Beta Status |
|---|---|---|
| Clean unpacked Windows folder | Internal QA, support rehearsal, local smoke tests | Evidence only |
| Direct signed installer | Controlled paid beta if code signing, policy pages, support, billing, and rollback are ready | Candidate |
| Microsoft Store or Store-private distribution | Paid beta/public launch if store account, package identity, review, and policies are ready | Candidate |
Signing Gate
NyrA should not be sold as a public Windows download until one of these is true:
- A Windows code-signing certificate is configured and the installer is signed.
- A Microsoft Store or store-trusted channel is used.
- A limited private tester flow is explicitly accepted as an unsigned internal alpha and not marketed as a public paid release.
The current electron-builder.json5 keeps Windows resource branding enabled but has win.signExecutable set to false. The internal alpha therefore carries NyrA metadata and icon resources while remaining intentionally unsigned; it cannot be treated as a trusted paid installer.
Release Evidence Commands
npm run release:trust
npm run build:clean
npm run release:installer:rehearsal
npm run release:evidence
npm run test:installer-artifact
npm run test:release-package
npm run test:signing-distribution
npm run build:clean runs the evidence generator inside the temporary clean-build workspace after the Windows package is built.
Installer Rehearsal
Run npm run release:installer:rehearsal when you need to prove the Windows setup package path before the signing or Store handoff is finished. The rehearsal builds the NSIS Setup.exe, refreshes release evidence, and verifies that installer artifacts are recorded in release-manifest.json.
The resulting setup file is an unsigned installer rehearsal artifact for internal QA only. It is not a paid-beta customer handoff until a code-signing certificate or Microsoft Store/store-trusted distribution path is chosen and verified.
Customer Handoff Rules
- Give customers a signed/store-trusted installer, not the raw
win-unpackedfolder. - Publish the exact version, known issues, support email, policy URLs, and checksum instructions.
- Do not promise unrestricted automation, always-listening behavior, biometric voice learning, or regulated advice.
- Keep checkout disabled on public pages until live billing, support, legal review, domain, and release trust are complete.
Release Stop Conditions
Stop the release if any of these occur:
- Clean build fails.
- Release evidence is missing or checksum validation fails.
- The app version in
package.json, command center, and release notes disagree. - Support email is not confirmed.
- Public policy URLs are not ready.
- Billing backend or Customer Portal rehearsal has not passed.
- Signing or store-trusted path is unresolved for a paid beta.
- A P0 privacy, consent, paid-feature, high-impact, typed IPC, or support diagnostics gate fails.
NyrA 0.1.0-alpha.83 Release Notes
Internal alpha only. Do not sell this build.
Improved
- Added customer-first activation with email, Stripe checkout status polling, and returning-device pairing instead of API-key or bridge setup.
- Added hashed, ten-minute, single-use device pairing codes to the production billing Worker. A successful claim issues a device-bound credential only after the subscription is rechecked.
- Kept public Stripe checkout fail-closed through
NYRA_PUBLIC_CHECKOUT_ENABLED=falsewhile launch gates remain open. - Rebuilt Android against
https://bridge.porterlabz.comwithout a bundled shared bridge token and added a release guard that rejects this regression. - Fixed Android Phone Control detection when Android stores the enabled Accessibility component in abbreviated form.
- Preserved answer-only chat: normal replies show one compact model label and no routing narration unless the user requests it.
Verified
- Desktop startup discovered 4/4 providers and 131 compatible models with a current remote routing policy.
- Desktop and Android typed chat returned answer-only responses with one compact model label.
- A clean Android profile reached checkout and device pairing without showing API keys, bridge URLs, or bridge tokens.
- Android upgrade retained the tester account, stored the device credential in Android Keystore, scrubbed plaintext copies, and authenticated to all four hosted providers.
- Android Phone Control passed text entry and clearing, visible-text tap, nonblank screen capture, Settings, Back, Home, Recents, and app restore.
- Hosted update metadata, ticketed APK access, downloaded APK bytes, chat, and support-log roundtrip matched SHA-256
b92bbedcc86066f17edc620a105b04a6cdbd284b6d767abdb1b88ecfb07791b0.
Boundary
- Public checkout remains intentionally disabled. No live customer purchase was completed in this release.
- Email-only account recovery is not implemented. A returning customer needs a pairing code from an active device.
- Emulator proof does not clear the physical-phone gate.
- Windows Application Control blocks the unsigned packaged executable on this computer; the verified desktop runtime uses the source Electron fallback.
- The app remains
INTERNAL_ALPHA_ONLY, and live-money deployment remainsNO_GO_LIVE_MONEY.
NyrA 0.1.0-alpha.83 Known Issues
- Public Stripe checkout is intentionally disabled until release, legal, support, and billing gates are complete.
- Customer account recovery is device-pairing based; email magic-link or passwordless restore is not implemented yet.
- Physical-phone acceptance is still missing for microphone, realtime voice, transparent overlay, hide/show, close/reopen, update installation, and real device control.
- The Windows executable and installer are unsigned. Windows Application Control blocks the packaged executable on this machine, so trusted signing or store distribution is required.
- Customer Portal behavior and a full purchase, webhook, activation, cancellation, and refund-policy flow have not been proven with a real customer account.
- The Windows screen-capture stack still needs broader multi-monitor and mixed-GPU validation.
- This build remains
INTERNAL_ALPHA_ONLY; live-money deployment remainsNO_GO_LIVE_MONEY.
NyrA Rollback Plan
Scope: Swarm Little Buddy desktop paid-beta release operations.
Rollback exists to protect paying customers if activation, billing, consent, support, or computer-control behavior regresses.
Rollback Triggers
Rollback or pause distribution when any of these happen:
- Clean build or release evidence fails.
- Customers cannot activate after a successful payment.
- Customer Portal cancellation fails.
- Paid-feature gates unlock without an active license.
- Consent gates allow mic, camera, screen, AI, terminal, or computer control without consent.
- High-impact actions proceed without required approval.
- Support diagnostics leak sensitive data.
- The signed installer path, policy URLs, or support contact are wrong.
- Crash or install failures affect more than one tester on the current build.
Immediate Response
- Stop sharing the affected installer or build folder.
- Disable public checkout links if billing or activation is affected.
- Update the command center task board and team updates.
- Send affected customers the support path and known workaround.
- Re-run
npm run build:cleanon the last known-good commit or package. - Generate fresh release evidence and compare SHA256 values.
- Keep the failed build manifest and known issue notes for incident review.
Customer Communication
Use plain language:
- What version is affected.
- What customers should stop doing.
- Whether billing, cancellation, privacy, or automation is affected.
- Whether a refund review is available under the final-sale policy exceptions.
- What version or workaround to use next.
- Where to contact support.
Artifact Retention
For each release candidate, keep:
- Release notes.
- Known issues.
release-manifest.json.SHA256SUMS.txt.- Support ticket categories and incident notes.
- Link to the clean-build output location or signed installer storage.
Do not retain customer secrets, raw API keys, passwords, full card numbers, or recovery codes in release evidence.
Recovery Exit Criteria
Distribution can resume only after:
- The failing issue is fixed or clearly documented as non-blocking.
npm run build:cleanpasses.- Release evidence is regenerated.
- Support macros and known issues are updated.
- Billing, cancellation, and activation are rechecked if they were affected.
- The command center verdict is updated.