Home

boring / v2

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

fix(rules): resolve custom rule names + surface skip reasons

3 months ago

bf48513
Authored
grim7/24/2026, 9:19:29 AM
custom rules rendered as bare generated refs everywhere a human reads them,
and skipped steps printed no reason at all — the invisible-failure class that
let every custom rule sit inert in prod for days.

- name resolution (run view + comment): resolve rule refs through the MERGED
  catalog — built-ins via ruleDisplayName, custom refs via the repo's stored
  name. resolved once server-side in run-view.ts and set as `ruleName` on the
  step (the :resume-label pattern), so the run page and the pure markdown
  serializer both read it with no per-surface resolver. the PR comment resolves
  custom names + evidence in buildCommentReasons the same slot summarize fills.
- skip reasons: withPublicProjection surfaces a skipped step's reason into the
  public summary — for custom AND built-in, one place, no branch. sanitized:
  operational reasons pass through, bug-class ones (a thrown rule, a schema
  error, the muzzle) collapse to a generic line so a stack trace never reaches
  a contributor (§10). the verbatim reason stays on the gated output.
- custom evidence: already wired (customRuleSummary in withPublicProjection);
  now fires for evaluated custom rules once the worker redeploys.

§10 holds: public shows the observed value, never the configured threshold.
custom and built-in go through the same path. evaluator + rule model untouched.
built-in comment/markdown goldens unchanged (built-ins resolve identically).

Parent574017b

10 files changed
  • apps/web/src/components/runs/step-card.tsx+3−1
  • apps/web/src/lib/run-markdown.test.ts+22−0
  • apps/web/src/lib/run-markdown.ts+2−1
  • apps/web/src/lib/runs.functions.ts+4−0
  • apps/web/src/lib/server/run-view.ts+15−0
  • apps/worker/src/jobs/comment-reasons.test.ts+61−0
  • apps/worker/src/jobs/comment-reasons.ts+19−3
  • apps/worker/src/jobs/public-skip-reason.test.ts
+39
−0
  • apps/worker/src/jobs/resume-run.ts+26−3
  • apps/worker/src/jobs/run-workflows.ts+41−10