Repository navigation
Run Serena's own script from the MCP templates; attribute pin observations to their host; record sparse-VHD, gitleaks-order and WSL lessons - #230
Merged
seathatflowsinourveins merged 3 commits intoSep 25, 2026
Conversation
…tions to their host; record sparse-VHD, gitleaks-order and WSL lessons
- adoption/mcp/claude-user.json and adoption/templates/project.codex.config.template.toml
launched serena through ${ECO_ROOT}/bin/serena-context, a wrapper that existed
only on the 2026-09-23 recording host (it set SERENA_HOME); nothing in this
repository creates it. Both now run ${ECO_ROOT}/bin/serena with the same
arguments: the console script `uv tool install` links there for serena-agent
at the stack pin c6fbd1c5 with the bootstrap's uv-tool layout. The template
comment gives that command and says the ai-memory URL (127.0.0.1:49374, the
repository default) must match the host's own ai-memory unit.
- tests/test_install_claude_profile.py follows the template, keeps the
2026-09-23 `claude mcp get` recording, adds a 2026-09-25 recording of the
new registration (claude 2.1.282, temporary CLAUDE_CONFIG_DIR) and checks
that the older registration is reported as differing.
- adoption/pins-linux-x86_64.json: the markitdown, tavily-cli, orx and
agent-browser install notes attribute their "installed" observation to the
host that recorded PR #139 on 2026-09-23. Versions, URLs and hashes are
unchanged.
- docs/next-host-stages.md and docs/new-workstation-runtime-profile-20260922.md:
dated notes that sparseVhd is disabled upstream (enabling it needs
--set-sparse true --allow-unsafe), how to reclaim VHD space instead, and the
workstation's live .wslconfig, which differs from the projection.
- docs/secret-storage.md step 5: install and verify gitleaks 8.30.1 and the
guarded launcher (5a) before enabling the hook (5b).
- adoption/platforms/linux-wsl2.md: Windows-side command and listener lessons,
each with its upstream source.
- docs/acceptance-evidence-policy.md: discriminating controls.
- manifests/evidence.json: re-registers the eight hash-listed files.
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
… the pin file tests.test_adoption_docs_consistency requires every page that mentions adoption/pins-linux-x86_64.json to say what changed after the pinned release. adoption/bootstrap.md and adoption/platforms/macos-arm64.md now say the change is install_note text only; versions, URLs and hashes are unchanged. manifests/evidence.json re-registers both files. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
…k check with a planted-key control Independent-review repair round for #230. - adoption/bootstrap.md step 4a installs serena (git pin c6fbd1c5) and jcodemunch-mcp 1.108.319 as uv tools into ${ECO_ROOT}/python-tools and ${ECO_ROOT}/bin before the MCP registration. It names the MCP template and the project Codex template among the files changed after v2026.09.24.1 (the tag's serena entry runs a serena-context wrapper nothing installs), and gives the re-registration sequence: remove the servers that should change, then install_claude_profile.py --only mcp without --replace-mcp. That flag re-registers every differing server. An ai-memory unit on another port needs `claude mcp remove ai-memory -s user` before `claude mcp add`, because `claude mcp add` refuses an existing name. - adoption/mcp/claude-user.json comment and adoption/platforms/linux-wsl2.md say the same; the port rule applies to the registration, not the template. adoption/platforms/macos-arm64.md step 3 names the template change. - recipes/README.md serena row points at the installed command and bootstrap step 4a, and keeps uvx for one-off runs. - docs/secret-storage.md: 5a names $ECO_INSTALL_ROOT/tools/gitleaks-8.30.1/ as the extraction target with checksum-verified commands, and says how `gitleaks` resolves to gitleaks-guarded-macos on macOS and what passes. 5b checks core.hooksPath and runs `git hook run pre-commit` in a throwaway worktree, clean (exit 0) and with a planted generated AWS-style key (exit 1). The hook is absent at v2026.09.24.1. - adoption/tools/README.md macOS install adds the `gitleaks` link and its pass criterion. - docs/acceptance-evidence-policy.md: the failing control is recorded with the passing run, the rule governs new claims, and the planted-key check is the example. - docs/next-host-stages.md: Optimize-VHD -Mode Full needs Mount-VHD -ReadOnly. docs/new-workstation-runtime-profile-20260922.md compares each live value with its projection. - manifests/evidence.json re-registers the nine hash-listed files. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
seathatflowsinourveins
deleted the
claude/stale-refs-and-wsl-lessons-20260925
branch
September 25, 2026 07:00
Merged
7 of 8 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The user-scope Claude MCP template (
adoption/mcp/claude-user.json) and the project Codex template launched Serena through${ECO_ROOT}/bin/serena-context. That wrapper existed only on the 2026-09-23 recording host: it setSERENA_HOME(gap-wave2 MCP-surfaces receipts), and no recipe, bootstrap step or tool in this repository creates it. The WSL workstation has only${ECO_ROOT}/bin/serena, and its live Claude sessions run that script. Four Linux pin notes said "this host already has ..." about the same recording host; the workstation has none oforx,tvlyoragent-browser. The workstation pages still recommendedsparseVhd, which WSL itself disables, anddocs/secret-storage.mdenabled the gitleaks hook before the guarded launcher was installed.Change.
${ECO_ROOT}/bin/serenawith unchanged arguments.adoption/bootstrap.mdstep 4a installs Serena (git pinc6fbd1c5) andjcodemunch-mcp1.108.319 as uv tools with the uv-tool layoutbootstrap-linux.shuses (UV_TOOL_DIR=${ECO_ROOT}/python-tools,UV_TOOL_BIN_DIR=${ECO_ROOT}/bin), before the MCP registration. Therecipes/README.mdserena row points there and keepsuvxfor one-off runs. Serena readsSERENA_HOMEitself, so no wrapper is needed. The review asked only about Serena;jcodemunch-mcpis added because the template names it too and nothing installed it.bootstrap.mdnames the MCP template and the project Codex template among the files changed afterv2026.09.24.1: the tag'sserenaentry runs a wrapper nothing installs. The macOS page's step 3 says the same.install_claude_profile.py --replace-mcpre-registers every differing server, andclaude mcp addrefuses a name that already exists. The documented sequence is to remove each server that should change (claude mcp remove <name> -s user), then runinstall_claude_profile.py --only mcpwithout the flag.127.0.0.1:49374, the default in every repository source. The host's registration and rendered hook commands must name the port its own unit binds:claude mcp remove ai-memory -s user, thenclaude mcp add ... http://127.0.0.1:<port>/mcp. The workstation'snativestack-memorybinds 49474, because another distribution holds 49374.tests/test_install_claude_profile.pyfollows the template. It keeps the 2026-09-23claude mcp getrecording asSERENA_CONTEXT_20260923, adds a 2026-09-25 recording of the new registration, and checks that the older registration is reported as differing.adoption/pins-linux-x86_64.json: the markitdown, tavily-cli, orx and agent-browserinstall_notes attribute their "installed" observation to the host that recorded New-PC Claude Code user profile: native claude-code pin, guard, agents, user-scope MCP, settings apply #139 on 2026-09-23. Versions, URLs and hashes are unchanged.bootstrap.mdand the macOS page disclose this (13af3fe).docs/next-host-stages.mdanddocs/new-workstation-runtime-profile-20260922.mdget dated notes; the projection is unchanged.sparseVhd=truehas no effect: WSL 2.7.14 creates every new VHD non-sparse while a data-corruption issue is open, and enabling sparse needs--set-sparse true --allow-unsafe(Sparse VHD support is currently disabled due to potential data corruption. microsoft/WSL#13075). Reclaim space withfstrim, then an offline, elevateddiskpart compact vdisk, orMount-VHD -ReadOnlywithOptimize-VHD -Mode Full. The workstation's live.wslconfigis compared with each projected value.docs/secret-storage.md. 5a extracts the checksum-verified binary into$ECO_INSTALL_ROOT/tools/gitleaks-8.30.1/and installs the guarded launcher and itsgitleakslink. It covers thepayload/layout (GITLEAKS_NATIVEor a relative link) and says howgitleaksresolves togitleaks-guarded-macoson macOS. 5b checkscore.hooksPath, then runsgit hook run pre-commitin a throwaway worktree: once clean (exit 0) and once with a planted, generated AWS-style key (exit 1). It notes that the hook is absent atv2026.09.24.1. The macOS install inadoption/tools/README.mdadds thegitleakslink and its pass criterion.adoption/platforms/linux-wsl2.md: "Windows-side commands from WSL" and "Listeners and ports", each item with its upstream source. vLLM's wildcardTCPStorelistener is recorded as a known upstream limitation that the Hyper-V firewall mitigates, citing vLLM'sdocs/usage/security.mdat v0.25.0. [BugFix] Bind RayExecutorV2 TCPStore before publishing its port vllm-project/vllm#50969 is about a RayExecutorV2 port race, not firewall guidance, so it is not cited.docs/acceptance-evidence-policy.md: discriminating controls. For a new claim, the failing control run is recorded next to the passing one; the planted-key hook check is the example. Existing unchanged-upstream-test evidence keeps its class.manifests/evidence.jsonre-registers every changed hash-listed file.Checks (WSL2 workstation, Python 3.13 via
uv run --no-project --python 3.13 --with jsonschema --with pyyaml, head cbad6a8):python3 scripts/evidence_manifest.py --write, then--check:{"files": 5338, "status": "passed"}.python3 scripts/validate.py:{"components": 69, "hashed_files": 5338, "profiles": 4, "receipts": 145, "status": "passed"}.python3 scripts/verdict_review_gate.py --base origin/main:no verdict rows changed (base aa0812b1d80e).python -m unittest tests.test_install_claude_profile tests.test_adoption_docs_consistency: 67 tests, OK (skipped=1). The tests that read the edited files (14 more modules, including the guarded runners, render_config, bootstrap, release-pin contents and secret guard): 501 tests, OK (skipped=15).build_ecosystem.py --check,new_host_grand_list.py --checkandcomponent_matrix.py --checkpassed.evidence_manifest --checkpassed with 5344 files,validate.pypassed, and the acceptance modules plustest_catalog_freshness_proposeran 147 tests, OK (skipped=1).serena-context,tests.test_install_claude_profilefails 3 tests. With the macOS page's "changed after" note removed,test_pages_mentioning_a_changed_install_input_say_sofails namingadoption/mcp/claude-user.json. Both were restored and pass.serena(Serena 2.0.0.dev0) andjcodemunch-mcp(jcodemunch-mcp 1.108.319) into${ECO_ROOT}/bin.CLAUDE_CONFIG_DIR(claude 2.1.282), a secondclaude mcp addofai-memoryexited 1 withMCP server ai-memory already exists in user config. Remove-then-add registered port 49474.serena-contextregistration present,install_claude_profile.py --only mcpleftai-memoryandserenaunchanged as differing. Afterclaude mcp remove serena -s user, the rerun registeredserena, keptai-memoryat 49474, andclaude mcp getreported✔ Connectedforserenaandjcodemunch.sha256sum --check. The extracted binary's sha256 is88f91962…, matchinginstallation-wsl.json. Through the launcher pair and link,command -v gitleaksgave the link,readlinkgavegitleaks-guarded, andgitleaks versionprinted8.30.1.HOME: thegitleaks→gitleaks-guarded-macoslink resolved, andgitleaks versionprinted8.30.1.GITLEAKS_NATIVEset to the link and a scan off macOS were each refused with 78.git config --get core.hooksPathprintedscripts/git-hooks. With a clean file staged,git hook run pre-commitscanned 11 bytes, found no leaks, and exited 0. With a planted generated key, it reportedleaks found: 1and exited 1. In a worktree atv2026.09.24.1it failed withcannot find a hook named pre-commit.core.hooksPath, printedscanned ~13858 bytes,no leaks found.validateran 4744 tests, OK (skipped=551), on the merge with main;validate-macos,secret-scan,verdict-review-gate, the three bootstrap jobs and CodeQL also passed.Residuals (not fixed in this PR):
adoption/hardware-profiles.json(lines 110-112) andcatalogs/landscape/new-host-grand-list.json:162still carrysparseVhd: truein the projected workstation profile.jcodemunch-mcp; step 4a documents a manual install. A Serena pin needs a git-source uv-tool kind:install_uv_tooltakes onlyid==version.recipes/README.mdjCodeMunch section still gives plainuv tool install jcodemunch-mcp==1.108.319. That lands outside${ECO_ROOT}/bin, and this round could edit only the serena row.scripts/credential_status.pychecks that gitleaks is onPATH, not that it resolves to the guarded launcher.scripts/git-hooks/pre-commitis not inv2026.09.24.1. A clone at the pinned tag withcore.hooksPath=scripts/git-hookscommits without any hook until a release carries it; 5b now says so and its check fails there.wsl.exeitems, because the worktree guard refuses Windows interop commands; they rest on the linked upstream docs and source plus the coordinator's observation. Also unverified: the workstation's Hyper-V firewall state, VHD compaction, and the Codex template in a Codex session.tests.test_adoption_guarded_runners.BoundedRunCpuQuotaTests(launcher='dropped') failed twice locally in the first round. The runner refused withmemory.max is not enforcedwhere the test expectscpu.max. It passed in this round and in CI. Neither the test noradoption/tools/scripts are changed here.🤖 Generated with Claude Code