Skip to content

feat(claw): claw/t27f annotations -- one check-run annotation per row that is not sealed, at most 50 per request (Closes #10298) - #10299

Merged
gHashTag merged 3 commits into
masterfrom
claw-t27f-annotations
Oct 18, 2026
Merged

gHashTag merged 3 commits into
masterfrom
claw-t27f-annotations

Conversation

@gHashTag

Copy link
Copy Markdown
Owner

Closes #10298. Refs #10268, #10280 (row check-annotations).

The claw/t27f check-run now puts its findings next to the files in the pull request diff. Every row whose verdict is not sealed becomes one check-run annotation, sent in batches of at most 50 per request: the first batch goes with the POST that creates the run, and each further batch goes with a PATCH on the same run.

What changed

  • Law, specs/claw/t27f_gate.t27. New t27f_annotations() writes one tab-separated line per annotation (path, line, level, title, message) and a --batch line after every ANNOTATIONS_PER_PATCH (50) lines.
    • Level comes from verdict_level(): notice for a neutral row, failure for a failing row, warning for a failing row in a reporting consumer (the published mirror).
    • Title is T27F seal: <verdict>. The message comes from VERDICT_TEXTS and says how to fix the spec.
    • Unreadable input, an empty path or no room in the output writes nothing.
    • Five new checks in the spec cover these cases, including 100 and 101 rows to show where the batch cut falls.
  • Pins, specs/claw/t27f_gate_pins.t27. VERDICT_TEXTS, LEVEL_NAMES and MARK_BATCH are pinned against .len, like the existing tables.
  • Generated and sealed. gen/c/claw/t27f_gate.c was regenerated by t27c gen-c on the Railway lab, and claw_ClawT27fGate.json and claw_ClawT27fGatePins.json were remade.
  • Workflow, claw-t27f job in gate-topology.yml. The C harness gains an a mode, and the job runs it next to the report. jq turns the two outputs into one compact JSON object per request, and the job POSTs the first and PATCHes the rest. Same three-scope installation token as before: checks write, pull_requests read, contents read.
  • Shrink offset. Deleted scripts/gen_w381_lean.py, a spent wave generator; its port specs/port/scripts/gen_w381_lean.t27 landed in Port scripts/gen_w381_lean.py (Python, 8 functions) to specs/port/scripts/gen_w381_lean.t27 #6910, and nothing references the script.

Checked on the Railway lab, on master 3e3e2c7

  • gen-c: 0 UNRESOLVED, and the committed C file matches a fresh regeneration.
  • t27f_gate 28 checks and t27f_gate_pins 4 checks, 0 vacuous. The C self-check of the generated file holds.
  • Every claw spec that has a seal verifies, and seal coverage is OK.
  • The workflow's own harness and jq line, extracted from the YAML:
    • stale seal: 1 failure annotation;
    • 120 unsealed specs: POST with 50, then PATCH with 50 and PATCH with 20;
    • all sealed: 0 annotations;
    • unreadable scope: failure with 0 annotations.
      Every body is a JSON object, and only the POST carries name, head_sha, status and conclusion.
  • Own-language gate and foreign budget exit 0 against master. The tri mention ceiling still equals 140. The duplicate-body report is identical to master's: 8 known entries, none added here.
  • Both lefthook hooks ran on every commit.

🤖 Generated with Claude Code

gHashTag and others added 3 commits October 18, 2026 14:48
… that is not sealed, 50 per request (Refs #10268)

- specs/claw/t27f_gate.t27: t27f_annotations writes path, line, level,
  title and message per row that is not sealed, with a --batch line
  after every 50 (GitHub's per-request limit; github_surface.t27 row
  check-annotations). notice for neutral rows, failure for failing ones,
  warning for a failing row in the reporting repository. Unreadable
  input and annotations that do not fit write nothing; the summary
  stays the place every finding is shown.
- gate-topology.yml claw-t27f: the harness gains mode a; the job posts
  the first batch with the check-run and PATCHes the rest onto it, with
  the same three-scope token.
- gen/c/claw/t27f_gate.c regenerated; ClawT27fGate seal remade.
- Own-language offset: scripts/gen_w381_lean.py deleted; its port
  specs/port/scripts/gen_w381_lean.t27 landed in #6910 and nothing
  runs the python.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…n (Refs #10268)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… pins; post compact bodies (Refs #10268)

- gen/c/claw/t27f_gate.c regenerated with t27c gen-c on the Railway lab
  (0 UNRESOLVED), so the spec-guards freshness diff stays empty.
- claw_ClawT27fGate.json and claw_ClawT27fGatePins.json resealed after the
  annotations law and the new pins; all five claw seals verify.
- gate-topology.yml: jq -c instead of `| tojson`. tojson printed every body as
  a quoted JSON string, which gh api --input would have sent as a string, not
  an object. Each body is now one compact object per line: the POST carries
  name, head_sha, status, conclusion and the first 50 annotations, every
  PATCH carries output with the next 50.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@gHashTag
gHashTag enabled auto-merge (squash) October 18, 2026 07:55
@github-actions

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-10-18 07:55:04 UTC

Summary

Status Count
Total Open PRs 50
PRs with Failing Checks 49
PRs with All Checks Green 1
READY 0
FAILING 49
PENDING 0
NO CHECKS YET 0

These columns do not partition: 0 + 49 + 0 + 0 = 49, and there are 50 open PRs. A PR is being counted twice or not at all.

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=0f8c66b9ed0e != manifest seal=87e5cbd3ad94.
    The committed NMSE numbers were certified against an older compiler.rs.
    Run scripts/reseal-check.sh locally for the two-step reseal command (advisory; not a merge gate).

@gHashTag
gHashTag merged commit 52ecfc7 into master Oct 18, 2026
28 of 31 checks passed
gHashTag added a commit that referenced this pull request Oct 18, 2026
…loses #10303)

Master's cli-tri step "No census moved without saying so" has been red
since 834f258, because #10283 moved two pinned censuses without
re-blessing them. That was my miss. Re-blessed with `tri census pin
--bless` on the Railway lab, from master dc4ea95.

What moved, and why:

- gates shell, jobs 88 -> 89: #10283 added the claw-t27f job to
  gate-topology.yml.
- gates shell, run steps 314 -> 316 (runner-named 293 -> 295): the
  claw-t27f job's steps, as of #10299, which made the check-run POST plus
  one PATCH per further annotation batch.
- gates quiet, quiet-shape steps 32 -> 33, file-existence guards 9 -> 10,
  variable-in-path 6 -> 7, named-but-not-quiet 200 -> 204: the same job.s
  steps. No other workflow changed since the last bless, so every moved
  line comes from gate-topology.yml

No other workflow changed between the last bless (290ff17, #10172) and
dc4ea95. `tri census pin --gate` exits 0 after the re-bless.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
gHashTag added a commit that referenced this pull request Oct 18, 2026
…loses #10303)

Master's cli-tri step "No census moved without saying so" has been red
since 834f258, because #10283 moved two pinned censuses without
re-blessing them. That was my miss. Re-blessed with `tri census pin
--bless` on the Railway lab, from master dc4ea95.

What moved, and why:

- gates shell, jobs 88 -> 89: #10283 added the claw-t27f job to
  gate-topology.yml.
- gates shell, run steps 314 -> 316 (runner-named 293 -> 295): the
  claw-t27f job's steps, as of #10299, which made the check-run POST plus
  one PATCH per further annotation batch.
- gates quiet, quiet-shape steps 32 -> 33, file-existence guards 9 -> 10,
  variable-in-path 6 -> 7, named-but-not-quiet 200 -> 204: the same job's
  steps. No other workflow changed since the last bless, so every moved
  line comes from gate-topology.yml.

No other workflow changed between the last bless (290ff17, #10172) and
dc4ea95. `tri census pin --gate` exits 0 after the re-bless.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
gHashTag added a commit that referenced this pull request Oct 18, 2026
…loses #10303) (#10304)

Master's cli-tri step "No census moved without saying so" has been red
since 834f258, because #10283 moved two pinned censuses without
re-blessing them. That was my miss. Re-blessed with `tri census pin
--bless` on the Railway lab, from master dc4ea95.

What moved, and why:

- gates shell, jobs 88 -> 89: #10283 added the claw-t27f job to
  gate-topology.yml.
- gates shell, run steps 314 -> 316 (runner-named 293 -> 295): the
  claw-t27f job's steps, as of #10299, which made the check-run POST plus
  one PATCH per further annotation batch.
- gates quiet, quiet-shape steps 32 -> 33, file-existence guards 9 -> 10,
  variable-in-path 6 -> 7, named-but-not-quiet 200 -> 204: the same job's
  steps. No other workflow changed since the last bless, so every moved
  line comes from gate-topology.yml.

No other workflow changed between the last bless (290ff17, #10172) and
dc4ea95. `tri census pin --gate` exits 0 after the re-bless.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
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.

claw/t27f: one check-run annotation per row that is not sealed, at most 50 per request

1 participant