From 9d6814aa1e9db99dee258e6db1939e0298017893 Mon Sep 17 00:00:00 2001 From: Rand Lee Date: Sun, 20 Sep 2026 21:05:48 -0700 Subject: [PATCH 1/4] Document release notes boundary work --- .../lint-spx.9-release-notes-boundary.md | 71 +++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 docs/plans/release-0.6.0/lint-spx.9-release-notes-boundary.md diff --git a/docs/plans/release-0.6.0/lint-spx.9-release-notes-boundary.md b/docs/plans/release-0.6.0/lint-spx.9-release-notes-boundary.md new file mode 100644 index 00000000..9399c0a5 --- /dev/null +++ b/docs/plans/release-0.6.0/lint-spx.9-release-notes-boundary.md @@ -0,0 +1,71 @@ +--- +sprint: lint-spx.9 +bead: lint-spx.9 +epic: lint-spx +status: planned +branch: docs/release-notes-0.6.0-boundary +worktree: /Users/randlee/github/sc-lint-worktrees/docs/release-notes-0.6.0-boundary +pr_target: develop +closure_type: contract +adrs: [ADR-004] +requirements: [] +--- + +# lint-spx.9 — RELEASE-NOTES-0.6.0.md: boundary fixes and graph schema 0.2.0 + +Own stack rooted on `develop` (`gh stack link --base develop`). Docs only: +`release/RELEASE-NOTES-0.6.0.md` and this record. `requirements` is empty +because no requirement is implemented; say so in the closeout. + +## Source of facts + +Every sentence added must be traceable to one of: a merged PR listed below +(`gh pr view --json title,body`), a sprint doc under +`docs/plans/release-0.6.0/`, or the code at `origin/develop`. No sentence +about behaviour that you did not read in the diff or a sprint doc. + +Merged to `develop` on 2026-09-20 since the 2026-08-30 note: + +- boundary inventory stack: #115, #168, #171, #173, #175, #176, #177, #178 +- trait identity stack: #159, #160, #163, #164 +- installer test redesign: #180 +- CI on every PR target: #182 +- orchestration tooling (`.claude/**` only, not user-facing): #166, #167, + #170, #174, #179, #181 — one line under a "Repository tooling" heading at + most; do not describe skills. + +## Deliverables + +1. `## Release`: date refreshed to the day you commit; keep the other fields. +2. `## Summary`: one added paragraph: boundary-model fixes and graph schema + `0.2.0`. +3. `## Major Changes`, new bullets (one each, with PR numbers): + - reference impl owners without graph identity collisions (#159); + - trait methods distinguished from inherent methods and qualified forwarding + edges (#160, #164); + - boundary graph `schema_version` `0.1.0` → `0.2.0` + (`crates/sc-lint-boundary/src/lib.rs:42`, #163); + - structured boundary inventory: strict forbidden-edge deserialization, + required `planning.toml`, `owner_crate_path` check, preserved edge parse + causes, Python validator parity (#115, #168, #171, #173, #175–#178). +4. `## Migration Notes`: the schema `0.2.0` rebaseline: what a consumer with a + committed `0.1.0` graph must do. Read #163's diff and the boundary docs for + the actual procedure; if none is documented, write the exact command + sequence you verified against the code and cite `file:line`. +5. `## Validation`: replace the Phase G sentence with the CI facts of the + merges: `develop` head SHA, and `gh run list --branch develop --limit 1` + status. +6. `## Follow-Up Items`: keep; add the installer ETXTBSY redesign (#180) as a + test-only change under a `## Test Infrastructure` or similar heading rather + than Major Changes. +7. Do not edit the `## Included Crates` block (generated). + +## Acceptance criteria + +- `gh stack view --json` first and last; summary in the closeout. +- PR ready for review (never draft), base `develop`, in its own stack. +- `just lint`, `git diff --check` exit 0; `gh pr checks ` counts + run id. +- `git diff --name-only` lists only the two files. +- Closeout: one line per deliverable with the fact source (PR number or + `file:line`). `status: complete`. +- Completion message, then wait for the lead's reply before closing. From 770735f62034b6bc89250b03ad22893ad62eff83 Mon Sep 17 00:00:00 2001 From: Rand Lee Date: Sun, 20 Sep 2026 21:07:57 -0700 Subject: [PATCH 2/4] Update 0.6.0 boundary release notes --- release/RELEASE-NOTES-0.6.0.md | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/release/RELEASE-NOTES-0.6.0.md b/release/RELEASE-NOTES-0.6.0.md index 01b7eb88..cef1ed75 100644 --- a/release/RELEASE-NOTES-0.6.0.md +++ b/release/RELEASE-NOTES-0.6.0.md @@ -3,7 +3,7 @@ ## Release - Version: `0.6.0` -- Date: 2026-08-30 +- Date: 2026-09-20 - Release owner: sc-lint maintainers - Approval: pending release publication approval @@ -13,6 +13,10 @@ Phase G delivers the versioned adoption kit and skill so any Rust repository can adopt sc-lint's consumer contract with one drift-detectable install, backed by a self-contained release (Python wheel runtime + archive binaries). +The release also includes boundary-model fixes for reference implementation +owners, trait-method identity, structured inventory validation, and the +`sc-lint-boundary` graph schema `0.2.0`. + ## Included Crates @@ -43,6 +47,15 @@ by a self-contained release (Python wheel runtime + archive binaries). forwarded to the managed binary; kit/repo bootstrap copies pinned LF. - Legacy `.just/lint-config.toml` fallback removed; `sc-lint.toml` is the only repo configuration. +- Reference implementation owners receive distinct graph identities (#159). +- Trait methods are distinct from inherent methods, and qualified forwarding + edges retain their trait-implementation identity (#160, #164). +- Boundary graph exports use `schema_version` `0.2.0` instead of `0.1.0` + (`crates/sc-lint-boundary/src/lib.rs:42`, #163). +- Structured boundary inventory validation rejects malformed forbidden edges, + requires `boundaries/planning.toml`, checks `owner_crate_path`, preserves + edge parse causes, and keeps the Python validator aligned with Rust + (#115, #168, #171, #173, #175–#178). ## Migration Notes @@ -52,10 +65,19 @@ by a self-contained release (Python wheel runtime + archive binaries). the Phase G consumer contract. - Source checkout contributors can continue using `cargo run` for development; consumer-facing behavior is owned by the installed `sc-lint` product. +- For a committed graph or findings export with schema `0.1.0`, discard or + migrate cached records and stored `node_ids`/edge endpoints; regenerate JSON + or Turtle with `sc-lint-boundary export-graph --root --format json` + (or `turtle`) and rebaseline consumers against `0.2.0`. No legacy ID mapping + is emitted; use implementation nodes and `contains`/`declares`/`targets` + edges rather than inferring trait ownership from method-name suffixes + (`docs/sc-lint-boundary/graph-schema.md:18-43`, #163). ## Validation -- Phase G CI passed (Test, Just lint, Release smoke, Adoption kit) Just lint and test jobs on Ubuntu, macOS, and Windows. +- `develop` head is `e2477c38857537c8bcd34cf3873ee9726ef8d12a`. +- Latest `develop` CI run `35535212640` completed successfully (Test, Just + lint, Release smoke, and Adoption kit). - Release publication order and package preflight are driven by `release/publish-artifacts.toml`. - The included-crates list above was generated from that same publish manifest. @@ -72,3 +94,9 @@ by a self-contained release (Python wheel runtime + archive binaries). - Publish the GitHub release body from this completed note after release workflow verification succeeds. + +## Test Infrastructure + +- Installer fixture tests use a hard-linked native CLI and child-process probe + writes so the test process does not hold a write descriptor for an executed + file (#180, `docs/plans/release-0.6.0/lint-spx.11-installer-exec-fixture-race.md`). From a2b5541eecbbc908cfc0d6833a72b206fbcf0640 Mon Sep 17 00:00:00 2001 From: Rand Lee Date: Sun, 20 Sep 2026 21:09:35 -0700 Subject: [PATCH 3/4] Record release notes closeout --- .../lint-spx.9-release-notes-boundary.md | 27 ++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/docs/plans/release-0.6.0/lint-spx.9-release-notes-boundary.md b/docs/plans/release-0.6.0/lint-spx.9-release-notes-boundary.md index 9399c0a5..df3b41e1 100644 --- a/docs/plans/release-0.6.0/lint-spx.9-release-notes-boundary.md +++ b/docs/plans/release-0.6.0/lint-spx.9-release-notes-boundary.md @@ -2,7 +2,7 @@ sprint: lint-spx.9 bead: lint-spx.9 epic: lint-spx -status: planned +status: complete branch: docs/release-notes-0.6.0-boundary worktree: /Users/randlee/github/sc-lint-worktrees/docs/release-notes-0.6.0-boundary pr_target: develop @@ -69,3 +69,28 @@ Merged to `develop` on 2026-09-20 since the 2026-08-30 note: - Closeout: one line per deliverable with the fact source (PR number or `file:line`). `status: complete`. - Completion message, then wait for the lead's reply before closing. + +## Closeout + +- Deliverable 1: `release/RELEASE-NOTES-0.6.0.md:5` refreshes the release date + to `2026-09-20`; source: task date and PR #189. +- Deliverable 2: `release/RELEASE-NOTES-0.6.0.md:13-16` adds the boundary and + graph-schema summary; sources: PRs #159, #160, #163, #164 and boundary + sprint docs. +- Deliverable 3: `release/RELEASE-NOTES-0.6.0.md:36-49` adds the four major + change bullets with PR/file sources; sources: PRs #115, #159, #160, #163, + #164, #168, #171, #173, #175–#178. +- Deliverable 4: `release/RELEASE-NOTES-0.6.0.md:60-69` records the `0.1.0` + to `0.2.0` rebaseline sequence; source: `docs/sc-lint-boundary/graph-schema.md:18-43`, + PR #163. +- Deliverable 5: `release/RELEASE-NOTES-0.6.0.md:73-76` records develop head + `e2477c38857537c8bcd34cf3873ee9726ef8d12a` and successful run + `35535212640`; source: `git rev-parse origin/develop` and `gh run list`. +- Deliverable 6: `release/RELEASE-NOTES-0.6.0.md:95-99` records installer + fixture redesign PR #180; source: PR #180 and the accepted installer sprint + record. +- Deliverable 7: `git diff --name-only origin/develop...HEAD` lists only + `release/RELEASE-NOTES-0.6.0.md` and this sprint doc; source: command output. +- PR #189 is ready, based on `develop`, and `gh stack view --json` reports one + layer with `needsRebase=false`; local `git diff --check` is clean. CI run + details are recorded after the final push. From 12b2d79079169244ad7171738209254cef1828e8 Mon Sep 17 00:00:00 2001 From: Rand Lee Date: Sun, 20 Sep 2026 21:11:28 -0700 Subject: [PATCH 4/4] Record release notes validation --- .../plans/release-0.6.0/lint-spx.9-release-notes-boundary.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/plans/release-0.6.0/lint-spx.9-release-notes-boundary.md b/docs/plans/release-0.6.0/lint-spx.9-release-notes-boundary.md index df3b41e1..035eee0a 100644 --- a/docs/plans/release-0.6.0/lint-spx.9-release-notes-boundary.md +++ b/docs/plans/release-0.6.0/lint-spx.9-release-notes-boundary.md @@ -92,5 +92,6 @@ Merged to `develop` on 2026-09-20 since the 2026-08-30 note: - Deliverable 7: `git diff --name-only origin/develop...HEAD` lists only `release/RELEASE-NOTES-0.6.0.md` and this sprint doc; source: command output. - PR #189 is ready, based on `develop`, and `gh stack view --json` reports one - layer with `needsRebase=false`; local `git diff --check` is clean. CI run - details are recorded after the final push. + layer with `needsRebase=false`; `just lint`, `just test`, and + `git diff --check` exit 0. PR #189 CI run `35559945150` was observed as + `0 pass / 12 pending / 0 fail`.