Skip to content

perf(build): isolate CLI Core capability closure - #2014

Merged
limityan merged 1 commit into
GCWing:mainfrom
limityan:yanzhn/cli-product-closure-pr15
Aug 4, 2026
Merged

perf(build): isolate CLI Core capability closure#2014
limityan merged 1 commit into
GCWing:mainfrom
limityan:yanzhn/cli-product-closure-pr15

Conversation

@limityan

@limityan limityan commented Aug 3, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Replace the CLI and ACP bitfun-core/product-full selection with reviewed owner-feature closures.
  • Split Core compatibility ownership into agent-runtime, external-sources, plugin-runtime, and debug-log, while retaining product-full as the full compatibility union.
  • Guard both direct manifests and resolved repository dependency closures, including non-default root features, optional/weak forwarding, renamed dependencies, build/proc-macro feature contexts, and target-specific declarations.
  • Keep the capability fact in Product Assembly without introducing a CLI/ACP-named umbrella feature or a second runtime.

Architecture and compatibility

  • CLI selects agent-runtime, canvas-runtime, external-sources, plugin-runtime, and ssh-remote.
  • ACP selects agent-runtime, canvas-runtime, external-sources, and ssh-remote.
  • Native Hook execution remains in agent-runtime; third-party Hook discovery/import remains in external-sources.
  • Workspace routing is owned by the neutral Agent workspace boundary rather than MCP.
  • The latest PublishAppearance path remains available through agent-runtime, including its semver dependency.
  • The closure guard is declaration-level: normal and host (build/proc-macro) feature contexts remain resolver-v2 separated, while target-specific declarations cannot hide unreviewed Core owners.
  • No GitHub Actions workflow or CI job is added.

Dependency graph

Measured against GCWing/BitFun@213b32b8, using cargo tree --locked -e normal,build and unique package name/version identities:

Product graph Before After Delta
CLI 607 606 -1
ACP 545 544 -1
Core product-full 515 515 0

CLI and ACP each remove only http-range-header v0.4.2; the product-full package set is unchanged. This PR does not claim a stable cold/hot wall-clock improvement—the primary result is preventing future full-product capability growth from automatically entering smaller product surfaces.

Validation

  • node --test scripts/check-core-boundaries.test.mjs — 67/67 passed
  • node scripts/check-core-boundaries.mjs
  • cargo check --locked -p bitfun-core --no-default-features --features agent-runtime
  • cargo check --locked -p bitfun-core --no-default-features --features product-full
  • cargo check --locked -p bitfun-cli
  • cargo check --locked -p bitfun-acp
  • cargo test --locked -p bitfun-product-capabilities --test product_capabilities — 23/23 passed
  • cargo test --locked -p bitfun-cli --bin bitfun product_assembly — 3/3 passed
  • cargo test --locked -p bitfun-acp --lib — 112/112 passed
  • cargo test --locked -p bitfun-core --no-default-features --features agent-runtime,canvas-runtime,external-sources,ssh-remote --lib product_tool_runtime_can_consume_acp_product_assembly_plan — 1/1 passed
  • git diff gcwing/main...HEAD --check

Adversarial review

Three independent review rounds covered architecture ownership, production runtime materialization, Cargo feature resolution, and delivery scope. Findings around ACP Canvas materialization, target/build/proc-macro closure semantics, indirect ACP expansion, non-default root features, and owner-definition self-authorization were fixed with focused regression coverage. Final architecture, runtime, and delivery reviews reported no remaining P0-P3 findings.

@limityan
limityan marked this pull request as ready for review August 4, 2026 00:15
@limityan
limityan merged commit 1c169e9 into GCWing:main Aug 4, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant