chore(merge): update starbase (2026-10-13)
Metadata
Current evaluation
Superseded by a recreation under the LoweRAM account to preserve correct PR authorship and provenance comments.
Resolution: closed superseded
Reason: The PR was closed because it was superseded by a recreation under the LoweRAM account to ensure correct author attribution and maintain provenance comments, as explicitly stated in the closing comments by both lengau and LoweRAM.
Evaluated by: mr-cal-bot
No scores available.
Issue body
Rebuild of the Starbase sync, rebased onto the current heads of both `origin/main` (`fe67242`) and `starbase/main` (`1104bc6`). History was rewritten — see the comment below.
## What changed since the previous revision
**Pulled from `starbase/main` (5 commits):**
| Commit | Change |
|---|---|
| `1104bc6` | `style: drop mypy, pyright (#624)` — removes `[tool.mypy]`, `[tool.pyright]`, the `mypy` dependency-group entries, and the `lint-mypy`/`lint-pyright`/`install-pyright` targets from `common.mk` |
| `cb4cb54` | `build(deps): lock file maintenance (#622)` |
| `26946d1` | `build(deps): update github actions (#618)` |
| `3a6537c` | `build(deps): update dependency mypy to ~=2.4.0 (#619)` — superseded by `#624` |
| `e71c218` | `build(deps): update astral-sh/setup-uv action to v10 (#620)` |
**Pulled from `origin/main`:** all commits since the previous revision, including the now-merged prep PRs #435 (tombi format) and #437 (Vale guards).
## Regression fixes from the previous revision
The previous revision of this PR was broken; all three are fixed here:
1. **`uv.lock` no longer breaks the build.** Previously Starbase's lockfile was taken wholesale, so `craft-store` was not a workspace member and `make test-fast` failed with `` The lockfile at `uv.lock` needs to be updated, but `UV_FROZEN=1` was provided: Missing workspace member `craft-store`. ``. `uv.lock` is a child-owned file; it is now kept from the child and regenerated with `uv lock` from the merged dependency set. `make test-fast` passes (266 passed).
2. **`Makefile` `PROJECT` is no longer `starcraft`.** It now stays `craft_store`, so `make format` no longer fails with `Failed to format starcraft: No such file or directory`.
3. **`pyproject.toml` no longer drops two build sections.** `[tool.setuptools]` `package-data` (the `py.typed` marker) and `[tool.setuptools.packages.find]` are preserved, and the stale `[tool.mypy]`/`[tool.pyright]` sections are gone (Starbase dropped them in #624).
## Conflict resolution
Resolved per `references/file_ownership.md`:
- **Kept child (`--ours`):** `.github/workflows/qa.yaml`, `.pre-commit-config.yaml`, `CONTRIBUTING.md`, `docs/conf.py`, `docs/explanation/documentation.rst`, and `uv.lock` (regenerated).
- **Took from `starbase/main`:** `.github/workflows/check-renovate.yaml`, `.github/workflows/release-publish.yaml`, `common.mk`.
- **`tics.yaml`** — kept the reusable-workflow call from Starbase but restored the required `with.project` input to `craft-store`. The ownership map explicitly forbids leaving this input commented out, and Copilot flagged the commented-out version separately.
- **`Makefile`** (mixed ownership) — kept the child-owned `PROJECT=craft_store`, took Starbase's new `format-tombi`/`lint-tombi` targets, and dropped the `pack-snap` target because this library has no `snap/snapcraft.yaml` prerequisite so the target can never run (also flagged by Copilot).
- **`pyproject.toml`** — kept the child's `[project]`, `[dependency-groups]`, `[build-system]`, `[tool.setuptools]`, `[tool.setuptools_scm]`; merged `tool.uv.constraint-dependencies` by taking the higher version from each side ordered alphabetically; kept Starbase's `tool.ruff` block except `tool.ruff.src` and `tool.ruff.target-version`, adding the child's entries to `tool.ruff.extend-exclude` and `tool.ruff.lint.ignore`.
## Library-repo deletions (rule 1b)
These never raise a conflict, so they are applied explicitly:
- `AGENTS.app.md`
- `.github/README.md` (Starbase ships this scaffold; it never appears as a conflict)
- `docs/release-notes/`
- `starcraft/__init__.py` and `tests/*/starbase/test_init.py` (Starbase scaffold)
## Validation status
| Command | Result |
|---|---|
| `make test-fast` | **PASS** — 266 passed, 34 deselected |
| `make format` | **FAIL** — 24 ruff findings. See the pending prep PR below. |
| `make lint` | **FAIL** — same ruff findings |
| `make docs` | **FAIL** — pre-existing and environmental; fails identically on `main` (`find: '../.venv/lib/python*/site-packages/vale/vale_bin': No such file or directory`), so it is not introduced by this merge |
`make format` / `make lint` fail because Starbase has substantially expanded `tool.ruff.lint.select` since the last sync (adding `ASYNC`, `S*`, `FBT`, `COM`, `PIE*`, `SLF`, `TID`, `TC001`–`TC003`, `FIX`, `FLY`, `PERF`, `B035`, `RUF001`–`RUF013`, `RUF100`, `RUF200`). Taking that list is the correct resolution per the ownership map — the child adds nothing to it — but it surfaces new findings in this repository's source. Those findings are being fixed in a separate preparation PR rather than bundled here.
Per the preparation-PR rules, this PR stays in draft until that prep PR is merged.
## Pending preparation PR
See the comment below for the prep PR that addresses the ruff findings surfaced by Starbase's expanded `tool.ruff.lint.select`.
Evaluation history
| Date | Model | Scores | Action | Summary |
|---|---|---|---|---|
| qwen/qwen3.6-35b-a3b | — | closed superseded | Superseded by a recreation under the LoweRAM account to preserve correct PR authorship and provenance comments. |
Update history
| Date | Change |
|---|---|
| closed | |
| updated | |
| updated | |
| updated | |
| updated | |
| updated | |
| created |
Related issues
| Issue | Project | State | Summary | Similarity |
|---|---|---|---|---|
| #259 chore(merge): update starbase (2026-10-08) | craft-archives | closed | Superseded by a rebase from the correct GitHub account. Force-pushed to incorporate canonical/starbase#617. | |
| #238 chore(merge): update starbase (2026-07-16) | craft-archives | closed | PR #238 was closed unmerged after an external linkcheck timeout; its Starbase sync was later merged through replacement PR #252. | |
| #236 chore(merge): update starbase (2026-06-18) | craft-platforms | closed | Starbase sync PR #236 was closed unmerged; rebuilt replacement #270 later merged Starbase into main as commit 4afcee7. | |
| #2895 chore(merge): update starbase (2026-09-24) | charmcraft | closed | Draft Starbase sync PR #2895 (2026-09-24) was closed unmerged; the same update was reworked as #2899 (2026-09-28), which merged as commit 8da01822 after prep PRs #2897/#2898. | |
| #236 chore(merge): update starbase (2026-07-14) | craft-archives | closed | Closed unmerged; the Starbase update was later merged through #252 in commit 1b56643. | |
| #387 chore(merge): update starbase (2026-06-18) | craft-store | merged | Merged PR #387 in commit 5c83549, updating Starbase docs/build tooling while preserving craft-store-specific CI and CODEOWNERS files. | |
| #438 chore(merge): update starbase (2026-10-09) | craft-store | closed | Routine starbase dependency update PR closed due to failing CI checks and lack of review. Superseded by subsequent starbase syncs. | |
| #237 chore(merge): update starbase (2026-07-14) | craft-archives | closed | PR #237 was closed unmerged after failing CI checks and leaving 29 review comments unresolved; no resolving commit was identified. | |
| #1728 chore(merge): update starbase (2026-10-01) | craft-parts | merged | Merged #1728 into main as d2be519e, syncing starbase/main's build, CI, docs tooling, Ruff 0.16, Sphinx Stack, and AGENTS.md updates. | |
| #433 chore(merge): update starbase (2026-10-08) | craft-store | closed | Merged routine starbase dependency and tooling updates with conflict resolutions applied to align with starbase/main. |