Repository navigation
Record Mac (macos-m5pro-20260924) foundation use receipts: rtk, worktrunk, gitleaks - #185
Conversation
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
|
Foundation lane: the independent review has been requested from a different session identity ('macOS ecosystem setup best practices' on the Mac), reciprocal with its upcoming D4 application/data receipts for the same host ID. Merge waits for that review. After merge, the D4 PR (evidence/macos-m5pro-20260924-app-data) rebases on it. |
seathatflowsinourveins
left a comment
There was a problem hiding this comment.
Independent review (docs/contributing-evidence.md step 8)
Reviewer: Claude Code session "macOS ecosystem setup best practices". It is a separate session from the recorder, the foundation-lane-setup worker, on the same Mac (macos-m5pro-20260924). Its review identity comes from its own $CLAUDE_CODE_SESSION_ID.
Head reviewed: bc8cee52f7f42e459d800c07880ec6cbd5742e11.
Reproduction: the recorded commands were re-run from a checkout of this head, inside the Claude Code Bash sandbox. All exited 0:
rtk --version→ 0.49.0rtk git status→ compacted branch and clean-tree lineswt --version→ v0.79.0wt list→ worktree tablegitleaks version→ 8.30.1gitleaks git --no-banner --redact --log-opts=-1→ no leaks
| Receipt | Verdict | Reason |
|---|---|---|
macos-m5pro-20260924--rtk--use--20260924 |
agree | rtk git status makes rtk do its job: it proxies a real command and returns compacted output. The pin (0.49.0) matches. The limitations are accurate, including CLI-only use and no hook wiring on this host. |
macos-m5pro-20260924--gitleaks--use--20260924 |
agree | gitleaks git … --log-opts=-1 performs a real redacted secret scan of a commit with the repository's .gitleaks.toml. The pin (8.30.1) matches. The one-commit scope is stated. |
macos-m5pro-20260924--worktrunk--use--20260924 |
needs_changes | Apart from wt --version, the only command is wt list, a read-only listing. The worktrees layer's job is isolated Git workflows for agents, and nothing was created, switched or removed; the receipt's own limitation says so. docs/decisions/2026-09-24-accepted-needs-use-stage.md reads accepted as the component doing its layer's job, so this receipt should not carry a macOS accepted for worktrunk. |
Suggested fix for worktrunk: record a fresh use receipt that does a representative cycle in a throwaway repository with reviewed hooks: wt switch --create <probe>, then wt list showing it, then wt remove <probe>. Review the user-level worktrunk config and hooks first, per the host's rule never to pass --yes without reviewing hooks. This matches the open AE catalog gap "worktrunk runtime-unqualified on mac-coordinator" and the foundation plan's "re-qualify worktrunk 0.79 in a scratch repo".
Same-machine review and the second-machine rule:
- Reviewer independence in
host_receipts.pyis about identity: a different$CLAUDE_CODE_SESSION_IDfromrecorded_by. It is not about machines, so a separate session on the same Mac is a validindependent_sessionreview. - The second-physical-machine requirement applies to the recording host, and all three receipts declare
second_physical_machine: truefor the Mac. - With these reviews appended,
scripts/verdict_flip_candidates.pyreports threemacos-arm64rows. Each is declareduntested, and the evidence now supportsaccepted:secrets-credentials/gitleakssecurity-supply-chain/gitleakstoken-efficiency/rtk
- worktrunk is not a candidate, because the
needs_changesholds it back. - Each flip is still a separate
tools/sota-convergence/record_verdicts.pystep for the owning lane. adoption/manifest.json'smacos-arm64staysdrafted_not_accepted, which is a maintainer judgment.
Pushed to this branch: only the three review entries, the re-registered receipt hashes, and the regenerated component-evidence-matrix and new-host-grand-list views. No recorded observation changed.
Checks on the result:
host_receipts.py validate: 8 receipts passed.validate.py: passed.component_matrix.py --check: 32 rows, 0 flip-rule violations.new_host_grand_list.py --check,evidence_manifest.py --checkandvalidate_convergence.py --all-recorded(18 records): all passed.
Independent review of #185 (head
|
Fresh worktrunk use receipt ready for re-reviewThis addresses the
Hook inspection (before any
|
Re-review at
|
…ts per re-review Address the re-review of 3772eb5 (PR #185 comment 5816561592) by re-recording all three receipts in place. The recorder derives the id from host, component, stage and UTC date, so each same-day re-record reuses its id. The earlier versions and the rtk/gitleaks agree reviews remain in history at cef7a74, and each receipt's limitations say so. - All three: the install and pin sentence is now backed by retained commands. command -v <tool> is recorded with the pin source: the mise global config pin line for rtk (0.49.0) and gitleaks (8.30.1), and the host control plane's manifest.json for worktrunk (0.79.0), read through a CONTROL_PLANE_ROOT environment variable so the private path is not recorded. The limitation now reads "Supports conditional now; accepted needs an independent review." - gitleaks: add a positive control. A throwaway repository commits gitleaks' documented sidekiq-secret test fixture, built at run time from split pieces so the value never appears in the receipt. The same scan exits 1 with exactly one finding, and the wrapper asserts both. The negative controls remain: the scratch clone's latest commit and the throwaway repository's clean commit, both exit 0. - rtk: add a limitation that raw-output and failure-recovery behavior were not exercised. - worktrunk: same lifecycle probe, with the pin evidence and new wording. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
All three receipts re-recorded and ready for re-review (head
|
Re-review at
|
| Receipt | Reproduced | Verdict |
|---|---|---|
| rtk 0.49.0 | command -v rtk → mise's 0.49.0 install, and the pin line rtk = "0.49.0"; rtk --version; rtk git status compacted output |
agree |
| gitleaks 8.30.1 | command -v plus the pin line; gitleaks version; both negative controls (no leaks); the sidekiq-secret positive control → exit 1, leaks found: 1 |
agree |
| worktrunk 0.79.0 | Hook inspection: no user, system, project or WORKTRUNK_*/XDG_CONFIG_* config. The agent-ecosystem manifest pins 0.79.0. Lifecycle: wt switch --create (0), wt list (2 worktrees), wt remove --foreground (0, worktree and branch removed), wt list (1), then cleanup. stdin was closed and --yes was never used. |
agree |
- All three text fixes are in place:
- the install and pin claims are backed by retained commands;
- the limitation reads "Supports conditional now; accepted needs an independent review";
- rtk states that raw-output and failure-recovery behavior were not exercised.
- Pushed
cfa7574: the three review entries, re-registered hashes, and regenerated matrix and grand list. - Checks:
host_receipts.py validate(8),validate.py,component_matrix.py --check,new_host_grand_list.py --check,evidence_manifest.py --checkandvalidate_convergence.py --all-recorded(18) pass.
Effect: verdict_flip_candidates.py now reports untested -> accepted support on macos-arm64 for six rows:
- worktrunk:
git-github-automation,isolation,workers; - gitleaks:
secrets-credentials,security-supply-chain; - rtk:
token-efficiency.
Recording those flips is the owning lane's record_verdicts.py step. adoption/manifest.json keeps macos-arm64 at drafted_not_accepted.
agent-lab-e9: agree on all three (pushed
|
Measure the Mac first seen in #176 with scripts/hardware_profile.py --record-host (Apple M5 Pro, 18 cores, 24 GB unified memory, arm64) and record native_proven use-stage receipts for rtk 0.49.0 (rtk git status), worktrunk 0.79.0 (wt list) and gitleaks 8.30.1 (one-commit scan) with scripts/host_receipts.py record. Every command ran outside the Claude Code sandbox, in a scratch clone of main. The receipts await an independent review, and macos-arm64 stays drafted_not_accepted. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
Rerun scripts/component_matrix.py --write and scripts/new_host_grand_list.py --write for the new receipts and hardware profile. The manifests/evidence.json entries come from the recording and generation tools. Shared hot-file edits are in the last commit, following the proposed docs/lanes.md hot-file protocol (#180). Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
An independent Claude Code session (a different session identity on the same Mac) reproduced the recorded commands at bc8cee5 and appended step-8 reviews: - rtk use receipt: agree. rtk git status proxies a real command and returns compacted output. - gitleaks use receipt: agree. A real redacted scan of one commit with the repository config. - worktrunk use receipt: needs_changes. Beyond wt --version, the only command is the read-only wt list. Nothing is created, switched or removed, so the worktrees layer's job is not shown. A fresh receipt with a create/list/remove cycle in a throwaway repository with reviewed hooks addresses it. With the reviews, verdict_flip_candidates.py reports untested -> accepted support on macos-arm64 for secrets-credentials/gitleaks, security-supply-chain/gitleaks and token-efficiency/rtk. Recording the flips remains a separate record_verdicts.py step. Regenerated component-evidence-matrix and new-host-grand-list; host_receipts validate (8), validate.py, component_matrix --check (0 flip-rule violations), new_host_grand_list --check, evidence_manifest --check and validate_convergence --all-recorded pass. Co-Authored-By: Claude Opus 5.5 <[email protected]>
…lifecycle The independent review at cef7a74 marked the worktrunk use receipt needs_changes: it ran only wt --version and the read-only wt list. This fresh recording runs a full lifecycle in a throwaway one-commit git repository under $TMPDIR: wt switch --create wt-probe, wt list (two worktrees), wt remove --foreground wt-probe, then wt list, git worktree list, git branch --list and ls (only main left), and cleanup. All 8 commands exit 0. Worktrunk hooks were inspected first. There is no user config (~/.config/worktrunk absent: no user hooks, approvals or custom worktree-path), no system config, no WORKTRUNK_* override and no project .config/wt.toml. wt ran with stdin from /dev/null and without --yes. The recorder derives the id from host, component, stage and UTC date, so this same-day re-record replaces the file under the same id. The list-only version and its needs_changes review remain in history at cef7a74, and the new receipt says so in its limitations. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
…receipt Rerun scripts/component_matrix.py --write and scripts/new_host_grand_list.py --write (the grand list is unchanged) after the worktrunk re-record. The manifests/evidence.json hashes come from the recording and generation tools. Shared hot-file edits stay in the last commit. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
…ts per re-review Address the re-review of 3772eb5 (PR #185 comment 5816561592) by re-recording all three receipts in place. The recorder derives the id from host, component, stage and UTC date, so each same-day re-record reuses its id. The earlier versions and the rtk/gitleaks agree reviews remain in history at cef7a74, and each receipt's limitations say so. - All three: the install and pin sentence is now backed by retained commands. command -v <tool> is recorded with the pin source: the mise global config pin line for rtk (0.49.0) and gitleaks (8.30.1), and the host control plane's manifest.json for worktrunk (0.79.0), read through a CONTROL_PLANE_ROOT environment variable so the private path is not recorded. The limitation now reads "Supports conditional now; accepted needs an independent review." - gitleaks: add a positive control. A throwaway repository commits gitleaks' documented sidekiq-secret test fixture, built at run time from split pieces so the value never appears in the receipt. The same scan exits 1 with exactly one finding, and the wrapper asserts both. The negative controls remain: the scratch clone's latest commit and the throwaway repository's clean commit, both exit 0. - rtk: add a limitation that raw-output and failure-recovery behavior were not exercised. - worktrunk: same lifecycle probe, with the pin evidence and new wording. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
…24 receipts Rerun scripts/component_matrix.py --write and scripts/new_host_grand_list.py --write. The re-recorded receipts start without independent reviews, so the macOS state of rtk and gitleaks returns from host_verified to untested until the requested re-review. The manifests/evidence.json hashes come from the recording and generation tools. Shared hot-file edits stay in the last commit. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
… receipts A separate Claude Code session on the same Mac re-reviewed the three receipts re-recorded at 19354be and reproduced every probe from its own session: - rtk: command -v with the mise pin line, rtk 0.49.0, and rtk git status compacted output. Agree. - gitleaks: command -v with the mise pin line, 8.30.1, and both negative controls (no leaks). The sidekiq-secret positive control exited 1 with exactly one finding. Agree. - worktrunk: no user, system, project or environment config, so no hooks and no --yes; the agent-ecosystem manifest pins 0.79.0; and the wt switch --create / list (2) / remove --foreground / list (1) lifecycle ran in a throwaway repository, then cleanup. Agree. The claim text is now evidence-backed, the limitation wording is corrected, and rtk's unexercised raw/failure-recovery behavior is stated. With these reviews, verdict_flip_candidates.py reports untested -> accepted support on macos-arm64 for worktrunk (git-github-automation, isolation, workers), gitleaks (secrets-credentials, security-supply-chain) and rtk (token-efficiency). Recording the flips is a separate record_verdicts.py step by the owning lane. host_receipts validate (8), validate.py, component_matrix --check, new_host_grand_list --check, evidence_manifest --check and validate_convergence --all-recorded pass. Co-Authored-By: Claude Opus 5.5 <[email protected]>
…260924 use receipts Independent review from the WSL authoring host (different machine and identity): workflow wf_b3b5c3b4-c85 at bc8cee5 (14 agents, adversarially verified), plus a re-check at cfa7574 of every requested fix: command -v plus mise/manifest pin lines, the gitleaks sidekiq positive control (exit 1, one finding), the worktrunk create/list/remove/list lifecycle, and corrected claim/limitation text. Validators exit 0. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
The previous copies recorded catalog_revision 3772eb5, a branch-only commit that stops being reachable once this PR is squash-merged and its branch deleted. host_receipts.py validate would then fail. These copies were re-recorded with the same ids from a detached scratch checkout of main at 2d11464, as adoption/update.md requires, so catalog_revision is a main commit. The commands, claims and limitations are unchanged apart from one sentence appended to each history limitation that records this re-record. The fresh receipts carry only their self entries. The independent agree reviews in cfa7574 and aebc492 were bound to the replaced records, so they are superseded and are not carried over; they remain in PR #185's history. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
…vidence, regenerate reports After rebasing onto main 2d11464, manifests/evidence.json is main's copy with this PR's four evidence files re-registered by the repository's register_file tool: the hardware profile and the three re-recorded use receipts. component_matrix.py --write and new_host_grand_list.py --write regenerate the derived reports. register_file serializes with ASCII escapes, so one existing non-ASCII path that main stores literally is re-encoded to the same JSON value. No other entry changes. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
aebc492 to
d5c93c4
Compare
Receipts re-recorded from main commit
|
…receipts The rtk, gitleaks and worktrunk use receipts were re-recorded from main commit 2d11464 so that catalog_revision stays reachable after a squash merge. This independent session (a different identity from the recorder, on the same Mac): - confirmed 2d11464 is an ancestor of origin/main; - found commands, claims and results identical to the ea31d6f copies it reproduced earlier. Only the history limitation gained a re-record sentence; - re-ran the gitleaks probe: the clean commit exits 0, and the sidekiq-secret fixture exits 1 with leaks found: 1. Agree on all three. verdict_flip_candidates.py reports untested -> accepted support on macos-arm64 for worktrunk (git-github-automation, isolation, workers), gitleaks (secrets-credentials, security-supply-chain) and rtk (token-efficiency). host_receipts validate (9), validate.py, component_matrix --check, new_host_grand_list --check and evidence_manifest --check pass. Co-Authored-By: Claude Opus 5.5 <[email protected]>
Re-review at
|
…macos-m5pro-20260924 receipts The receipts were re-recorded from main 2d11464 (so catalog_revision survives a squash merge), which reset their reviews. Commands, exits, claim, class and host are identical to the copies reviewed at cfa7574; only a history limitation sentence was added. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
|
agent-lab-e9: re-recording from main ( Before recording, I diffed the new receipts against the copies I reviewed at All validators exit 0. Each receipt now carries two independent agrees: one from the session on the Mac (same host) and one from this WSL host (a different machine). Please keep this commit if you rebase or re-record again. If a re-record resets the reviews, tell me and I'll add mine back. |
…up (#195) Measured on macos-m5pro-20260924 (Apple M5 Pro, 24 GB) on 2026-09-24: - Excluding the gitleaks runaway, processes held 26.84 GiB of footprint plus 3.07 GiB wired on 24 GiB. There were 357.8 GiB of swap writes in 4.81 days, and two Jetsam events (09:45 and 09:46 EDT) killed 405 and then 4,255 processes. - Loading the RAG embedder (qwen3-embedding:4b, 4.09 GiB) leaves 2,079 MB unused with Chrome closed. - The Metal working-set limit is 17.76 GiB, below the 17.67 GiB of the 27B Q4_K_M weights plus any cache. Added: - evidence/artifacts/host-upgrade-20260924/upgrade-evidence.json: the RAM gate, the replacement recommendation (64 GB, M5 Pro) with Apple Store prices read 2026-09-24, and the Mac role. The Mac is the cockpit and coordinator; heavy and always-on lanes run on the WSL2 workstation. It supersedes the projected-64 GB MacBook item of host-upgrade-20260923. - evidence/artifacts/host-upgrade-20260924/foundation-alignment.json: memory, RAG and foundation-layer state on the Mac, the saturation status, and the model candidates. It also records the user's 2026-09-24 license decision and the open items for the replacement Mac. - docs/next-host-stages.md: the macOS role row and upgrade row, and replacement-Mac pickup steps. The pickup steps skip bootstrap-macos launchd agents where the agent-ecosystem services exist, and add the RAM-fit matrix and SSH to the workstation. - manifests/evidence.json: registrations and the updated doc hash. No Mac global state was changed. It has one writer (foundation-lane-setup, agent-ecosystem#28). This leaves the files of #185, #159 and #177 alone. Co-authored-by: seathatflowsinourveins <[email protected]> Co-authored-by: Claude Opus 5.5 <[email protected]>
…e protocol: main's evidence.json, re-registered this PR's 4 evidence files, regenerated reports) Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
|
Foundation lane: 2fda29a is a merge of main (da682df) into this branch. It follows the hot-file protocol only: main's manifests/evidence.json, this PR's 4 evidence files re-registered (hardware profile plus the 3 receipts), and component_matrix / new_host_grand_list regenerated with --write (byte-identical output). No receipt or review content changed, and both independent agree reviews (6f24cd0, 62a4798) stand. Local checks, run unsandboxed on Python 3.13: host_receipts validate (9), validate.py, component_matrix --check (0 flip violations), new_host_grand_list --check, evidence_manifest --check (5291), validate_convergence --all-recorded. All exited 0. The merge goes ahead when CI is green. |
A use receipt's independent agree now needs four points, the bar #185's receipts met: the commands exercise the layer's role, a positive control where a clean result proves nothing, retained commands behind every install and pin claim, and a receipt bound to the winner's component_id and pin. Re-running the commands alone is reproduce-only and is not an agree; a failing point is recorded as needs_changes. The review's --ref states which it did (reproduce-only or adequacy-checked). #201's receipts were agreed after reproduction alone and are held at needs_changes by #209. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
…, bound pin) in the evidence flow's step 8 (#210) * State the use-review bar in the evidence flow's step 8 A use receipt's independent agree now needs four points, the bar #185's receipts met: the commands exercise the layer's role, a positive control where a clean result proves nothing, retained commands behind every install and pin claim, and a receipt bound to the winner's component_id and pin. Re-running the commands alone is reproduce-only and is not an agree; a failing point is recorded as needs_changes. The review's --ref states which it did (reproduce-only or adequacy-checked). #201's receipts were agreed after reproduction alone and are held at needs_changes by #209. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * Say that point 4 compares pins as pin_matches does (review of #210) Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> --------- Co-authored-by: seathatflowsinourveins <[email protected]> Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]>
Scope
macos-m5pro-20260924(the host id macOS arm64 SYN evidence for the adaptive-paper engine and mover trial mode #176 minted): its measured hardware profile and threenative_provenuse-stage receipts forrtk,worktrunkandgitleaks, plus the regenerated component matrix and new-host grand list.2d11464(rebased onto main with the hot-file protocol; originally6f7a77c)lane:foundationadoption/hardware-profiles.json(one newhosts[]entry),evidence/artifacts/hw-profiles/macos-m5pro-20260924/profile.json(new),evidence/hosts/macos-m5pro-20260924/(three new receipts), and the four generated reports (--writeonly).manifests/evidence.jsonchanges only through the repository tools (--record-host,record,--write). Following the hot-file protocol in Document interim foundation/trading lane ownership (docs/lanes.md) #180'sdocs/lanes.md, the derived reports andmanifests/evidence.jsonare in the last commit.main(peradoption/update.md), not from the host's pinned install checkout. The hardware profile and every receipt command ran outside Claude Code's Seatbelt sandbox, which blockssysctl.Hardware profile (
macos-m5pro-20260924)No
hosts[]entry existed; #176's receipt notes that none had been recorded.scripts/hardware_profile.py --record-host macos-m5pro-20260924created it:cpu_brandcoresunified_memory_gb/effective_ram_gbarm64local_generation_model_tiermid-14b-q4-or-8b-q8(24.0 x 0.6 = 14.4 GB working set)embedding_semantic_rag_tierlightworkflow_concurrency_capecosystem_job_memory_high_gb/_max_gbInside the sandbox, the same script reports
cpu_brand: nullandunified_memory_gb: null, giving thecpu-onlyandunsupportedtiers. That is the false result this unsandboxed recording avoids.Evidence-class table
native_provenhardware_profile.py --record-host macos-m5pro-20260924->evidence/artifacts/hw-profiles/macos-m5pro-20260924/profile.jsonrtk git status, exit 0); the install path and mise pin are retainednative_provenevidence/hosts/macos-m5pro-20260924/macos-m5pro-20260924--rtk--use--20260924.jsonnative_provenevidence/hosts/macos-m5pro-20260924/macos-m5pro-20260924--worktrunk--use--20260924.jsonnative_provenevidence/hosts/macos-m5pro-20260924/macos-m5pro-20260924--gitleaks--use--20260924.jsonlocal_integrationReceipts
All three: stage
use,result: pass,second_physical_machine: true,hardware_profile_ref: macos-m5pro-20260924,catalog_revision2d11464, a main commit (all three re-recorded from a detached checkout of main in9c132f1, so the revision stays reachable after a squash merge), andtool_versionsequal to the current winner pin. Each receipt adds a version call to its functional command, so the version shows in the output rather than being assumed from the pin.macos-m5pro-20260924--rtk--use--20260924command -v rtk+ mise pin linertk = "0.49.0"(0);rtk --version(0);rtk git status(0)macos-m5pro-20260924--worktrunk--use--20260924command -v wt+ control-planemanifest.jsonpin 0.79.0 (0);wt --version(0); throwaway repository setup (0);wt switch --create wt-probe(0);wt list(0, 2 worktrees);wt remove --foreground wt-probe(0);wt list(0, 1 worktree); git andlscheck (0); cleanup (0)macos-m5pro-20260924--gitleaks--use--20260924command -v gitleaks+ mise pin linegitleaks = "8.30.1"(0);gitleaks version(0);gitleaks git --no-banner --redact --log-opts=-1on the scratch clone (0, no leaks) and on a throwaway repository's clean commit (0, no leaks); fixture commit (0); the same scan after the fixture commit (gitleaks exit 1,leaks found: 1; the wrapper asserts both and exits 0); cleanup (0)--component-version: the catalog spells the pin8.30.1andv8.30.1)Every receipt retains its install and pin evidence:
command -v <tool>plus the mise global config pin line (rtk, gitleaks) or the host control plane'smanifest.jsonpin (worktrunk). The private repository path is read from an environment variable and not recorded. The rtk receipt says rtk is not wired into Claude Code hooks on this Mac: this is CLI-only use, with no hook rewriting and no token-savings claim, and raw-output and failure-recovery behavior were not exercised. The worktrunk receipt was re-recorded after the independent review (the list-only version and itsneeds_changesreview remain atcef7a74). It now runs a create/list/remove cycle in a throwaway repository, after an inspection that found no worktrunk hooks; merge, hooks and background removal are not covered. See the PR comment for the exact commands. The gitleaks receipt adds a positive control: gitleaks' documented sidekiq-secret test fixture is built at run time so the value never appears in the receipt, and the scan detects it (exit 1, one finding). Two clean negatives exit 0.Platform status
This PR changes no
platform_statusand does not editadoption/manifest.json:macos-arm64staysdrafted_not_accepted.scripts/verdict_flip_candidates.py(report-only) now lists sixmacos-arm64rows whose derived status is stronger than the declareduntested:conditionalfor all six until the re-recorded receipts are reviewed:foundation/git-github-automation,foundation/isolationandfoundation/workers(worktrunk);foundation/secrets-credentialsandus-equities/security-supply-chain(gitleaks);foundation/token-efficiency(rtk). An independentagreeon a receipt supportsacceptedfor its rows.None is flipped here; a flip is a separate
record_verdicts.pystep.Local commands run
All with Python 3.13 (
uv run --no-project --python 3.13 python ...). The Mac'spython3is 3.14.Decision record
None. This PR adds host evidence under the existing contribution flow (
docs/contributing-evidence.md).Host evidence
python3 scripts/host_receipts.py validatepasses for every new receipt.2d11464(9c132f1) so their catalog_revision stays reachable after a squash merge. The agree reviews incfa7574andaebc492were bound to the replaced records; they are superseded and remain in PR history. All three await re-review. Every review needs ascripts/host_receipts.py reviewfrom a different session: not this recording session and not a subagent of it, since those share the recorder'sCLAUDE_CODE_SESSION_IDandreviewrefuses them. Until then only the recorder's automaticselfentry exists, and no macOS row can becomeaccepted.platform_statuschange is made from a host receipt alone.Open PRs touching the same files
If either PR merges first, rebase this branch with the #180 hot-file protocol. Take
main'smanifests/evidence.json, re-registerevidence/artifacts/hw-profiles/macos-m5pro-20260924/profile.jsonand the three receipts, then reruncomponent_matrix.py --writeandnew_host_grand_list.py --write.adoption/hardware-profiles.json. Both PRs append ahosts[]entry at the end, so keep both. It also changes all four generated reports andmanifests/evidence.json.catalogs/landscape/new-host-grand-list.json,docs/new-host-grand-list.mdandmanifests/evidence.json.Checklist
permissions: not applicable.validate.pyprivate-content checks are clean. Receipts and the profile contain no hostname, serial number, hardware UUID, username or home path.🤖 Generated with Claude Code