Skip to content

codex-local 15: sc-lint boundary enforcement - #20

Closed
ehrvs wants to merge 2 commits into
pr/14-codecfrom
pr/15-sclint
Closed

ehrvs wants to merge 2 commits into
pr/14-codecfrom
pr/15-sclint

Conversation

@ehrvs

@ehrvs ehrvs commented Oct 16, 2026

Copy link
Copy Markdown
Collaborator

Why: a key design principle of codex-local is that sc-lint enforces crate and feature independence between the fork-owned codex-rs/local/* crates and upstream, so frequent upstream merges stay trivial. An earlier commit had replaced sc-lint with a cargo metadata check. This PR restores sc-lint.

What:

  • Adds codex-rs/sc-lint.toml and codex-rs/boundaries/ records for codex-local-{cli,models,resume}.
    • No upstream crate may depend on a local crate (allowed_dependents).
    • models and resume may only use their listed upstream crates.
    • cli may use codex-*, because it mirrors upstream cli's dependencies.
  • SCB-FEATURE-001: no local crate may set features on an upstream crate.
  • check_fork_surface.py drops its dependency-edge rule, which sc-lint now owns. It gains a coverage check: every codex-local-* crate must have a boundary record.
  • CI installs sc-lint from feat(boundary): prefix patterns in dependency allow-lists and SCB-FEATURE-001 feature-independence rule randlee/sc-lint#603, which adds prefix patterns and SCB-FEATURE-001, at rev bc19f2b. There is a TODO to switch to randlee/sc-lint@v1 once that is released.

Verified locally:

  • The lint passes with 0 findings.
  • A temporary codex-core → codex-local-models edge fails with SCB-DEPENDENCY-002.
  • A temporary features = [...] on an upstream dependency fails with SCB-FEATURE-001.
  • Fork surface is ok at 131 lines over 12 files.

Depends on: randlee/sc-lint#603.

🤖 Generated with Claude Code

https://claude.ai/code/session_01RPCzgwU247gMtjybR5v4iR

ehrvs and others added 2 commits October 16, 2026 15:53
sc-lint now owns crate/feature independence between codex-rs/local/* and
upstream (SCB-DEPENDENCY-001/002, SCB-FEATURE-001). check_fork_surface.py drops
its cargo-metadata edge rule and only checks that each codex-local-* crate has
a boundary record. CI installs sc-lint from a pinned git rev until released.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RPCzgwU247gMtjybR5v4iR
…ls-files -u

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@ehrvs

ehrvs commented Oct 16, 2026

Copy link
Copy Markdown
Collaborator Author

Superseded: merged into codex-local/main via the integration PR #21 (3908b3d).

@ehrvs ehrvs closed this Oct 16, 2026
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