Skip to content

fix: the canonical inventory is no longer inside this repo - #345

Merged
Patel230 merged 1 commit into
mainfrom
chore/ecosystem-inventory-moved
Oct 4, 2026
Merged

Patel230 merged 1 commit into
mainfrom
chore/ecosystem-inventory-moved

Conversation

@Patel230

@Patel230 Patel230 commented Oct 1, 2026

Copy link
Copy Markdown
Contributor

What

ecosystem.yaml in this repo described itself as canonical and instructed all tooling to read it rather than carry its own repo-name list. The inventory moves to GrayCodeAI/graycode-eco, a repository that is not a product.

Why

A product cannot own the registry of its siblings, because a product can rename itself. That is what happened:

  • The organization holds hawk and eyrie as GitHub redirects from the prior names of rho and flux. Neither rename touched the file that claimed to be the source of truth for repository names.
  • The list omitted beam entirely, across 6 commits and a versioned crate workspace.
  • It had no maturity field, so nothing recorded that trace and rover are pre-1.0 or that trail and radius are scaffolds.

The failure mode is not that the list was wrong. It is that a product could change the ecosystem's vocabulary without review, and nothing failed.

How

scripts/ecosystem-manifest.sh becomes the single reader. It prefers the roof and falls back to the local copy, warning that the fallback is deprecated and incomplete. No caller changed. The manifest validator, generate-workspace.sh, check-module-release-parity.sh, and both composite actions (checkout-flux, setup-deps) keep working through it.

The local ecosystem.yaml stays as a marked fallback so a standalone go build of rho outside the ecosystem workspace still resolves siblings.

Verification

Commands run from the repo root, with graycode-eco checked out as a sibling:

$ ./scripts/ecosystem-manifest.sh validate
ecosystem manifest valid (10 repositories)

$ ./scripts/ecosystem-manifest.sh list workspace
rho
flux

$ ./scripts/ecosystem-manifest.sh json | python3 -m json.tool
(valid)

$ ./scripts/generate-workspace.sh
workspace generated at .../graycode-eco/go.work
  use ( ./flux  ./rho )
  replace github.com/GrayCodeAI/flux v0.0.1 => ./flux

$ ./scripts/check-module-release-parity.sh
MODULE                   MODULE_COMMIT  STATUS
flux                     bd41f29a0dc7   OK

Also confirmed the fallback path still resolves, and that the manifest parser skips the roof's not_products: block (those entries have no directory: key, so they are not treated as ecosystem records).

Scope

Docs only, plus the two scripts that read the manifest. No Go code, no dependency, no behaviour change. The rho to flux compile-time dependency remains the only one in the ecosystem, and the check enforcing it is untouched.

I did not run the full rho test suite: the disk on this machine hit 100% during unrelated Go builds and go build failed with no space left on device. That is an environment limit, not a result. The scripts changed here are all bash and were verified by execution and bash -n.

Note for reviewers

docs/ECOSYSTEM-WIRING.md is marked STALE and lists 14 repos and 6 engines. I updated only its pointers to the inventory, not its diagrams. It remains historical.

ecosystem.yaml described itself as canonical and instructed all tooling to
read it. That is the wrong shape: a product cannot own the registry of its
siblings, because a product can rename itself. That is exactly what
happened. The organization holds hawk and eyrie as redirects from the prior
names of rho and flux, and neither rename touched the file that claimed to
be the source of truth for repository names. The list also omitted beam
outright.

The inventory moves to GrayCodeAI/graycode-eco, a repository that is not a
product. ecosystem.yaml stays here as a deprecated fallback, clearly marked
and incomplete, so a standalone build of rho outside the ecosystem
workspace still resolves its siblings.

scripts/ecosystem-manifest.sh becomes the single reader: it prefers the
roof and falls back to the local copy, warning that the fallback is not
canonical. No caller needed to change, and none did. The manifest
validator, workspace generation, release parity, and both GitHub composite
actions all keep working unchanged.

Verified: validate reports 10 repositories, list workspace yields rho and
flux, generate-workspace produces the expected go.work, and release parity
resolves flux to bd41f29a0dc8.
@Patel230
Patel230 force-pushed the chore/ecosystem-inventory-moved branch from 5abb0ce to d3ed55d Compare October 2, 2026 03:49
@Patel230
Patel230 merged commit a92561a into main Oct 4, 2026
21 checks passed
@Patel230
Patel230 deleted the chore/ecosystem-inventory-moved branch October 4, 2026 17:16
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