Home

boring / v2

publicBoring-Software-Inc/v2
Overview Code History Branches Pull requestsIssuesInsights Campfire Docs
main
HomeOverview Code PRsIssues

feat(core): rules declare a remedy + optional waitHint (§12)

4 months ago

ff0fa8f
Authored
grim7/12/2026, 12:08:15 PM
defineRule gains a REQUIRED remedy ("revise" | "wait" | "appeal") and an optional
waitHint(evidence) — rule-owned and versioned with the rule, same shape as
publicEvidence/summarize. remedy answers "what can the contributor DO about this
block?" and will drive the PR comment's "how do i fix this?" body; making it
required means a new rule can't ship without deciding (the compiler + a registry
table test enforce it).

- account-age = wait (+waitHint), min-merged-prs = wait, pr-rate-limit = wait;
  max-files-changed, english-only, crypto-address, honeypot, profile-readme,
  ai-review = revise.
- waitHint emits a DERIVED, threshold-free remainder ("it clears in 5 days" =
  minDays - accountAgeDays), never the configured threshold. only account-age
  has a derivable one; pr-rate-limit omits it (no per-request timestamps in
  evidence, so the window remainder can't be derived without leaking windowHours).
- extended the leak-invariant test: a waitHint's output names no config-schema
  key (proven with wait-triggering evidence).

not a version bump — remedy is presentation metadata, changes no verdict or
evidence, so @1 runs stay interpretable (replay unchanged: 2 flips, same causes).
summarize one-liners unchanged here; the wording lands with the copy.

Checks: biome clean, typecheck 0, boundaries ok, 200 tests, replay 2 flips.

Parent3ffc578

15 files changed
  • DECISIONS.md+25−0
  • all-summaries.md+12−0
  • packages/core/src/rules/account-age.ts+8−0
  • packages/core/src/rules/ai-review/rule.ts+2−0
  • packages/core/src/rules/crypto-address.ts+2−0
  • packages/core/src/rules/define.test.ts+2−0
  • packages/core/src/rules/define.ts+16−0
  • packages/core/src/rules/english-only.ts+2
−0
  • packages/core/src/rules/honeypot.ts——
  • packages/core/src/rules/max-files-changed.ts+2−0
  • packages/core/src/rules/min-merged-prs.ts+2−0
  • packages/core/src/rules/pr-rate-limit.ts+4−0
  • packages/core/src/rules/profile-readme.ts+2−0
  • packages/core/src/rules/public-view.test.ts+30−0
  • packages/core/src/rules/registry.test.ts+9−2