chore: P8 KEEP leftover scan for lifecycle→Core - #717
Merged
Conversation
Import-graph probe of remaining src/lifecycle modules after P0–P7. None are zero-ref or pure pass-through; keep differential preflight/observation/ planning/postcondition used by Core. Lock the KEEP inventory in comments and an ownership test without relocating modules into src/core.
Drswith
marked this pull request as ready for review
September 6, 2026 14:32
14 tasks
This was referenced Sep 6, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Post-P7 P8 lifecycle→Core closure probe. Import-graph proof that remaining KEEP
src/lifecycle/*modules still add preflight, observation, planning, postcondition, or other differential logic consumed by in-repo Core (and by CLI/state). Move none. Delete none. Relocating them intosrc/corewould invertsrc/state→ Core, pull shared domain into Core ownership, or risk the published SDK eager closure — without being a zero-ref or pure pass-through leftover.Intake: mechanical leftover scan / no observable behavior — no new OpenSpec change. An actual move into Core would be an architecture-boundary change and would need OpenSpec; this PR documents that the move is not safe.
DELETE vs KEEP
src/lifecycle/agent-execution.tsplanAgentExecutionPreflight(install-policy / dry-run / interactive). Coreexecution-executorimports it via the barrel. Independent planner tests remain.src/lifecycle/agent-observation.tsobserveAgentLifecycle(receipt/state/PATH/provider drift). Coreproduction-observation+update-production. Also CLIlifecycle-observations. Listed as allowed outside-Core in the published SDK eager closure.src/lifecycle/model.tsLIFECYCLE_RECEIPT_SCHEMA_VERSION.src/state/{schema,store,index}andpackage-managerimportLifecycleReceiptfrom here. Moving intosrc/corewould invert state → Core.src/lifecycle/provider-binding.tscore-installation-cli. Allowed outside-Core in the SDK eager closure.src/lifecycle/provider-evidence.tsobserveLifecycleProviderdefaults to the first-party registry. Core uninstall-executor and idempotency consume it via the barrel. Binding helpers stay re-exported for existing import sites.src/lifecycle/uninstall-postcondition.tswaitForUninstallAbsenceretry. Sole production importer: Coreuninstall-executor.src/lifecycle/update-planner.tsplanLifecycleUpdate(blocked-source / downgrade / up-to-date / upgrade). Importers:src/planning/updates.ts, Coreupdate-production,lifecycle-updates-production. Install/ensure--dry-runno longer imports this module.src/lifecycle/index.tsDELETE / MOVE: none (0 zero-reference modules and 0 pure pass-through wrappers).
Same-file helpers that look unused from outside stay (
resolveCatalogProviderBindingsis a.bindingsconvenience over liveresolveCatalogProviderEvidence). Unused named type re-exports on the lifecycle barrel are unchanged (P7 precedent; barrel itself is still imported).Already-deleted leftovers stay gone:
src/lifecycle/shadow-planning.tsremains absent (ownership lock).Why not fold into
src/coreagent-observationandprovider-bindingas allowed outside Core in the published SDK eager closure.model.tsinto Core would makesrc/statedepend on Core.quantex-coremust not grow an engine/route/lifecycle export surface.Freeze confirmation
--jsonenvelope unchanged; JSON does not exposeengine/routesrc/core/index.ts/packages/corestill exportcreateQuantex+ inspection/mutation types only)release-core.yml/ protect-main untouchedrelease-one-line-delivery,release-pr-skip-human-heuristics,windows-ci-advisory-merge-gate)config/capabilities/commands/schemaLinked Artifacts
Validation
bun run memory:checkbun run lintbun run format:checkbun run typecheckbun run openspec:validatebun run test— targeted 14 files / 147 passed; full suite 176 files / 2131 passed / 5 skippedinstall/ensure--dry-run --json→warnings[0].code=DRY_RUN,data.changed=false,ok=true, exit0, noengine/routesrc/lifecyclesorun_test_matrix=true/product-impacting979c177; Agent Canaries also passRelease Intent
Release Summary
Docs Updated
Scope Check
Closure Check
Notes
src/lifecyclemodules after P0–P7.src/keep classify on the full ubuntu/windows/macos test matrix (protect-main unchanged).