Repository navigation
Host request lane: other PCs ask the GPU workstation for memory/RAG/model-hosting work through GitHub issues - #266
Merged
seathatflowsinourveins merged 2 commits intoSep 25, 2026
Conversation
… roles) Other PCs ask a named host for work through GitHub issues; the GPU workstation nativestack-5975wx-20260925 tracks, claims and reports them. The tracker never executes, evaluates or forwards issue text to a model; execution stays coordinator-run by a Claude session on the target host. - adoption/host-roles.json: roles (workstation, mac-coordinator) and the requesting peers; every host_id is a native_proven hardware profile (test-enforced); macos-m5pro-20260924 is superseded by mac-coordinator-64gb-20260925 (PR #253 body). - .github/ISSUE_TEMPLATE/workstation-request.yml: issue form with stable field ids and the host:workstation label (no config.yml). - scripts/host_requests.py: stdlib gh-api tracker with roles, parse, compose, status, poll and lanes. Only claim, block, done, decline and ensure-labels write, and each takes --dry-run, which makes no GitHub call. Trust is the owner's own authorship only (OWNER, User, no GitHub App, repository owner); labels, titles and bodies never grant it. - tests/test_host_requests.py: 39 no-network tests with a fake gh runner. - adoption/templates/systemd/host-requests-workstation.{service,timer}: drafted oneshot poll on a monotonic 10-minute timer; not installed. - recipes/host-request-lane.md (recipes/README.md row, LINK_DOCS entry) and docs/decisions/2026-09-25-host-request-lane.md. - manifests/evidence.json: recipes/README.md re-registered with register_file (hot-file protocol). Evidence class: a drafted lane (local_integration, synthetic, source_review). No label, issue, claim, timer or notice was created on GitHub or on any host. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ELD gap A second independent review of the round-1 fix found seven residual findings. All seven are resolved: - scripts/host_requests.py: claim on a currently-claimed request now refuses (exit 3) a session that differs from the one the status comment names, unless --takeover is given; the same session re-claims idempotently (previously any session could silently overwrite another's claim). - scripts/host_requests.py, recipes/host-request-lane.md: status and lanes already replaced an untrusted item's title/requesting-host with "<untrusted: withheld>"; this round adds the missing status --show-untrusted-text flag (documented for a human reader only) as the one way to see the raw text, in text and JSON output alike. - scripts/host_requests.py: done now requires the request to be currently claimed (ACTIONS["done"]["from"] dropped "blocked"). block is reachable straight from new, so being blocked was not, by itself, evidence that any session had claimed and done the work. - tests/test_host_requests.py: NoticeTransportTests posts to a loopback http.server with http_proxy/HTTP_PROXY set and a 302 responder, asserting the notice reaches only the topic and the redirect is not followed. - .github/ISSUE_TEMPLATE/workstation-request.yml, recipes: the Related description stays quoted (round 1); the YAML cross-check test now compares description/placeholder text too, and the credential-row note and compose --confirm gating from round 1 are otherwise unchanged. - docs/decisions/2026-09-25-host-request-lane.md: appended a dated, counts-only acceptance record for both fix rounds (test counts, a 26/26 mutation check, systemd-analyze --user verify, SchemaStore re-validation). Evidence class: local_integration and synthetic (see the decision record). No label, issue, claim, timer or notice was created on GitHub or any host; status/lanes were read read-only against the real repository for this check. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
seathatflowsinourveins
deleted the
claude/workstation-requests-20260925
branch
September 25, 2026 18:32
This was referenced Sep 25, 2026
seathatflowsinourveins
added a commit
that referenced
this pull request
Sep 25, 2026
… request lane (#298) Two foundation gates. token-stack-subagent-e2e points at #296's receipt: 16 of 16 tools used in Sonnet workflow subagents with passing checks, RTK +56527 for the run-only worktree, Headroom +183904 lifetime, Codex workers blocked until 2026-09-30. host-request-lane points at the #266 recipe: the workstation poll timer runs every 10 min, 0 workstation requests, 2 mac-coordinator requests open (#274, #276). Values use the dashboard token alphabet. Co-authored-by: Scout <scout@local> Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
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.
Scope
nativestack-5975wx-20260925owns end-to-end memory, RAG and model hosting/qualification, because the RTX 4090 and the Hugging Face sign-in are there. Other PCs file requests with the labelhost:workstation, and the workstation tracks them withscripts/host_requests.py.3ff52117(currentorigin/main)lane:foundation.docs/lanes.md,AGENTS.mdand the grand-dashboard state are deliberately left alone; a pointer from them is a laterlane:sharedchange.adoption/host-roles.json.github/ISSUE_TEMPLATE/workstation-request.ymlscripts/host_requests.pyandtests/test_host_requests.pyadoption/templates/systemd/host-requests-workstation.{service,timer}(drafted, not installed)recipes/host-request-lane.md, linked fromrecipes/README.mdand listed inLINK_DOCSdocs/decisions/2026-09-25-host-request-lane.mdDesign:
adoption/host-roles.jsonholds them.workstationownsmemory-e2e,rag-e2e,model-hosting,model-qualification,gpu-runtime-qualificationandindependent-review.mac-coordinatorowns macOS acceptance and coordination.macos-m5pro-20260924is marked superseded bymac-coordinator-64gb-20260925, citing Record host mac-coordinator-64gb-20260925: hardware profile and five use receipts #253.author_association == OWNER,user.type == User,performed_via_github_appis null, and the login equals the repository owner. An issue form applies its labels for anyone, so labels grant no trust.new,request:claimed,request:blocked,done(closed completed) anddeclined(closed not_planned). Each request has one status comment, marked with a hidden tag and edited in place.claimrefuses a request another session holds unless--takeoveris given.donerequires a current claim.--dry-run.status,pollandlaneswithhold the title and host of untrusted items. Only--show-untrusted-textshows them, and it is meant for a human at a terminal.pollwrites a 0600 state file and prints one JSON line per event. It can optionally notify a loopback-only ntfy topic with a fixed-format line; no proxies or redirects are followed.lanesreports lane-label hygiene over open PRs. Right now 6 open PRs have no lane label.claude -pexecution.Evidence-class table
donerequires a claim, withheld untrusted textsynthetictests/test_host_requests.py: 82 tests with the docs-consistency module on 3.12 and 3.13. A mutation check killed 26 of 26 mutants.statusandlanesreturn well-formed JSON against the live repository (0 requests; 14 open PRs, 6 with no lane label)local_integration(read-only)/usr/bin/python3 scripts/host_requests.py status --role workstation --json;… lanes --jsonlocal_integrationsystemd-analyze --user verifyon scratch copies; a negative control exits 1synthetic(community SchemaStore schema, not GitHub's validator)ensure-labels, install the timer from the live clone, then one real request from a MacLocal commands run
Before the rebase onto
3ff52117, the full suite passed on both interpreters: 5346 OK.Decision record
docs/decisions/2026-09-25-host-request-lane.mdReview
needs_changes: 1 medium finding (claim takeover) and 6 low ones (untrusted text shown bystatus, YAML#truncating a description, the pending HF row,composeticking the confirmations itself,donefrom blocked, and verification gaps).ready.statusbefore running GPU work.Host evidence
None yet. After merge I will create the labels, install and enable
host-requests-workstation.timerfrom the live clone, and record the end-to-end run as evidence.Checklist
.github/ISSUE_TEMPLATEform is not a workflow). [x] No secrets. [x] No paid surface. [x] Peer files preserved.🤖 Generated with Claude Code