Skip to content

perf(build,ship): scope local gates to the change's impact, defer the rest to CI - #5

Merged
tobrun merged 4 commits into
mainfrom
claude/quality-gates-performance-05kkpd
Oct 5, 2026
Merged

tobrun merged 4 commits into
mainfrom
claude/quality-gates-performance-05kkpd

Conversation

@tobrun

@tobrun tobrun commented Oct 5, 2026

Copy link
Copy Markdown
Owner

What: add scripts/impact-scope.py (dev and factory), which lists the files
changed since a base, the packages that own them, and a verdict: docs,
impacted, or full (a lockfile, root config, toolchain pin, or CI workflow
changed). ci-parity.md now scopes every local gate by that verdict: build's
wave gate runs the Validation block at the wave's impact, the gauntlet and
remediation re-runs at the fixes' impact, and the CI-parity runs at the
branch's impact, recording what lies outside it as deferred to CI. A PR that
carries a deferred check opens as a draft and is marked ready once its
required checks are green; a run that opens no PR still runs the full set.
Why: on a grown repository the full merge gate ran up to three times per
change (wave gates, build's parity run, ship's parity run) and dominated
wall clock, while the PR's CI runs it again anyway.

Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session_01CJNyTNFr77RZj8omURZxyA

claude and others added 4 commits October 4, 2026 13:55
… rest to CI

What: add scripts/impact-scope.py (dev and factory), which lists the files
changed since a base, the packages that own them, and a verdict: docs,
impacted, or full (a lockfile, root config, toolchain pin, or CI workflow
changed). ci-parity.md now scopes every local gate by that verdict: build's
wave gate runs the Validation block at the wave's impact, the gauntlet and
remediation re-runs at the fixes' impact, and the CI-parity runs at the
branch's impact, recording what lies outside it as deferred to CI. A PR that
carries a deferred check opens as a draft and is marked ready once its
required checks are green; a run that opens no PR still runs the full set.
Why: on a grown repository the full merge gate ran up to three times per
change (wave gates, build's parity run, ship's parity run) and dominated
wall clock, while the PR's CI runs it again anyway.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CJNyTNFr77RZj8omURZxyA
…om it

What:
- skill-metrics.py end now measures friction signals from the run's
  transcript (interrupts, denied and failed tool calls, the user's own
  turns, and runs and failures of each deterministic checker, each with
  its line), adds them to the metrics row, and appends a journal entry to
  ~/.dev-workflow/memory/ (DEV_MEMORY_DIR) with up to three narrated
  --friction lines kept apart from the measured ones. Opt out with
  DEV_MEMORY_DIR=off or "memory": {"enabled": false} in .dev/config.json.
- dev/scripts/claims.py keeps cited claims about the skills: add accepts
  a batch only when every quote is found verbatim at the transcript line
  or journal entry it cites, rejects credential shapes, and rebuilds the
  per-skill pages, threads.yaml, and progression.md from the records.
  Retract keeps the claim on record so its evidence cannot return;
  resolve records the fixing commit, and a later claim reopens the
  thread.
- The new reflect skill consolidates pending runs with read-only
  subagents, loops claims.py add until clean, ranks threads, and writes a
  scope brief with an eval case from the real run. It never edits a
  skill.
- scope, scope-review, build, and ship pass --friction lines per the new
  run-journal.md reference.
- Fixed a crash in end when every earlier ledger row logged zero tokens.

Why:
The plugin improved only when someone noticed friction by hand. This
borrows the Muse memory system's cheap parts: live capture, source-cited
consolidation, derived pages, recall with evidence, and forgetting by
retraction. Its prompt_tainted: false rule is kept as no self-edits,
since the factory dream loop that deployed its own revisions was
removed.

Considered: a per-repository store, opt-in capture, and an embeddings
index, recorded with the chosen path in docs/decisions.md.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CJNyTNFr77RZj8omURZxyA
What: add dev/scripts to package.json's files, and extend validate.sh's P01
check so every plugin script a dev skill references as ../../scripts/X must
exist and sit under a shipped path.
Why: the Pi package shipped dev/skills and dev/references only, so on Pi the
skills' calls to impact-scope.py, skill-metrics.py, architecture-check.py,
and claims.py pointed at files that were never installed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CJNyTNFr77RZj8omURZxyA
@tobrun
tobrun merged commit c70e403 into main Oct 5, 2026
2 of 4 checks passed
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.

2 participants