Skip to content

Adopt the sc-lint 0.8.2 consumer runner; delete the atm-core lint workarounds - #2296

Merged
randlee merged 2 commits into
fix/bg-6-sclint082-boundary-loaderfrom
fix/bg-6-sclint082-runner
Oct 30, 2026
Merged

randlee merged 2 commits into
fix/bg-6-sclint082-boundary-loaderfrom
fix/bg-6-sclint082-runner

Conversation

@randlee

@randlee randlee commented Oct 29, 2026 •

Copy link
Copy Markdown
Owner

Summary

sc-lint 0.8.2 (republish of 0.8.1) now runs atm-core's lint suite; every workaround whose sc-lint issue shipped is deleted, the two that wait on randlee/sc-lint#198 stay with their markers.

Marker verdicts

Marker Issue 0.8.2 delivers? Action
.just/run_lint.py:123 (parallel keep-going scheduler, serial all-target model) #195 (open), #196 (closed) yes: sc-lint lint ci --consumer runs steps in parallel, fail-slow, with profiles and --platform-scope deleted run_lint.py + tests/test_run_lint.py; just lint is the kit recipe
.just/sc_lint_binary.py:10 #388 (closed) yes: bootstrap.py exec -- sc-lint ... deleted; run_view.py calls bootstrap.py exec
.just/lint_cargo_deny.py:2,:11 (DNS retry) #371 (closed) yes: sc_lint.lint_cargo_deny in the 0.8.2 wheel retries 3x on "could not resolve hostname" deleted + tests/test_lint_cargo_deny.py
.just/view_lines.py:2 #198 (open) / #388 sc-lint lint line-counts is the published check deleted; lines view uses it
Justfile:16 _py bridge, :33-34 sc_lint_clippy_prefix, :58-59 _sc-lint-clippy #198 (open, not delivered: "The kit does not add setup.pre or a runner.python configuration hook") no kept with markers (see "Recipes that remain" below); the former lint_cargo_deny.py dispatch of the wheel-only helpers becomes plain config steps, no recipe
.just/tests/test_bootstrap.py:574 bridge-comment assertion #198 no kept

sc-lint.toml lists every check as a direct step (the old config omitted kit-drift, template-frontmatter, sc-boundary, sc-portability, sc-runtime, which the old runner added by hand) and a ci lint profile. The four wheel-only helpers (cargo-deny, cargo-shear, manifests, codespell) are direct commands on the kit's managed interpreter, exactly as sc-lint documents them (.sc-lint/venv/bin/python -m sc_lint.<helper>); because that path is .sc-lint\\venv\\Scripts\\python.exe on Windows, each helper is three platform-tagged steps (deny-linux, deny-macos, deny-windows, ...), 48 steps in all, 40 distinct checks. No recipe was added for them (sanity round 1 finding, Rand's no-new-wrappers ruling). clippy-windows is tagged platform = "linux": just lint ci all runs it via cargo xwin on the Linux CI leg, reports it skipped/unsupported_cross_command on macOS and Windows legs, and keeps it out of a macOS developer's just lint. The macOS CI leg's redundant xwin pass is dropped (Windows leg runs native Clippy). A Linux developer's bare just lint now includes it (needs the bootstrapped cargo-xwin plus llvm-lib/nasm); the missing "CI-only step" capability is filed as randlee/sc-lint#784 (open).

No new suppressions, excludes or allowlists. Kit files (.sc-lint/bootstrap.py, .sc-lint/justfile, sc-lint.toml, installed.json) were re-rendered from install.json by the installer; kit-drift passes.

Recipes that remain in the Justfile for randlee/sc-lint#198 (all pre-existing, all marked)

  • _py (Justfile:16): runs repo Python checks on .bootstrap-venv, the PyO3-compatible interpreter; the kit offers no runner.python hook, so without it every just _py <script> step would run on PATH python3.
  • sc_lint_clippy_prefix + _sc-lint-clippy (Justfile:33-34, :58-59): Clippy must see the same interpreter for PyO3 builds; the kit has no setup.pre.
  • Nothing new: _sc-lint-py from the first push was removed in round 2.

Parity (published check before/after on the same sources)

Lint-subject sources (Rust, Python, docs) are identical between the base and this layer; only lint infrastructure changed.

Before, old runner .just/run_lint.py ci all at 0322873 (macOS rand-m5):

lint passed: 40 check(s) succeeded   (553.5 s; clippy-windows via xwin 110.1 s)

After, kit runner just lint ci all --json on the first push (after-ci-all.json, exit 0):

lint.ci.consumer: status pass, step_count 40, 39 pass
clippy-windows: {"host":"macos","platform":"linux","status":"skipped","reason":"unsupported_cross_command"}

Round 2 (helpers as per-platform steps) on macOS: just lint ci all passes 40 steps and reports the 8 linux/windows helper variants plus clippy-windows as skipped/unsupported_cross_command (see the round-2 commit's PR comment).
Post-rebase full just lint on d80ba4f (host scope): lint.ci.consumer: pass (39 steps), exit 0 (557 s wall, measured while the Python test modules ran concurrently on the same host, so not a timing sample).

sc-lint lint line-counts (binary) vs the deleted module route report the same limits (prod<=1000) and both pass. No check is lost: all 40 before-names appear in the after step list, plus the five the old config never listed.

ANC-004 timing (just lint, host scope, 39 steps, same host, three runs each)

run 1 run 2 run 3 median
before (run_lint.py, base 0322873) 332.8 s 394.5 s 386.6 s 386.6 s
after (kit runner, this tree) 381.1 s 428.0 s 347.6 s 381.1 s

Median 1.4 % faster; the ranges overlap, so this is parity within run-to-run noise, not a measured speedup. The long poles (identities ~308 s, pytests ~316 s) are the same single steps under both runners.

Issue states (ANC-020)

Deliverables

  1. Deleted .just/run_lint.py, .just/sc_lint_binary.py, .just/lint_cargo_deny.py, .just/view_lines.py and their tests (test_run_lint.py, test_lint_cargo_deny.py); feat: add qa-triage agent for per-finding sweep across worktrees #195/fix: docs/config cleanup — .triage gitignore, Q.7/Q.8 plan, wording fixes #196/docs: rename cross-host smoke planning to phase AB #388/fix: complete v1.2.0 publish manifest — all 7 crates + publish=false guards #371 delivered by sc-lint 0.8.2.
  2. sc-lint.toml / .sc-lint/install.json: 40 checks as direct steps (48 step entries: the four wheel-only helpers are platform-tagged per OS) + ci lint profile; clippy-windows tagged platform = "linux"; kit files re-rendered, kit-drift clean.
  3. Justfile: kit lint *profile recipe active (duplicate override removed); _py, sc_lint_clippy_prefix, _sc-lint-clippy kept with process: encode Phase R post-mortem RBP gate policy in orchestration skills #198 markers; no new recipe (the round-1 _sc-lint-py was removed).
  4. .just/run_view.py lines view via bootstrap.py exec -- sc-lint lint line-counts (docs: rename cross-host smoke planning to phase AB #388); tests updated (test_run_view, test_bootstrap, test_lint_boundaries, test_ci_scope, test_py_recipe).
  5. CI (ci.yml) runs the kit ci all profile; log-upload and clippy-diagnostics steps removed; scripts/validate_release.py fallback, print_help.py, lint-suite-prd.md, architecture.md, release-preflight-checklist.md, ADR-054 updated.
  6. Gaps filed upstream: Consumer lint: no way to keep a step out of a bare just lint (CI-only / profile-only steps) sc-lint#784 (scope-only steps); comments on feat: add qa-triage agent for per-finding sweep across worktrees #195 and process: encode Phase R post-mortem RBP gate policy in orchestration skills #198; sent to team-lead@sc-lint (ANC-020).

Bead: atm-phase-bg.adopt-081-runner

Generated by fenix@atm-dev claude:fable

🤖 Generated with Claude Code

@randlee

randlee commented Oct 29, 2026

Copy link
Copy Markdown
Owner Author

Round 2 (bf500cd, _sc-lint-py removed; helpers as per-platform direct steps) on macOS rand-m5, sc-lint lint ci --consumer --profile ci --platform-scope all --json:

status pass, step_count 48: 39 pass, 9 skipped (unsupported_cross_command)
skipped: clippy-windows, deny-linux, deny-windows, manifests-linux, manifests-windows,
         shear-linux, shear-windows, spell-linux, spell-windows

just lint deny-macos|shear-macos|manifests-macos|spell-macos: each lint.ci.consumer: pass (1 steps). plugins/sc-lint/install.py . --dry-run exit 0. Touched test modules: test_py_recipe 1 OK, test_bootstrap 42 OK, test_lint_boundaries 73 OK. Recipes left in the Justfile for randlee/sc-lint#198: _py, sc_lint_clippy_prefix, _sc-lint-clippy (all pre-existing, all marked); no new recipe.

randlee and others added 2 commits October 29, 2026 13:43
…karounds

sc-lint 0.8.2 ships the parallel keep-going consumer runner (#195/#196),
`bootstrap.py exec` (#388) and the cargo-deny DNS retry (#371), so the
atm-core workarounds for them go: .just/run_lint.py, sc_lint_binary.py,
lint_cargo_deny.py, view_lines.py and their tests. sc-lint.toml now lists
every check as a direct step (plus kit-drift, template-frontmatter and the
three sc-* analyzers the old runner never listed) and a `ci` lint profile;
`just lint` is the kit recipe. clippy-windows is tagged platform=linux so
`just lint ci all` runs it on the Linux CI leg only. Views call
`bootstrap.py exec -- sc-lint lint line-counts`.

the wheel-only helper dispatch (`_sc-lint-py`) stay with their markers.
Scope-only steps are filed as randlee/sc-lint#784.

Bead: atm-phase-bg.adopt-081-runner

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…ecipe

Sanity round 1: the 3-line `_sc-lint-py` recipe was a new wrapper under
Rand's no-workarounds ruling. cargo-deny, cargo-shear, manifests and
codespell are now plain sc-lint.toml steps on the kit's managed
interpreter (`.sc-lint/venv/bin/python -m sc_lint.<helper>`, the
documented invocation), one platform-tagged step per OS because the
interpreter path differs on Windows. `_py`, `sc_lint_clippy_prefix` and
`_sc-lint-clippy` remain, marked for randlee/sc-lint#198.

Bead: atm-phase-bg.adopt-081-runner

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@randlee
randlee force-pushed the fix/bg-6-sclint082-runner branch from bf500cd to d70ff22 Compare October 29, 2026 20:43
@randlee
randlee changed the base branch from fix/bg-6-sclint082-exclusions to fix/bg-6-sclint082-boundary-loader October 29, 2026 20:43
@randlee

randlee commented Oct 29, 2026

Copy link
Copy Markdown
Owner Author

Rebased onto fix/bg-6-sclint082-boundary-loader (stack top), head d70ff22: full just lint (host scope) lint.ci.consumer: pass (39 steps), exit 0, 378.9 s; test_py_recipe 1 OK, test_bootstrap 42 OK, test_run_view 4 OK, test_ci_scope 2 OK, test_lint_boundaries 40 OK (lumen's slimmed module); cargo fmt --all --check ok; install.py . --dry-run exit 0. Conflicts were only the rendered installed.json hashes, resolved by re-rendering.

@randlee
randlee added this pull request to stack #2290 October 29, 2026 20:53
@randlee

randlee commented Oct 29, 2026

Copy link
Copy Markdown
Owner Author

QA FAIL: atm-phase-bg.adopt-081-runner round 1

Generated: 2026-10-29T21:53:00Z
QA bead: atm-phase-bg.adopt-081-runner-qa1 (sprint bg-6)
Branch: fix/bg-6-sclint082-runner
Reviewed commit: d70ff2241e1840a4bc2220cc811b5bc4a6c187ef
PR: #2296
Deliverables: 0/1
Findings filed: 1 blocking, 0 important, 0 minor; 0 closed as ceremony

Machine Status (JSON)

{
  "task": "atm-phase-bg.adopt-081-runner-qa1",
  "checked_bead": "atm-phase-bg.adopt-081-runner",
  "sprint": "bg-6",
  "round": 1,
  "branch": "fix/bg-6-sclint082-runner",
  "commit": "d70ff2241e1840a4bc2220cc811b5bc4a6c187ef",
  "verdict": "FAIL",
  "deliverables": {"complete": 0, "total": 1 },
  "findings": {"blocking": 1, "important": 0, "minor": 0, "ceremony": 0 }
}

Findings

Carried Findings

  • SC081-4 — open: next remediation group atm-bg-6.sc081-4-r2-fix poured successfully after orchestration repair.

Reviewers

Notes

Stack-view could not find a locally tracked phase-bg stack because historical catalog worktrees are unavailable. The mandated gh pr checks 2296 --json name,state,bucket was blocked by the repository gh-wrapper as polling-prone; no CI status is claimed. The round-2 group pour initially exposed a reviewer-name schema mismatch; the lead corrected the carried metadata and the explicitly authorized retry poured 3 beads and 2 edges.

@randlee
randlee merged commit 6ffaa97 into integrate/phase-bg Oct 30, 2026
10 checks passed
@randlee
randlee deleted the fix/bg-6-sclint082-runner branch October 30, 2026 00:35
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