Skip to content

chore(release): km 1.10.0 - #46

Merged
pasrom merged 3 commits into
mainfrom
release/1.10.0
Nov 7, 2026
Merged

pasrom merged 3 commits into
mainfrom
release/1.10.0

Conversation

@pasrom

@pasrom pasrom commented Nov 7, 2026 •

Copy link
Copy Markdown
Owner

Release km 1.10.0. Merging this PR is the release (CI tags v1.10.0 once main is green). It ships the four changes merged since v1.9.0 (the retired paragraph check, workflow_dispatch in the team ci workflow, the bump-mounted-pins workflow and script, Markdown one paragraph per line) and three commits here:

  1. docs(skill): skills/km/reference/setup.md names main-guard and bump-mounted-pins (with its script) among what km init --team writes, adds a short section "Mounted pins on a team brain" (what it does; the maintainer's setup before the first mount, taken from the workflow header: GitHub App with Contents and Actions read, environment mounted-pins restricted to main created before the first run, secrets CI_APP_CLIENT_ID and CI_APP_PRIVATE_KEY, Actions allowed to create pull requests, "Require approval of the most recent reviewable push", optional MOUNTED_PINS_RUNNER; the header stays the source for details), says what km upgrade adds to a team brain, and that a doctor note whose fix is in the repository settings is the maintainer's. No sentence in skills/ or the README said Dependabot moves the mounted pins; the Dependabot lines (km pin, action pins) stay, one now adds "or another action".
  2. test(skill): line limits replaced. The core's 500-line limit goes: at the hard-wrapped 76 bytes per line it was about 38,000 bytes, three times CORE_BYTES (12,000, kept), so it never bound. The contents-list rule becomes CONTENTS_BYTES = 6000: the old 100-line rule split the reference files at 3,433 to 3,702 bytes (under) against 8,064 to 13,599 (over), and 6,000 keeps that split. New: no line in a Markdown file under skills/ over 1,900 characters (the Read tool cuts at 2,000); longest today is 1,875 in queue.md (Open PRs step), so the next growth there means splitting it. skill_smoke.sh mutation-checks each new check (a padded core, brains.md without its contents list, a 1,901-character line fail; a 1,000-character line of two-byte characters passes), and disabling each check or counting bytes fails the smoke test.
  3. chore(release): src/km/__init__.py, .claude-plugin/plugin.json, README examples (pyproject reads the version from __init__; no CHANGELOG in this repo).

Evals

claude plugin eval . --trust-plugin --case doctor --scaffold --no-publish --ablation none --allow-tools Bash Write Edit (setup.md maps to the doctor row; no case covers init or upgrade): doctor 1.00, 3/3 runs, both graders (reads-reference, runs-km-doctor) passed every run, $0.83, 131 s. Caveat: the run started on the first version of the setup.md section; the simplify and review folds shortened that section while it ran, so not every run read the final text. No grader changed, so no baseline.

Review

/simplify (reuse, simplification, efficiency, altitude) applied: the new setup.md section no longer copies the five setup steps verbatim (one sentence naming the items, the header stays the source), the repeated "before the first mount" warnings in init and upgrade became pointers, the doctor rule is general (a note fixed in repository settings), text bound once in the inventory loop, one printf idiom for filler. Skipped: trimming the calibration comment (the numbers are the point of the change); reading the skill files once instead of twice in the line check (negligible, and the scan covers all of skills/); also scanning src/km/templates/**/*.md or adding a line check to km validate (outside this PR; templates are under 1,500 characters today), worth a follow-up.

/code-review applied: the CORE_BYTES mutation pads 12,001 bytes so it cannot go stale when the core shrinks; the section no longer says the workflow "does nothing" on a brain with mounts that is not set up; lines are split at \n only and read as bytes (universal newlines would split at a lone \r); ## Contents must be a heading line; the sync sentence says "usually" the workflow's PR (a hand-made pin PR stays fine). Skipped: UTF-16 counting of astral characters (the skill's text is BMP; the 100-character margin covers ordinary use); --skill pointing elsewhere widens the rglob (default and smoke point at skills/km).

All smoke tests pass locally.

Rerun on the final head 023dc5a: doctor 1.00, 3 of 3 runs, $0.78.

setup.md listed the ci and staleness workflows as what km init --team
writes, and said nothing of the workflow that moves the pins of mounted
brains. It now names main-guard and bump-mounted-pins with its script,
and a new section says what bump-mounted-pins does and what the
maintainer sets up before the first mount, taken from the workflow's
header: the GitHub App (Contents and Actions: read), the environment
mounted-pins restricted to main and created before the first run, its
secrets CI_APP_CLIENT_ID and CI_APP_PRIVATE_KEY, allowing Actions to
create pull requests, "Require approval of the most recent reviewable
push", and the optional variable MOUNTED_PINS_RUNNER.

The upgrade step says what km upgrade adds to a team brain and to pass
on its warning about the environment; the doctor step says the
environment note is the maintainer's to fix. Dependabot is named for the
km pin and the action pins only; no sentence in the skill or the README
said it moves the mounted pins.
With one paragraph per line, a line count measures paragraphs, not
size. Measured on the hard-wrapped files (4777eb7), the reference files
averaged 69 bytes a line and SKILL.md 76:

- The core's 500-line limit was about 38,000 bytes, three times
  CORE_BYTES (12,000), so it never bound; it goes, CORE_BYTES stays.
- The contents-list rule for reference files over 100 lines split them
  at 3,433 to 3,702 bytes (under) against 8,064 to 13,599 (over).
  CONTENTS_BYTES = 6,000 keeps that split with room on both sides.

New: no line in a Markdown file under skills/ may exceed 1,900
characters, since the Read tool cuts a line after 2,000 and the rest of
the paragraph is never seen. Characters, as the tool counts them. The
longest line today is 1,875 (queue.md, Open PRs step).

skill_smoke shows each check bites: a core padded past CORE_BYTES,
brains.md without its contents list, and a 1,901-character line fail,
while a 1,000-character line of two-byte characters passes. Disabling
each check, or counting the line in bytes, fails the smoke test.
A team brain gets bump-mounted-pins, a workflow with its script that
moves the pins of the mounted brains by pull request in place of
Dependabot's submodule updates, and km doctor notes its environment;
km upgrade adds both and keeps a shipped copy current. The team ci
workflow also runs on workflow_dispatch, so a pull request a workflow
opens gets its check, and km upgrade adds the trigger. The skill's setup
reference describes the new workflow and its maintainer setup, km's
Markdown is one paragraph per line, and the skill inventory measures
size in bytes and line length in characters instead of lines, without
the retired paragraph check. Without the bump no brain or plugin install
would see these.
@pasrom
pasrom merged commit b6a188e into main Nov 7, 2026
4 checks passed
@pasrom
pasrom deleted the release/1.10.0 branch November 7, 2026 22:17
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