docs(configuration): consolidate child boundary - #926
Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
Coverage Report
File CoverageNo changed files found. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: a4eceec0e3
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
moncher-dev
left a comment
There was a problem hiding this comment.
Review at head a4eceec0. Passing — requesting @hojinzs as the human reviewer. Docs-only, one file, +39/-40, no changeset needed.
I judged this the way the section it replaces should have been judged: by checking each surviving claim against the code that runs after #868/#869/#870/#877/#902/#903/#904, not by reading for coherence.
Claims verified against code
GIT_CONFIG_*row. "GIT_CONFIG_COUNTmust be a non-negative safe integer or the transport fails" is exact —packages/worker/src/git-transport.ts:250-262throws on both the regex and theNumber.isSafeIntegercheck. "Symphony appends itscredential.helperentry after the caller-supplied indexed Git configuration" is also exact: it writesGIT_CONFIG_KEY_${gitConfigCount}and setsGIT_CONFIG_COUNTtocount + 1(:263-271).GITHUB_GIT_HOST/GITHUB_GIT_USERNAMErows. Defaultsgithub.comandx-access-tokenmatchpackages/runtime-codex/src/git-credential-helper.ts:3-4, and both are read at:95-96; the host path reaches them throughbuildHostGitEnvironment(git-transport.ts:228-237).GITHUB_GRAPHQL_TOKENas the direct host Git credential source.buildHostGitEnvironmentkeys the whole credential helper offenv.GITHUB_GRAPHQL_TOKEN— post-#923/#924 this is the only token in that path, so "worker host tools and Git transport" is right.- The three deleted broker rows. Nothing reads them for behavior.
GITHUB_TOKEN_BROKER_URL/SECRET/CACHE_PATHsurvive only inpackages/core/src/runtime/custom-child-env.ts:66,67,84(child strip lists) andpackages/tracker-github/src/orchestrator-adapter.ts:50-52(secretEnvironmentNames, consumed only bycustom-child-envstripping andmcp-composeredaction). Deleting the rows is correct — they were describing a configuration surface that no longer exists. - "Every built-in and custom runtime constructs its child environment separately." Both
packages/runtime-claude/src/adapter.tsandpackages/runtime-codex/src/runtime.tsbuild fromcore'sagent-child-env, so the generalization holds for both built-ins, not just Codex. - No leftover contradiction.
GITHUB_TOKEN_BROKER*and "Credential Brokers" now appear in no other doc — the removed rows were the last occurrence outside code.
Anchors
Only two documents link into this file, both from README.md: #auth-and-api-endpoints (heading text unchanged, only demoted ##→###, so the anchor is unaffected) and #environment-loading-order (heading renamed, but an explicit <a id="environment-loading-order"> was added — resolves). The single in-file link, #agent-visible-symphony-context, is likewise preserved by an explicit anchor above the retitled heading. The four other retitles (Agent Runtime Credentials, Custom Runtime Environment Contract, Worker Context Variables, Hook Variables) do change their anchors, but nothing in the repository references them. prettier --check clean on the new file.
Non-blocking
- One claim is a shade stronger than the code. "they are not configuration inputs" —
packages/runtime-codex/src/launcher.ts:41-43still reads all three broker variables intogithubTokenBrokerUrl/githubTokenBrokerSecret/githubTokenCachePath(declared atruntime.ts:75-77). Nothing consumes those fields, so the behavioral claim is true and the doc is not misleading — but the code still has dead broker reads worth a follow-up sweep, and until they go the sentence is describing intent rather than the literal code. - The
##section now spans lines 395-695 and so nests### GitHub Tracker Transition Extensionand### Workspace-Key Migrationunder "Worker And Agent-Child Environment Boundary", which is not what either is about. This is inherited — they were already###under## Worker Context Variablesonmain— so it is not a regression, but the consolidation is a natural moment to lift them back out to##.
Neither blocks. The consolidation does what #910 asked: the child boundary is stated once, and what remains is true of the code as merged.
hojinzs
left a comment
There was a problem hiding this comment.
리뷰 1/6 — head a4eceec
문서 전용, 1파일, +39/-40. CI 녹색(Test, Container Smoke). changeset 불필요 판단 동의.
문서를 읽고 일관성을 판단하는 대신, 살아남은 서술을 각각 머지된 코드에 대조하고 자식 환경 빌더를 실제로 실행해서 확인했습니다.
스모크 테스트 (문서 전용 PR이므로 API/화면 대신 문서가 기술하는 계약을 직접 실행)
buildCustomRuntimeChildEnvironment / buildAgentChildEnvironmentAssignments를 실제 호출한 결과:
| 문서 서술 | 실행 결과 |
|---|---|
custom 기본 자식은 portable 변수 + private HOME/GH_CONFIG_DIR |
✅ COLORTERM, LANG, PATH, SHELL, TERM, HOME, USERPROFILE, GH_CONFIG_DIR |
GIT_TERMINAL_PROMPT=0 |
✅ |
"Codex and Claude also receive a private DOCKER_CONFIG" (custom은 아님) |
✅ built-in 경로에만 존재 |
| 트래커 토큰은 자식에 도달하지 않음 | ✅ GITHUB_GRAPHQL_TOKEN 제거됨 |
| agent-visible 허용목록 9개 | ✅ AGENT_VISIBLE_SYMPHONY_CONTEXT_ENVIRONMENT_NAMES와 정확히 일치 |
"LC_* locale variables are also preserved" |
❌ LC_ALL 제거됨 — 아래 P2 |
pnpm exec prettier --check docs/configuration.md 통과. packages/core/src/runtime/ 테스트 30개 통과.
#910 수용 조건 대조
| 조건 | 판정 |
|---|---|
| 자식 경계가 한 절에서 한 번만 설명된다 | ###으로 접혔고 권위 있는 표가 :411에 하나 있음. 다만 :522가 여전히 같은 목록을 자기 낱말로 반복 (P3) |
| 남은 서술이 머지된 코드와 일치한다 | ❌ LC_* 한 문장 (P2) |
GITHUB_TOKEN_BROKER_SECRET 행 정리 |
✅ 3개 행 삭제 + denylist 사실 문장으로 대체. 코드 확인: GITHUB_TOKEN_BROKER_URL/CACHE_PATH는 AGENT_CHILD_CREDENTIAL_ENVIRONMENT_NAMES, ..._SECRET은 CUSTOM_RUNTIME_RESERVED_AUTH_ENVIRONMENT_NAMES에만 생존 — "not configuration inputs"는 동작상 정확 |
| 앵커 링크 미파손 | ✅ 아래 참조 |
| 코드 변경 없음 | ✅ |
앵커 감사
리포지토리 전체에서 이 파일로 들어오는 링크는 3개뿐입니다.
README.md:100,README.md:820→#environment-loading-order— 제목이 바뀌었지만:393에 명시적<a id>추가로 해결 ✅README.md:427→#auth-and-api-endpoints— 제목 문자열 불변(##→###강등만), 앵커 영향 없음 ✅docs/configuration.md:414→#agent-visible-symphony-context—:634명시적 앵커로 보존 ✅
앵커가 바뀐 나머지 4개(Agent Runtime Credentials, Custom Runtime Environment Contract, Worker Context Variables, Hook Variables)는 참조하는 곳이 없습니다. GitHub tracker transition extension / Workspace-key migration은 대소문자만 바뀌어 앵커 동일 ✅
오버엔지니어링 / 임의 결정
없다고 봅니다. Title Case 통일은 파일의 기존 관례를 따른 것이고, <a id> 방식은 앵커 보존이라는 수용 조건을 만족시키는 최소 수단입니다. 범위 밖(docs/architecture.md, 동작 변경)으로 새지 않았습니다.
이번 라운드 지적
- P2
:413—LC_*서술이 Codex에만 참. Claude/custom에서는 실제로 탈락 (실행 확인) - P2
:659,:669—GitHub Tracker Transition Extension/Workspace-Key Migration이 환경 경계##절 아래로 들어감 - P3
:521— custom 절이 strip 목록을 세 번째로 재서술 - nit
:494—CODEX_HOME은 CodexSAFE_RUNTIME_ENV_KEYS에 실제로 포함됨
후속 (이 PR 범위 아님)
packages/runtime-codex/src/launcher.ts:41-43이 broker 변수 3개를 여전히 읽어 runtime.ts:75-77 필드에 넣습니다. 소비자는 테스트 픽스처뿐이라 동작은 없지만, 이 문서가 "설정 입력이 아니다"라고 단언한 이상 죽은 읽기는 정리 대상입니다. 별도 이슈를 권합니다.
변경 요청은 P2 두 건에 대한 것입니다. 둘 다 한두 줄 수정이며, 특히 LC_*는 "이 경계에 대한 단일 진실"을 자처하는 절 안에 남은 유일한 사실 오류라 통합 PR에서 함께 고치는 것이 맞다고 봅니다. P3와 nit은 판단에 맡기며, 미반영 사유를 스레드에 남겨주시면 그대로 수용하겠습니다.
Generated by Claude Code
hojinzs
left a comment
There was a problem hiding this comment.
리뷰 2/6 — head 46bec3e
라운드 1의 지적 4건 전부 반영 확인. 남은 블로커는 P2 한 건이며, 그 P2는 라운드 1 수정의 2차 효과로 새로 생긴 것입니다. 한 블록 이동으로 끝나며 그것만 고쳐지면 승인합니다.
CI 녹색 (Test, Container Smoke — 46bec3e). prettier --check docs/configuration.md 통과.
라운드 1 지적 대조
| 지적 | 상태 | 검증 |
|---|---|---|
P2 :413 LC_* 서술이 Codex에만 참 |
✅ | 아래 실행 확인 |
P2 tracker/workspace 절이 경계 ## 아래 |
✅ 부분 | 둘은 ##으로 올라갔으나 훅 절이 남겨짐 → 새 P2 |
P3 :521 strip 목록 3회 재서술 |
✅ | denylist 문단 삭제, custom 고유 차이만 잔존 |
nit :494 CODEX_HOME |
✅ | "provider credentials are not part of…"로 축소 |
미반영 없이 전부 코드로 반영되었고, 각 스레드에 근거 답변도 달렸습니다.
스모크 테스트 — 46bec3e가 새로 단언한 3개 명제 실행 검증
문서 전용 PR이므로 API/화면 대신 문서가 기술하는 계약을 직접 호출했습니다. buildCustomRuntimeChildEnvironment / buildAgentChildEnvironmentAssignments에 operator DOCKER_CONFIG, LC_ALL, 트래커 토큰, broker secret, GITHUB_GIT_HOST를 주입한 결과:
| 문서 서술 | 위치 | 실행 결과 |
|---|---|---|
Codex는 LC_* 보존, Claude/기본 custom은 LANG만 |
:414 |
✅ 기본 custom 자식에 LANG 있고 LC_ALL 없음. runtime-codex/src/runtime.ts:561은 startsWith("LC_"), runtime-claude/src/adapter.ts:620-631의 DEFAULT_INHERITED_ENV_KEYS와 custom-child-env.ts:3-14의 PORTABLE_ENVIRONMENT_NAMES에는 LC_ 규칙 없음 |
custom은 runtime-managed DOCKER_CONFIG를 받지 않음 |
:525 |
✅ 기본 custom 결과에 DOCKER_CONFIG 부재. built-in 경로는 /w/home/.docker 반환 |
호환 모드는 private DOCKER_CONFIG를 설치하지 않아 operator 값이 상속될 수 있음 |
:552 |
✅ inheritEnvironment: true에서 DOCKER_CONFIG=/home/operator/.docker 그대로 통과. 동시에 GITHUB_GRAPHQL_TOKEN/GITHUB_TOKEN_BROKER_SECRET/GITHUB_GIT_HOST는 undefined, HOME·GH_CONFIG_DIR은 오버라이드, GIT_TERMINAL_PROMPT=0 — "removes tracker credentials, broker/authentication controls, and host Git credential-helper settings"와 정확히 일치 |
가장 민감한 문장(호환 모드 Docker 상속)이 코드와 정확히 맞습니다. Codex 리뷰가 제기한 "false security guarantee" 우려는 실제로 해소되었습니다.
#910 수용 조건 대조
| 조건 | 판정 |
|---|---|
| 자식 경계가 한 절에서 한 번만 설명된다 | ❌ 표의 7개 절 중 6개는 접혔으나 Hook Variables가 경계 절 밖으로 밀려남 (아래 P2) |
| 남은 서술이 머지된 코드와 일치한다 | ✅ 위 스모크로 확인 |
GITHUB_TOKEN_BROKER_SECRET 행 정리 |
✅ 3행 삭제 + denylist 사실 문장. custom-child-env.ts:66,67,84에만 생존 |
| 앵커 링크 미파손 | ✅ 인바운드 3개(README.md:100,427,820) 전부 해석됨. 개명된 나머지 앵커는 리포지토리 내 참조 없음 |
| 코드 변경 없음 | ✅ 1파일, +51/-49 |
오버엔지니어링 / 임의 결정
없습니다. 46bec3e의 4개 변경 전부 라운드 1 지적에 1:1 대응하며, 범위를 넘어 docs/architecture.md나 동작 자체로 새지 않았습니다. launcher.ts:41-43의 죽은 broker 읽기는 별도 이슈 권고를 유지하며 이 PR에서 손대지 않은 판단에 동의합니다.
이번 라운드 지적
- P2
:683—### Workflow Hook Context가## Workspace-Key Migration하위로 고아가 됨. 인라인 참조 - nit
:408—separately from the following contract가 의도와 반대로 읽힘. 인라인 참조
변경 요청은 P2 한 건입니다. :683-697 블록을 :660 뒤로 옮기는 것이 전부이고, 그러면 :406의 "three distinct environment boundaries" 선언과 실제 제목 구조가 일치하며 #910의 첫 수용 조건이 충족됩니다. 이것만 반영되면 다음 라운드에서 승인합니다. nit은 판단에 맡깁니다.
Generated by Claude Code
hojinzs
left a comment
There was a problem hiding this comment.
리뷰 3/6 — head 4ace807 — Approve
라운드 2의 블로커 P2와 nit 모두 반영 확인. #910의 수용 조건 5개 전부 충족. CI 녹색(Test, Container Smoke — 4ace807). 승인합니다.
라운드 2 지적 대조
| 지적 | 상태 | 검증 |
|---|---|---|
P2 :683 ### Workflow Hook Context가 ## Workspace-Key Migration 하위로 고아 |
✅ | 블록 이동만. 아래 제목 트리 참조 |
nit :408 separately from the following contract 오독 |
✅ | separately, according to the following contract로 수정 |
4ace807은 +18/-18 한 파일이고, 그 전부가 위 두 건에 1:1 대응합니다. 요구하지 않은 변경이 섞여 들어오지 않았습니다.
제목 트리 — 요청한 구조와 일치
:395 ## Worker And Agent-Child Environment Boundary
:456 ### Auth And API Endpoints
:470 ### Git Access
:491 ### Agent Runtime Authentication
:521 ### Custom Runtime Authentication And Compatibility
:565 ### CLI And Project Runtime
:583 ### Tuning Knobs
:602 ### Worker Host Context
:639 ### Agent-Visible Symphony Context
:662 ### Workflow Hook Context ← 경계 절 안으로 복귀
:678 ## GitHub Tracker Transition Extension
:688 ## Workspace-Key Migration
:699 ## Recovery And Resume Context
경계 ## 절이 :395-677로 닫히고, :406의 "three distinct environment boundaries" 선언(워커 호스트 / 에이전트 자식 / 훅)과 실제 제목 구조가 이제 정확히 대응합니다. 무관한 두 절은 최상위로 복귀했습니다.
스모크 테스트 — 4ace807에서 재실행
문서 전용 PR이므로 API/화면 대신 문서가 기술하는 계약을 직접 호출했습니다. operator DOCKER_CONFIG, LC_ALL, 트래커 토큰, broker secret, Git 자격증명 배관을 주입한 결과:
| 문서 서술 | 위치 | 실행 결과 |
|---|---|---|
Claude/기본 custom은 LANG만, LC_* 없음 |
:414 |
✅ LANG 있고 LC_ALL/LC_CTYPE 부재 |
custom은 runtime-managed DOCKER_CONFIG를 받지 않음 |
:526 |
✅ 기본 custom 결과에 부재 |
private HOME/GH_CONFIG_DIR, GIT_TERMINAL_PROMPT=0 |
:524 |
✅ HOME=/w/home, GH_CONFIG_DIR=/w/home/gh, GIT_TERMINAL_PROMPT=0 |
| 트래커 토큰·broker·Git/SSH 배관 스트립 | :417 |
✅ GITHUB_GRAPHQL_TOKEN, LINEAR_API_KEY, GITHUB_TOKEN_BROKER_*, GITHUB_GIT_HOST, GIT_CONFIG_COUNT, SSH_AUTH_SOCK, XDG_CONFIG_HOME 전부 부재 |
호환 모드는 private DOCKER_CONFIG를 설치하지 않아 operator 값 상속 가능 |
:551 |
✅ DOCKER_CONFIG=/home/operator/.docker 통과, 동시에 위 자격증명은 전부 부재 |
가장 민감한 문장(호환 모드 Docker 상속)이 코드와 정확히 일치합니다.
pnpm exec prettier --check docs/configuration.md 통과. 작업 트리 깨끗(임시 테스트 파일 제거).
#910 수용 조건 대조
| 조건 | 판정 |
|---|---|
| 자식 경계가 한 절에서 한 번만 설명된다 | ✅ 이슈 표의 7개 절이 전부 처리됨 — 6개는 :395 절 하위 ###으로 접힘, Credential Brokers And Git Access는 삭제 |
| 남은 서술이 머지된 코드와 일치한다 | ✅ 위 스모크. 인라인 P2 한 건은 이번 diff가 건드리지 않은 상속 행 |
GITHUB_TOKEN_BROKER_SECRET 행 정리 |
✅ 3행 삭제 + denylist 사실 문장. 코드상 custom-child-env.ts의 strip 목록에만 생존 |
| 앵커 링크 미파손 | ✅ 인바운드 전수 확인 — README.md:100,820 → #environment-loading-order(:393 명시적 <a id>), README.md:427 → #auth-and-api-endpoints(제목 문자열 불변), 파일 내부 :415 → #agent-visible-symphony-context(:637 명시적 <a id>). 리포지토리 전체에서 이 파일로 들어오는 링크는 이 3개뿐 |
| 코드 변경 없음 / changeset 불필요 | ✅ docs/configuration.md 1파일 |
오버엔지니어링 / 임의 결정
없습니다. 3개 커밋 전부 이슈 또는 리뷰 지적에 대응하며, 범위 밖(docs/architecture.md, 동작 자체)으로 새지 않았습니다. launcher.ts:41-43의 죽은 broker 읽기를 이 PR에서 손대지 않은 판단에도 동의합니다.
이번 라운드 지적
- P2 (비블로킹)
:415—Symphony run context행이 코드보다 좁습니다. Codex 자식은 허용목록 외에SYMPHONY_ORCHESTRATOR_URL/SYMPHONY_RUN_ID/SYMPHONY_ORCHESTRATOR_TOKEN을 추가로 받습니다(실행 확인). 설계 의도대로이며(skills/templates/gh-project.ts,push.ts가 이 토큰 사용을 지시), 이번 diff가 건드리지 않은 상속 행입니다. 인라인에 정정안을 남겼으니 별도 이슈로 처리해 주세요.
라운드 2에서 "P2 한 건만 반영되면 승인한다"고 약속했고 그것은 정확히 반영되었습니다. 새로 발견한 P2는 이 diff의 산물이 아니고 한 줄 정정이므로, 무한 핑퐁을 피해 승인하고 후속 이슈로 넘깁니다. 머지 가능합니다.
Generated by Claude Code
| | ---------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | ||
| | Portable runtime variables | Codex and Claude copy their runtime-safe process allowlist; default custom runtimes copy their portable allowlist. `LC_*` locale variables are also preserved. | | ||
| | Portable runtime variables | Codex copies its runtime-safe process allowlist, including `LC_*` locale variables. Claude and default custom runtimes copy fixed portable allowlists that include `LANG` but not `LC_*`. | | ||
| | Symphony run context | Only the non-secret names in the [agent-visible Symphony context](#agent-visible-symphony-context) are copied. | |
There was a problem hiding this comment.
P2 (비블로킹, 후속 이슈 권장) — Symphony run context 행이 코드보다 좁습니다.
Only the non-secret names in the agent-visible Symphony context are copied.
Codex 자식은 이 허용목록 외에 3개를 더 받습니다. 그중 하나는 시크릿입니다.
packages/runtime-codex/src/runtime.ts:604-614가 orchestratorRunEnv를 plan.env에 직접 병합합니다.
const orchestratorRunEnv = {
...(config.orchestratorUrl ? { SYMPHONY_ORCHESTRATOR_URL: ... } : {}),
...(config.orchestratorRunId ? { SYMPHONY_RUN_ID: ... } : {}),
...(config.orchestratorToken ? { SYMPHONY_ORCHESTRATOR_TOKEN: ... } : {}),
};이후 제거 경로 어디에도 걸리지 않습니다 — removedEnvironmentNames(:631-635)는 secretEnvironmentNames + CUSTOM_RUNTIME_RESERVED_AUTH_ENVIRONMENT_NAMES + LINEAR_GRAPHQL_URL이고, stripCredentialEnvironmentForAgentChild는 AGENT_CHILD_CREDENTIAL_ENVIRONMENT_NAMES뿐입니다. 셋 다 SYMPHONY_ORCHESTRATOR_TOKEN을 포함하지 않습니다.
buildCodexRuntimePlan을 실제로 호출해 확인했습니다:
CODEX_CHILD_ENV {
"SYMPHONY_ORCHESTRATOR_URL": "http://127.0.0.1:4681",
"SYMPHONY_ORCHESTRATOR_TOKEN": "SECRET-ORCH-TOKEN",
"SYMPHONY_RUN_ID": "run-abc",
"SYMPHONY_ISSUE_ID": "I_1",
"DOCKER_CONFIG": "/w/rt/child-home/.docker",
"HOME": "/w/rt/child-home"
}
SYMPHONY_ORCHESTRATOR_URL / SYMPHONY_RUN_ID / SYMPHONY_ORCHESTRATOR_TOKEN 셋 다 AGENT_VISIBLE_SYMPHONY_CONTEXT_ENVIRONMENT_NAMES(custom-child-env.ts:17-27)에 없습니다. custom 호환 모드에서도 SYMPHONY_ORCHESTRATOR_TOKEN이 자식에 그대로 도달합니다(같은 스모크에서 확인).
이것은 버그가 아니라 의도된 설계입니다. packages/cli/src/skills/templates/gh-project.ts:23,43,73과 push.ts:21이 에이전트에게 $SYMPHONY_ORCHESTRATOR_TOKEN으로 오케스트레이터 API를 호출하라고 지시합니다. 자식이 이 토큰을 가지는 것이 전제입니다. :619 행의 Read by: Worker도 같은 이유로 좁습니다.
문제는 서술입니다. #910의 전제가 "이 문서를 워커가 읽는다"인데, 권위를 자처하는 표가 "허용목록만 온다"고 단언하면 그 워커는 자기가 실행하도록 지시받은 스킬이 참조하는 변수가 없다고 판단하게 됩니다. 정확히 #910이 없애려던 종류의 오독입니다.
그런데 이 행은 이번 diff가 건드리지 않았고(#886에서 들어온 그대로), 라운드 2에서 "P2 하나만 반영되면 승인한다"고 약속했으며 그것은 정확히 반영되었습니다. 무한 핑퐁을 막는 것이 이 리뷰의 목적이므로 블로킹하지 않고 승인합니다. 다만 별도 이슈로 다음 정도의 정정을 권합니다.
| Symphony run context | The non-secret names in the agent-visible Symphony context are
copied to every child. Built-in runtimes additionally pass the run's
`SYMPHONY_ORCHESTRATOR_URL`, `SYMPHONY_RUN_ID`, and `SYMPHONY_ORCHESTRATOR_TOKEN`
so the agent can call the worker-scoped orchestrator API that the shipped
`/gh-project` and `push` skills use. |
Generated by Claude Code
Issues
Summary
LC_*inheritance from Claude/default-custom portable allowlists and explicitly documents the custom compatibility-mode exception.Change-point diagram
DOCKER_CONFIGmay remainStart here
docs/configuration.md:395— authoritative worker and agent-child environment boundarydocs/configuration.md:523— custom runtime authentication and compatibility exceptiondocs/configuration.md:639— exact agent-visible Symphony context allowlistdocs/configuration.md:662— workflow hook context within the consolidated boundaryUser-Visible Behavior / Operational Impact
Validation
pnpm format— failed on pre-existing repository-wide formatting drift in 68 unrelated files;docs/configuration.mdpasses targeted formattingpnpm exec prettier --write docs/configuration.md && pnpm exec prettier --check docs/configuration.md— passpnpm lint— passgit diff --check— passrg— passChangeset
Risks & rollback
4ace807,46bec3e, anda4eceecif the documentation organization is not accepted.Changed files
docs/configuration.md— consolidates and corrects the child environment boundary while removing obsolete broker configuration entriesPost-merge / human validation
Security
.envfiles, or generated installation tokens are committed