Skip to content

docs: remove remote runner access details from offload notes - #4623

Open
luvs01 wants to merge 2 commits into
lidge-jun:devfrom
luvs01:agent/redact-remote-offload-20260914
Open

luvs01 wants to merge 2 commits into
lidge-jun:devfrom
luvs01:agent/redact-remote-offload-20260914

Conversation

@luvs01

@luvs01 luvs01 commented Sep 14, 2026

Copy link
Copy Markdown
Contributor

Summary

Remove remote runner access details from public offload notes while retaining generic operational guidance. This updates the checked-in document only; it does not claim a historical purge or changes to live remote systems.

Current author verification

  • Published head: 4507e622f77133e118b75ebaff35def9ee4d3690.
  • This changes one document only. The current changed-file scope, hygiene and completed review were verified; no runtime matrix is required or claimed for this text-only change.
  • The branch remains within the repository's current allowed dev-drift window. No tip-only rebase was performed.
  • All known applicable inline and review-body findings have been addressed. Author implementation, current scoped validation and known review findings are complete. Maintainer approval and merge remain separate decisions.

Review readiness checklist

The validation checkbox refers to the explicit scope above. Historical run IDs and prior local results are not represented as new-head full-suite execution.

  • All CI tests are green on my local testing.
  • I pushed my PR to the latest dev commit.
  • I resolved all correct Codex and CodeRabbit findings.
  • My PR is ready for review.

Summary by CodeRabbit

  • Documentation
    • Updated remote testing documentation to use generic runner terminology.
    • Removed publicly documented host details, access configuration, paths, and transfer or execution commands.
    • Added generic validation commands and clarified that operational infrastructure details are maintained outside the public repository.

@coderabbitai

coderabbitai Bot commented Sep 14, 2026

Copy link
Copy Markdown
Contributor

Review Change StackReview Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Advanced

Run ID: 9d23e058-7052-4f99-8ee9-0847207a2c29

📥 Commits

Reviewing files that changed from the base of the PR and between 4f788f9 and b0c9ddc.

📒 Files selected for processing (1)
  • devlog/_fin/260731_pr_merge_round/022_remote_test_offload.md

Included review availability: Your plan provides up to 10 included reviews per hour; 5 remain after this review.


📝 Walkthrough

Walkthrough

The remote test offload document now uses generic remote runner terminology. It removes host-specific access and transfer commands, adds generic validation commands, and retains the validation results and push explanation.

Changes

Remote runner documentation

Layer / File(s) Summary
Remote runner documentation and validation
devlog/_fin/260731_pr_merge_round/022_remote_test_offload.md
The heading no longer names a specific machine. The document removes SSH, transfer, checkout, and execution details. It adds generic validation commands and retains the results table and --no-verify push explanation.

Priority: ⬇️ Low

Estimated code review effort: 1 (Trivial) | ~5 minutes

Change: Other

Merge Risk: ⚪ Minimal · up to b0c9d

The PR removes operational infrastructure details while preserving valid validation commands and historical results, with no runtime or configuration changes.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely describes the main change: removing remote runner access details from the historical offload notes.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

Copy link
Copy Markdown
Contributor

Deterministic PR hygiene checks passed.

@github-actions github-actions Bot added the documentation Improvements or additions to documentation label Sep 14, 2026
@github-actions

github-actions Bot commented Sep 14, 2026

Copy link
Copy Markdown
Contributor

✅ READY

  • all PR quality gates passed; the review readiness checklist is complete.

Review readiness checklist

  • ✅ All CI tests are green on my local testing.
  • ✅ I pushed my PR to the latest dev commit.
  • ✅ I resolved all correct Codex and CodeRabbit findings.
  • ✅ My PR is ready for review.

4/4 boxes ticked.

This pull request is already Ready for Review.
The review-ready label marks this PR as ready; review automation runs independently.
Maintainers: @lidge-jun @Ingwannu

@luvs01

luvs01 commented Sep 14, 2026

Copy link
Copy Markdown
Contributor Author

@codex review

@luvs01

luvs01 commented Sep 14, 2026

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Sep 14, 2026

Copy link
Copy Markdown
Contributor
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 14, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-09-14T12:17:40.325359Z b0c9ddc Manual request
ℹ️ 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" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Delightful!

Reviewed commit: b0c9ddc623

ℹ️ 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".

@lidge-jun

Copy link
Copy Markdown
Owner

리뷰 · 우선순위 50 / 80

설명

이 PR(작성자 luvs01, draft)은 역사 기록 devlog/_fin/260731_pr_merge_round/022_remote_test_offload.md 에서 원격 러너 접속·계정·체크아웃 경로를 공개 트리 tip에서 지운다. 지금 dev tip 4f788f916 의 그 파일을 열면 SSH Host 블록에 HostName ssh-macmini.lidgeai.com, User junny, cloudflared ProxyCommand, ~/ci/opencodex 체크아웃, scp/ssh macmini-cf ... 실행 예시가 그대로 있다. 공개 저장소에 운영 접근 정보가 남아 있는 상태라, tip만이라도 걷어 내는 방향은 맞다.

바뀌는 내용은 문서 하나뿐이다. 제목을 'macmini-cf' 대신 '원격 러너'로 바꾸고, Host 블록·경로·전송/실행 명령을 빼며, 대신 '저장소 밖 운영 구성에서 관리한다'는 문장과 일반 검증 네 줄(bun run test / typecheck / lint:gui / privacy:scan)을 남긴다. git bundle로 옮긴 이유와 결과 표(162초, load 2.4, 6210 pass)는 유지한다. 러너·계정·워크플로·훅·현재 런타임 설정 코드는 건드리지 않는다고 본문에 명시했다. types.ts / config.ts 분할과도 무관하다.

현재 dev 스냅샷 방향(2.56.0 패키지, 2.55.0 출시 기록, #4546 cost-guard, #4621 key-429, GUI/reauth)의 제품 레인과는 겹치지 않는다. 다만 공개 tip에 SSH 호스트·계정·프록시 명령이 노출된 채인 것은 보안 위생 문제라서, 순수 장식용 문서 PR보다는 위인 50점이다. 동시에 한계도 분명하다. 작성자가 스스로 적었듯 이 PR은 기존 git 히스토리를 지우지 않는다. 그리고 devlog 다른 계획/완료 기록에는 macmini-cf 별칭과 체크아웃 경로가 아직 많이 남아 있다. 이번 파일의 HostName/User/ProxyCommand가 가장 직접적인 접근 레시피였고, 그걸 tip에서 제거하는 범위로 보면 초점이 좋다.

우선순위 50은 'tip 노출 제거는 당장 가치 있음'과 '히스토리·다른 문서 잔존·draft'를 같이 반영한 점수다. 런타임·테스트 변경이 없고 privacy:scan도 통과했다고 하니, Ready만 맞으면 부담 없이 넣을 수 있는 문서 PR이다. 다만 메인테이너가 '히스토리에 남은 동일 블록을 어떻게 볼지'와 '다른 macmini-cf 언급을 후속 레닥션할지'를 짧게 정해 두는 편이 좋다.

라인 - devlog/_fin/260731_pr_merge_round/022_remote_test_offload.md 제목/본문 - tip 레닥션은 충분해 보이지만, 동일 blob이 과거 커밋에 남는다. 공개 복제본·미러·fork에는 예전 내용이 그대로일 수 있다.
경로 - devlog/_plan/**, devlog/_fin/** 다수 - macmini-cf 별칭과 ~/opencodex 등 경로는 다른 기록에 아직 있다. 이번 PR 범위 밖이지만, '접근 레시피만 지우고 별칭은 남긴다'는 기준을 문서화해 두면 후속이 흔들리지 않는다.
경로 - PR 본문 Verification - '히스토리 purge 안 함'을 이미 밝혔다. Ready 전환 시 체크리스트에 '운영 쪽에서 해당 SSH 접근이 여전히 유효하면 자격/터널 정책을 점검했는지' 한 줄을 남기는 편이 안전하다.
심볼 - 결과 표의 '원격 러너' 표기 - 일반화는 좋고, 162초/6210 pass 숫자는 그대로라 역사 기록으로서의 증거 가치는 유지된다.

메인테이너의 판단이 필요한 지점

  • tip 레닥션만으로 충분한지, 아니면 히스토리 rewrite/자격 회전까지 별도 작업으로 볼지.
  • 다른 devlog의 macmini-cf 언급을 후속 PR로 묶을지, 별칭은 공개해도 된다고 둘지.
  • draft 상태에서 바로 Ready·머지해도 되는지(코드 리스크 없음).

너의 추천
범위는 좁고 방향이 맞다. Ready로 올린 뒤 dev 에 랜딩해도 된다. 머지 전에(또는 직후 이슈로) 'git 히스토리에는 동일 SSH 블록이 남는다'는 점을 운영 메모에 남기고, 해당 호스트 접근이 아직 유효하면 cloudflared/SSH 쪽 노출을 전제로 한 번 점검한다. 다른 문서의 macmini-cf 별칭 정리는 이 PR에 섞지 말고 후속 hygiene으로 분리한다. types/config 분할 무효화 대상 아님.

이 댓글은 grok-bot이 작성했습니다

Co-authored-by: luvs01 <27862058+luvs01@users.noreply.github.com>
@lidge-jun
lidge-jun force-pushed the agent/redact-remote-offload-20260914 branch from 2cc47f1 to 4507e62 Compare September 15, 2026 11:14
@github-actions
github-actions Bot marked this pull request as ready for review September 15, 2026 16:28

@abhisheksharma2411 abhisheksharma2411 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Checked the redaction for completeness rather than reading the diff, and it holds — with one gap that isn't in this PR's scope but is the reason it was needed.

The sensitive values are gone, repo-wide. Grepped the whole tree at 4507e622, not just the changed file:

files at PR head
ssh-macmini.lidgeai.com 0
User junny / junny 0
~/ci/opencodex 0

So the hostname, the account, the Cloudflare ProxyCommand and the checkout path are all actually gone, not just gone from this document. That's the part that mattered.

One thing I checked and it's a false alarm, worth saying so you don't chase it: lidgeai.com still appears in three files — SPONSORS.md, scripts/privacy-scan.ts, tests/ci-workflows/privacy-scan-meta-key.test.ts. That's the published sponsorship contact (jun@lidgeai.com), deliberately allowlisted by SPONSORSHIP_CONTACT_FILES. Not a leak, not related.

The host alias macmini-cf survives in 43 devlog files. I don't think that's a blocker — an SSH config nickname without the HostName, User or ProxyCommand is close to meaningless, and rewriting 43 historical devlogs is a lot of churn for it. Flagging it so it's a decision rather than an oversight. The PR title says "remove remote runner access details", and the alias is arguably not an access detail.

The gap worth fixing separately

privacy:scan passes on the unredacted content. I ran it on untouched origin/dev, where that file still contains all three values:

$ git show origin/dev:devlog/.../022_remote_test_offload.md | grep -cE "ssh-macmini.lidgeai.com|User junny|ProxyCommand"
3
$ bun run privacy:scan
Privacy scan passed

scripts/privacy-scan.ts has rules for tokens, emails and home-directory usernames, and no rule for hostnames, SSH config blocks or ProxyCommand — I grepped it for all three and there's nothing. So this document was publishable, and the next devlog that pastes an SSH block will be too.

That makes this PR a one-time cleanup of something the gate can't hold. A rule keyed on ProxyCommand / HostName / Host <alias> inside a fenced block would close it, and MAINTAINER_HOME_USERNAME is already the precedent for "this specific operator value must not ship".

Happy to open that as its own PR if you'd like — it's orthogonal to this one, and this one shouldn't wait for it.

On the description: "it does not claim a historical purge" is the right disclaimer and I'd keep it. Worth stating the practical consequence too, for whoever reads this later: the values remain reachable in git history and in GitHub's UI for the old commits, so if any of them are still live credentials-adjacent — an internal hostname behind Cloudflare Access is — rotating or renaming is the only thing that actually retires them. The doc change limits new exposure, not existing.

abhisheksharma2411 added a commit to abhisheksharma2411/opencodex that referenced this pull request Sep 16, 2026
privacy:scan knew about tokens, emails and home paths, and nothing about
infrastructure. A working Host block was therefore publishable: the scan
passes on dev today, where
devlog/_fin/260731_pr_merge_round/022_remote_test_offload.md still carries
a real HostName, account and Cloudflare ProxyCommand. lidge-jun#4623 removes them
by hand; nothing stops the next devlog reintroducing them.

Two detectors, both anchored to the SSH config grammar:

  HostName      value must be the whole rest of the line
  ProxyCommand  command line, matched separately

`User` is deliberately not matched. It is an ordinary English word and
even line-anchored it fires on wrapped prose — "…the\nuser configuration."
and "…the\nuser notice." both matched during development, as did
`hostname === undefined ? ...` in a test file before the value was
anchored. The username is also the least sensitive part of a Host block,
and MAINTAINER_HOME_USERNAME already covers it in path form.

A ProxyCommand containing %h is NOT allowlisted. Only a bare %h is. The
substitution token does not make the binary path, the access method or the
tunnel any less of a leak — allowing it would have passed the exact line
this exists to catch.

Also moves the repo scan behind import.meta.main. It ran at module scope,
so `import { scanText }` executed a full scan as a side effect and a
failing scan called process.exit(1), killing the importing test process.
Invisible while the tree is clean; adding the detector above broke
privacy-scan-meta-key.test.ts, which does nothing but import the seam this
file exports for testing.

Refs lidge-jun#4623
abhisheksharma2411 added a commit to abhisheksharma2411/opencodex that referenced this pull request Sep 16, 2026
… real host

Two problems with this PR as it stood, both the same shape as the leak
it exists to catch.

The report printed the `ssh-endpoint` value while redacting the
`ProxyCommand`. This scan runs in CI on a public repository, so a
finding would have republished the endpoint into a public log — the
scanner leaking what it was written to detect. `file:line` already
locates it for whoever removes it, which is what the ProxyCommand kind
has relied on all along.

The regression fixture and the rationale comment both spelled out the
real hostname and login. lidge-jun#4623 removes those from the devlog; keeping
them here would have undone that cleanup and made this file their
permanent home. The fixture now uses a synthetic endpoint — the regex
cannot tell the difference — and the comment describes the incident
without restating the values.
abhisheksharma2411 added a commit to abhisheksharma2411/opencodex that referenced this pull request Sep 16, 2026
privacy:scan knew about tokens, emails and home paths, and nothing about
infrastructure. A working Host block was therefore publishable: the scan
passes on dev today, where
devlog/_fin/260731_pr_merge_round/022_remote_test_offload.md still carries
a real HostName, account and Cloudflare ProxyCommand. lidge-jun#4623 removes them
by hand; nothing stops the next devlog reintroducing them.

Two detectors, both anchored to the SSH config grammar:

  HostName      value must be the whole rest of the line
  ProxyCommand  command line, matched separately

`User` is deliberately not matched. It is an ordinary English word and
even line-anchored it fires on wrapped prose — "…the\nuser configuration."
and "…the\nuser notice." both matched during development, as did
`hostname === undefined ? ...` in a test file before the value was
anchored. The username is also the least sensitive part of a Host block,
and MAINTAINER_HOME_USERNAME already covers it in path form.

A ProxyCommand containing %h is NOT allowlisted. Only a bare %h is. The
substitution token does not make the binary path, the access method or the
tunnel any less of a leak — allowing it would have passed the exact line
this exists to catch.

Also moves the repo scan behind import.meta.main. It ran at module scope,
so `import { scanText }` executed a full scan as a side effect and a
failing scan called process.exit(1), killing the importing test process.
Invisible while the tree is clean; adding the detector above broke
privacy-scan-meta-key.test.ts, which does nothing but import the seam this
file exports for testing.

Refs lidge-jun#4623
abhisheksharma2411 added a commit to abhisheksharma2411/opencodex that referenced this pull request Sep 16, 2026
… real host

Two problems with this PR as it stood, both the same shape as the leak
it exists to catch.

The report printed the `ssh-endpoint` value while redacting the
`ProxyCommand`. This scan runs in CI on a public repository, so a
finding would have republished the endpoint into a public log — the
scanner leaking what it was written to detect. `file:line` already
locates it for whoever removes it, which is what the ProxyCommand kind
has relied on all along.

The regression fixture and the rationale comment both spelled out the
real hostname and login. lidge-jun#4623 removes those from the devlog; keeping
them here would have undone that cleanup and made this file their
permanent home. The fixture now uses a synthetic endpoint — the regex
cannot tell the difference — and the comment describes the incident
without restating the values.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation review-ready

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants