Harden Agent OS installation and adapters - #348
Open
jarmo-blip wants to merge 5 commits into
Open
Conversation
rapharina
suggested changes
Sep 11, 2026
rapharina
left a comment
There was a problem hiding this comment.
Thanks for the detailed work here. I’m requesting changes rather than merging because the PR currently combines several unrelated scopes and its installer design conflicts with the direction of the current profile/skills architecture.
What I’d like to keep from this PR:
- explicit argument parsing and
set -Eeuo pipefail --project-dir,--target,--dry-run,--yes, and--force- staged writes, manifests, local-change protection, and path/symlink validation
- doctor and manifest-scoped uninstall
- ShellCheck plus functional installer tests
Why I can’t merge it as-is:
- The PR mixes installer hardening, adapters, an LLM router/optimizer, release preparation, and usage documentation. Please split those into separate PRs; the installer-hardening portion is the part I’d most like to revisit first.
- The installer still assumes
profiles/<profile>/standards, while the current architecture is moving toward flat profile directories with structuredindex.yml, global governance, and profile-declared curated skills. - The Codex adapter generates
agent-os-*skills from command markdown. That conflicts with installing curated, profile-specific skills such aslian-harness,lian-frontend-harness, andlian-dbhub. - Portability is not established. On macOS, the core installer failed at
realpath -m, andsha256sumis not available by default. The full submitted test run also did not complete locally; it failed inllm/optimizer.pyatzip(..., strict=True)before reaching the installer tests. - No GitHub checks have run on this PR head.
Suggested next step: open a smaller installer-hardening-only PR rebased on the current profile/skills layout, with the staged-write/manifest/path-validation design and CI. The adapter and LLM optimizer work can then be reviewed separately.
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.
Summary
Why
The packaged default profile did not install correctly, shell counters could
terminate scripts under
set -e, nested standards collided in the YAML index,and profile names could escape the intended directory. Installation also only
implemented a Claude-specific destination despite broader compatibility claims.
Impact
Existing unmanaged standards are preserved. Manifest-managed local edits fail
closed unless
--forceis explicitly supplied. Installations can be previewedwith
--dry-run, diagnosed withdoctor.sh, and removed using the scopedmanifest-based uninstaller.
Validation
bash -n scripts/*.sh install_agent_os.sh tests/run.sh./tests/run.sh— 14/14 passedconfig.ymland.github/workflows/test.ymlgit diff --checkcae8e664fb59a01869718c3151e0f45b7a06a2fb— 19 changed files, 0 scoped findings