Skip to content

land.cs: closing trailers checked before a push and after main moves (#209) - #260

Merged
Hafeok merged 8 commits into
mainfrom
claude/dazzling-darwin-8irixp-step2
Nov 11, 2026
Merged

Hafeok merged 8 commits into
mainfrom
claude/dazzling-darwin-8irixp-step2

Conversation

@Hafeok

@Hafeok Hafeok commented Nov 10, 2026

Copy link
Copy Markdown
Owner

Completes: #209

What this changes, and why

Step 2 of the "issues are the work log" session, for #209, with the addition posted there before it was built. It is stacked on #259, whose AGENTS.md section it documents in, so it lands after #259. Until then its diff includes #259's four commits; its own are the last three.

  • eng/land.cs -- N, before a push:
    • it lists every issue a Closes, Fixes or Resolves #N trailer line in main..head closes, with its title. A trailer is recognised exactly as eng/issue-refs.cs recognises one;
    • it refuses a pull request whose Completes: line is missing, duplicated or malformed, or names an issue no pushed trailer closes;
    • text inside HTML comments doesn't count, so the template's guidance can't satisfy the check;
    • a release descriptor's own trailer counts;
    • a body it can't read is refused (exit 2), not skipped;
    • a --commit landing has no pull request, so it is only listed.
  • eng/land.cs -- N --main, after main has moved:
    • every issue a pushed trailer names must be closed. GitHub is asked again for up to a minute, because it closes issues a little after the push;
    • an issue still open is printed with its commit, and the exit is 1. GitHub unreadable is exit 2, and it says so;
    • it never closes anything.
  • The PR template opens with Completes: none, and says what the line is and that it isn't a closing keyword (issue-refs: refuse closing keywords in pull request descriptions, not only in commits #108).
  • AGENTS.md's Landing and After landing bullets name the line, the refusal and the check after landing.

What was measured

  • dotnet run eng/land.cs -- --fixtures tests/fixtures/land: 9 cases, 0 judged wrong. These are land.cs: list the issues a landing closes, and refuse a PR whose declared issue has no closing trailer #209's four, the descriptor's trailer, a malformed line, and three after landing: all closed, one still open, GitHub unreadable.
  • The failure path, proven: a pass- case copied as fail-proof.json gave
    FAIL fail-proof.json: lands
    10 cases, 1 judged wrong
    exit 1
    
  • A real dry run, dotnet run eng/land.cs -- 253 --print:
    land: the push closes:
      #251 Fleet: a writer whose first open fails never opens again until restart (Started set whatever the outcome) (058e211418db)
    land: the pull request has no `Completes:` line. Add `Completes: #N, ...` naming every issue it completes, or `Completes: none` (#209).
    exit 1
    
  • eng/ci.cs with only licence-headers, decision-sets, issue-refs, dco, land-fixtures, release-pending, changelog, release, status and land: all pass.

What was found

What is left


Checklist

  • Issue referenced: Refs #209 on each commit, and Closes #209 on the last.
  • ADR cited, or no behaviour was decided: none decided. land.cs: list the issues a landing closes, and refuse a PR whose declared issue has no closing trailer #209 is applied under 0088 and 0102.
  • Specification updated, or n/a: n/a.
  • API baseline updated, or n/a: n/a.
  • Conformance baseline updated, or n/a: n/a.
  • Tests: fixtures, through --fixtures, on every eng/ci.cs run.
  • A new gate's failure path was proven by running it: quoted above.
  • Signed off: by the commit-msg hook.
  • A traceability record exists: docs/traceability/2026-11-10-issue-209-closing-trailers-at-landing.md.
  • dotnet run eng/ci.cs passes locally: the process gates and fixtures were run; the full test pipeline is left to CI.

Generated by Claude Code

Hafeok and others added 6 commits November 10, 2026 13:29
…fier is allowed

The maintainer's ruling of 2026-10-27, which #169's gate implements,
reverses the commit-message half of ADR 0033's amendment of 2026-10-02.
A reversal is a change of meaning, so under ADR 0068 point 2 it is a
supersession: ADR 0241 supersedes that one ruling, and
ModelNamedInTheRecordNotTheCommit moves to 0241's set under its key,
filed unaccepted (ADR 0066). 0033's Status names the supersession, and
AGENTS.md (Every commit, Never) and CONTRIBUTING.md state the ruling.
The record still names the tool and the model exactly.

Refs #257
Refs #169

Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Emil Okkels Klein <emil@okkels-klein.dk>
A section after Every commit: work starts from an issue, decisions and
blockers go on it when they arise, found work is filed at once, the pull
request lists every issue it touches, closings are checked after landing,
and abandoned work is closed as not planned. As the prompt's note of
2026-11-10 asks, "the session" in Landing and After landing is whichever
session lands: the delegate lands and checks (ADR 0239), and a cloud
session posts its head, lists the issues and asks.

Refs #257

Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Emil Okkels Klein <emil@okkels-klein.dk>
The prompts, the plan's correction from an amendment to ADR 0241's
supersession, what changed and what was found (#258). The model is left
for the maintainer to fill in, as ADR 0033 provides.

Closes #257
Refs #169

Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Emil Okkels Klein <emil@okkels-klein.dk>
…in moves

At both steps land.cs lists every issue a Closes, Fixes or Resolves
trailer line in main..head closes, with its title, recognising a trailer
as eng/issue-refs.cs does. A pull request's Completes: line is required:
missing, malformed, or naming an issue no pushed trailer closes, the
landing is refused, and a body it cannot read is refused too rather than
skipped. A release descriptor's trailer is a commit's trailer, so it
counts. After --main moves main, an issue a pushed trailer names that is
still open is printed with its commit and the exit is 1; GitHub unread
is 2. It closes nothing itself. Nine fixtures under tests/fixtures/land/,
run by eng/ci.cs's land-fixtures job.

Refs #209

Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Emil Okkels Klein <emil@okkels-klein.dk>
The template opens with `Completes: none` and says what the line is and
that it is not a closing keyword (#108). AGENTS.md's Landing and After
landing bullets name the line, land.cs's refusal and its check after
main moves, so the rule and the script say the same thing.

Refs #209

Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Emil Okkels Klein <emil@okkels-klein.dk>
…landing

Closes #209
Refs #257

Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Emil Okkels Klein <emil@okkels-klein.dk>
Brings in what landed since 81fba3d, the Web UI among it, so that the
workflows main runs on the pull request find what they build.

Refs #257

Signed-off-by: Emil Okkels Klein <emil@okkels-klein.dk>
Refs #209

Signed-off-by: Emil Okkels Klein <emil@okkels-klein.dk>

Hafeok commented Nov 10, 2026

Copy link
Copy Markdown
Owner Author

Head for approval: c7c27e27d8f7d4c6605c1198a522a2e8099d4412. All 34 other checks are green or skipped; the one not green is agent review, which waits on the approval. It lands after #259.

After it lands, every open pull request needs a Completes: line before land.cs will land it. Today that is #253, #252, #247, #242, #238 and #236.


Generated by Claude Code

Hafeok added a commit that referenced this pull request Nov 11, 2026
Main is at 2cad18d. This branch is the top of three pull requests that land as one fast-forward: #259 (issues are the work log, ADR 0241), #260 (land.cs checks closing trailers) and #261 (a descriptor's date follows its digests). One file met: docs/adr/README.md, where main had added the section for ADR 0223 and this branch the section for ADR 0241 at the same place. Both are kept, 0223's first. eng/ci.cs merged by itself: main's sdk-pin jobs beside this branch's.

Refs #257
Refs #209
Refs #248

Delegated-by: Emil Okkels Klein <emil@okkels-klein.dk>
Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Emil Okkels Klein <emil@okkels-klein.dk>
@Hafeok

Hafeok commented Nov 11, 2026

Copy link
Copy Markdown
Owner Author

approve c7c27e2 (delegate)

@Hafeok
Hafeok merged commit a3578a2 into main Nov 11, 2026
35 checks passed

This branch was previously deployed

1 inactive deployment
gates — c7c27e27 Deployed Nov 10, 2026 by Hafeok via agent review (judge) #1021
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.

1 participant