Skip to content

Repair macOS validation portability and failure diagnostics - #948

Merged
seathatflowsinourveins merged 2 commits into
mainfrom
codex/ns2604-validate-macos-20261009
Oct 10, 2026
Merged

seathatflowsinourveins merged 2 commits into
mainfrom
codex/ns2604-validate-macos-20261009

Conversation

@seathatflowsinourveins

@seathatflowsinourveins seathatflowsinourveins commented Oct 9, 2026 •

Copy link
Copy Markdown
Collaborator

Scope

The macOS adoption suite failed when canonical paths were mixed with /var aliases, test instrumentation assumed Linux /proc, and Ubuntu/WSL integration commands ran on Darwin. This repairs portable path/descriptor/report interfaces, names the native platform requirements, and prints failure headers in both macOS test modes while preserving unittest's exit status.

  • Base commit: a7bb4a51eea9cc321dd06dd6243a5b2654a5f805.
  • Commit: eb90128f6ae2a1e4b48c5517332b8bb594d5ad9e, two commits on the base.
  • Lane: lane:foundation.
  • Owned paths: readiness reader and source-policy approval; Fleet snapshot/cache seams; their tests and canonical fixture prefixes; two report-count assignments; targeted Ubuntu/WSL test guards; catalog scratch-copy control; adoption-bootstrap diagnostics; decision records, the isolated-render citation, and existing source registrations.

The observability decision's isolated-render citation now points to tests/test_new_wsl_client_config.py:641-656. Its registered evidence hash matches the corrected document bytes.

SDK containment and relative references use one resolved copy while the independent reader guard retains original lexical declarations, exact roles and no-follow checks. The reviewed reader digest/caller positions are updated together. Normalization cannot hide an unapproved descendant symlink or traversal selector.

Sealed producer execution remains a native Linux guarantee. Unsupported systems expose finite unavailable metadata and preserve dated snapshot/Actions observations. Snapshot/seal failures and later transport failures have distinct reasons. The cache uses exclusive mode-0600 creation through its checked directory descriptor instead of a /proc temporary pathname. Linux collection tests retain the real sealed-descriptor path; only systems without that native API mock the transport. The cache regression asserts explicit close-on-exec creation flags and fails when that flag is removed.

Both review workflows already used wc -c; the change normalizes BSD padding with POSIX tr. Static/event-policy and portable tests remain active. Only integrations that execute frozen Linux/Ubuntu commands or unsupported shell capabilities are guarded, with specific reasons. The current advisory macOS event policy is preserved.

Scout alias migration runs on Darwin with a resolved fixture root. Apple's maintained readlink -f implementation is portable for this command; the former skip hid a fixture alias mismatch. An actual symlink temporary prefix reproduced failures for the previous/current owners before resolution, and all six ownership cases pass after it. Claude capture guards name flock; the Inspector probe guard names the Linux port-range file and setsid, while ss is stubbed.

SOTA sources

Evidence-class table

Claim Evidence class Command / receipt
Native macOS fail-before native_proven Step21:12166tests/2428.707s,115failures/509errors/1480skips; artifact11648210573,4,141,374bytes,SHA2568835a4e1902007206028dd18d38e4a3292d589873dd8b08a6eea6793e37e80d5
SDK alias and escape regressions synthetic/local_integration Two direct errors reproduced before;35 readiness checks pass with normal and real symlink temporary prefixes
Strict page/metadata fixture aliases local_integration Pages44/44 and verifier47/47 under symlink TMPDIR; verifier packet/protocol bytes unchanged
Independent permission, cache and producer controls local_integration Included in the implementation400-test native group; Fleet-only missing-API simulation37tests/3native-only skips, rc0; explicit CLOEXEC-deletion mutation fails while unchanged collision control passes
Portable Scout ownership synthetic/local_integration Existing test fails on both previous/current owners through an aliased temporary prefix before resolution; all six ownership cases pass after resolution with the Darwin skip removed
Producer launch metadata and default Linux coverage local_integration Launch-reason control fails before distinct transport metadata; default sealed-receipt control fails with the unconditional mock; both pass after repair, and seal-failure control still passes
Both workflow diagnostic modes local_integration Two fail-before subcases;10 executable workflow checks pass after, including success without grep matches
BSD report formatting and scratch-copy controls synthetic/local_integration Padded wc fixtures failed before; tiny CI-log source-copy control failed before; bounded Linux checks passed
Implementation affected-module integration at379f9df6 local_integration rc0:400tests/3skips in48.370s, covering all12 local-pages modules plus readiness and the complete definitive-defaults module
Implementation real symlink temporary prefix at379f9df6 synthetic/local_integration rc0:165tests/0skips,15.332s; pages, Fleet data/tracking, source policy, readiness and all Scout ownership cases
Corrected isolated-render citation source_review The referenced test starts at641 and preserves unrelated owner bytes through656; only the decision citation and its registered hash changed in the forward commit
FULL validation at eb90128 local_integration rc0:70components/11295hashedfiles/4profiles/239receipts,48.694s
Actual-host tip and new-push history gate at eb90128 native_proven Cleaneb90128f, rc0/source=host/zero locations/12059trackedfiles; no synthetic override,29.256s; range379f9df6..eb90128
Post-fix native Darwin full suite untested Existing PR policy skips the native job; Linux alias/API/output fixtures and a skipped job do not establish a Darwin pass

The artifact's412 headers are source-policy tests, including407 /proc watcher failures; six are direct readiness failures. The decision record separates these families from the dispatch's shorthand and does not claim a fresh100-job census.

Local commands run

Implementation regression runs below were recorded at379f9df6. The citation-only
forward commit changes no executable code. FULL validation and the actual-host
tip/new-push history gate were refreshed at eb90128.

python3 -B -m unittest tests.test_local_pages tests.test_local_pages_adoption tests.test_local_pages_current_view tests.test_local_pages_fleet_data tests.test_local_pages_fleet_execution tests.test_local_pages_fleet_regressions tests.test_local_pages_fleet_tracking tests.test_local_pages_fleet_tracking_view tests.test_local_pages_fleet_view tests.test_local_pages_sanitization tests.test_local_pages_source_policy tests.test_local_pages_workstation tests.test_north_star_readiness tests.test_new_wsl_definitive_defaults
rc0:400tests/3skips,48.370s unittest/48.789s overall

Python unittest harness with a real symlink tempfile.tempdir/TMPDIR:
tests.test_local_pages, tests.test_local_pages_fleet_data, tests.test_local_pages_fleet_tracking,
tests.test_local_pages_source_policy, tests.test_north_star_readiness,
tests.test_new_wsl_definitive_defaults.FixwaveAcceptanceRepairs.test_scout_alias_migration_preserves_foreign_executables
rc0:165tests/0skips,15.332s overall

python3 -B scripts/validate.py
FULL rc0:70components/11295hashedfiles/4profiles/239receipts;48.694s

python3 -B scripts/evidence_manifest.py --write
python3 -B scripts/evidence_manifest.py --check
both rc0:11295registered files

python3 -B scripts/validate.py --scan-tracked --scan-history 379f9df610038aa1f2be910cb304423288ba3412 eb90128f6ae2a1e4b48c5517332b8bb594d5ad9e
rc0:source=host/zero matching locations/12059trackedfiles; no synthetic override

The final checks above ran as ordinary uncapped native commands. Alias, missing-API and BSD-output fixtures establish the indicated Linux simulations. A native Darwin after-result awaits the next eligible full-suite run.

The initial integration batch found one strict inventory omission for Fleet's
new platform boundary; the selector inventory now includes it and the strict
checks remain intact. An unmodified hang-trace control failed once during a
follow-up workflow group, then passed in an isolated17-test check and the final
146-test native group without a code change. Both outcomes are retained. That
earlier15-module batch ran946tests/4skips; those historical measurements are
distinct from the implementation400-test gate. The first attempt at that gate
used tests/ as CWD and reported three loader import errors; repository-root
imports passed and the corrected implementation gate returned rc0 with400tests/3skips.

Final FULL output SHA256:
edbe447c81a10cad7c1cf4e3eba19131dd89781e912314823f9e30ba02d3cc53.
Actual native-session tip/history output SHA256:
ba498e69af02df2e2273e3d9d7fae58bf436b71f8a2e2a730453a16b8c527949.
Implementation400-test output SHA256:
ba521499a7ea59e5a2bdab26e8c19f643a89dea16429bfb788767e274d6b087c.
Implementation165-test alias output SHA256:
b522a10377193ac5784eb9b8be22751cec56199845570f5b8c28256570efa74c.

Decision record

docs/decisions/2026-10-09-validate-macos-portability.md records native before evidence, root causes, adopted primary interfaces, regression controls, exact platform boundaries and the native after-run limitation. The next eligible main/nightly/dispatch macOS run supplies that native evidence.

Host evidence

N/A: no evidence/hosts receipt or platform-status change.

  • Host-receipt validate/review: N/A; no host receipt changed.
  • No platform-status change from a receipt alone.

Checklist

  • Existing action commit pins/version comments and workflow permission scopes retained.
  • No new secret, credential, paid-hosting or billing surface.
  • Peer-owned paths/worktrees and protected namespaces preserved.
  • Protocol and packet files unchanged; metadata-verifier change only canonicalizes its disposable fixture root.

This remains a draft foundation PR. Hosted checks at the stated head are tracked
in the PR Checks view; they are separate from the retained native fail-before
artifact, local tests and the outstanding native Darwin after-run.

@seathatflowsinourveins seathatflowsinourveins added the lane:foundation Foundation lane: Claude/Codex setup, hosts, memory, RAG, research, workers label Oct 9, 2026
@socket-security

socket-security Bot commented Oct 9, 2026 •

Copy link
Copy Markdown

Dependency limit exceeded — report not shown.

This pull request scan exceeded the 10,000-dependency limit applied to this scan, so the results are incomplete and may be inaccurate. To avoid reporting false positives, Socket has not posted a report.

Upgrade your plan to raise the dependency limit and get complete reports, or view the partial scan in the dashboard.

Socket is always free for open source. If this is a non-commercial open source project, contact us to request a free Team account.

@seathatflowsinourveins
seathatflowsinourveins force-pushed the codex/ns2604-validate-macos-20261009 branch from 6459b97 to 379f9df Compare October 10, 2026 00:38
@seathatflowsinourveins
seathatflowsinourveins marked this pull request as ready for review October 10, 2026 02:25
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, add credits to your account and enable them for code reviews in your settings.

@seathatflowsinourveins
seathatflowsinourveins merged commit a56f85e into main Oct 10, 2026
37 of 49 checks passed
@seathatflowsinourveins
seathatflowsinourveins deleted the codex/ns2604-validate-macos-20261009 branch October 10, 2026 02:43
seathatflowsinourveins added a commit that referenced this pull request Oct 10, 2026
… manifest on main since #948

origin/main 30aa2fa fails scripts/validate.py on its own: the manifest row for this test holds sha256 72d7e709... (20,631 bytes) while the file, last changed by a56f85e (#948), is 4601bbba... (20,940 bytes). Re-registered with host_receipts.register_file; this PR does not change the file.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
seathatflowsinourveins added a commit that referenced this pull request Oct 10, 2026
…slot (#923)

* Claude Code native practice, 2026-10: one evidenced default per role slot

Decision record for Claude Code 2.1.295 covering 33 role slots across the
native client, skills, workers, MCP, headless, GitHub automation, token and
cost practice: a capability matrix, a supersession table, one default per
slot with ranked alternatives and overturn conditions, the GitHub automation
requirements, measurements owed and a weekly refresh loop owned by the
currency lane.

The defaults ship inside the claude-native-practice project skill
(reference/slots.md, one page per layer, slots.json), so they travel with a
user-scope install. Evidence artifacts: claims with locators, supersession,
verification and adjudication results, G5 candidate rows for grand-catalog,
a practice-references candidate file, the trigger evaluation and the
fresh-session proofs. The 2026-10-02 automation record gets a dated
addendum: seven required checks since 2026-10-05.

Co-Authored-By: Claude Opus 5.5 <[email protected]>

* Escape the quoted $USER in verification.json

The previous rewrite inserted raw double quotes into a JSON string, so
validate_convergence.py could not parse the file during record discovery
(CI validate-shard-0). The builder now sanitizes string values before
serializing, and each written artifact is parsed back.

Co-Authored-By: Claude Opus 5.5 <[email protected]>

* Show organic activation of the practice skill in the fresh-session proof

The co-op's read of b0e713f (P2) found that the fresh-session evidence kept
only booleans and hashes. fresh-session.json now carries, for each of the 11
runs, the launch command, the exact request (none names the skill), the first
Skill invocation with its arguments and the first read of
reference/slots.md, copied from the private transcripts; the record's
handoff text cites them.

Co-Authored-By: Claude Opus 5.5 <[email protected]>

* Re-register this branch's files after rebasing onto 3497f50

Co-Authored-By: Claude Opus 5.5 <[email protected]>

* Publish every skill-directory read so the activation rates recompute

The excerpts kept only the first call that named "claude-native-practice/reference" as one string, so shell reads
that cd into the skill directory and then name reference/slots.md were missed or left as a placeholder. Every call
that reads from the skill directory is now listed with its position, tool and exact (sanitized) path or command.

Recomputed from those events for the shipped description: the skill was the first tool call in 5 of 6 sessions; 4 of
6 then read reference/slots.md whole (2 by Read, 2 by cat) and a fifth grepped it; the sixth searched the skill
directory without invoking the skill. The per-run flags, rates, statement and the decision record now say so.

Co-Authored-By: Claude Opus 5.5 <[email protected]>

* Grant the practice skill's SKILL.md in the reviewed architecture inventory

scripts/local_pages_policy_grants.py selects every .claude/skills/*/SKILL.md, and this branch adds
.claude/skills/claude-native-practice/SKILL.md, so the committed repository grants (90) no longer matched the
inventory at the merge head (CI run 38016037590, test_committed_repository_grants_match_current_git_inventory_paths).
Adds the repo-root row the script proposes (`--pin 998eea1`, 91 rows, equal to the committed set) and moves the
test's count to 91. The receipt grants are pinned to their reviewed SHA and do not move.

Co-Authored-By: Claude Opus 5.5 <[email protected]>

* Re-register tests/test_local_pages_fleet_regressions.py, stale in the manifest on main since #948

origin/main 30aa2fa fails scripts/validate.py on its own: the manifest row for this test holds sha256 72d7e709... (20,631 bytes) while the file, last changed by a56f85e (#948), is 4601bbba... (20,940 bytes). Re-registered with host_receipts.register_file; this PR does not change the file.

Co-Authored-By: Claude Opus 5.5 <[email protected]>

---------

Co-authored-by: seathatflowsinourveins <[email protected]>
Co-authored-by: Claude Opus 5.5 <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

lane:foundation Foundation lane: Claude/Codex setup, hosts, memory, RAG, research, workers

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant