fix: close the seam drift against the current mdd core - #3
Merged
Conversation
`mdd.mirror.web` now exports `split_clone_url` / `CloneUrlParts` precisely so backends stop hand-rolling this. Drop `_split_owner` for it: the lookalike-host and scp-form cases are the same, and an unparseable origin now fails closed rather than comparing empty strings. Also pin `GitHubBackend` against the `MirrorBackend` protocol with an annotated assignment. That is the drift alarm this repo was missing — a `Protocol` is structural, so a method added upstream is invisible until it is called at runtime; annotated, it fails `mise run typecheck` instead. Assisted-by: Claude:claude-opus-5 Co-Authored-By: lsimons-bot <bot@leosimons.com>
…ll root Three gaps between what the core offers a wrapper and what this one used: - `mdd.cli.run` was not used. `main` called `parse_args` itself, so the root logging flags were accepted and then silently discarded: `-vv` left the `mdd` logger at WARNING with no handler, and `--trace-bodies` never set the environment flag the core reads. Both work now. - `build_dispatcher(version=...)` was not passed, so `mdd --version` reported the core's version rather than this distribution's. It now prints both, wrapper first. - `register_skill_root` is new, and a reference wrapper that documents the composition surface should exercise it. Ships one skill covering what this wrapper actually decides — the push destination, the guard, and the browse URL — with `[tool.setuptools.package-data]` so it survives a wheel build. Verified: the built wheel contains SKILL.md and `mdd skills list` reports it under root [2]. The lockfile refresh is the core's dev-group moving underneath us. Assisted-by: Claude:claude-opus-5 Co-Authored-By: lsimons-bot <bot@leosimons.com>
CONTRIBUTING.md was borrowed from the core and never adapted: it told contributors to install quarto/rsvg/ripgrep, and described a gate with complexipy, pip-audit and IR round-trip suites. None of that exists here. Replaced with this repo's actual gate, plus the two rules that make a reference repo work — keep it small, and do not drift from the core. README's `cli.py` snippet showed the old hand-rolled dispatch. Replaced with the real thing and a table of the full composition surface, since that surface is what this repo exists to document. AGENTS.md is new: agents kept looking here for code that lives in the dependency. It carries the core's no-cross-references-from-code rule (spec numbers do not resolve in this distribution at all) and the public-repo constraint. `CLAUDE.md` symlinks to it, as in the core. Assisted-by: Claude:claude-opus-5 Co-Authored-By: lsimons-bot <bot@leosimons.com>
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.
Three commits bringing this reference wrapper back in lockstep with the core's recent seam changes.
web_url— the actual break.MirrorBackendgrew aweb_url(path) -> str | Nonemethod, which the Confluence page footer calls through the backend. This wrapper did not implement it. Now implemented onmdd.mirror.web.git_blob_urlwithGITHUB_BLOB_INFIX, since this wrapper mirrors to GitHub.split_clone_url. The core exported the clone-URL parser precisely so backends stop hand-rolling one.backend.pynow uses it instead of parsing by hand.register_skill_root. New seam letting a composing distribution ship its own skill bundle. Since demonstrating the full seam surface is this repo's entire job, it now exercises it: one bundled skill plus the registration call, withpackage-datawired so it survives a wheel build.cli.pynow composes against the whole documented surface —build_dispatcher,run,--version,register_backend,register_skill_root.AGENTS.mdadded (this repo had none), including the core's no-cross-references-from-code rule and a publication-safety section. README and CONTRIBUTING corrected to match.33 tests pass.
Co-Authored-By: lsimons-bot bot@leosimons.com