Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion .rexec.toml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,12 @@ git_context = true
# Leg worktrees and orchestration state are workstation-only: mirroring them
# made rexec abort with "local source tree changed continuously" whenever a
# dispatched worker was editing in .claude/worktrees/ (2026-08-26).
exclude = [".claude/worktrees", ".workflow"]
#
# build/dist, build/release-dist, build/release-sdist are stale release
# artifacts (289 MiB) that rexec would otherwise mirror on every sync;
# build/wheel-runtime and build/release-wheel stay included because
# scripts/verify.sh:133-141 needs exactly one candidate wheel there.
exclude = [".claude/worktrees", ".workflow", "build/dist", "build/release-dist", "build/release-sdist"]

[tools]

Expand Down
11 changes: 8 additions & 3 deletions src/project_standards/package_contract/projection.py
Original file line number Diff line number Diff line change
Expand Up @@ -183,9 +183,11 @@ def _finding(code: str, plan: ProjectionPlan, path: Path, message: str) -> Packa
)


def projection_findings(root: Path) -> tuple[PackageFinding, ...]:
def projection_findings(
root: Path, *, plan: ProjectionPlan | None = None
) -> tuple[PackageFinding, ...]:
"""Return projection drift findings without modifying any filesystem entry."""
plan = plan_payload_projection(root)
plan = plan if plan is not None else plan_payload_projection(root)
expected = {link.destination: link for link in plan.links}
canonical_roots = {
plan.root / f"standards/{link.standard_id}/versions/{link.version}"
Expand Down Expand Up @@ -330,7 +332,10 @@ def sync_payload_projection(
) -> tuple[PackageFinding, ...]:
"""Check read-only, or reconcile only projection symlinks and empty directories."""
plan = plan_payload_projection(root)
findings = projection_findings(plan.root)
# Reuse the plan just computed instead of re-scanning manifests and
# schemas a second time inside projection_findings (measured ~3.5s
# redundant over 212 manifests + 416 schemas).
findings = projection_findings(plan.root, plan=plan)
if check or not findings:
return findings
blocking = {
Expand Down
2 changes: 1 addition & 1 deletion tests/coherence/test_pins.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

_REPO = Path(__file__).resolve().parent.parent.parent
PRETTIER_PIN = "3.9.6"
MARKDOWNLINT_CLI2_PIN = "0.23.2" # Keep aligned with markdownlint-cli2-action@v24.
MARKDOWNLINT_CLI2_PIN = "0.23.2" # Keep aligned with markdownlint-cli2-action@v24.2.0.


def test_package_json_pins_both_tools() -> None:
Expand Down
Loading