Skip to content

docs(mem): merge-side board automation fires on Closes, overshooting to Done (CLOUD-61) - #131

Merged
wenzowski merged 1 commit into
mainfrom
claude/cloud-61-severity-model-95odsj
Aug 8, 2026
Merged

wenzowski merged 1 commit into
mainfrom
claude/cloud-61-severity-model-95odsj

Conversation

@wenzowski

Copy link
Copy Markdown
Contributor

Follow-up to #129 (CLOUD-61): record the board-states measurement that a PR body carrying Closes CLOUD-<n> makes the tracker integration complete the issue on merge — skipping In Review while the release has not shipped. The memory now says: Refs:/plain mentions in PR bodies, never Closes, and check the state after landing; the fix is a hand-move back to In Review.

Memory-only change; no code.

🤖 Generated with Claude Code

https://claude.ai/code/session_01KUkBWTAnsa1aMSaSoHzAYZ

@linear-code

linear-code Bot commented Aug 7, 2026 •

Copy link
Copy Markdown
CLOUD-61 Adopt cargo-deny's severity model

Why
Rule severity should follow the explicit deny, warn, allow model with defaults pinned per field and scope modeled separately.

Acceptance

  • Every rule in committed config has an explicit default
  • Scope and severity use separate keys
  • Schema conformance is tested

Refinement — Ready (sole owner of the severity model, reconciled with its consumers)

This issue owns the severity model in full, so no other issue re-defines it (one source, no drift). Concretely it introduces:

  • the severity vocabulary — a deny / warn / allow enum (mapping to the finding severities the exit contract and fail_on_warning consume);
  • the scope ≠ severity key separation (two independent keys, never conflated);
  • the explicit-defaults discipline — every committed rule must set a default; defaults are pinned per field with no implicit fallback (cargo-deny's actual distinctive contribution), enforced by a schema-conformance test.

Consumers (they use this type; they do not redefine it):

  • CLOUD-48 (declarative rule table) — each rule row carries a severity typed here and a separate scope; blocked by this issue.
  • CLOUD-49 (fail_on_warning) — promotes the warn value defined here; blocked by this issue.
  • CLOUD-117 (exec output predicates) — related; an exec output match always fails and is not a warn consumer, but shares this vocabulary for reporting.

Moved to Phase 2 (was Phase 3) and raised to High: it is a foundation the Phase 2 rule table and fail_on_warning both sit on, so it must land before them, not after. Independent of the check runner (CLOUD-47) — it is config-schema + resolution, testable without running a check — so it can proceed in parallel with CLOUD-47. It does depend on the batten.toml loader (CLOUD-29) for the typed-config plumbing.

Acceptance (sharpened to computable form):

  • The severity enum and a separate scope key exist in the rule schema; a config that conflates them (severity value in the scope key or vice-versa) is a usage error (exit 2), asserted by test.
  • A committed rule omitting its severity default is a usage error (exit 2) — no implicit fallback — asserted by test.
  • Schema conformance (every rule has an explicit, per-field-pinned default) is checked by a test over the compiled binary.
  • The enum's serialization is byte-stable (§6).

Review in Linear

@wenzowski
wenzowski marked this pull request as ready for review August 7, 2026 23:37
@wenzowski

Copy link
Copy Markdown
Contributor Author

/fast-forward

@wenzowski

Copy link
Copy Markdown
Contributor Author

Triggered from #131 (comment) by @​wenzowski.

Trying to fast forward main (b6ba42c) to claude/cloud-61-severity-model-95odsj (dde6919).

Target branch (main):

commit b6ba42c50b2bb87ab2cea73550e429bc856f2eca (HEAD -> main, tag: v0.0.19, origin/main)
Author: Alec Wenzowski <alec@button.is>
Date:   Fri Aug 7 16:36:02 2026 -0700

    chore: release v0.0.19

Pull request (claude/cloud-61-severity-model-95odsj):

commit dde69190b745f5486c3ceefba18b75a6711dc3ea (pull_request/claude/cloud-61-severity-model-95odsj)
Author: Claude <noreply@anthropic.com>
Date:   Fri Aug 7 23:36:25 2026 +0000

    docs(mem): merge-side board automation fires on `Closes`, overshooting to Done
    
    Measured on CLOUD-61 / #129: a PR body carrying `Closes CLOUD-<n>` has the
    integration complete the issue on merge, skipping In Review while the release
    has not shipped. Record the rule: Refs/plain mentions in PR bodies, never
    Closes, and check the state after landing.
    
    Refs: CLOUD-61
    
    Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_01KUkBWTAnsa1aMSaSoHzAYZ

Can't fast forward main (b6ba42c) to claude/cloud-61-severity-model-95odsj (dde6919). main (b6ba42c) is not a direct ancestor of claude/cloud-61-severity-model-95odsj (dde6919). Branches appear to have diverged at cbe5228:

* dde69190b745f5486c3ceefba18b75a6711dc3ea docs(mem): merge-side board automation fires on `Closes`, overshooting to Done
| * b6ba42c50b2bb87ab2cea73550e429bc856f2eca chore: release v0.0.19
|/  
* cbe52289fee1f78b061d05a4ab0aff50f5c71d00 feat(rules): adopt cargo-deny's severity model — deny/warn/allow per rule

commit cbe52289fee1f78b061d05a4ab0aff50f5c71d00
Author: Claude <noreply@anthropic.com>
Date:   Fri Aug 7 23:30:22 2026 +0000

    feat(rules): adopt cargo-deny's severity model — deny/warn/allow per rule
    
    Wire the CLOUD-168 taxonomy's RuleSeverity into the rule schema as a
    required per-rule `severity` key: explicit on every committed rule, no
    implicit fallback — omission is a usage error (exit 2). Add a separate
    `scope` key (RuleScope, pinned per-field default "tree") whose
    vocabulary never conflates with severity's: a token from one axis in
    the other key is refused at parse time, never reinterpreted.
    
    The exit contract now consumes the axis, derived through the severity
    table rather than name-matched: a deny finding exits 1, a warn finding
    is reported without failing the run (promotion is --fail-on-warning's
    job, CLOUD-49), an allow rule is configured off — validated but never
    matched, and never spawned. Severity does not change which surface
    admits a rule: check still refuses spawning kinds at every severity.
    
    Committed configs pin both keys explicitly; conformance, conflation,
    omission, and byte-stable serialization are asserted over the compiled
    binary in tests/cli.rs.
    
    Refs: CLOUD-61
    
    Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
    Claude-Session: https://claude.ai/code/session_01KUkBWTAnsa1aMSaSoHzAYZ

Rebase locally, and then force push to claude/cloud-61-severity-model-95odsj.

…g to Done

Measured on CLOUD-61 / #129: a PR body carrying `Closes CLOUD-<n>` has the
integration complete the issue on merge, skipping In Review while the release
has not shipped. Record the rule: Refs/plain mentions in PR bodies, never
Closes, and check the state after landing.

Refs: CLOUD-61

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KUkBWTAnsa1aMSaSoHzAYZ
@wenzowski
wenzowski force-pushed the claude/cloud-61-severity-model-95odsj branch from dde6919 to 263f69a Compare August 8, 2026 02:49
@wenzowski

Copy link
Copy Markdown
Contributor Author

/fast-forward

@wenzowski
wenzowski merged commit 263f69a into main Aug 8, 2026
5 checks passed
@wenzowski
wenzowski deleted the claude/cloud-61-severity-model-95odsj branch August 8, 2026 02:50
wenzowski pushed a commit that referenced this pull request Aug 8, 2026
The previous entry blamed `Closes CLOUD-<n>` for an issue completing on
merge and prescribed `Refs:` instead. #131 falsified that: its body
carried only a plain mention and a `Refs:` trailer, and merging it
completed CLOUD-61 anyway. Opening a PR also moves the issue back to In
Progress, so the prescribed hand-move to In Review does not stick.

Replace the prescription with the check that actually decides whether
Done is true: is the commit in a tag. On CLOUD-61 it is (v0.0.19), so
Done was correct.

Refs: CLOUD-61

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KUkBWTAnsa1aMSaSoHzAYZ
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