A rule starts from a preset, not an empty regex box
Explore this workspace.
Technical background
Add rule is a split button whose caret offers nineteen searchable ready-made rules, and an Apply preset dropdown rewrites the rule you have open. A preset does not own its pattern: anything an integration already matches takes the pattern from that manifest, so the two cannot drift apart.
The problem
Adding a Link Tooltip rule started with an empty regex box. Almost every rule anyone actually wants — a ticket key, a commit hash, a pull request, a media file — is a pattern somebody has already written, and writing it again by hand is both work and a second copy that drifts.
How it works
Add rule is a split button whose caret offers nineteen searchable ready-made rules, and an Apply preset dropdown inside the editor rewrites the rule you have open. The canonical catalog is Lintel's presets.json; both terminals consume generated copies. A preset does not own its pattern: anything an integration already matches takes the pattern from that manifest, selected by running the manifest's own matchers against a canonical example the preset names.
Details
- The join fails safe. No matcher claims the example, or more than one does, and the preset is simply not offered — rather than falling back to a hardcoded twin that would drift.
- Presets are per matcher, not per subject, because that is how the manifests are written. Where the reference merges
pull|issuesinto one preset, here they are separate. \b[0-9a-f]{7,40}\b, the reference's commit-hash pattern, is carried here as\b(?=[0-9a-f]*[a-f])[0-9a-f]{7,40}\b. Without the letter it demands, every seven-digit number in the output is a commit — PIDs, ports, epoch seconds — and a rule that decorates everything gets turned off.- Applying a preset resets the delay and width overrides and the button suppression, but keeps custom actions: they are the one part of a rule that is unambiguously the user's own work.
- Every preset is timed through the ReDoS guard and against adversarial input at 512 and 4096 characters — measured worst 0.06 ms to check, 0.05 ms to match. A preset the guard would then refuse is a rule that silently never fires.
What this does not claim
- The source catalogue records no separate caveats for this entry. The implementation and evidence above define its scope.