Skip to content

ADR-015: Fix wrong platform crate names - #3

Merged
nicholas-ruest merged 1 commit into
mainfrom
adr-015/fix-package-naming
Jul 27, 2026
Merged

ADR-015: Fix wrong platform crate names#3
nicholas-ruest merged 1 commit into
mainfrom
adr-015/fix-package-naming

Conversation

@nicholas-ruest

Copy link
Copy Markdown
Member

Implements the copilot-agent portion of agentics-enforcement/plans/adr/ADR-015 (step 11 of its implementation plan).

What changed

Eight entries in the root [workspace.dependencies] block declared crate names that no repo in the fleet publishes. Each was verified against the target repo's origin/main and replaced with the real library crate:

Line Was Now Why
158 llm-orchestrator llm-orchestrator-core llm-orchestrator is only a [[bin]] name inside package llm-orchestrator-cli; no package by that name exists
161 llm-observatory llm-observatory-core
167 llm-shield llm-shield-core
170 llm-connector-hub connector-hub-core connector-hub is genuinely unprefixed (2/2 crates); grandfathered by ADR-015 decision 2
179 llm-governance-dashboard llm-governance-common repo publishes llm-governance-{common,models,database,benchmarks}
182 llm-auto-optimizer llm-optimizer crate stem deliberately differs from repo name
188 llm-registry llm-registry-core
191 llm-marketplace removed see below

llm-marketplace is deleted rather than renamed. The marketplace repo is a virtual workspace (no [package]) whose only members are services/consumption, marketplace-benchmarks, and a vendored crates/llm-infra fork. There is no library crate to depend on, and inventing one is out of scope here. A comment records this so the entry is not "helpfully" restored later.

No import paths changed. Nothing in this repo's Rust source imports any of these crates. The LLM-Dev-Ops integrations in crates/copilot-adapters/src/llm_devops/ are HTTP clients against service URLs (ConnectorHubClient and friends are local types pointing at http://localhost:PORT), not consumers of these Rust APIs.

The eight already-correct entries — llm-cost-ops, llm-memory-graph, llm-sentinel, llm-data-vault, llm-policy-engine, llm-analytics-hub, llm-research-lab, llm-simulator — are untouched.

Verification

Important caveat about cargo build

cargo build --workspace succeeds on this branch — but it also succeeded before the fix, so it does not validate anything here. These declarations live in [workspace.dependencies], and no member manifest references any of them via workspace = true. Cargo therefore never resolves them. Confirmed: after a successful cargo generate-lockfile (exit 0, 541 packages locked), none of these crates appear in Cargo.lock — not even the already-correct ones like llm-sentinel and llm-cost-ops:

llm-orchestrator-core    0
llm-observatory-core     0
llm-shield-core          0
connector-hub-core       0
llm-governance-common    0
llm-optimizer            0
llm-registry-core        0
llm-sentinel             0
llm-cost-ops             0

(--locked is not usable: this repo commits no Cargo.lock. cargo build --workspace --locked fails with error: cannot create the lock file ... because --locked was passed.)

So the whole 16-crate block is inert today, exactly as ADR-015 anticipated ("largely aspirational"). Reporting a green build as evidence would have been misleading.

Direct resolution test instead

I resolved the names directly, in a scratch crate that actually consumes them.

Every old name fails to resolve (each tested individually against the live repo at branch = "main"):

llm-orchestrator             orchestrator           NOT FOUND
llm-observatory              observatory            NOT FOUND
llm-shield                   shield                 NOT FOUND
llm-connector-hub            connector-hub          NOT FOUND
llm-auto-optimizer           auto-optimizer         NOT FOUND
llm-registry                 registry               NOT FOUND
llm-marketplace              marketplace            NOT FOUND
llm-governance-dashboard     governance-dashboard   NOT FOUND

The new names resolve. Six of the seven resolve fully and transitively — Locking 618 packages to latest compatible versions, exit 0.

What is left undone

llm-governance-common resolves as a package, but its own transitive dependency does not:

error: no matching package named `llm-infra-core` found
location searched: Git repository https://github.com/LLM-Dev-Ops/infra?branch=main
required by package `llm-governance-common v1.0.0 (https://github.com/LLM-Dev-Ops/governance-dashboard?branch=main#a363eac2)`
    ... which satisfies git dependency `llm-governance-common` of package `rt-new v0.0.0`

This is not a defect in this PR — it is governance-dashboard's own Cargo.toml:115, which is ADR-015 implementation step 3 and is owned by that repo. ADR-015 orders step 3 before step 11 for exactly this reason. An adr-015/fix-package-naming branch already exists in governance-dashboard. Once that lands, llm-governance-common resolves from here with no further change needed on this branch.

Because the block is inert (see above), this transitive failure does not block anything in this repo today.

Two follow-ups worth flagging, both out of scope:

  • Marketplace exposes no library crate. If copilot-agent is ever meant to consume marketplace from Rust, that repo needs to expose one. I did not invent a stand-in.
  • This entire dependency block is unreferenced. Since no member crate consumes any of it, these names are documentation rather than build inputs, and CI will not catch a future regression here. ADR-015's dependency-name-resolution-check (step 16) is what would; it parses manifests directly rather than relying on cargo resolution, so it catches precisely this inert-declaration case.

Eight entries in [workspace.dependencies] named crates that no repo in the
fleet publishes, so none of them could ever resolve. Verified each against
the target repo's origin/main and replaced it with the real library crate:

  llm-orchestrator         -> llm-orchestrator-core
  llm-observatory          -> llm-observatory-core
  llm-shield               -> llm-shield-core
  llm-connector-hub        -> connector-hub-core     (repo is unprefixed)
  llm-governance-dashboard -> llm-governance-common
  llm-auto-optimizer       -> llm-optimizer          (crate stem != repo name)
  llm-registry             -> llm-registry-core

llm-marketplace is removed rather than renamed: marketplace is a virtual
workspace whose only members are a service, a benchmark harness, and a
vendored llm-infra fork, so there is no library crate to depend on. Nothing
in this repo imported it -- the LLM-Dev-Ops adapters in
crates/copilot-adapters talk to those services over HTTP, not via Rust APIs,
so no import paths change.

Implements the copilot-agent portion of
agentics-enforcement/plans/adr/ADR-015
@nicholas-ruest
nicholas-ruest merged commit 756402a into main Jul 27, 2026
4 of 20 checks passed
@nicholas-ruest
nicholas-ruest deleted the adr-015/fix-package-naming branch July 27, 2026 20:27
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