Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ A new library is a target once it has the topic `python` and both of the hub's G

## What a sync would do

[expected.md](expected.md) says, per library and file, what `touchmark plan` should report today: after the starter packs went deeper on 2026-10-11, every library gets one sync pull request with nine updated files and one new one. Every library's `.agents/project.md` is its own (`local`), and mattermind and pg-partsmith keep one file each through `ignore` in their `.engineering-assets.yml`.
[expected.md](expected.md) says, per library and file, what `touchmark plan` should report today: after the rollout, nothing changes anywhere. Every library's `.agents/project.md` is its own (`local`), and mattermind and pg-partsmith keep one file each through `ignore` in their `.engineering-assets.yml`.

Check it in one command, with a read-only GitHub token (a fine-grained token with the default *Public repositories* access is enough, since every target is public):

Expand Down Expand Up @@ -73,6 +73,7 @@ The reader's keys are the repository variable `TOUCHMARK_READ_APP_ID` and secret
1. **The first library**, 2026-10-07. GitHub Actions on, and Run workflow: the hub opened one sync pull request, in deadline-budget (bedrock-python/deadline-budget#29, 15 files), the one library `targets.yml` subscribed then. A review of it changed the starter packs before the merge: the guidelines moved to `.agents/guidelines/`, and `AGENTS.md` says what agents do while `.agents/project.md` is blank. deadline-budget then filled in its profile (bedrock-python/deadline-budget#31), which is its own from then on.
2. **Every library**, 2026-10-07: `defaults.opt_in: assumed` in `targets.yml`. Its merge opens a sync pull request in each of the other twelve libraries, which says the hub subscribed it and how to opt out.
3. **The libraries' own files**, 2026-10-07. clientwright's and pg-partsmith's improvements to `docs.yml` went into `zensical-docs` (#5) and both took the hub's version back; grpc-client-kit took back three copies that differed only in line endings; mattermind keeps its own `docs.yml` and pg-partsmith its own `dependabot.yml`, through `ignore` in their `.engineering-assets.yml`. Every library filled in its `.agents/project.md`. expected.md describes the result.
4. **Deeper starter packs**, 2026-10-11 (#13, from engineering-assets-template#9): the review prompt in slices with "Justify or remove", the new `.agents/prompts/pure-refactor.md`, working principles in `AGENTS.md`, concrete `python-library` guidelines. One sync pull request per library, 10 files each; all 13 merged the same day with their checks green.

After that, the hub runs itself: `distribute` on every merge to `master` and daily, `doctor` weekly. A new library joins once it has the topic `python` and both Apps are installed on it; a new Python repository that is not a library goes under `exclude` in `targets.yml`. In a public repository GitHub disables scheduled workflows after 60 days without activity; re-enable the workflow if the daily run stops.

Expand Down
76 changes: 37 additions & 39 deletions expected.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,11 @@ touchmark's check against a real fleet: `touchmark plan --assume-opt-in --all` o

## Where it stands

The rollout finished on 2026-10-07 (README, "Rollout"), and every library had the hub's files. On 2026-10-11 the starter packs went deeper: the review prompt reviews a large change in slices and asks every addition for its reason, a new prompt `.agents/prompts/pure-refactor.md` checks that a change keeps behaviour, `AGENTS.md` gained working principles, and the `python-library` guidelines gained concrete rules. So every library gets one sync pull request: nine files updated and one created. What differs otherwise, differs on purpose:
The rollout finished on 2026-10-07 (README, "Rollout"), and the deeper starter packs of 2026-10-11 (#13) reached every library the same day: all 13 sync pull requests are merged. Every library has the hub's files, so a plan changes nothing anywhere. What differs, differs on purpose:

- every library filled in `.agents/project.md`, which is therefore its own (`local`);
- mattermind keeps its own `.github/workflows/docs.yml`, since its docs dependencies are an extra, and pg-partsmith its own `.github/dependabot.yml`, which adds the `docker` ecosystem. Their `.engineering-assets.yml` lists those files under `ignore`.

Once those pull requests are merged, a plan changes nothing anywhere again: write the expectation again then.

The expectation holds while:

- only mattermind and pg-partsmith have an `.engineering-assets.yml`, and it only ignores those files. `targets.yml` subscribes every target (`defaults.opt_in: assumed`), so `--assume-opt-in` changes nothing;
Expand All @@ -22,19 +20,19 @@ The default branches it was checked at, on 2026-10-11:

| Repository | Commit |
|---|---|
| aiokafka-foundation-kit | `3ba88e56975e9d607aa8ce7f05ce0d7566a0108a` |
| alembic-gauntlet | `50eb84e11c667105713d5632f690e24d67b6b2d4` |
| clientwright | `7cda21512ab41266e741006329c845adf7db10f8` |
| deadline-budget | `37e0656b7bb9329df53e8b2bd03979d4a8cf47ba` |
| grpc-client-kit | `db6452920a1a2b3a8550a64fab174b5bc963cd49` |
| grpc-server-kit | `90fce7b4759eae094caf8ba2b8f0f2aef5ac914d` |
| idempotency-kit | `af413605ddd8b72361330ef5459045cf6eaabfd8` |
| mattermind | `04344c77790073691d53e77d704665270d6701ef` |
| omni-box | `c36f99f395f3fe85856d5d22305f1177df83a201` |
| pg-partsmith | `55c483a01cef9f20e530b7a43f300e190cd833ed` |
| redis-client-kit | `823a116ac0b5be68599760f7c43df055f1332b5f` |
| servicewright | `c84440df7596fce04519f3ccc7237e58c7e00aae` |
| sqlalchemy-foundation-kit | `87e97aa6ea45ae4a681491df4d31eddcfeb56eb6` |
| aiokafka-foundation-kit | `a609399448c6771f528bde69cfad27400f16b546` |
| alembic-gauntlet | `1b74059ac166a0e0e03da188918d68766e850830` |
| clientwright | `0f58abba7c4d038b94156bbfcf499078883ef306` |
| deadline-budget | `9132b54747d7ddcb296fe0d8aecb549ee29ca336` |
| grpc-client-kit | `040c5420b48f3938b5d76354773fc1c14417531d` |
| grpc-server-kit | `05394320aedd31b2423c04e0e000d7d0a94009e0` |
| idempotency-kit | `f4bc4e4c2cd69ab75b232225337d2a1c6a65d60f` |
| mattermind | `17691e7f0dff2a99996c8b8f5958860fbdd59bd8` |
| omni-box | `27e8e3eb8ed62fbc9e8d82bbd20edbf58fa02b7c` |
| pg-partsmith | `2890538ccabdbd7bf4034ca6f2c951991833cb5f` |
| redis-client-kit | `e23db4fd40d2f632215884c1149c5b83c7c80543` |
| servicewright | `e11de17a3f1efc36c1174d5fdd27dc7e393f2bbc` |
| sqlalchemy-foundation-kit | `adcd6455b475b96650adcd1aa4d6f0690c7aaa1d` |

## Expectation

Expand All @@ -44,19 +42,19 @@ That is `defaults.packs` of `targets.yml`, with `agents` placed before the packs

| Repository | Outcome | Create | Update | Delete |
|---|---|---:|---:|---:|
| `bedrock-python/aiokafka-foundation-kit` | opened | 1 | 9 | 0 |
| `bedrock-python/alembic-gauntlet` | opened | 1 | 9 | 0 |
| `bedrock-python/clientwright` | opened | 1 | 9 | 0 |
| `bedrock-python/deadline-budget` | opened | 1 | 9 | 0 |
| `bedrock-python/grpc-client-kit` | opened | 1 | 9 | 0 |
| `bedrock-python/grpc-server-kit` | opened | 1 | 9 | 0 |
| `bedrock-python/idempotency-kit` | opened | 1 | 9 | 0 |
| `bedrock-python/mattermind` | opened | 1 | 9 | 0 |
| `bedrock-python/omni-box` | opened | 1 | 9 | 0 |
| `bedrock-python/pg-partsmith` | opened | 1 | 9 | 0 |
| `bedrock-python/redis-client-kit` | opened | 1 | 9 | 0 |
| `bedrock-python/servicewright` | opened | 1 | 9 | 0 |
| `bedrock-python/sqlalchemy-foundation-kit` | opened | 1 | 9 | 0 |
| `bedrock-python/aiokafka-foundation-kit` | unchanged | 0 | 0 | 0 |
| `bedrock-python/alembic-gauntlet` | unchanged | 0 | 0 | 0 |
| `bedrock-python/clientwright` | unchanged | 0 | 0 | 0 |
| `bedrock-python/deadline-budget` | unchanged | 0 | 0 | 0 |
| `bedrock-python/grpc-client-kit` | unchanged | 0 | 0 | 0 |
| `bedrock-python/grpc-server-kit` | unchanged | 0 | 0 | 0 |
| `bedrock-python/idempotency-kit` | unchanged | 0 | 0 | 0 |
| `bedrock-python/mattermind` | unchanged | 0 | 0 | 0 |
| `bedrock-python/omni-box` | unchanged | 0 | 0 | 0 |
| `bedrock-python/pg-partsmith` | unchanged | 0 | 0 | 0 |
| `bedrock-python/redis-client-kit` | unchanged | 0 | 0 | 0 |
| `bedrock-python/servicewright` | unchanged | 0 | 0 | 0 |
| `bedrock-python/sqlalchemy-foundation-kit` | unchanged | 0 | 0 | 0 |

| Path | Pack | State | Exceptions | Sensitive |
|---|---|---|---|---|
Expand All @@ -70,21 +68,21 @@ That is `defaults.packs` of `targets.yml`, with `agents` placed before the packs
| `.github/workflows/release-please.yml` | bedrock-community | current | - | yes |
| `CODE_OF_CONDUCT.md` | bedrock-community | current | - | no |
| `.agents/project.md` | agents | local | - | no |
| `.agents/prompts/pure-refactor.md` | agents | missing | - | no |
| `.agents/prompts/refactor-check.md` | agents | outdated | - | no |
| `.agents/prompts/review.md` | agents | outdated | - | no |
| `AGENTS.md` | agents | outdated | - | no |
| `.claude/agents/reviewer.md` | claude | outdated | - | yes |
| `.agents/prompts/pure-refactor.md` | agents | current | - | no |
| `.agents/prompts/refactor-check.md` | agents | current | - | no |
| `.agents/prompts/review.md` | agents | current | - | no |
| `AGENTS.md` | agents | current | - | no |
| `.claude/agents/reviewer.md` | claude | current | - | yes |
| `.claude/settings.json` | claude | current | - | yes |
| `.claude/skills/commit/SKILL.md` | claude | current | - | yes |
| `.claude/skills/new-branch/SKILL.md` | claude | current | - | yes |
| `.claude/skills/pr/SKILL.md` | claude | outdated | - | yes |
| `.claude/skills/review-change/SKILL.md` | claude | outdated | - | yes |
| `.claude/skills/pr/SKILL.md` | claude | current | - | yes |
| `.claude/skills/review-change/SKILL.md` | claude | current | - | yes |
| `.claude/skills/spec/SKILL.md` | claude | current | - | yes |
| `CLAUDE.md` | claude | outdated | - | no |
| `CLAUDE.md` | claude | current | - | no |
| `.agents/guidelines/public-api.md` | python-library | current | - | no |
| `.agents/guidelines/python.md` | python-library | outdated | - | no |
| `.agents/guidelines/testing.md` | python-library | outdated | - | no |
| `.agents/guidelines/python.md` | python-library | current | - | no |
| `.agents/guidelines/testing.md` | python-library | current | - | no |

Sensitive files are those the pull request description lists under ⚠: touchmark's built-in list (workflows, `dependabot.yml`, `.claude/settings*.json`, `.claude/agents/**`, `.claude/skills/**`, ...) and `sensitive_paths` of `hub.yml`. Skills are on the list because a skill's `allowed-tools` lets Claude Code use those tools without asking.

Expand Down
Loading