Skip to content

chore: declare each mod's folder in the registry - #3

Merged
AmrMsCLL merged 1 commit into
mainfrom
chore/declare-mod-paths
Oct 4, 2026
Merged

AmrMsCLL merged 1 commit into
mainfrom
chore/declare-mod-paths

Conversation

@AmrMsCLL

@AmrMsCLL AmrMsCLL commented Oct 4, 2026

Copy link
Copy Markdown
Member

paths lets the Hub changelog attribute commits to StackSwitch or TaskTune by the files they touch, so it can cut their versions automatically.

paths lets the Hub changelog attribute commits to StackSwitch or TaskTune by the files they touch, so it can cut their versions automatically.
@AmrMsCLL
AmrMsCLL merged commit abb7a9d into main Oct 4, 2026
4 checks passed
@AmrMsCLL
AmrMsCLL deleted the chore/declare-mod-paths branch October 4, 2026 12:35
AmrMsCLL added a commit to Project-Graphite/graphite-hub that referenced this pull request Oct 4, 2026
## What changed

Removes the need to remember to tag. With `--cut`, which `sync.yml` now
passes, the daily sync does this for each project with `releases: auto`:

1. **Attributes commits since its last version tag to the project.**
   - A project with `paths` owns the commits that touch those folders.
   - An epic owns the remaining commits in its repository.
   - A child project without `paths` is never cut automatically.
2. **Tags the next version if any of those commits is user-facing.** The
bump is minor for `feat` or a removal, patch for fixes, style and perf
changes, and major for `!` or `BREAKING CHANGE` from 1.0.0 onwards
(minor before that). The first version is 0.1.0, and after a prerelease
the pending version is released. The tag (`vX.Y.Z`, or `<slug>/vX.Y.Z`
inside an epic) goes on the project's newest commit, through the
platform App.
3. **Drafts the entry** in the same run, using the same PR and merge
flow as today.

Tags people push by hand are still recorded. `releases: manual` projects
(graphite-ui) are only recorded, never cut. Drafting a manual tag now
also uses `paths` when set, instead of the sibling-name heuristic.

Without `--cut`, `npm run sync:releases` stays read-only and only
reports what it would tag.

Depends on platform#22 (`paths` and `releases` in the registry, already
merged and synced here), Project-Graphite/windhawk-mods#3 (mod paths)
and Project-Graphite/graphite-ui#10 (`releases: manual`).

## Verification

- `npm test`: 18 pass, including the new `nextVersion` cases. `npm run
lint`, `format:check` and `build` pass, and `check-routes` finds 25
routes.
- Dry run against GitHub: it would tag `strata@v0.2.0`, which has 40
feature commits since v0.1.0. Every other project has no user-facing
commits since its last tag. It drafted graphite-ui 0.2.0 and 0.2.1 from
their existing tags correctly; I removed those drafts so the first real
run creates them.
- None of the `auto` repositories (strata, graphite-tracker,
graphite-message-lab, digital-to-physical, windhawk-mods) has a workflow
triggered by tags, so an automatic tag starts no build or deploy.

## Checklist

- [x] The change is focused and contains no credentials or generated
secrets.
- [ ] Documentation and tests were updated when behavior changed. Tests
were added; `README.md` does not describe the changelog yet.
- [x] Deployment or rollback considerations are described when relevant.

The sync still needs the `PLATFORM_APP_CLIENT_ID` and
`PLATFORM_APP_PRIVATE_KEY` repository secrets on graphite-hub. Every
scheduled run since 2026-10-02 has failed without them. Rollback:
revert, or drop `-- --cut` in `sync.yml` to return to recording only.
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