Skip to content

A release descriptor's date follows its digests: release.cs --sbom, and land.cs's three days (#248) - #261

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

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

Conversation

@Hafeok

@Hafeok Hafeok commented Nov 10, 2026

Copy link
Copy Markdown
Owner

Completes: #248

What this changes, and why

Step 3 of the "issues are the work log" session, for #248 as corrected on 2026-11-10. It is stacked on #260, which is stacked on #259, so it lands last. Its own commits are the last four.

  • dotnet run eng/release.cs -- --sbom <version>:

    • runs eng/sbom.cs created at the current UTC day;
    • replaces the descriptor's sbom: block with its sbom.txt and sets date: to that day, in one edit;
    • then regenerates CHANGELOG.md.

    Under ADR 0224 point 2 (D3, untouched) the SBOMs are created at date, so the two now move together. Other behaviour:

    • --syft, --binary and --image pass through to eng/sbom.cs, and --out names where it writes;
    • --from <dir> takes SBOMs already written, and refuses them unless every one was created on that day;
    • a tagged version is refused, and so is a descriptor with no sbom: block;
    • --draft points at the command.
  • eng/land.cs -- N, at both steps, refuses a descriptor the head adds or changes whose date: is more than three days before the landing day (UTC), or that has no date. It prints the --sbom command.

  • docs/releases.md rule 3, amended 2026-11-10: the old text is struck through and kept, and date is now the day the digests were last written. Rule 11's "written, not typed" names --sbom.

  • ADR 0102 gets a dated amendment saying the same, because rule 3 restates 0102's line on date. It is add-only and changes no ruling (ADR 0068 point 2).

  • AGENTS.md's close-out names the command and the refusal.

  • Preview.18 keeps 2026-10-27.

What was measured

  • release.cs --sbom-fixtures tests/fixtures/release-sbom: 4 cases, 0 judged wrong.
  • land.cs --fixtures tests/fixtures/land: 12 cases, 0 judged wrong. Three are this PR's date cases: four days refused, three passing, no date refused.
  • The ci.yml step, run locally. The newest format-2 descriptor, renamed v0.0.0-sbom-rewrite and backdated to 2026-01-01 in a scratch directory, was rewritten with --sbom:
    release: …/v0.0.0-sbom-rewrite.yaml: the sbom: block rewritten, and date: 2026-11-10.
    date: 2026-11-10
         29 "created": "2026-11-10T00:00:00Z"
    ok  …/v0.0.0-sbom-rewrite.yaml's sbom lines match the 29 generated SBOM(s)
    
  • The failure path: the same descriptor checked with --created 2026-11-09:
    FAIL: …/v0.0.0-sbom-rewrite.yaml says 'nupkg: Varve.Aspire sha256:8ab6ee41…', generated 'nupkg: Varve.Aspire sha256:61ebbb43…'
    exit 1
    
  • eng/ci.cs with only licence-headers, decision-sets, release-sbom-fixtures, land-fixtures, changelog, release, status, release-fixtures, land, issue-refs and dco: all pass.

What was found

  • Nothing rewrote the sbom: block before this. The digests were pasted from sbom.txt by hand, so "release.cs sets date: whenever it rewrites the block" needed the rewrite itself.
  • The new CI step adds two SBOM generations on the Linux build job. They run without Syft. Locally each took about as long as one of "SBOMs, twice".

What is left


Checklist

  • Issue referenced: Refs #248 on each commit, and Closes #248 on the last.
  • ADR cited: ADR 0102 amended, add-only; ADR 0224 untouched.
  • Specification updated, or n/a: docs/releases.md rules 3 and 11.
  • API baseline updated, or n/a: n/a.
  • Conformance baseline updated, or n/a: n/a.
  • Tests: fixtures on every eng/ci.cs run, and an end-to-end CI step.
  • 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-248-the-descriptor-date-follows-the-digests.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 10 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>
…ogether

Under ADR 0224 point 2 the SBOMs are created at the descriptor's date, so
the two move together. --sbom runs eng/sbom.cs created at the current UTC
day (or --today), replaces the sbom: block with its sbom.txt and sets
date: to that day in one edit, then regenerates CHANGELOG.md. --from
takes SBOMs already written and refuses them unless each was created on
that day; --out says where eng/sbom.cs writes. A tagged version and a
descriptor with no sbom: block are refused. --draft points at it.

Gates: four fixtures under tests/fixtures/release-sbom/, run by eng/ci.cs's
release-sbom-fixtures job, and a ci.yml step that rewrites the newest
format-2 descriptor, renamed and backdated, in a scratch directory and
requires every SBOM created at the new date and eng/sbom.cs --descriptor
to match.

Refs #248

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

At both steps, each release descriptor the head adds or changes is judged
against the landing day (UTC): a date: more than three days earlier, or
none, is refused, printing the release.cs --sbom command that writes the
digests and the date again. Three fixtures join tests/fixtures/land/: four
days refused, three days passing, no date refused.

Refs #248

Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Emil Okkels Klein <emil@okkels-klein.dk>
docs/releases.md rule 3, amended 2026-11-10 with the old text struck and
kept, and rule 11's "written, not typed" naming release.cs --sbom. ADR 0102
gets a dated amendment, add-only, saying the same, since rule 3 restates its
line on date; no ruling changes, and ADR 0224 is untouched. AGENTS.md's
close-out names the command and land.cs's refusal.

Refs #248

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

Closes #248

Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Emil Okkels Klein <emil@okkels-klein.dk>
The three pull requests and their order, ADR 0241 and ADR 0102's
amendment, the issues opened, closed and touched, the fixture counts, the
questions for the maintainer, and #258 deferred.

Refs #257
Refs #209
Refs #248

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>
Refs #248

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

Hafeok commented Nov 10, 2026

Copy link
Copy Markdown
Owner Author

web ui bundle, attested failed at 11c35945 with MSB1009: Project file does not exist for src/Varve.WebUi.

The run used main's publish.yml, whose web UI job publishes src/Varve.WebUi. The job checks out the pull request's head, and the stack was cut from 81fba3d, before that project landed. Only this PR runs publish.yml, because only it touches eng/release.cs. #259 and #260 don't.

Fix: main was merged into #259's branch, then down the stack: #259 is now at 3b78886d, #260 at c7c27e27, and this PR at a3578a27. Both merges were clean. The ledger and process gates, land-fixtures (12 cases), release-sbom-fixtures (4) and release-fixtures pass on the merged trees.


Generated by Claude Code

Hafeok commented Nov 10, 2026

Copy link
Copy Markdown
Owner Author

Head for approval: a3578a27262b5a61a0da4ea3d8be9e200fca3b87. All 72 other checks are green or skipped, including the publish dry run and its verify what was published. The one not green is agent review, which waits on the approval. It lands after #259 and #260, in that order.


Generated by Claude Code

Hafeok and others added 2 commits November 11, 2026 13:07
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>
…entifiers allowed

The maintainer read ADR 0241 on #259 and directed it accepted on 2026-11-11. ModelNamedInTheRecordNotTheCommit, as this ADR restates it, gains accepted-by and accepted-at, its statement unchanged, and the ADR's Status line opens Accepted, as eng/release.cs reads it. Written by his delegate at his word (ADR 0239), on the top of the three pull requests that land together.

Refs #257

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 3da8929 (delegate)

@Hafeok

Hafeok commented Nov 11, 2026

Copy link
Copy Markdown
Owner Author

Pushed to this branch by the landing queue: b5277a1e and 3da8929c. The first merges main (2cad18d5); one file met, docs/adr/README.md, where main's section for ADR 0223 and this stack's for ADR 0241 were added at the same place, and both are kept. The second accepts ADR 0241's ruling at the maintainer's word of 2026-11-11 (Delegated-by, ADR 0239). #259, #260 and this pull request land as one fast-forward of this head once its checks are green. Note for the memory session: #264 also numbers its ADR 0241; whichever lands second renumbers.

This branch was successfully deployed

2 active deployments
auth-providers — 3da8929c Deployed Nov 11, 2026 by Hafeok via auth (providers) #744
gates — 3da8929c Deployed Nov 11, 2026 by Hafeok via agent review (judge) #1112
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