feat(registry): open native library projects at schema 29; repoint ex-mcp #1649
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/ex-mcp-project"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Why
sean/ex-mcpis the fork Binjovi builds its own MCP server from, and it is not a Binjovi project. It cannot become one today: schema 21 pins the project to four names —bytey,hello-lib,libseanfarm-operator,zot-src— so a new library cannot be added by a plans-only pull request at all.Schema 29
Widening v21 would change what a durable generation means for records already written against it, which its own comment forbids. So 29 is a new generation: v21 with the allowlist replaced by the two properties the allowlist was standing in for.
Everything else is
@v21_keysandparse_native_projectunchanged: no taxonomy key (a library delivers nothing, so it names no delivery shape), executornative, recipe rooted atrecipes/<project>.valid_dns_name?is what rejectsex_mcp, and why the repository was renamed tosean/ex-mcp.29, not 28 — the suite caught this
I first wrote it as 28. 28 is already taken by the
binjovi-planscatalog clause, whose head also pins"project" => "binjovi-plans". A generic clause at 28 silently swallowed every other project at that version and turned:invalid_project_versioninto:invalid_project_fields.object_store_project_test.exs:105— "no other project may declare an object-store target" — failed, which is exactly its job.Worth recording, so the next person does not repeat it: my version survey grepped
defp parse(%{"version" => N, and 28's literal lives inside a multi-linewithpattern at line 1229, not a clause head. The comment now says to grep every"version" => Nliteral in the file.Dependency repoint
apps/binjovi_api,apps/binjovi_eventsandmix.locknow namecode.sean.farm/sean/ex-mcp.git. The pin is by SHA (2bbb22ba…), so only the URL moved. Forgejo's post-rename redirect kept the old URL resolving — this stops depending on it. Verified with a cleandeps.getagainst the new URL.Also
One assertion in my new tests was wrong and is removed rather than worked around:
parse_native_projectlegitimately allowsdeployment_targets, andbyteyis the same generation shippingconfigmap/workflows/bytey-floorplan.ex-mcpsimply has none.Verification
891 tests pass, full umbrella suite, no failures. Postgres-tagged tests are excluded locally and run in CI.Sequencing: this must be released before the
binjovi-planscatalog record, because the decoder has to exist in the running image before a bundle naming version 29 can activate. The seanfarm side is PR #674.https://claude.ai/code/session_01XdBRc9CHgFhAxCyHbdVtt6
Two changes that together let sean/ex-mcp become an ordinary Binjovi project. SCHEMA 29. Version 21 pins the project to four names -- bytey, hello-lib, libseanfarm-operator, zot-src -- so a new library could not be added by a plans-only pull request at all. Widening v21 would change what a durable generation means for records already written against it, which its own comment forbids. So 29 is a new generation: v21 with the allowlist replaced by the two properties the allowlist stood in for. * the project is a DNS label -- this is what rejects `ex_mcp`, and why sean/ex_mcp was renamed to sean/ex-mcp; * the repository is exactly sean/<project>. Everything else is @v21_keys and parse_native_project unchanged: no taxonomy key, executor native, recipe rooted at recipes/<project>. 29, NOT 28. 28 is already the binjovi-plans catalog clause, whose head also pins "project" => "binjovi-plans". A generic clause at 28 swallowed every other project at that version and turned :invalid_project_version into :invalid_project_fields. object_store_project_test.exs:105 caught it. The version survey that missed it grepped clause heads; the literal lives inside a multi-line `with` pattern. A comment now says to grep every `"version" => N`. DEPENDENCY. apps/binjovi_api, apps/binjovi_events and mix.lock now name code.sean.farm/sean/ex-mcp.git. The pin is by SHA, so only the URL moved. Forgejo's post-rename redirect kept the old URL resolving, and this stops depending on it. Verified with a clean deps.get against the new URL. A deployment_targets assertion in the new tests was wrong and was removed, not worked around: parse_native_project allows targets, and bytey is the same generation with "configmap/workflows/bytey-floorplan". ex-mcp simply has none. 891 tests pass. Claude-Session: https://claude.ai/code/session_01XdBRc9CHgFhAxCyHbdVtt6