Skip to content

fix(ci): clear red main checks on standards (detect, kyaml, K9, Hypatia) - #1184

Merged
hyperpolymath merged 2 commits into
mainfrom
fix/redci-cleanup
Oct 6, 2026
Merged

hyperpolymath merged 2 commits into
mainfrom
fix/redci-cleanup

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

Summary

Clears the red checks on main of hyperpolymath/standards (runs of 2026-10-06 16:47Z) with one fix for each cause. No gate is weakened: there is no continue-on-error, no ::warning:: downgrade, and no check is deleted. Branch is rebased on 0ae8b773 (#1170).

Red check Decisive log line Fix
Call CI Pipeline / Haskell (job 112389293248) Error: [Cabal-7136] There is no <pkgname>.cabal package file or cabal.project file. ci-pipeline.yml detect now counts Haskell only from a root cabal.project or root *.cabal (:(glob)*.cabal). That is the only layout cabal build accepts at the repo root. Nested cabal/stack/.hs trees (33 files here) are reported as an unsupported ecosystem, not a failed gate (standards#1161).
Call CI Pipeline / Pipeline report (112389767073) at least one gate above REALLY FAILED … (pipeline debt: 4 repos). The only failing gate was R_HASKELL Follows from the Haskell fix.
Repo self-tests / Self Test (112389488579) FAIL: block YAML fails --check — wanted exit 1 and 'is not KYAML', got exit 2; build-registry regression: 7 passed, 2 failed; Wave-3 scorecard regression: 7 passed, 2 failed scripts/kyaml-format.sh is restored to the tested implementation (df20618b). 5b56aec0 had overwritten it and swapped the exit contract that YAML-POLICY.adoc and the test pin (2 = refused, 1 = not KYAML). The registry is regenerated (next row).
Registry + topology in sync (112389131637) DRIFT: .machine_readable/REGISTRY.a2ml is stale — run 'just registry' Regenerated with the repo's own scripts/build-registry.sh. Three source_hash values changed, after the rebase on 0ae8b773. No new .a2ml file.
K9-SVC contractile validation (112389133306) ERROR K9-N001 [L2] …/valid/extension-fields.k9.ncl: … extra fields 'failure_mode_defenses', 'execution' k9_contract.ncl gets back the .. open-record tails on Signature/Metadata/Security/Pedigree/Component that #1154 dropped (a stale-base clobber). K9 spec §5.5 requires them. #1154's template wording is kept.
governance / Allowlist Preflight (112389141898) GAP swatinem/rust-cache@6323deb1… (rust-ci-reusable.yml:191,239) allowed-actions.json adds the lower-case swatinem/rust-cache@* spelling, which the live repo actions policy already allows.
scan / Hypatia Neurosymbolic Analysis (112389140065) Gate failed: 12 unfiltered finding(s) at or above 'high'. Only 1 finding was actually high (a) Exact-path ACK for the K9-S001 negative-control fixture: it must lack a pedigree. (b) apply-baseline.sh now counts only kept findings at or above the threshold in the message (the old text said 12 when 1 blocked).
governance / Validate Hypatia Baseline (112389320520) Gate failed: 12 unfiltered finding(s) at or above 'info'. Ten hardcoded_tmp findings are fixed at source with mktemp (kyaml-format.sh restore, kyaml-migrate.sh, test_kyaml_comment_preservation.sh). RE001 on k9-contractile.yml joins the existing #941 pending decision (ACK, expires_at 2026-12-22, tracking_issue #941). The K9 fixture ACK covers the last one.
Skip SonarCloud (owner item) Not touched: needs SONAR_TOKEN/project setup, which is an owner decision.

Ratchet-exception: .hypatia-baseline.json grows by 2 — RE001 k9-contractile.yml joins the #941 pending decision; the K9-S001 negative-control fixture must lack a pedigree

Closes # (no single issue; #1161 is addressed by the Haskell part)

Type of change

  • 🐛 Bug fix (non-breaking change that fixes an issue)
  • ✨ New feature: none added.
  • 💥 Breaking change: no. Callers see the Haskell change only when they bump their ci-pipeline.yml pin, and it only stops false failures.
  • 🕳️ Soundness fix: the K9 contract was rejecting spec-conformant extension fields, and the baseline gate message misreported its own count.
  • 📖 Documentation: no doc changes. The restored kyaml-format.sh now matches YAML-POLICY.adoc again.
  • 🧹 Refactor / tech debt: not the purpose.
  • ⚡ Performance: no.
  • 🔧 Build / CI / tooling

📌 New pins

Head SHA: 97238fa

None. No uses: was added or changed, actions.lock is untouched, and no lockfile or container digest changed.

How has this been verified?

All commands were run in the worktree on the rebased head:

  • bash scripts/run-shell-test-suite.sh → All 77 test file(s) passed. (run before the rebase; after the rebase the targeted tests below were re-run)
  • bash scripts/tests/kyaml-format-test.sh → kyaml-format: 17 passed, 0 failed
  • bash scripts/tests/apply-baseline-test.sh → Total: 32 passed, 0 failed
  • bash scripts/build-registry.sh --check → OK: registry + topology are in sync with the file tree.
  • K9 (nickel 1.17 locally; CI uses 1.18):
    • Contract typecheck rc 0.
    • Fixtures: 6 positive, 21 negative, 0 failure(s).
    • K9_VALIDATE_LAYER=all bash .githooks/validate-k9.sh → rc 0, 14 conforming, 1 grandfathered.
    • Planted negative: the origin/main contract reproduces FAIL extension-fields.k9.ncl should conform (K9-N001).
  • bash scripts/check-allowed-actions.sh → 0 not covered (was 1 GAP).
  • Hypatia replay: the 86 findings rebuilt from the CI scan log were run through apply-baseline.sh with the new baseline.
    • Threshold high → rc 0.
    • Threshold info → only the 10 hardcoded_tmp findings remain, and this PR removes them at source (grep -n '["'"'"'/]tmp/' on the three scripts → 0 hits).
    • Against the main baseline, the same input fails at both thresholds, as CI did.
  • Haskell detect, planted cases:
    • Root foo.cabal → has_haskell=true.
    • Only sub/foo.cabal → has_haskell=false, listed as unsupported.
    • Neither → nothing.
    • This repo → has_haskell=false, Haskell (33) unsupported.
  • bash scripts/check-exemption-ratchet.sh origin/main → OK (declared) .hypatia-baseline.json: 203 -> 205 [Ratchet-exception present]
  • bash scripts/check-lock-sync.sh → actions.lock is in sync
  • gh actions-lock --verify → rc 1 with output identical to main's. It complains about the pre-existing local ./ refs in ci-pipeline.yml and signed-push-smoke.yml; nothing comes from this PR.
  • bash .githooks/docstring-scan.sh --range origin/main..HEAD --check → coverage=100.00% (3/3 functions documented).
  • Pre-commit and commit-msg hooks ran and passed on the signed commit.

Checklist

  • My commits are signed (git commit -S): git log --format=%G? shows G.
  • I ran the project's own checks/tests locally and they pass (above).
  • New files carry the correct SPDX header: no new files; every changed file keeps its existing header.
  • Docs are updated, and no public claim now overstates what the code does. kyaml-format.sh matches YAML-POLICY.adoc again, and the CI summary row now says "root cabal.project or root *.cabal".
  • I have not introduced a soundness hole. The two baseline ACKs are exact-file, carry a note, and are declared via the Ratchet-exception above.

Notes for reviewers

🤖 Generated with Claude Code

https://claude.ai/code/session_01X3hgXxWm6umMgZkjYyHnnm

- ci-pipeline: Haskell is detected only from a ROOT cabal.project or root
  *.cabal (`:(glob)*.cabal`), the only layout `cabal build` accepts at the
  repo root (Cabal-7136). Nested cabal/stack/hs trees are reported as an
  unsupported ecosystem instead of failing the gate (standards#1161).
- scripts/kyaml-format.sh: restore the tested implementation (df20618)
  that 5b56aec overwrote; YAML-POLICY.adoc and kyaml-format-test.sh pin
  exit 2 = refused, exit 1 = not KYAML (17/17 pass).
- kyaml-migrate.sh, test_kyaml_comment_preservation.sh: mktemp instead of
  hardcoded /tmp paths (10 Hypatia hardcoded_tmp findings).
- k9_contract.ncl: restore the `..` open-record tails that #1154 dropped
  from Signature/Metadata/Security/Pedigree/Component (spec 5.5), keeping
  #1154's template wording. Fixtures: 6 positive, 21 negative, 0 failures.
- allowed-actions.json: add the lower-case swatinem/rust-cache@* spelling
  the live repo policy already allows (rust-ci-reusable.yml uses it).
- apply-baseline.sh: the gate message counts kept findings AT OR ABOVE
  the threshold, not every kept finding (said 12 when 1 was high).
- .hypatia-baseline.json: ACK RE001 on k9-contractile.yml under the #941
  pending decision, and the K9-S001 negative-control fixture (exact path).
- REGISTRY.a2ml: regenerated by scripts/build-registry.sh (3 source hashes).

Ratchet-exception: .hypatia-baseline.json grows by 2 — RE001 k9-contractile.yml joins the #941 pending decision; the K9-S001 negative-control fixture must lack a pedigree

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01X3hgXxWm6umMgZkjYyHnnm
@coderabbitai

coderabbitai Bot commented Oct 6, 2026 •

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 46 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

Learn how review limits work.

Review configuration:

⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: ASSERTIVE
  • Plan: Advanced
  • Run ID: 8a857ac7-53a9-4da4-bbe7-50caf3778b85
📥 Commits

Reviewing files that changed from the base of the PR and between ebfcd98 and 39f5b0e.

📒 Files selected for processing (8)
  • .github/workflows/ci-pipeline.yml
  • .hypatia-baseline.json
  • .machine_readable/REGISTRY.a2ml
  • rhodium-standard-repositories/actions-allowlist/allowed-actions.json
  • scripts/apply-baseline.sh
  • scripts/kyaml-format.sh
  • scripts/kyaml-migrate.sh
  • scripts/test_kyaml_comment_preservation.sh
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

github-actions Bot commented Oct 6, 2026

Copy link
Copy Markdown
Contributor

K9 contract conformance

run https://github.com/hyperpolymath/standards/actions/runs/37530700195

K9 normative contract typecheck

k9_contract.ncl typechecks

K9 contract self-test

== the bash mirrors cannot drift from the normative contract ==
ok   leash_levels mirrors k9_contract.ncl
ok   core_capabilities mirrors k9_contract.ncl
ok   contract_version mirrors k9_contract.ncl
ok   schema_major mirrors k9_contract.ncl
== capability arithmetic (§8) ==
ok   capability_ok fs.read accepted
ok   capability_ok rollback.apply accepted
ok   capability_ok x-acme.gpu.alloc accepted
ok   capability_ok x-acme rejected
ok   capability_ok x-.gpu rejected
ok   capability_ok fs.delete rejected
ok   capability_ok  rejected
== the extractor ==
ok   extracts pedigree.security.leash
ok   extracts pedigree.component_type
ok   extracts pedigree.metadata.name
ok   pedigree leash is not reported as top-level leash
ok   required_capabilities for a quiet component
ok   required_capabilities follows allow_network
== the envelope strip keeps line numbers (§3.6) ==
ok   line 1 becomes a comment
ok   line count is preserved
ok   schema_version stays on line 5
== L3: signature presence is not verification (§10) ==
ok   no verifier -> K9-C001 is SKIPPED, never a pass
ok   the skip states presence does not authorise 'Hunt
ok   verifier accepts -> verdict 'Verified, no K9-C001 finding
ok   verifier refuses -> K9-C001 error, verdict 'Rejected
== the fixture runner's attribution cannot be fooled by a filename ==
ok   every extracted finding is well-formed rule+layer
ok   the rule that really fired is attributed
ok   a rule named only in the filename is NOT attributed
ok   K9-C001 is present as a skipped finding
ok   and that same finding is NOT extractable as a rejection
== no Nickel reserved word is used as an identifier ==
ok   the contract and all 27 fixtures avoid Nickel's reserved words

self-test: all assertions passed

K9 conformance fixtures

== positive controls (must pass) ==
ok   extension-capability.k9.ncl
ok   extension-fields.k9.ncl
ok   hunt-fully-granted.k9.ncl
ok   kennel-data.k9.ncl
ok   library-base.ncl
ok   yard-typed-config.k9.ncl

== negative controls (must fail, by the named rule) ==
ok   L0-K9-E001-bad-magic.k9.ncl (rejected by K9-E001 at L0)
ok   L0-K9-E002-nul-byte.k9.ncl (rejected by K9-E002 at L0)
ok   L0-K9-E003-crlf.k9.ncl (rejected by K9-E003 at L0)
ok   L0-K9-E004-no-spdx.k9.ncl (rejected by K9-E004 at L0)
ok   L0-K9-E005-unclaimed-body.k9.ncl (rejected by K9-E005 at L0)
ok   L0-K9-S012-library-with-pedigree.ncl (rejected by K9-S012 at L0)
ok   L0-K9-S014-stray-leash.ncl (rejected by K9-S014 at L0)
ok   L1-K9-S001-no-pedigree.k9.ncl (rejected by K9-S001 at L1)
ok   L1-K9-S002-wrong-major.k9.ncl (rejected by K9-S002 at L1)
ok   L1-K9-S003-todo-component-type.k9.ncl (rejected by K9-S003 at L1)
ok   L1-K9-S004-unknown-leash.k9.ncl (rejected by K9-S004 at L1)
ok   L1-K9-S005-missing-name.k9.ncl (rejected by K9-S005 at L1)
ok   L1-K9-S006-unknown-capability.k9.ncl (rejected by K9-S006 at L1)
ok   L1-K9-S007-ungranted-flag.k9.ncl (rejected by K9-S007 at L1)
ok   L1-K9-S008-hunt-signature-not-required.k9.ncl (rejected by K9-S008 at L1)
ok   L1-K9-S009-hunt-no-signature-block.k9.ncl (rejected by K9-S009 at L1)
ok   L1-K9-S010-hunt-empty-side-effects.k9.ncl (rejected by K9-S010 at L1)
ok   L1-K9-S011-recipes-at-yard.k9.ncl (rejected by K9-S011 at L1)
ok   L1-K9-S013-dangling-import.k9.ncl (rejected by K9-S013 at L1)
ok   L2-K9-N001-two-segment-version.k9.ncl (rejected by K9-N001 at L2)
ok   L2-K9-N001-wrong-field-type.k9.ncl (rejected by K9-N001 at L2)

fixtures: 6 positive, 21 negative (0 needing nickel), 0 failure(s)

K9 corpus conformance (L2)

[validate-k9] debt rhodium-standard-repositories/rsr-compliance-checklist.k9.ncl (fail) — K9-N001 K9-S004 K9-S005 K9-S014 (grandfathered; touching it makes it blocking)
[validate-k9] 14 conforming, 1 grandfathered (layer all, contract v1.0.0)

@coderabbitai

coderabbitai Bot commented Oct 6, 2026

Copy link
Copy Markdown
Contributor

Add Carrot credits or activate Agent usage billing to use Autopilot

@hyperpolymath
hyperpolymath enabled auto-merge (squash) October 6, 2026 21:04
@sonarqubecloud

sonarqubecloud Bot commented Oct 6, 2026

Copy link
Copy Markdown

@github-actions

github-actions Bot commented Oct 6, 2026

Copy link
Copy Markdown
Contributor

K9 contract conformance

run https://github.com/hyperpolymath/standards/actions/runs/37531214824

K9 normative contract typecheck

k9_contract.ncl typechecks

K9 contract self-test

== the bash mirrors cannot drift from the normative contract ==
ok   leash_levels mirrors k9_contract.ncl
ok   core_capabilities mirrors k9_contract.ncl
ok   contract_version mirrors k9_contract.ncl
ok   schema_major mirrors k9_contract.ncl
== capability arithmetic (§8) ==
ok   capability_ok fs.read accepted
ok   capability_ok rollback.apply accepted
ok   capability_ok x-acme.gpu.alloc accepted
ok   capability_ok x-acme rejected
ok   capability_ok x-.gpu rejected
ok   capability_ok fs.delete rejected
ok   capability_ok  rejected
== the extractor ==
ok   extracts pedigree.security.leash
ok   extracts pedigree.component_type
ok   extracts pedigree.metadata.name
ok   pedigree leash is not reported as top-level leash
ok   required_capabilities for a quiet component
ok   required_capabilities follows allow_network
== the envelope strip keeps line numbers (§3.6) ==
ok   line 1 becomes a comment
ok   line count is preserved
ok   schema_version stays on line 5
== L3: signature presence is not verification (§10) ==
ok   no verifier -> K9-C001 is SKIPPED, never a pass
ok   the skip states presence does not authorise 'Hunt
ok   verifier accepts -> verdict 'Verified, no K9-C001 finding
ok   verifier refuses -> K9-C001 error, verdict 'Rejected
== the fixture runner's attribution cannot be fooled by a filename ==
ok   every extracted finding is well-formed rule+layer
ok   the rule that really fired is attributed
ok   a rule named only in the filename is NOT attributed
ok   K9-C001 is present as a skipped finding
ok   and that same finding is NOT extractable as a rejection
== no Nickel reserved word is used as an identifier ==
ok   the contract and all 27 fixtures avoid Nickel's reserved words

self-test: all assertions passed

K9 conformance fixtures

== positive controls (must pass) ==
ok   extension-capability.k9.ncl
ok   extension-fields.k9.ncl
ok   hunt-fully-granted.k9.ncl
ok   kennel-data.k9.ncl
ok   library-base.ncl
ok   yard-typed-config.k9.ncl

== negative controls (must fail, by the named rule) ==
ok   L0-K9-E001-bad-magic.k9.ncl (rejected by K9-E001 at L0)
ok   L0-K9-E002-nul-byte.k9.ncl (rejected by K9-E002 at L0)
ok   L0-K9-E003-crlf.k9.ncl (rejected by K9-E003 at L0)
ok   L0-K9-E004-no-spdx.k9.ncl (rejected by K9-E004 at L0)
ok   L0-K9-E005-unclaimed-body.k9.ncl (rejected by K9-E005 at L0)
ok   L0-K9-S012-library-with-pedigree.ncl (rejected by K9-S012 at L0)
ok   L0-K9-S014-stray-leash.ncl (rejected by K9-S014 at L0)
ok   L1-K9-S001-no-pedigree.k9.ncl (rejected by K9-S001 at L1)
ok   L1-K9-S002-wrong-major.k9.ncl (rejected by K9-S002 at L1)
ok   L1-K9-S003-todo-component-type.k9.ncl (rejected by K9-S003 at L1)
ok   L1-K9-S004-unknown-leash.k9.ncl (rejected by K9-S004 at L1)
ok   L1-K9-S005-missing-name.k9.ncl (rejected by K9-S005 at L1)
ok   L1-K9-S006-unknown-capability.k9.ncl (rejected by K9-S006 at L1)
ok   L1-K9-S007-ungranted-flag.k9.ncl (rejected by K9-S007 at L1)
ok   L1-K9-S008-hunt-signature-not-required.k9.ncl (rejected by K9-S008 at L1)
ok   L1-K9-S009-hunt-no-signature-block.k9.ncl (rejected by K9-S009 at L1)
ok   L1-K9-S010-hunt-empty-side-effects.k9.ncl (rejected by K9-S010 at L1)
ok   L1-K9-S011-recipes-at-yard.k9.ncl (rejected by K9-S011 at L1)
ok   L1-K9-S013-dangling-import.k9.ncl (rejected by K9-S013 at L1)
ok   L2-K9-N001-two-segment-version.k9.ncl (rejected by K9-N001 at L2)
ok   L2-K9-N001-wrong-field-type.k9.ncl (rejected by K9-N001 at L2)

fixtures: 6 positive, 21 negative (0 needing nickel), 0 failure(s)

K9 corpus conformance (L2)

[validate-k9] debt rhodium-standard-repositories/rsr-compliance-checklist.k9.ncl (fail) — K9-N001 K9-S004 K9-S005 K9-S014 (grandfathered; touching it makes it blocking)
[validate-k9] 14 conforming, 1 grandfathered (layer all, contract v1.0.0)

@hyperpolymath
hyperpolymath merged commit 89d778d into main Oct 6, 2026
63 of 65 checks passed
@hyperpolymath
hyperpolymath deleted the fix/redci-cleanup branch October 6, 2026 21:06
hyperpolymath added a commit that referenced this pull request Oct 6, 2026
## Summary

Corrects the Haskell build step's comment, and its guard's error text,
in `.github/workflows/ci-pipeline.yml`. Since #1184 both describe a
detect probe that no longer exists.

#1181 and #1184 merged opposite answers to #1161:

- #1181 made the build step generate a `cabal.project` for every tracked
package, because detect counted `*.cabal` at any depth.
- #1184, merged after it, narrowed detect to a root `cabal.project` or a
root `*.cabal`. It reports nested-only Haskell as **unsupported**.

On 2026-10-06 the owner ruled that #1184's root-only detect stands. This
PR brings the build step's text into line with that ruling.

Two pieces of text were false on `main`:

- **The comment.** It said the probe "counts `*.cabal` at ANY depth" and
that narrowing it "would have hidden nested Haskell instead".
- **The `::error::` text.** It said "detected (*.hs or stack.yaml)".
Detect no longer counts either.

Closes # (none. This follows up #1161, #1181 and #1184.)

## Type of change

- [ ] 🐛 Bug fix: no behaviour changes.
- [ ] ✨ New feature: none.
- [ ] 💥 Breaking change: no. Comment and message text only.
- [ ] 🕳️ Soundness fix: no checker logic changes. The text it corrects
did misdescribe a gate.
- [x] 📖 Documentation (in-workflow comment and error text)
- [ ] 🧹 Refactor: nothing is restructured.
- [ ] ⚡ Performance: not affected.
- [x] 🔧 Build / CI / tooling (the file is the shared CI pipeline)

## 📌 New pins

Head SHA: **`949302ecfb4568295c36e6a7dfe9317f0a821ba1`**. No pins are
added or changed: no `uses:`, `actions.lock`, lockfile or digest edits.

## How has this been verified?

- `git diff --stat origin/main` → 1 file, comment and `::error::` text
only. The second commit (`949302ec`) takes CodeRabbit's point: a root
`cabal.project` listing only nested packages also turns the job on, so
the step does not always have a root package. Every changed line is a
`#` comment or the quoted `::error::` string.
- `ruby -e 'YAML.load_file(...)'` on the edited workflow parses with rc
0.
- `bash scripts/check-lock-sync.sh` → `actions.lock is in sync`. `bash
scripts/check-allowed-actions.sh` → rc 0.
- I read the new text against `main`'s detect step:
  - L159 is `N_HASKELL=$(count 'cabal.project' ':(glob)*.cabal')`.
- L232–238 probe nested Haskell as unsupported only when `N_HASKELL` is
0.
- So the `else` branch runs only with a root `*.cabal`. It then lists
`.` plus each nested package directory, which is what the new comment
says.

## Checklist

- [x] My commits are **signed** (`git commit -S`). `git log
--format=%G?` → `G`.
- [x] I ran the project's own checks/tests locally and they pass:
lock-sync and allowed-actions. The commit-msg hook accepted the message
with one length warning.
- [ ] New files carry the correct `SPDX-License-Identifier`: no new
files. The existing header is unchanged.
- [x] Docs are updated, and no public claim now overstates what the code
does. That is the whole point of this PR.
- [x] I have not introduced a soundness hole: the logic is untouched.

## Deferred red checks

Both reds already fail on `main` (`7d51f30f`). This PR does not touch
either one:

- `Registry + topology in sync`: deferred to #1161 (registry drift on
main).
- `Repo self-tests`: deferred to #1161. The failing suite is
`build-registry-test.sh`, which reports `FAIL: repository ledger
drifted`. That is the same drift.

## Notes for reviewers

- On `main`, standards' own Haskell is now skipped and listed as
unsupported. So the vendored sanctify-php (#1185) is not built here.
- Upstream sanctify-php `main` also does not compile:
`src/Sanctify/Parser.hs` line 6 is `//! verified alternatives.`. A
separate one-line upstream fix PR is being opened. Re-syncing this copy
afterwards is a later step.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

https://claude.ai/code/session_012kgrMQRhSmZMBbF9Ui1zBw

---------

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.

1 participant