Release History

Version Control Pack

Git, GitHub remote, CI, branch/tag strategy, release evidence, and backup/archive tracking for paid-beta readiness.

Pack status Version Control Waiting On Handoffs Ready
Git CLI Yes Ready
.git present Yes Ready
GitHub workflows Yes Ready
GitHub CLI Yes Ready
GitHub CLI auth No Ready
Blocked checks 3 Ready
Actions 3 Ready

Traceable Source Control Form

Save repo decisions here. Do not paste GitHub tokens, deploy keys, SSH private keys, signing passwords, or recovery codes.

Checking command-center API...

Load file here: version-control

Version Control Checks

PhaseStatusCheckDetailActionField
1. Local Tooling pass Git CLI available in this shell git version 2.45.1.windows.1 Git is available for release history checks. versionControl.gitInstallStatus
2. Repository Baseline pass .git repository exists Local repository metadata exists. Keep the working tree auditable and commit intentionally. versionControl.sourceControlDecision
2. Repository Baseline blocked GitHub remote or repo URL saved No remote URL is detectable or saved. Save the intended GitHub repository owner/name or remote URL in the dashboard. versionControl.repoRemoteUrl
2. Repository Baseline blocked GitHub repo creation or push path available You are not logged into any GitHub hosts. To log in, run: gh auth login Authenticate GitHub CLI or save an existing remote URL in the dashboard. versionControl.repoRemoteUrl
2. Repository Baseline blocked Push dry-run readiness captured Skipped because no local origin remote is configured. Save or configure the intended GitHub origin remote, then rerun the dry-run push check before any tag or signing handoff. versionControl.repoRemoteUrl
3. CI Release Gates pass .github/workflows release gates exist .github/workflows contains nyra-command-center-ci.yml, nyra-release-rehearsal.yml. Keep CI wired to build/test release gates. versionControl.ciProvider
4. Release Policy pass Branch and tag strategy saved branch=Use main for active development and release/x.y branches for paid beta release stabilization.; tag=Use semantic version tags such as v0.1.0-alpha.1, v0.1.0-beta.1, and v1.0.0 for customer-facing release builds. Choose release branch and tag rules, for example release/x.y branches and v0.1.0-beta.1 tags. versionControl.releaseBranchStrategy
4. Release Policy pass Release history handoff is readable Recent commits: f209dbd (HEAD -> main) fix: scope vite dev dependency scan / d74613d docs: refresh clean release blocker dashboard / 336e27a docs: surface release candidate blocker queue / fafe897 docs: refresh clean no-trial dashboard / 782dd31 fix: enforce no-trial billing entitlement Keep release handoffs tied to specific commits, tags, manifests, and checksums. versionControl.workingTreePolicy
4. Release Policy pass Current release HEAD is captured HEAD=f209dbd6f377c9a6d36e850429b1b5ca3230cced; branch=main; changedPaths=1235 Use this exact commit in the release handoff before any tag, push, or signing step. versionControl.workingTreePolicy
4. Release Policy info Existing release tags are auditable Recent tags: No v* release tags found yet. Before beta, create signed or annotated release tags only after release evidence is regenerated. versionControl.tagStrategy
5. Release Evidence pass Release manifest and checksums exist Release evidence exists for 0.1.0-alpha.83. Run release evidence generation after each clean release candidate build. releasePackage.lastExecutableSha256
5. Release Evidence pass Release notes and known issues exist Release history docs exist for 0.1.0-alpha.83: docs/release/RELEASE_NOTES_0.1.0-alpha.83.md; docs/release/KNOWN_ISSUES_0.1.0-alpha.83.md. Keep the current release notes and known issues tied to the exact package version, manifest, checksums, and no-go boundary. appVersion.currentVersion
5. Release Evidence pass Release trust and version docs exist signingDoc=true; appRoadmap=true Keep signing/distribution and app-version docs current with dashboard decisions. appVersion.nextVersion
6. Daily Audit info Working tree status readable ## main; 1235 changed path(s). Sample: A ".env for nyra.txt"; M .env.example; MM .gitignore; A .wrangler/state/v3/cache/miniflare-CacheObject/metadata.sqlite; A .wrangler/state/v3/cache/miniflare-CacheObject/metadata.sqlite-shm; A .wrangler/state/v3/cache/miniflare-CacheObject/metadata.sqlite-wal; A .wrangler/state/... Daily agents can audit changed files. versionControl.workingTreePolicy
7. Backup pass Backup/archive path saved G:\My Drive\AI Stuff\NyrA Release Evidence Archive Save where release evidence and dashboard backups should live outside the local machine. versionControl.backupPath

Action Queue

PhaseOwnerStatusActionWhat To DoFieldUpload SlotVerify
2. Repository Baseline User Waiting on handoff GitHub remote or repo URL saved Save the intended GitHub repository owner/name or remote URL in the dashboard. versionControl.repoRemoteUrl version-control npm run version:control-pack && npm run test:version-control-pack
2. Repository Baseline User + Codex Waiting on handoff GitHub repo creation or push path available Authenticate GitHub CLI or save an existing remote URL in the dashboard. versionControl.repoRemoteUrl version-control npm run version:control-pack && npm run test:version-control-pack
2. Repository Baseline User + Codex Waiting on handoff Push dry-run readiness captured Save or configure the intended GitHub origin remote, then rerun the dry-run push check before any tag or signing handoff. versionControl.repoRemoteUrl version-control npm run version:control-pack && npm run test:version-control-pack

Release Handoff Blockers

StepStatusBlockerDetailNext ActionNo-Go Rule
1 blocked Review dirty working tree 1235 changed path(s) need review before tag, push, or signing. Reviewed git status and intentional commit plan for every release-bound change. Do not tag, push, or sign from an unreviewed dirty tree.
2 blocked Save GitHub remote No local origin remote or saved repo URL is available. Dashboard versionControl.repoRemoteUrl or local origin remote points to the intended private GitHub repo. Do not run push or tag handoffs against an unknown remote.
3 blocked Authenticate GitHub push path You are not logged into any GitHub hosts. To log in, run: gh auth login GitHub CLI auth status or browser-created repo access is confirmed without storing tokens in repo files. Do not mark GitHub push ready until auth or a saved browser-created remote path is proven.
4 blocked Capture push dry-run Skipped because no local origin remote is configured. Output from git push --dry-run origin HEAD is copied into release handoff evidence. Do not push, tag, or sign until a non-mutating push dry-run succeeds for the chosen remote.
6 blocked Produce signing or store-trust evidence Microsoft Artifact Signing Handoffs Missing; current release evidence is unsigned internal-alpha only or not saved. Sanitized Authenticode/store listing evidence in the code-signing upload slot; no private keys or signing secrets. Do not mark paid beta ready until the installer is signed or store-trusted.
7 blocked Create release tag after blockers clear No v* release tag is present on HEAD. Annotated release tag for 0.1.0-alpha.83 created only after dirty-tree, remote, dry-run, evidence, and signing gates pass. Do not create or move release tags from automation while any prior checklist item is blocked.

Safe Command Sequence

PhaseOwnerCommandPurposeNo-Go Rule
0. Dashboard Sync Codex npm run version:control-pack && npm run test:version-control-pack Refresh local git/GitHub/CI evidence and command-center state. Do not rely on old repo status before release work.
1. Local Tooling User git --version Confirm Git is available in the shell that builds release evidence. If git is missing, leave repo creation/commit/tag work blocked.
2. Repository Baseline Codex git status --short --branch Verify branch, remote tracking, and changed files before release work. Do not publish customer builds from unaudited local changes.
2. Repository Baseline Codex git log --oneline --decorate -n 20 Capture the bounded commit history used for release notes, handoff packets, and tag decisions. Do not summarize release history from memory; read the current local commits first.
2. Repository Baseline Codex git tag --list "v*" --sort=-v:refname List existing release tags before choosing the next alpha, beta, or customer-facing tag. Do not reuse or overwrite an existing release tag.
2. Repository Baseline User + Codex git push --dry-run origin HEAD Check whether the chosen remote can accept the current branch without pushing code. Only run after the intended remote URL is saved; dry-run output is evidence, not a substitute for review.
2. Repository Baseline User + Codex & 'C:\Users\porte\AppData\Local\NyrA\tools\gh\gh.exe' auth status Confirm local GitHub CLI can create/push the selected private repository. If gh is missing or unauthenticated, keep remote creation/push blocked until a browser-created repo URL is saved.
2. Repository Baseline Codex npm run tools:install-gh Install or refresh the portable GitHub CLI under the NyrA local tools folder without requiring admin rights. Do not call the GitHub remote path ready until gh is authenticated or a browser-created remote URL is saved.
3. CI Release Gates Codex npm run command-center:build && npm run build:clean Keep generated dashboard evidence and clean release gates reproducible before CI is wired. No paid beta until clean release gates pass locally and the CI path is approved.
3. CI Release Gates Codex npm run test:github-actions-workflows Verify GitHub Actions CI/release rehearsal workflows match the command-center release gates. Do not treat CI as configured unless workflow files are present and checked for required gates.

No-Go Rules

Pack JSON

{
  "schemaVersion": 1,
  "generatedAt": "2026-07-18T13:46:27.760Z",
  "status": "VERSION_CONTROL_WAITING_ON_HANDOFFS",
  "label": "Version Control Waiting On Handoffs",
  "local": {
    "packageVersion": "0.1.0-alpha.83",
    "gitAvailable": true,
    "gitVersion": "git version 2.45.1.windows.1",
    "gitError": "",
    "gitExecutable": "git",
    "hasGitDirectory": true,
    "hasGitHubDirectory": true,
    "hasGitHubWorkflows": true,
    "gitHubWorkflowFiles": [
      "nyra-command-center-ci.yml",
      "nyra-release-rehearsal.yml"
    ],
    "githubCliAvailable": true,
    "githubCliExecutable": "C:\\Users\\porte\\AppData\\Local\\NyrA\\tools\\gh\\gh.exe",
    "githubCliVersion": "gh version 2.93.0 (2026-05-27)",
    "githubCliAuthenticated": false,
    "githubCliAuthSummary": "You are not logged into any GitHub hosts. To log in, run: gh auth login",
    "currentBranch": "main",
    "currentHeadCommit": "f209dbd6f377c9a6d36e850429b1b5ca3230cced",
    "currentHeadShort": "f209dbd",
    "remoteUrl": "",
    "pushDryRunReady": false,
    "pushDryRunStatus": "blocked",
    "pushDryRunDetail": "Skipped because no local origin remote is configured.",
    "statusSummary": "## main; 1235 changed path(s). Sample: A \".env for nyra.txt\"; M .env.example; MM .gitignore; A .wrangler/state/v3/cache/miniflare-CacheObject/metadata.sqlite; A .wrangler/state/v3/cache/miniflare-CacheObject/metadata.sqlite-shm; A .wrangler/state/v3/cache/miniflare-CacheObject/metadata.sqlite-wal; A .wrangler/state/...",
    "statusBranch": "## main",
    "statusChangedPathCount": 1235,
    "statusSampleChangedPaths": [
      "A \".env for nyra.txt\"",
      "M .env.example",
      "MM .gitignore",
      "A .wrangler/state/v3/cache/miniflare-CacheObject/metadata.sqlite",
      "A .wrangler/state/v3/cache/miniflare-CacheObject/metadata.sqlite-shm",
      "A .wrangler/state/v3/cache/miniflare-CacheObject/metadata.sqlite-wal",
      "A .wrangler/state/v3/r2/miniflare-R2BucketObject/bfdcad5a3a1b4abcd3582fe7a31e40450384be48edd5a689f5a9776893de8bbf.sqlite",
      "A .wrangler/state/v3/r2/miniflare-R2BucketObject/bfdcad5a3a1b4abcd3582fe7a31e40450384be48edd5a689f5a9776893de8bbf.sql..."
    ],
    "recentReleaseHistory": [
      "f209dbd (HEAD -> main) fix: scope vite dev dependency scan",
      "d74613d docs: refresh clean release blocker dashboard",
      "336e27a docs: surface release candidate blocker queue",
      "fafe897 docs: refresh clean no-trial dashboard",
      "782dd31 fix: enforce no-trial billing entitlement",
      "12b01a6 docs: refresh clean cloud publish dashboard",
      "a266c70 chore: publish refreshed dashboard state to cloud",
      "9180b37 docs: refresh clean standup dashboard",
      "6478f82 feat: add daily standup fill-in workbench",
      "002412f docs: refresh clean version control dashboard",
      "a93e126 chore: require cloud ingest in daily automations",
      "98abb5e docs: refresh command center after cloud ingest",
      "c2aefc3 feat: safely ingest cloud dashboard handoffs",
      "afcd9c0 docs: refresh command center after cloud upload routing",
      "d03f88d feat: route cloud uploads into agent review",
      "07f8d8e docs: refresh clean command center after upload brief routing",
      "1fae7a2 docs: refresh command center after upload daily brief routing",
      "36e0a31 feat: preserve upload routing in daily brief",
      "4ecd965 docs: refresh command center after upload review routing",
      "432bc2b chore: queue agent review for dashboard uploads"
    ],
    "recentReleaseTags": [],
    "releaseHistoryReadable": true,
    "releaseTagsReadable": true,
    "releaseNotesPath": "docs/release/RELEASE_NOTES_0.1.0-alpha.83.md",
    "knownIssuesPath": "docs/release/KNOWN_ISSUES_0.1.0-alpha.83.md",
    "releaseNotesExists": true,
    "knownIssuesExists": true
  },
  "releaseHistory": {
    "handoffRule": "Before paid beta, record branch, commit, tag, manifest path, SHA256SUMS path, and signing/store trust evidence. Do not push, tag, or rewrite history from automation until the dirty tree has been reviewed.",
    "releaseHandoffChecklist": [
      {
        "order": 1,
        "label": "Review dirty working tree",
        "status": "blocked",
        "detail": "1235 changed path(s) need review before tag, push, or signing.",
        "requiredEvidence": "Reviewed git status and intentional commit plan for every release-bound change.",
        "noGoRule": "Do not tag, push, or sign from an unreviewed dirty tree."
      },
      {
        "order": 2,
        "label": "Save GitHub remote",
        "status": "blocked",
        "detail": "No local origin remote or saved repo URL is available.",
        "requiredEvidence": "Dashboard versionControl.repoRemoteUrl or local origin remote points to the intended private GitHub repo.",
        "noGoRule": "Do not run push or tag handoffs against an unknown remote."
      },
      {
        "order": 3,
        "label": "Authenticate GitHub push path",
        "status": "blocked",
        "detail": "You are not logged into any GitHub hosts. To log in, run: gh auth login",
        "requiredEvidence": "GitHub CLI auth status or browser-created repo access is confirmed without storing tokens in repo files.",
        "noGoRule": "Do not mark GitHub push ready until auth or a saved browser-created remote path is proven."
      },
      {
        "order": 4,
        "label": "Capture push dry-run",
        "status": "blocked",
        "detail": "Skipped because no local origin remote is configured.",
        "requiredEvidence": "Output from git push --dry-run origin HEAD is copied into release handoff evidence.",
        "noGoRule": "Do not push, tag, or sign until a non-mutating push dry-run succeeds for the chosen remote."
      },
      {
        "order": 5,
        "label": "Refresh release evidence",
        "status": "pass",
        "detail": "Release notes, known issues, manifest, and SHA256SUMS exist for 0.1.0-alpha.83.",
        "requiredEvidence": "docs/release/RELEASE_NOTES_0.1.0-alpha.83.md, docs/release/KNOWN_ISSUES_0.1.0-alpha.83.md, docs/release/builds/0.1.0-alpha.83/release-manifest.json, and docs/release/builds/0.1.0-alpha.83/SHA256SUMS.txt.",
        "noGoRule": "Do not create a release tag unless release notes, known issues, manifest, and checksums match the shipped version."
      },
      {
        "order": 6,
        "label": "Produce signing or store-trust evidence",
        "status": "blocked",
        "detail": "Microsoft Artifact Signing Handoffs Missing; current release evidence is unsigned internal-alpha only or not saved.",
        "requiredEvidence": "Sanitized Authenticode/store listing evidence in the code-signing upload slot; no private keys or signing secrets.",
        "noGoRule": "Do not mark paid beta ready until the installer is signed or store-trusted."
      },
      {
        "order": 7,
        "label": "Create release tag after blockers clear",
        "status": "blocked",
        "detail": "No v* release tag is present on HEAD.",
        "requiredEvidence": "Annotated release tag for 0.1.0-alpha.83 created only after dirty-tree, remote, dry-run, evidence, and signing gates pass.",
        "noGoRule": "Do not create or move release tags from automation while any prior checklist item is blocked."
      }
    ],
    "releaseBlockerSummary": [
      {
        "order": 1,
        "label": "Review dirty working tree",
        "status": "blocked",
        "detail": "1235 changed path(s) need review before tag, push, or signing.",
        "nextAction": "Reviewed git status and intentional commit plan for every release-bound change.",
        "noGoRule": "Do not tag, push, or sign from an unreviewed dirty tree."
      },
      {
        "order": 2,
        "label": "Save GitHub remote",
        "status": "blocked",
        "detail": "No local origin remote or saved repo URL is available.",
        "nextAction": "Dashboard versionControl.repoRemoteUrl or local origin remote points to the intended private GitHub repo.",
        "noGoRule": "Do not run push or tag handoffs against an unknown remote."
      },
      {
        "order": 3,
        "label": "Authenticate GitHub push path",
        "status": "blocked",
        "detail": "You are not logged into any GitHub hosts. To log in, run: gh auth login",
        "nextAction": "GitHub CLI auth status or browser-created repo access is confirmed without storing tokens in repo files.",
        "noGoRule": "Do not mark GitHub push ready until auth or a saved browser-created remote path is proven."
      },
      {
        "order": 4,
        "label": "Capture push dry-run",
        "status": "blocked",
        "detail": "Skipped because no local origin remote is configured.",
        "nextAction": "Output from git push --dry-run origin HEAD is copied into release handoff evidence.",
        "noGoRule": "Do not push, tag, or sign until a non-mutating push dry-run succeeds for the chosen remote."
      },
      {
        "order": 6,
        "label": "Produce signing or store-trust evidence",
        "status": "blocked",
        "detail": "Microsoft Artifact Signing Handoffs Missing; current release evidence is unsigned internal-alpha only or not saved.",
        "nextAction": "Sanitized Authenticode/store listing evidence in the code-signing upload slot; no private keys or signing secrets.",
        "noGoRule": "Do not mark paid beta ready until the installer is signed or store-trusted."
      },
      {
        "order": 7,
        "label": "Create release tag after blockers clear",
        "status": "blocked",
        "detail": "No v* release tag is present on HEAD.",
        "nextAction": "Annotated release tag for 0.1.0-alpha.83 created only after dirty-tree, remote, dry-run, evidence, and signing gates pass.",
        "noGoRule": "Do not create or move release tags from automation while any prior checklist item is blocked."
      }
    ],
    "currentHandoffSnapshot": {
      "packageVersion": "0.1.0-alpha.83",
      "branch": "main",
      "headCommit": "f209dbd6f377c9a6d36e850429b1b5ca3230cced",
      "headShort": "f209dbd",
      "tagOnHead": "",
      "hasReleaseTagOnHead": false,
      "workingTreeClean": false,
      "changedPathCount": 1235,
      "dirtyTreeReviewRequired": true,
      "manifestPath": "docs/release/builds/0.1.0-alpha.83/release-manifest.json",
      "sha256SumsPath": "docs/release/builds/0.1.0-alpha.83/SHA256SUMS.txt",
      "signingEvidenceRule": "Paid beta requires signed or store-trusted installer evidence before tag/push/signing handoff can be marked ready."
    },
    "signingReadiness": {
      "status": "ARTIFACT_SIGNING_HANDOFFS_MISSING",
      "label": "Microsoft Artifact Signing Handoffs Missing",
      "readyForSignedBuild": false,
      "mode": "artifact-signing",
      "missingHandoffCount": 5,
      "evidencePath": "docs/launch_command_center/windows-signing-readiness.json",
      "preflightCommand": "npm run release:windows-signing:preflight",
      "signedBuildCommand": "npm run build:windows:signed",
      "noGoRule": "Do not create a release tag or mark paid beta ready until the signing preflight is ready and sanitized signed/store-trusted installer evidence exists."
    },
    "recentCommits": [
      "f209dbd (HEAD -> main) fix: scope vite dev dependency scan",
      "d74613d docs: refresh clean release blocker dashboard",
      "336e27a docs: surface release candidate blocker queue",
      "fafe897 docs: refresh clean no-trial dashboard",
      "782dd31 fix: enforce no-trial billing entitlement",
      "12b01a6 docs: refresh clean cloud publish dashboard",
      "a266c70 chore: publish refreshed dashboard state to cloud",
      "9180b37 docs: refresh clean standup dashboard",
      "6478f82 feat: add daily standup fill-in workbench",
      "002412f docs: refresh clean version control dashboard",
      "a93e126 chore: require cloud ingest in daily automations",
      "98abb5e docs: refresh command center after cloud ingest",
      "c2aefc3 feat: safely ingest cloud dashboard handoffs",
      "afcd9c0 docs: refresh command center after cloud upload routing",
      "d03f88d feat: route cloud uploads into agent review",
      "07f8d8e docs: refresh clean command center after upload brief routing",
      "1fae7a2 docs: refresh command center after upload daily brief routing",
      "36e0a31 feat: preserve upload routing in daily brief",
      "4ecd965 docs: refresh command center after upload review routing",
      "432bc2b chore: queue agent review for dashboard uploads"
    ],
    "recentTags": [],
    "pushReadiness": {
      "command": "git push --dry-run origin HEAD",
      "status": "blocked",
      "ready": false,
      "detail": "Skipped because no local origin remote is configured.",
      "noGoRule": "Capture a successful dry-run push against the chosen remote before tag, push, or signing handoff is marked ready."
    },
    "handoffDocuments": [
      {
        "label": "Release notes",
        "path": "docs/release/RELEASE_NOTES_0.1.0-alpha.83.md",
        "status": "present"
      },
      {
        "label": "Known issues",
        "path": "docs/release/KNOWN_ISSUES_0.1.0-alpha.83.md",
        "status": "present"
      },
      {
        "label": "Release manifest",
        "path": "docs/release/builds/0.1.0-alpha.83/release-manifest.json",
        "status": "present"
      },
      {
        "label": "SHA256 sums",
        "path": "docs/release/builds/0.1.0-alpha.83/SHA256SUMS.txt",
        "status": "present"
      }
    ],
    "requiredCommands": [
      "git status --short --branch",
      "git log --oneline --decorate -n 20",
      "git tag --list \"v*\" --sort=-v:refname",
      "git push --dry-run origin HEAD"
    ]
  },
  "checks": [
    {
      "id": "git-cli",
      "phase": "1. Local Tooling",
      "owner": "User",
      "status": "pass",
      "label": "Git CLI available in this shell",
      "detail": "git version 2.45.1.windows.1",
      "action": "Git is available for release history checks.",
      "dashboardField": "versionControl.gitInstallStatus",
      "noGoRule": "Paid release work must have git available so tags, remotes, and branch state can be verified."
    },
    {
      "id": "git-repository",
      "phase": "2. Repository Baseline",
      "owner": "User + Codex",
      "status": "pass",
      "label": ".git repository exists",
      "detail": "Local repository metadata exists.",
      "action": "Keep the working tree auditable and commit intentionally.",
      "dashboardField": "versionControl.sourceControlDecision",
      "noGoRule": "No paid beta release without traceable source-control history for the shipped build."
    },
    {
      "id": "github-remote",
      "phase": "2. Repository Baseline",
      "owner": "User",
      "status": "blocked",
      "label": "GitHub remote or repo URL saved",
      "detail": "No remote URL is detectable or saved.",
      "action": "Save the intended GitHub repository owner/name or remote URL in the dashboard.",
      "dashboardField": "versionControl.repoRemoteUrl",
      "noGoRule": "No public paid release until the source repo and release evidence location are known."
    },
    {
      "id": "github-cli-auth",
      "phase": "2. Repository Baseline",
      "owner": "User + Codex",
      "status": "blocked",
      "label": "GitHub repo creation or push path available",
      "detail": "You are not logged into any GitHub hosts. To log in, run: gh auth login",
      "action": "Authenticate GitHub CLI or save an existing remote URL in the dashboard.",
      "dashboardField": "versionControl.repoRemoteUrl",
      "noGoRule": "No paid beta release until source history can be pushed to the chosen GitHub repository."
    },
    {
      "id": "push-dry-run-readiness",
      "phase": "2. Repository Baseline",
      "owner": "User + Codex",
      "status": "blocked",
      "label": "Push dry-run readiness captured",
      "detail": "Skipped because no local origin remote is configured.",
      "action": "Save or configure the intended GitHub origin remote, then rerun the dry-run push check before any tag or signing handoff.",
      "dashboardField": "versionControl.repoRemoteUrl",
      "noGoRule": "No release tag or signed package handoff is complete until a non-mutating push dry-run has been captured for the chosen remote."
    },
    {
      "id": "github-workflows",
      "phase": "3. CI Release Gates",
      "owner": "Codex",
      "status": "pass",
      "label": ".github/workflows release gates exist",
      "detail": ".github/workflows contains nyra-command-center-ci.yml, nyra-release-rehearsal.yml.",
      "action": "Keep CI wired to build/test release gates.",
      "dashboardField": "versionControl.ciProvider",
      "noGoRule": "No paid beta release without a repeatable CI or documented release verification path."
    },
    {
      "id": "release-tag-strategy",
      "phase": "4. Release Policy",
      "owner": "User + Codex",
      "status": "pass",
      "label": "Branch and tag strategy saved",
      "detail": "branch=Use main for active development and release/x.y branches for paid beta release stabilization.; tag=Use semantic version tags such as v0.1.0-alpha.1, v0.1.0-beta.1, and v1.0.0 for customer-facing release builds.",
      "action": "Choose release branch and tag rules, for example release/x.y branches and v0.1.0-beta.1 tags.",
      "dashboardField": "versionControl.releaseBranchStrategy",
      "noGoRule": "No customer build is published without a retraceable branch/tag policy."
    },
    {
      "id": "release-history-readable",
      "phase": "4. Release Policy",
      "owner": "Codex",
      "status": "pass",
      "label": "Release history handoff is readable",
      "detail": "Recent commits: f209dbd (HEAD -> main) fix: scope vite dev dependency scan / d74613d docs: refresh clean release blocker dashboard / 336e27a docs: surface release candidate blocker queue / fafe897 docs: refresh clean no-trial dashboard / 782dd31 fix: enforce no-trial billing entitlement",
      "action": "Keep release handoffs tied to specific commits, tags, manifests, and checksums.",
      "dashboardField": "versionControl.workingTreePolicy",
      "noGoRule": "No release notes or handoff packet is treated as traceable unless it names the exact commit/tag and matching release evidence."
    },
    {
      "id": "release-head-snapshot",
      "phase": "4. Release Policy",
      "owner": "Codex",
      "status": "pass",
      "label": "Current release HEAD is captured",
      "detail": "HEAD=f209dbd6f377c9a6d36e850429b1b5ca3230cced; branch=main; changedPaths=1235",
      "action": "Use this exact commit in the release handoff before any tag, push, or signing step.",
      "dashboardField": "versionControl.workingTreePolicy",
      "noGoRule": "No release tag or signed package handoff is complete without the exact source commit captured."
    },
    {
      "id": "release-tag-audit",
      "phase": "4. Release Policy",
      "owner": "Codex",
      "status": "info",
      "label": "Existing release tags are auditable",
      "detail": "Recent tags: No v* release tags found yet.",
      "action": "Before beta, create signed or annotated release tags only after release evidence is regenerated.",
      "dashboardField": "versionControl.tagStrategy",
      "noGoRule": "No paid beta handoff should rely on an untagged or unverified release build."
    },
    {
      "id": "release-evidence",
      "phase": "5. Release Evidence",
      "owner": "Codex",
      "status": "pass",
      "label": "Release manifest and checksums exist",
      "detail": "Release evidence exists for 0.1.0-alpha.83.",
      "action": "Run release evidence generation after each clean release candidate build.",
      "dashboardField": "releasePackage.lastExecutableSha256",
      "verificationCommand": "npm run release:evidence && npm run release:candidate:preflight",
      "noGoRule": "No release candidate is handed to a customer without manifest and checksum evidence."
    },
    {
      "id": "release-notes-known-issues",
      "phase": "5. Release Evidence",
      "owner": "Codex",
      "status": "pass",
      "label": "Release notes and known issues exist",
      "detail": "Release history docs exist for 0.1.0-alpha.83: docs/release/RELEASE_NOTES_0.1.0-alpha.83.md; docs/release/KNOWN_ISSUES_0.1.0-alpha.83.md.",
      "action": "Keep the current release notes and known issues tied to the exact package version, manifest, checksums, and no-go boundary.",
      "dashboardField": "appVersion.currentVersion",
      "verificationCommand": "npm run release:evidence && npm run version:control-pack",
      "noGoRule": "No release handoff is complete unless the shipped version has matching release notes and known issues."
    },
    {
      "id": "release-docs",
      "phase": "5. Release Evidence",
      "owner": "Codex",
      "status": "pass",
      "label": "Release trust and version docs exist",
      "detail": "signingDoc=true; appRoadmap=true",
      "action": "Keep signing/distribution and app-version docs current with dashboard decisions.",
      "dashboardField": "appVersion.nextVersion",
      "noGoRule": "Release decisions must be visible in the dashboard and generated docs before paid launch."
    },
    {
      "id": "working-tree-state",
      "phase": "6. Daily Audit",
      "owner": "Codex",
      "status": "info",
      "label": "Working tree status readable",
      "detail": "## main; 1235 changed path(s). Sample: A \".env for nyra.txt\"; M .env.example; MM .gitignore; A .wrangler/state/v3/cache/miniflare-CacheObject/metadata.sqlite; A .wrangler/state/v3/cache/miniflare-CacheObject/metadata.sqlite-shm; A .wrangler/state/v3/cache/miniflare-CacheObject/metadata.sqlite-wal; A .wrangler/state/...",
      "action": "Daily agents can audit changed files.",
      "dashboardField": "versionControl.workingTreePolicy",
      "noGoRule": "Do not publish a build when changed files are unaudited or outside the intended release scope."
    },
    {
      "id": "backup-archive",
      "phase": "7. Backup",
      "owner": "User + Codex",
      "status": "pass",
      "label": "Backup/archive path saved",
      "detail": "G:\\My Drive\\AI Stuff\\NyrA Release Evidence Archive",
      "action": "Save where release evidence and dashboard backups should live outside the local machine.",
      "dashboardField": "versionControl.backupPath",
      "noGoRule": "Do not rely on a single local folder for business-critical launch evidence."
    }
  ],
  "actions": [
    {
      "id": "github-remote",
      "source": "version-control-pack",
      "phase": "2. Repository Baseline",
      "priority": "P0",
      "owner": "User",
      "status": "Waiting on handoff",
      "label": "GitHub remote or repo URL saved",
      "detail": "No remote URL is detectable or saved.",
      "action": "Save the intended GitHub repository owner/name or remote URL in the dashboard.",
      "evidenceNeeded": "Save versionControl.repoRemoteUrl in the dashboard and upload sanitized repo/CI evidence to version-control.",
      "dashboardPage": "pages/version-control.html",
      "dashboardField": "versionControl.repoRemoteUrl",
      "uploadSlot": "version-control",
      "verificationCommand": "npm run version:control-pack && npm run test:version-control-pack",
      "noGoRule": "No public paid release until the source repo and release evidence location are known."
    },
    {
      "id": "github-cli-auth",
      "source": "version-control-pack",
      "phase": "2. Repository Baseline",
      "priority": "P0",
      "owner": "User + Codex",
      "status": "Waiting on handoff",
      "label": "GitHub repo creation or push path available",
      "detail": "You are not logged into any GitHub hosts. To log in, run: gh auth login",
      "action": "Authenticate GitHub CLI or save an existing remote URL in the dashboard.",
      "evidenceNeeded": "Save versionControl.repoRemoteUrl in the dashboard and upload sanitized repo/CI evidence to version-control.",
      "dashboardPage": "pages/version-control.html",
      "dashboardField": "versionControl.repoRemoteUrl",
      "uploadSlot": "version-control",
      "verificationCommand": "npm run version:control-pack && npm run test:version-control-pack",
      "noGoRule": "No paid beta release until source history can be pushed to the chosen GitHub repository."
    },
    {
      "id": "push-dry-run-readiness",
      "source": "version-control-pack",
      "phase": "2. Repository Baseline",
      "priority": "P0",
      "owner": "User + Codex",
      "status": "Waiting on handoff",
      "label": "Push dry-run readiness captured",
      "detail": "Skipped because no local origin remote is configured.",
      "action": "Save or configure the intended GitHub origin remote, then rerun the dry-run push check before any tag or signing handoff.",
      "evidenceNeeded": "Save versionControl.repoRemoteUrl in the dashboard and upload sanitized repo/CI evidence to version-control.",
      "dashboardPage": "pages/version-control.html",
      "dashboardField": "versionControl.repoRemoteUrl",
      "uploadSlot": "version-control",
      "verificationCommand": "npm run version:control-pack && npm run test:version-control-pack",
      "noGoRule": "No release tag or signed package handoff is complete until a non-mutating push dry-run has been captured for the chosen remote."
    }
  ],
  "safeCommands": [
    {
      "id": "refresh-version-control-pack",
      "phase": "0. Dashboard Sync",
      "owner": "Codex",
      "command": "npm run version:control-pack && npm run test:version-control-pack",
      "purpose": "Refresh local git/GitHub/CI evidence and command-center state.",
      "noGoRule": "Do not rely on old repo status before release work."
    },
    {
      "id": "install-git-check",
      "phase": "1. Local Tooling",
      "owner": "User",
      "command": "git --version",
      "purpose": "Confirm Git is available in the shell that builds release evidence.",
      "noGoRule": "If git is missing, leave repo creation/commit/tag work blocked."
    },
    {
      "id": "repo-status-check",
      "phase": "2. Repository Baseline",
      "owner": "Codex",
      "command": "git status --short --branch",
      "purpose": "Verify branch, remote tracking, and changed files before release work.",
      "noGoRule": "Do not publish customer builds from unaudited local changes."
    },
    {
      "id": "recent-release-history",
      "phase": "2. Repository Baseline",
      "owner": "Codex",
      "command": "git log --oneline --decorate -n 20",
      "purpose": "Capture the bounded commit history used for release notes, handoff packets, and tag decisions.",
      "noGoRule": "Do not summarize release history from memory; read the current local commits first."
    },
    {
      "id": "release-tag-audit",
      "phase": "2. Repository Baseline",
      "owner": "Codex",
      "command": "git tag --list \"v*\" --sort=-v:refname",
      "purpose": "List existing release tags before choosing the next alpha, beta, or customer-facing tag.",
      "noGoRule": "Do not reuse or overwrite an existing release tag."
    },
    {
      "id": "push-dry-run",
      "phase": "2. Repository Baseline",
      "owner": "User + Codex",
      "command": "git push --dry-run origin HEAD",
      "purpose": "Check whether the chosen remote can accept the current branch without pushing code.",
      "noGoRule": "Only run after the intended remote URL is saved; dry-run output is evidence, not a substitute for review."
    },
    {
      "id": "github-cli-auth-check",
      "phase": "2. Repository Baseline",
      "owner": "User + Codex",
      "command": "& 'C:\\Users\\porte\\AppData\\Local\\NyrA\\tools\\gh\\gh.exe' auth status",
      "purpose": "Confirm local GitHub CLI can create/push the selected private repository.",
      "noGoRule": "If gh is missing or unauthenticated, keep remote creation/push blocked until a browser-created repo URL is saved."
    },
    {
      "id": "portable-github-cli-install",
      "phase": "2. Repository Baseline",
      "owner": "Codex",
      "command": "npm run tools:install-gh",
      "purpose": "Install or refresh the portable GitHub CLI under the NyrA local tools folder without requiring admin rights.",
      "noGoRule": "Do not call the GitHub remote path ready until gh is authenticated or a browser-created remote URL is saved."
    },
    {
      "id": "ci-release-gate",
      "phase": "3. CI Release Gates",
      "owner": "Codex",
      "command": "npm run command-center:build && npm run build:clean",
      "purpose": "Keep generated dashboard evidence and clean release gates reproducible before CI is wired.",
      "noGoRule": "No paid beta until clean release gates pass locally and the CI path is approved."
    },
    {
      "id": "github-actions-workflow-check",
      "phase": "3. CI Release Gates",
      "owner": "Codex",
      "command": "npm run test:github-actions-workflows",
      "purpose": "Verify GitHub Actions CI/release rehearsal workflows match the command-center release gates.",
      "noGoRule": "Do not treat CI as configured unless workflow files are present and checked for required gates."
    }
  ],
  "dashboardFields": [
    "versionControl.sourceControlDecision",
    "versionControl.gitInstallStatus",
    "versionControl.repoProvider",
    "versionControl.repoOwner",
    "versionControl.repoName",
    "versionControl.repoRemoteUrl",
    "versionControl.ciProvider",
    "versionControl.releaseBranchStrategy",
    "versionControl.tagStrategy",
    "versionControl.workingTreePolicy",
    "versionControl.backupPath",
    "versionControl.repoConnectedDate"
  ],
  "handoffs": {
    "waitingOnUser": 3,
    "waitingOnCodex": 0,
    "requiredBlockedChecks": 3
  },
  "counts": {
    "checks": 15,
    "passedChecks": 10,
    "blockedChecks": 3,
    "totalActions": 3,
    "userActions": 3,
    "codexActions": 2,
    "safeCommands": 10
  },
  "outputs": {
    "json": "docs/launch_command_center/version-control-pack.json",
    "csv": "docs/launch_command_center/version-control-pack.csv",
    "report": "docs/launch_command_center/VERSION_CONTROL_PACK.md",
    "dashboard": "docs/launch_command_center/pages/version-control.html"
  }
}