Skip to content

feat(verify): cover BrushDescriptor in verify-brushkit and fix map drift - #285

Merged
pmwoz merged 1 commit into
mainfrom
verify/maintain-20261104
Nov 4, 2026
Merged

pmwoz merged 1 commit into
mainfrom
verify/maintain-20261104

Conversation

@pmwoz

@pmwoz pmwoz commented Nov 4, 2026

Copy link
Copy Markdown
Owner

Maintenance pass on the verify-brushkit skill. Every feature file was checked against source and driven live through the probe, on the fuzz seeds and on the local corpus (140 .abr, 211 .brushset, 25 .brush). No exit 101 in any of the 516 sweep runs.

Changes

  • New feature: brush descriptor. The typed BrushDescriptor on sampled brushes and computed presets had no feature file and no probe output. parse now writes each descriptor as its Debug text, because the type has no serde derive. The new features/brush-descriptor.md covers the seed values, default descriptors, mode parity, tool options, gating and the four corpus_smoke descriptor tests.

  • Computed tip size. The computed seed preset (30 px diameter) is now 36x36 and synthesized_side is 36, not 32. The falloff past the nominal edge (fix(preview): keep Photoshop's soft falloff past a computed tip's nominal edge #265 to fix(preview): keep a computed tip's ink continuous across diameter 2 px #278) widened it.

  • Corpus claims. The corpus now holds:

    • v1, v2, v6, v7, v9 and v10 packs
    • computed presets in v6 and v10 packs
    • unsupported presets in v9 and v10 packs, reported as UnsupportedTipKind with a TipShape name
    • .brush files

    Nonzero dual-brush drops appear in v6, v9 and v10 packs (up to 34), not in the one v7 pack. On every pack, up_front_decoded_len is at least the dropped tips' pixel sum, but it is rarely equal to it.

  • Budget. No corpus pack holds more than 256 MiB of tip pixels (the largest holds about 115 MB), so OverBudget cannot be reached on real files. The recipe now names that precondition and points at the budget tests.

  • Smaller wording fixes.

    • the empty .brushset error conditions
    • why all-deferred reports v1/v2 up-front bytes
    • the stop5 recipe needs a pack with more than 5 entries

Evidence

Every changed recipe was re-run with the changed probe. Real-file evidence below is text only.

  • The computed seed row renders as a solid disc on a 36 px canvas, with 34x34 ink bounds.
  • On a v10 pack with 52 descriptors, descriptors are identical across all four parse modes. tool_options matches the dump's toolOptions class on 52 of 52. All 27 presets with useTipDynamics false have the Shape Dynamics fields None.
  • cargo test -p brushkit-abr --test corpus_smoke with the four descriptor tests: 4 passed.

@pmwoz
pmwoz merged commit 23c32aa into main Nov 4, 2026
8 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.

1 participant