Use this checklist before cutting any alpha or beta release of codex-auto-memory.
- Confirm the README still matches current CLI behavior.
- Confirm all four landing pages and all four docs hubs still describe the same product boundary, release posture, and command surface:
README.md,README.zh-TW.md,README.en.md,README.ja.mddocs/README.md,docs/README.zh-TW.md,docs/README.en.md,docs/README.ja.mddocs/architecture.mdanddocs/architecture.en.mddocs/native-migration.mdanddocs/native-migration.en.md
- Confirm the landing pages still present install routes truthfully:
- GitHub Release tarball remains available as the versioned artifact install path
- source install remains available as the heavier setup path
npm install --global codex-auto-memoryis described without time-limited release commentary that would go stale after publication
- Confirm non-Chinese entry pages do not send first-time readers into Chinese-only documents without labeling those links as Chinese.
- Confirm every landing page states
Node 20+, and that source-install guidance also namespnpmexplicitly. - Confirm
docs/native-migration.mdstill matches the current compatibility seams in code. - Confirm public wording still keeps
cam memoryas an inspect/audit surface,cam recallas the progressive-disclosure retrieval surface,cam sessionas a compact continuity surface, and the repository as aCodex-first Hybridsystem rather than a native-ready replacement. - Confirm the newer direction docs still match the README and architecture posture:
docs/integration-strategy.mddocs/host-surfaces.md
- Confirm
docs/session-continuity.mdmatches the currentcam sessioncommand surface and reviewer semantics, especially the wording split betweensave,refresh, and recovery markers. - Confirm
SUPPORT.md,SECURITY.md, andCODE_OF_CONDUCT.mdstill point to real repository routes and do not imply a private email or security alias that the repository does not actually publish. - Confirm public issue links use the real issue chooser route instead of linking readers to
.github/ISSUE_TEMPLATE/config.yml.
- Prefer
pnpm verify:releaseas the canonical full milestone check; run the individual commands below when you need to isolate a failure. - Keep
pnpm/action-setup@v4in CI and release workflows until the upstreamv6regression is resolved. Evidence to preserve in docs/comments: repository failure run24561707575, upstreampnpm/action-setupissues#225,#226,#227,#228, andpnpm/pnpm#11264. - Run
pnpm lint - Run
pnpm test:docs-contract - Run
pnpm test:reviewer-smoke - Run
pnpm test:cli-smoke - Run
pnpm test - Run
pnpm build pnpm test:dist-cli-smokenow self-builds; it should still be runnable directly from a clean tree.- Run
pnpm test:dist-cli-smokeandpnpm test:tarball-install-smokeserially, not in parallel, becauseprepack -> rimraf distcan otherwise create false negatives. - Run
pnpm test:dist-cli-smoke - Run
pnpm test:tarball-install-smoke - Run
pnpm pack:check - Run
pnpm pack:releasewhen you want the exact.tgzthat release automation will attach and publish. - Confirm
package.json.filesstill whitelists the release-facing surfaces you intend to ship:dist,docs,schemas, the multilingual READMEs,SUPPORT.md,SECURITY.md,CODE_OF_CONDUCT.md, andLICENSE. - Confirm
pnpm buildstill starts from a cleandist/directory sonpm packcannot accidentally pick up stale compiled artifacts from an older tree shape. - If you add new generated outputs beyond
dist/, keep their cleanup path aligned with the build and pack workflow instead of letting release tarballs accumulate leftovers. - After
pnpm build, prefer validating release-facing CLI behavior throughnode dist/cli.js ...rather thantsx src/cli.ts. - Run
node dist/cli.js --versionand confirm it matchespackage.json. - Run
pnpm test:tarball-install-smokeand confirm the packed.tgzinstalls cleanly,./node_modules/.bin/cam --versionworks, and at least one lightweight reviewer path such ascam session status --jsonsucceeds from the installed package. - Run
node dist/cli.js auditif you want the repository privacy scan; keep it as a manual release-time check instead of a CI gate. - Run
node dist/cli.js session refresh --jsonand confirmaction,writeMode, androlloutSelectionreflect the selected provenance. - Run
node dist/cli.js session load --jsonand confirm older JSON consumers still receive the existing core fields. - Run
node dist/cli.js session status --jsonand confirm the latest explicit audit drill-down matches the newest audit-log entry when present. - Confirm
node dist/cli.js session status --json/session load --jsonnow also expose additiveresumeContext, includingsuggestedDurableRefsand read-onlysuggestedTeamEntries, while keeping those fields review-only instead of auto-promoting durable memory. - Confirm wrapper-startup wording stays aligned everywhere as
continuity -> instruction files -> dream refs -> top durable refs -> team/shared refs. - Run
node dist/cli.js memory --recent --jsonand confirm suppressed conflict candidates remain reviewer-visible instead of being silently merged. - Run
node dist/cli.js recall search pnpm --jsonand confirm the default search contract stays aligned atstate=auto, limit=8, returning compact refs before any full detail fetch. - Confirm
node dist/cli.js recall search pnpm --jsonnow also exposes additivequerySurfacing, includingsuggestedDreamRefs,suggestedInstructionFiles, andsuggestedTeamEntries, without changingresults[]. - Confirm
node dist/cli.js recall search pnpm --jsonnow also reports whether the search used the retrieval sidecar or fell back to Markdown scan through additiveretrievalMode/finalRetrievalMode/retrievalFallbackReasonfields. - Confirm
node dist/cli.js recall search pnpm --jsonnow also exposes additivestateResolutionandexecutionSummary, so reviewer-visible auto-state decisions and mixed fallback paths do not have to be inferred fromresolvedStatealone. - Confirm
node dist/cli.js recall search pnpm --jsonnow also exposestotalMatchedCount,returnedCount, andresultWindow, so machine consumers can see the global hit count and returned slice without inferring it fromresults.length. - Confirm
node dist/cli.js recall search pnpm --jsonnow also exposes per-resultglobalRank, so downstream reviewers can preserve global ordering after post-limit filtering. - Confirm
node dist/cli.js recall search pnpm --state all --jsonkeeps the explicit-state contract stable:resolvedState: "all",stateResolution.outcome: "explicit-state", and stablecheckedPathssemantics after global sorting and limit truncation. - Confirm
node dist/cli.js recall search pnpm --jsonnow also exposes additive per-path diagnostics throughdiagnostics.checkedPaths, so mixed index/fallback searches stay reviewer-visible instead of collapsing into a single top-level mode. - Confirm
diagnostics.checkedPaths[].returnedCountmakes the post-limit contribution of each checked path explicit instead of overloadingmatchedCount. - Confirm
node dist/cli.js recall search pnpm --jsonnow also exposessearchOrder,globalLimitApplied, andtruncatedCount, so machine consumers can tell which path order ran and whether the global result set was truncated. - Confirm
diagnostics.checkedPaths[].droppedCountmakes it explicit how many per-path matches were dropped after global sorting and limit application. - Confirm
node dist/cli.js remember "..." --jsonandnode dist/cli.js forget "..." --jsonnow expose manual mutation reviewer payloads, includingmutationKind,matchedCount,appliedCount,noopCount,summary,entries[],followUp, andnextRecommendedActions. - Confirm the same manual reviewer payload now also exposes additive aggregate reviewer counts such as
entryCountandwarningCount, and thatforget --jsonalso exposesdetailsUsableEntryCountandtimelineOnlyEntryCount. - Confirm matched manual-mutation payloads also expose top-level lifecycle/detail fields such as
latestAppliedLifecycle,latestLifecycleAttempt,latestLifecycleAction,latestState,latestSessionId,latestRolloutPath,latestAudit,timelineWarningCount,warnings,entry,lineageSummary, andhistoryPath. - Confirm empty
forget --jsonresults keepnextRecommendedActions: []instead of emitting placeholder\"<ref>\"commands. - Confirm
node dist/cli.js forget "pnpm npm" --jsonnow shares the same multi-term query normalization asrecall search, so one memory can match acrosssummary/detailswithout requiring the original substring to remain contiguous. - Confirm the same manual reviewer payload now also exposes top-level
reviewerSummaryandnextRecommendedActions, so post-correction review/sync/reindex guidance is machine-readable. - Confirm repeated
node dist/cli.js remember "..." --jsoncalls now keep the latest applied lifecycle while surfacing the latest noop attempt through the same reviewer payload. - Confirm
node dist/cli.js forget "missing" --jsonreturns an additive empty reviewer payload instead of failing or inventing fake refs. - Run
node dist/cli.js memory --print-startupand confirm startup recall now includes a### Highlightsblock with a few active-only content highlights, while archived notes and full topic bodies still stay out of default startup recall. - Confirm
node dist/cli.js memory --jsonnow also surfaceshighlightCount,omittedHighlightCount,omittedTopicFileCount,highlightsByScope,startupSectionsRendered,topicFileOmissionCounts, andtopicRefCountsByScope, so startup highlight trimming, topic-ref trimming, and section rendering stay machine-visible. - Confirm
node dist/cli.js memory --jsonnow also surfaces additivestartupOmissions, so low-signal, duplicate, unsafe-topic, and budget-trimmed startup exclusions stay reviewer-visible. - Confirm
node dist/cli.js memory --jsonnow also surfaces additivetopicDiagnosticsfor unsafe / malformed topic files. - Confirm
node dist/cli.js memory --jsonstays read-only on an uninitialized project, returning an empty inspection view instead of creatingMEMORY.md,ARCHIVE.md, or retrieval sidecars. - Confirm startup highlights do not include entries from unsafe topic files, even though the corresponding topic refs may still remain reviewer-visible.
- Confirm durable sync audit now also surfaces additive
rejectedOperationCountandrejectedReasonCountsinstead of silently dropping rejected operations from reviewer output. - Confirm durable sync audit and sync recovery markers now also surface additive
rejectedOperationssummaries instead of forcing reviewers to infer rejected refs only from counts. - Run
node dist/cli.js memory reindex --scope all --state all --jsonand confirm retrieval sidecars rebuild explicitly from Markdown canonical memory without mutating topic Markdown or audit logs. - Confirm
node dist/cli.js memory reindex --scope all --state all --jsonstays read-only on an uninitialized project, returningrebuilt: []instead of creating a durable memory layout implicitly. - Run
node dist/cli.js dream build --jsonand confirm the sidecar snapshot exposespromotionCandidateswithout mutating canonical Markdown memory. - Run
node dist/cli.js dream inspect --jsonand confirm the project snapshot stays auditable and read-only. - Confirm
dream inspect --jsonexposes reviewer-facing queue and helper metadata such asqueueSummary, candidate registry/audit/recovery paths,reviewerSummary,nextRecommendedActions, andhelperCommands. - Run
node dist/cli.js dream adopt --help,node dist/cli.js dream proposal --help,node dist/cli.js dream promote-prep --help,node dist/cli.js dream apply-prep --help, andnode dist/cli.js dream verify-apply --helpand confirm the public reviewer lane now documents explicit subagent adoption, proposal inspection, manual-apply prep, and reviewer closeout. - Confirm subagent candidates start blocked and only enter the primary review lane after explicit
adopt. - Confirm
cam dream promotestays reviewer-gated: durable-memory candidates only write through the existing reviewer/audit path, while instruction-like candidates remainproposal-onlyand do not directly write instruction files. - Confirm instruction-like
cam dream promote-prepandcam dream apply-prepalso stayproposal-onlyand never auto-edit instruction files. - Confirm proposal-only promote now leaves instruction-like candidates in
manual-apply-pending, and that rejected/stale proposal artifacts are no longer recommended as the latest actionable follow-up. - Confirm
node dist/cli.js dream promote --jsonfor an instruction-like candidate returnsproposal-onlyplus a structured proposal artifact withpatchPreview,artifactPath,manualWorkflow, andapplyReadinessinstead of mutating instruction files. - Confirm
node dist/cli.js dream apply-prep --jsonreturns manual-apply prep plus proposal-artifact metadata, includingmanualWorkflowandapplyReadiness, instead of modifying instruction files. - Confirm
node dist/cli.js dream verify-apply --jsononly works aftermanual-apply-pending, then closes the reviewer lane asmanual-appliedinstead of leaving the candidate in a mutable proposal state. - Confirm
dreamSidecar.teamMemorystays additive and reviewer-facing: teamMemory can surface availability/counts and recall hints, but it does not become canonical durable memory. - Run
node dist/cli.js recall details <ref> --jsonfor one returned ref and confirm the path resolves to Markdown-backed memory, including archived refs when relevant. - Confirm
node dist/cli.js recall details <ref> --jsonnow also exposes additive provenance summary fields such aslatestLifecycleAction,latestSessionId,latestRolloutPath, andhistoryPath. - Confirm
node dist/cli.js recall details <ref> --jsonnow also exposes additivelatestAuditprovenance so a reviewer can jump from lifecycle state to the latest sync-audit summary without manually correlating sidecars. - Confirm
node dist/cli.js recall details <ref> --jsonnow also exposes additive reviewer fields such aslatestState,timelineWarningCount,lineageSummary, andwarnings. - Run a local MCP smoke against
node dist/cli.js mcp serveand confirmsearch_memories,timeline_memories, andget_memory_detailsare exposed as a read-only retrieval plane. - Confirm
search_memoriesmirrors the CLI retrieval diagnostics through additiveretrievalMode/retrievalFallbackReasonfields, andtimeline_memories/get_memory_detailskeep lifecycle provenance aligned with the CLI retrieval surface. - Confirm
node dist/cli.js recall search <query> --jsonsurfaces additivediagnostics.topicDiagnosticswhenever the requested scope/state includes unsafe / malformed topic sources, including healthy sidecar reads that still fail closed. - Confirm
search_memories state=allalso keeps the explicit-state contract stable, includingstateResolution,executionSummary, and stablecheckedPathssemantics under global sorting plus limit truncation. - Confirm
search_memoriesnow also mirrors CLI search diagnostics through additivediagnostics.checkedPaths, andget_memory_detailsmirrors CLI detail provenance through additivelatestAudit. - Confirm
timeline_memoriesnow also mirrors CLI lifecycle reviewer fields through additivewarningsandlineageSummary. - Run
node dist/cli.js mcp install --host codex --jsonand confirm the result contract includeshost,serverName,projectRoot,targetPath,action,projectPinned, andreadOnlyRetrieval. mcp installis codex only; non-Codex hosts stay manual-only and snippet-first throughmcp print-config.- Re-run the same
node dist/cli.js mcp install --host codex --jsoncommand once and confirm it returnsaction: "unchanged"when the target host config is already canonical. - Confirm
node dist/cli.js mcp install --host codex --jsonpreserves non-canonical custom fields already attached to thecodex_auto_memoryentry instead of dropping them silently. - Confirm
node dist/cli.js mcp install --host codex --jsonnow reportspreservedCustomFields, so the machine-readable contract matches the human-readable notes about retained custom fields. - Confirm project docs and
AGENTS.mddo not describecam mcp installas supportingclaudeorgemini; mutable install remains Codex-only while other hosts stay manual-only / snippet-first. - Confirm
node dist/cli.js mcp install --host genericfails explicitly and still points users to manual wiring. - Run
node dist/cli.js mcp print-config --host <codex|claude|gemini|generic> --jsonfor each public host and confirm the snippet contract includesserverName,targetFileHint, and a project-pinned retrieval command without writing host config files. - For
node dist/cli.js mcp print-config --host codex --json, also confirm the payload includes an additive AGENTS.md snippet / guidance block plus the sharedworkflowContract, so the retrieval workflow contract is identical between print-config, doctor, and integrations doctor. - Confirm
node dist/cli.js mcp print-config --host codex --jsonnow also exposes additiveexperimentalHooksguidance and keeps the wording explicit that official Codex hooks are public but Experimental. - Confirm the same
experimentalHooks.snippetis safe to paste into an existing TOML config: it should not re-declare[features]when the file already has that table. - Run
node dist/cli.js mcp apply-guidance --host codex --jsonand confirm it reportscreated,updated,unchanged, orblockedwithout overwriting unrelated AGENTS.md content outside the managed block. - Confirm
node dist/cli.js mcp apply-guidance --host codex --jsonstill returnsblockedfor malformed or unsafe managed-block shapes while leavingAGENTS.mdbyte-for-byte unchanged. - Run
node dist/cli.js mcp apply-guidance --host codex --cwd <path> --jsonfrom another working directory and confirm the managed AGENTS block is written inside the targeted project root. - Confirm
node dist/cli.js mcp apply-guidance --host codex --jsonignores fenced-code examples of the managed markers, and thatnode dist/cli.js mcp doctor --jsondoes not treat fenced examples as installed guidance. - Run
node dist/cli.js mcp doctor --jsonand confirm it reports project-scoped host wiring, project pinning, and hook / skill fallback assets without creating memory layout or mutating host config files. - Run
node dist/cli.js mcp doctor --host codex --jsonand confirm the payload also exposes the structuredworkflowContract, including the current CLI fallback commands and post-work sync/review helper contract. - Confirm
node dist/cli.js mcp doctor --host codex --jsonnow also exposes additiveretrievalSidecarreadiness, including per-scope/per-state sidecar status, fallback reason, and the guarantee that degraded sidecars still fall back safely to Markdown canonical recall. - Confirm
node dist/cli.js mcp doctor --host codex --jsonnow also exposes an explicit retrieval sidecar repair command instead of forcing users to infer how to rebuild indexes manually. - Confirm
node dist/cli.js mcp print-config --host codex --jsonstill teaches the explicit fallback orderMCP -> local bridge -> resolved CLIinstead of collapsing directly to barecam recall. - Confirm the same repair command now picks the smallest safe
--scope/--statewhen only a subset of sidecars is degraded, instead of always defaulting toall/all. - Confirm the same repair command follows the resolved launcher fallback when
camis unavailable on PATH, instead of emitting a broken barecam memory reindex ...suggestion. - Confirm
node dist/cli.js mcp doctor --host codex --jsondistinguishes alternate global wiring from the recommended project-scoped route through additive scope/reporting fields instead of treating them as the same readiness state. - Confirm
recommendedSkillInstallCommandin bothnode dist/cli.js mcp doctor --host codex --jsonandnode dist/cli.js integrations doctor --host codex --jsonnow follows the same resolved launcher semantics as the rest of the workflow contract, using the verifiednode dist/cli.jsfallback whencamis unavailable on PATH. - Confirm
node dist/cli.js mcp doctor --host codex --jsonnow exposesconfigScopeSummaryandalternateWiring, so valid alternate global wiring stays distinct from malformed or shape-mismatched global host config. - Confirm
node dist/cli.js mcp doctor --host codex --jsonandnode dist/cli.js integrations doctor --host codex --jsonnow also expose additivelayoutDiagnostics, so malformed topic file names, unexpected sidecars, and canonical index drift stay reviewer-visible without mutating Markdown memory. - Confirm
node dist/cli.js mcp doctor --host codex --jsondistinguishes skill-surface presence, canonical content, and readiness through additive fields such asruntimeSkillPresent,officialUserSkillMatchesCanonical,officialProjectSkillMatchesCanonical,anySkillSurfaceInstalled, andanySkillSurfaceReady. - Confirm
node dist/cli.js mcp doctor --host codex --jsonnow also exposes additive per-surfaceskillSurfacesdata soinstalled,discoverable,listed, andexecutabledo not get collapsed into one readiness bit. - Confirm
node dist/cli.js mcp doctor --host codex --jsonnow distinguisheshookRecallReadyfromhookRecallOperationalReady, and that launcher-aware helper checks still report operational when the embeddednode dist/cli.jsfallback is valid even ifcamis unavailable on PATH. - Confirm
node dist/cli.js mcp doctor --host codex --jsonnow also distinguisheshookCaptureReadyfromhookCaptureOperationalReady, and that broken embedded launcher paths surface as stale assets instead of silently remaining runnable. - Confirm
workflowContract.launcherand doctor now share the same executable-aware truth source: a non-executablecamfile on PATH must not be treated as a verified launcher. - Confirm the repo-managed
AGENTS.mdguidance stays canonical and environment-independent: no machine-specific absolute paths, no PATH/HOME-sensitive launcher wording, and no verified/unverified fallback labels inside the persisted snippet. - Confirm
node dist/cli.js mcp doctor --host codex --jsonandnode dist/cli.js integrations doctor --host codex --jsonboth surface additiveexperimentalHooksguidance that keeps official Codex hooks explicitly labeled Experimental / under active development, whilefeatures.codex_hooksremains under development and off by default. - Confirm
node dist/cli.js mcp doctor --host generic --jsonstays host-aware for manual-only hosts:commandSurface.install=false,commandSurface.applyGuidance=false, and Codex-only sections such ascodexStack,experimentalHooks,agentsGuidance, andapplySafetystaynull. - Confirm
node dist/cli.js doctor --jsonnow also reports the app-server signal separately frommemories/codex_hooks. - Confirm compiled smoke and tarball smoke both lock the additive
readiness.appServercontract instead of leaving that guarantee source-test only. - Confirm the same compiled/tarball doctor checks still pass when the current environment does not expose a
tui/tui_app_serverfeature signal, returningreadiness.appServer: nullinstead of failing the top-level doctor contract. - Confirm
node dist/cli.js doctor --jsonnow also exposes additiverecommendedRoute,recommendedAction,recommendedActionCommand, andrecommendedDoctorCommand, so the top-level doctor surface can point to the next operational check without mutating anything. - Confirm release-facing compiled and tarball smoke now both cover that top-level
doctor --jsoncontract instead of leaving it source-test only. - Confirm
node dist/cli.js integrations apply --host codex --jsonnow also exposes additivepostApplyReadinessCommand, so post-apply route confirmation is machine-readable. - Confirm staged-write failures in
node dist/cli.js integrations apply --host codex --jsonreturn a structured failed payload withstackAction: "failed",failureStage: "staged-write",failureMessage, and rollback metadata instead of crashing the CLI. - Confirm
node dist/cli.js doctortext now separatesNative memory/hooks readinessfromHost/UI signals, instead of presentingtui_app_serveralongside native memory/hooks as if they shared the same maturity level. - Confirm the release notes and docs do not over-fit one local app-server feature name: current local builds may expose
tuiortui_app_server, and neither should be documented as a stable public contract. - Confirm
workflowContractnow also exposes launcher constraints (commandName=cam,requiresPathResolution=true,hookHelpersShellOnly=true) so PATH and shell assumptions stay machine-visible. - Confirm
workflowContract.launchernow also clarifies that it applies to direct CLI usage and installed helper assets, while canonical host MCP wiring continues to usecam mcp serve. - Confirm
workflowContractnow also carries additiveexecutionContract,modelGuidanceContract, andhostWiringContractsections, and that those nested sections stay in parity acrossprint-config,mcp doctor,integrations doctor,hooks install, andskills install. - Confirm hook helpers and doctor next steps now prefer a verified
node <installed>/dist/cli.jsfallback whencamis unavailable on PATH, instead of only emitting unresolvedcam ...guidance. - Confirm
node dist/cli.js hooks installwritespost-work-memory-review.sh, and that the generated helper still runs the resolved durable-memorysync -> recent reviewroute instead of assuming barecamis available. - Confirm
node dist/cli.js hooks install --jsonexposes the sharedworkflowContractso hook helper guidance stays aligned with the MCP and integrations doctor surfaces. - Confirm
node dist/cli.js hooks install --jsonnow also exposes additivepostInstallReadinessCommand, so install-time next steps are machine-readable. - Run
node dist/cli.js hooks install --cwd <path>from another working directory and confirm the generated hook helper bundle keeps user-scoped assets reusable:memory-recall.shandpost-work-memory-review.shshould resolve the target project at runtime fromCAM_PROJECT_ROOTor the caller shell cwd instead of hardcoding one repository path into shared helper contents. - Confirm
node dist/cli.js integrations doctor --host codex --cwd <path> --jsonproject-pins hook-fallback next steps withCAM_PROJECT_ROOT=...when the local bridge route is the recommended operational fallback. - Run
node dist/cli.js skills install --surface official-project --cwd <path>from another working directory and confirm the explicit project-scoped.agents/skillscopy is written inside the targeted repository. - Confirm
node dist/cli.js skills install --jsonexposes the sharedworkflowContractso skill guidance stays aligned with the MCP and integrations doctor surfaces. - Confirm
node dist/cli.js skills install --jsonnow also exposes additivepostInstallReadinessCommand, so install-time next steps are machine-readable. - Confirm
node dist/cli.js mcp print-config --host <claude|gemini|generic> --jsonkeepsworkflowContractabsent while--host codex --jsonstill exposes it. - Confirm the same Codex
workflowContract.routePreference.preferredRoutestays fixed atmcp-first. - Confirm
node dist/cli.js remember --json/forget --jsonnow expose additive reviewer aggregates such asuniqueAuditCount,auditCountsDeduplicated, andwarningsByEntryRefwithout breaking older top-level fields. - Confirm
node dist/cli.js syncrecords a reviewer-visiblesubagent-rolloutskip when a child-session rollout is passed explicitly, instead of mutating canonical durable memory. - Confirm
node dist/cli.js session save --rollout <subagent-rollout>andsession refreshwith a matching recovery marker or latest audit entry pointing at a subagent rollout now fail closed instead of writing continuity from child-session evidence. - Confirm continuity summary persistence failures now produce a
summary-writerecovery marker, and that shared/local continuity files remain rolled back to their pre-write state. - Run
node dist/cli.js integrations install --host codex --jsonand confirm it orchestrates the existing Codex MCP wiring, hook bundle, and skill assets without touching the Markdown memory store. - Confirm
node dist/cli.js integrations install --host codex --jsonnow rolls back staged MCP / hook / skill writes if installation fails after partial writes. - Run
node dist/cli.js integrations apply --host codex --jsonand confirm it orchestrates MCP wiring, managed AGENTS guidance, hook assets, and skill assets while keepingintegrations install --host codexnon-mutating for AGENTS.md. - Confirm
node dist/cli.js integrations apply --host codex --jsonstill returnsstackAction: "blocked"when the AGENTS managed block is unsafe, and now also reports the preflight early-block shape (preflightBlocked,blockedStage, per-subactionattempted) while preserving the AGENTS file content and skipping all other stack writes. - Confirm the same blocked
node dist/cli.js integrations apply --host codex --jsonpayload marks skipped subactions explicitly so machine consumers can distinguish “not attempted due to preflight block” from “ran successfully”. - Confirm
node dist/cli.js integrations apply --host codex --jsonnow rolls back staged project-scoped MCP wiring, hook assets, and skill assets when AGENTS guidance blocks late, and exposes additive rollback metadata such asrollbackApplied/rollbackPathCount. - Confirm the same late-block payload also exposes final-state semantics such as
rollbackSucceeded,rollbackErrors, and per-subactioneffectiveAction/rolledBack, so machine consumers do not mistake attempted writes for final installed state. - Confirm the same late-block payload now also exposes additive
rollbackReport, making each restored/deleted/error path explicit instead of only returning aggregate rollback booleans. - Confirm
node dist/cli.js integrations install --host codex --jsonnow returns a structured rollback failure payload for staged install failures, includingrollbackSucceeded,rollbackErrors,rollbackReport, and per-subaction final-state details. - Confirm rollback coverage includes dangling symlink snapshots, so failed installs restore pre-existing symlink targets instead of deleting them as if they were missing files.
- Run
node dist/cli.js integrations apply --host codex --cwd <path> --jsonfrom another working directory and confirm the stack still project-pins all subactions to the targeted repository. - Run
node dist/cli.js skills install --surface official-userand confirm the explicit official.agents/skillscopy is written without changing the runtime default target. - Run
node dist/cli.js integrations install --host codex --skill-surface official-user --jsonand confirm the skill subaction reports the selected surface while MCP and AGENTS boundaries stay unchanged. - Run
node dist/cli.js integrations apply --host codex --skill-surface official-user --jsonand confirm the selected skill surface passes through while the AGENTS mutation boundary remains exclusive toapply. - Run
node dist/cli.js skills install --surface official-projectand confirm the explicit project-scoped.agents/skillscopy is written inside the repository without changing the runtime default target. - Run
node dist/cli.js integrations install --host codex --skill-surface official-project --jsonand confirm the skill subaction reports the selected project-scoped surface while MCP and AGENTS boundaries stay unchanged. - Run
node dist/cli.js integrations apply --host codex --skill-surface official-project --jsonand confirm the selected project-scoped skill surface still flows through the full apply path. - Run
node dist/cli.js integrations doctor --host codex --jsonand confirm it reports the thin Codex-only stack readiness view withrecommendedRoute,recommendedPreset,subchecks, andnextSteps. - Confirm
node dist/cli.js integrations doctor --host codex --jsonalso exposes additive route-truth fields:recommendedRoute,currentlyOperationalRoute,routeKind,routeEvidence,shellDependencyLevel,hostMutationRequired,preferredRouteBlockers, andcurrentOperationalBlockers, withrecommendedRoutestaying MCP-first while the blocker fields explain why the preferred route or current fallback is not operational. - Confirm the same
integrations doctornext steps stay launcher-aware: whencamis unavailable on PATH, the first direct CLI recall suggestion must prefer the resolvednode dist/cli.js recall ...command instead of a broken barecam recall .... - Confirm
node dist/cli.js integrations doctor --host codex --jsonalso exposes the shared structuredworkflowContract, including the post-work sync/review helper semantics, and now reportsapplyReadinessso unsafe AGENTS managed blocks are diagnosed before recommendingcam integrations apply --host codex. - Confirm
node dist/cli.js integrations doctor --host codex --jsonalso surfaces the additiveretrievalSidecarsummary frommcp doctor, so retrieval-plane degradation is visible before the user has to run a recall command manually. - Confirm
node dist/cli.js integrations doctor --host codex --jsonnow recommendscam memory reindexwhen retrieval sidecars are degraded. - Confirm
node dist/cli.js integrations doctor --host codex --jsonkeeps theskillsubcheck guidance-only and does not describe skills as an executable fallback route. - Confirm
node dist/cli.js integrations doctor --host codex --jsonalso exposes additive skill-surface steering fields:preferredSkillSurface,recommendedSkillInstallCommand,installedSkillSurfaces, andreadySkillSurfaces. - Confirm
workflowConsistencywording in doctor surfaces now explicitly treats repo-levelAGENTS.mdguidance as part of the shared retrieval workflow contract, not just hooks/skills text. - Treat key
--helpoutput as release-facing contract, not incidental CLI text:node dist/cli.js init --helpshould keep the public init entrypoint discoverable for project bootstrap.node dist/cli.js dream --helpshould keep the public dream reviewer lane discoverable, includingcandidates,review,adopt,proposal,promote-prep,promote,apply-prep, andverify-apply.node dist/cli.js dream candidates --helpshould describe candidate listing rather than canonical memory mutation.node dist/cli.js dream review --helpshould stay reviewer-oriented and sidecar-only.node dist/cli.js dream adopt --helpshould describe unblocking blocked subagent candidates without claiming canonical writes.node dist/cli.js dream promote-prep --helpshould stay proposal-oriented and preflight-only, including the explicit--target-fileoverride for instruction-like proposals.node dist/cli.js dream promote --helpshould describe an explicit promote path without claiming that every promote isproposal-only.node dist/cli.js dream proposal --helpshould describe read-only artifact inspection without changing reviewer state.node dist/cli.js dream apply-prep --helpshould describe proposal-artifact/manual-apply preparation, stay instruction-file read-only, and avoid claiming support for--target-file.node dist/cli.js dream verify-apply --helpshould describe manual-apply verification and reviewer closeout.node dist/cli.js mcp install --helpshould keep the supported install-host list atcodexonly.node dist/cli.js mcp print-config --helpshould keep the supported snippet-host list atcodex, claude, gemini, or generic.node dist/cli.js mcp apply-guidance --helpshould stay Codex-only and describe managedAGENTS.mdupdates.node dist/cli.js mcp doctor --helpshould stay inspect-only and keep the host selection list atcodex, claude, gemini, generic, or all.node dist/cli.js session status --helpshould explicitly describe a read-only inspection surface that does not mutate memory layout.node dist/cli.js session load --helpshould explicitly describe a read-only inspection surface and keep--print-startupdiscoverable.node dist/cli.js skills install --helpshould keep the public skill surfaces aligned atruntime, official-user, or official-project.node dist/cli.js integrations install --helpshould describe stack install without managedAGENTS.mdmutation.node dist/cli.js integrations apply --helpshould explicitly add the managedAGENTS.mdguidance flow on top of install.node dist/cli.js integrations doctor --helpshould stay inspect-only and Codex-only.
- Confirm
node dist/cli.js session load --json/status --jsonstill exposeconfidenceand warnings when the rollout required a conservative continuity summary. - Confirm
node dist/cli.js session load --json --print-startupnow also exposes the structured continuity-startup contract: truthful renderedsourceFiles,candidateSourceFiles,sectionsRendered, additiveomissions/omissionCounts,continuitySectionKinds,continuitySourceKinds,continuityProvenanceKind,continuityMode, andfutureCompactionSeam. - Confirm
test:dist-cli-smokeandtest:tarball-install-smokeboth cover the JSON fields that define current-route truth and skill-surface steering, instead of leaving those guarantees only in source-level tests. - Confirm the same continuity-startup contract is covered in source tests, compiled smoke, and tarball smoke so rendered provenance truth does not regress outside source-only unit tests.
- Confirm continuity reviewer warnings stay in diagnostics / audit surfaces and are not written into continuity Markdown body text.
- Run a local smoke flow:
node dist/cli.js initnode dist/cli.js init --cwd <path> --forcenode dist/cli.js remember "..."node dist/cli.js memory --cwd <path> --recent --print-startupnode dist/cli.js session statusnode dist/cli.js session savenode dist/cli.js session refreshnode dist/cli.js session load --print-startupnode dist/cli.js forget "..."node dist/cli.js doctor
- Update the docs entry pages (
docs/README*.md) if the public reading path changed. - Update
docs/integration-strategy.mdanddocs/host-surfaces.mdwhen the repository adds or defers a new integration surface. - Re-check the current official Codex and Claude public docs before changing migration wording; if the public posture is unchanged, say so explicitly in the handoff.
- Ensure the latest milestone commit is focused enough to review independently.
- Run
node dist/cli.js doctorand record the currentmemories/codex_hooksstatus. - Run
node dist/cli.js doctor --jsonand confirm it also exposes additiveretrievalSidecar,topicDiagnostics, andlayoutDiagnosticswithout implicitly creating the durable memory layout. - Run
node dist/cli.js auditand record whether any medium/high findings remain. - Confirm that any native-facing code still preserves companion fallback.
- Confirm that Markdown memory remains the user-facing source of truth.
Do not tag a release unless:
- tests are green
- docs are current
- review artifacts are in place
- the current milestone can be explained without reading every commit in the repository
- the tag format is
v<package.json.version>
- A pushed
v*tag is intended to run the GitHub Release workflow. - The workflow verifies
GITHUB_REF_NAME === v${package.json.version}, runspnpm verify:release, callspnpm pack:release, and uses that same tarball for both the GitHub Release attachment andnpm publish. - Before the first real tag validation, confirm that the remote default branch exposes
release.ymlin Actions and that the workflow is active. - For the GitHub Actions path, confirm the repository GitHub Actions
NPM_TOKENsecret exists before you create the release tag. A missing secret should be treated as a stop signal, not as permission to ship only the GitHub Release artifact. - Run a registry preflight before any public release action: confirm
npm whoamisucceeds with the release token, confirm the target version is not already published, and confirm the package name does not resolve to an unexpected existing package owner. - Keep a manual fallback ready for the same release commit: if Actions cannot publish to npm, publish the exact
pnpm pack:releasetarball from a locally authenticated maintainer machine before creating or re-running the public GitHub Release step. - If you use the manual fallback, record that route in the release notes or handoff so the publication path remains auditable.