Skip to content

chore(ci): retrigger on PR-body edits + tolerate markdown decoration on override line#122

Merged
luofang34 merged 1 commit intomainfrom
pr/0.1.5-ci-ergonomics
May 2, 2026
Merged

chore(ci): retrigger on PR-body edits + tolerate markdown decoration on override line#122
luofang34 merged 1 commit intomainfrom
pr/0.1.5-ci-ergonomics

Conversation

@luofang34
Copy link
Copy Markdown
Owner

Summary

Two ergonomic fixes for the cross-time-determinism gate, both
addressing friction observed in the v0.1.4 release-prep cycle.

(1) pull_request:edited trigger

The default pull_request workflow trigger is
[opened, synchronize, reopened] — body edits don't fire CI. So a
PR author who fixes a missing Override-Deterministic-Baseline:
line via gh pr edit doesn't get an auto-rerun; they have to
push an empty commit. Adding edited to the types list closes
the ceremony.

Marginal cost: full CI on every body edit. Body edits are rare
per PR (usually zero, sometimes one for a description revision)
so the cost is acceptable.

(2) Override-line tolerates markdown decoration

The lint regex ^Override-Deterministic-Baseline: .+ is line-
anchored, which rejects:

  • Override-Deterministic-Baseline: … (indented)
  • - Override-Deterministic-Baseline: … (bullet item)
  • > Override-Deterministic-Baseline: … (blockquote)

Authors who write the directive inside a markdown list (common
shape when documenting multiple overrides) currently fail the
gate. The relaxed regex ^[[:space:]>*-]*Override-... allows
these decorations.

Backticks are intentionally NOT relaxed: `Override-...`
inside prose is "talking about the directive" rather than
invoking it, and tolerating that would weaken the contract.

Spot-check

$ printf '%s\n' \
    'Override-Deterministic-Baseline: raw' \
    '  Override-Deterministic-Baseline: indented' \
    '- Override-Deterministic-Baseline: bullet' \
    '> Override-Deterministic-Baseline: blockquote' \
    '## Override-Deterministic-Baseline (heading)' \
    '`Override-Deterministic-Baseline:` (prose)' \
  | grep -nE '^[[:space:]>*-]*Override-Deterministic-Baseline: .+'
1:Override-Deterministic-Baseline: raw
2:  Override-Deterministic-Baseline: indented
3:- Override-Deterministic-Baseline: bullet
4:> Override-Deterministic-Baseline: blockquote

Lines 5-6 (heading and prose) correctly do not match.

Trace

No new SYS / HLR / LLR / TEST entries — refines existing
cross-time gate (LLR-045) without changing the rule's semantic.
No floor changes.

Test plan

  • cargo fmt --check
  • cargo clippy --workspace --all-targets -- -D warnings
  • cargo test --workspace --all-targets
  • RUSTDOCFLAGS='-D missing_docs -D rustdoc::broken_intra_doc_links' cargo doc --workspace --no-deps
  • cargo build --release --workspace
  • bash -n scripts/deterministic-baseline-override-lint.sh (shell syntax)
  • Spot-check of relaxed regex on six representative inputs
  • cargo run -p cargo-evidence -- evidence trace --validate -> VERIFY_OK
  • cargo run -p cargo-evidence -- evidence floors --format=jsonl -> FLOORS_OK

🤖 Generated with Claude Code

…on override line

Two ergonomic fixes for the cross-time-determinism gate, both
addressing friction observed in the v0.1.4 release-prep cycle.

(1) `pull_request:edited` trigger.

The default `pull_request` workflow trigger is
[opened, synchronize, reopened] — body edits don't fire CI. So a
PR author who fixes a missing `Override-Deterministic-Baseline:`
line via `gh pr edit` doesn't get an auto-rerun; they have to
push an empty commit. Adding `edited` to the types list closes
the ceremony.

The marginal cost is full CI on every body edit. Body edits are
rare per PR — usually zero, sometimes one for a description
revision — so the cost is acceptable. PR-comment edits are a
different event class (`issue_comment`, not in the types list)
and don't trigger.

(2) Override-line tolerates markdown decoration.

The lint regex `^Override-Deterministic-Baseline: .+` is
line-anchored, which rejects:

  - `  Override-Deterministic-Baseline: …` (indented)
  - `- Override-Deterministic-Baseline: …` (bullet item)
  - `> Override-Deterministic-Baseline: …` (blockquote)

Authors who write the directive inside a markdown list (a common
shape when documenting multiple overrides) currently fail the
gate. The relaxed regex `^[[:space:]>*-]*Override-...` allows
these decorations.

Backticks are intentionally NOT relaxed: `` `Override-...` ``
inside prose is "talking about the directive" rather than
invoking it, and tolerating that would weaken the contract. The
test cases in the commit message of the PR document the
exact decoration set.

No trace seed: this refines existing surface (cross-time gate
LLR-045) without changing the rule's semantic.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@luofang34 luofang34 merged commit c7b6ac7 into main May 2, 2026
15 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.

2 participants