Skip to content

feat(t27os): NVIDIA profile for OpenCode panes in the key master (Refs #12983) - #12986

Merged
cursor[bot] merged 5 commits into
masterfrom
claude/stoic-carson-0bcb6d
Nov 9, 2026
Merged

cursor[bot] merged 5 commits into
masterfrom
claude/stoic-carson-0bcb6d

Conversation

@gHashTag

@gHashTag gHashTag commented Oct 31, 2026 •

Copy link
Copy Markdown
Collaborator

Refs #12983 (part of #12975; the lane law is draft PR #12977). Not a closing PR: the runtime success criterion (a pane answering one probe) is not done here.

What changed (specs/t27os/keys.t27 only)

  • PR_NVIDIA = 4, deliberately ABOVE the four chain profiles. Every table indexed by PROFILE_COUNT (names, tiers, models, base URLs, chain walk, Claude pane) is untouched; a test pins PR_NVIDIA == PROFILE_COUNT, so growing the tables is a decision, not a collision.
  • agent_profile_ok(a, pr): PR_NVIDIA is OpenCode-only (kind check, as before no key in sight).
  • NEW agent_profile_ok_stored(a, pr, stored): the NVIDIA profile starts only while an NVIDIA key row exists (bit P_NVIDIA). A key of any other provider, a paid one included, never stands in. Unknown profile or agent: no.
  • opencode_config(PR_NVIDIA, 0, out): one inline config naming provider nvidia alone (enabled_providers:["nvidia"]), the base URL, and the key by reference ({env:NVIDIA_API_KEY}). NO model id and no model table: the host takes ids from the live listing; a listed model is not an entitlement (access-map 2026-10-26: listing 200, chat 403). Step != 0 returns 0.
  • profile_provider(pr) (new) backs agent_var_name, so PROFILE_PROVIDER[pr] is never indexed out of range; oai_base_url answers PR_NVIDIA.
  • 2 new tests: key present / key absent / paid provider / unknown profile; and the key-free, model-free, single-provider config text with its variables.

Deviation from the issue text (FR-001)

agent_profile_ok(a, pr) has no stored-mask parameter, and adding one would force edits in pty_logic.t27, outside the boundary. So the kind check stays in agent_profile_ok and the keyed gate is agent_profile_ok_stored.

Receipts

  • Run: t27c check specs/t27os/keys.t27 -> Typecheck OK (0 errors, 1 warning, the same one as on master). Added lines are ASCII; no key value or nvapi string in the spec; lefthook foreign-budget, own-language and gitleaks passed on commit and push.
  • NOT run: builds, test-report and the tests themselves (no heavy runs on the Mac; CI is the lab). No probe was run and no key was used.
  • Probe receipts (NVIDIA lane, dated) are cited, not copied: see the header of specs/t27os/opencode_free.t27 in draft PR feat(t27os): OpenCode free pool as a second executor, law in .t27 (Refs #12975) #12977.

Follow-ups outside the boundary

  • pty_logic.t27: the < PROFILE_COUNT guards (about lines 741 and 1060) and the spawn path must use agent_profile_ok_stored and PR_NVIDIA; pty_server.t27 wiring.
  • AGENT_STRIPS should add NVIDIA_API_KEY; AGENT_PROVIDERS[3] needs the OpenCode bit for nvidia.
  • Runtime success criterion: an OpenCode pane answers one content-free probe on provider nvidia, with the lane law of opencode_free.t27 deciding admission.

🤖 Generated with Claude Code


Note

Low Risk
Spec-only decisions in keys.t27 with tests; no runtime spawn or key handling changed in this PR.

Overview
Adds PR_NVIDIA as a fifth pane profile in specs/t27os/keys.t27, wired into the existing PROFILE_COUNT tables (name, tier, provider bit P_NVIDIA, OpenAI base URL) so OpenCode—not Claude/Crush—can target integrate.api.nvidia.com.

Admission splits into agent_profile_ok (agent/kind only) and new agent_profile_ok_stored, which allows the NVIDIA profile only when an NVIDIA key row is present; other providers’ keys do not substitute.

opencode_config for PR_NVIDIA emits a minimal inline OPENCODE_CONFIG_CONTENT: single nvidia provider, base URL, and {env:NVIDIA_API_KEY}—no baked-in model id (host picks from live listings). New profile_provider keeps PROFILE_PROVIDER indexing safe for helpers like agent_var_name and oai_base_url.

Includes tests for stored-key gating and config shape. Runtime spawn/probe wiring (pty_logic.t27, strips) is explicitly out of scope here.

Reviewed by Cursor Bugbot for commit 288e059. Bugbot is set up for automated code reviews on this repo. Configure here.

…outside the chain (Refs #12983)

PR_NVIDIA sits above the four chain profiles; agent_profile_ok_stored admits it for OpenCode only while an NVIDIA key is stored. The inline config names provider nvidia alone (enabled_providers), holds the key by reference and no model id. Tests pin key present/absent, paid provider, unknown profile and the key-free config text. Refs #12975, #12977.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-10-31 08:02:29 UTC

Summary

Status Count
Total Open PRs 35
PRs with Failing Checks 34
PRs with All Checks Green 1
READY 0
FAILING 34
PENDING 0
NO CHECKS YET 0

These columns do not partition: 0 + 34 + 0 + 0 = 34, and there are 35 open PRs. A PR is being counted twice or not at all.

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=e75b498e5e79 != manifest seal=87e5cbd3ad94.
    The committed NMSE numbers were certified against an older compiler.rs.
    Run scripts/reseal-check.sh locally for the two-step reseal command (advisory; not a merge gate).

@gHashTag

Copy link
Copy Markdown
Collaborator Author

CI triage at head eb81675: the two red checks are inherited from master, not from this change (it touches specs/t27os/keys.t27 only).

  • gate-topology: claw gate inventory drift (SPEC-ONLY t27os, t27os-release; DIR-ONLY stale-arm-repair). Fix is already open in fix(claw): regenerate the gate inventory after t27os workflows were removed (Closes #12963) #12967.
  • duplicate-bodies: "a body written under fix_may_start is now copied [2] time(s)", i.e. specs/crons/t27-pareto-improvement-loop.t27:61 fix_may_start equals specs/crons/t27os-night-loop.t27:489 pick_may_run (master's 4cfd2f2). tools/dupe_scan.py --like specs/t27os/keys.t27 reports nothing in keys.t27 written elsewhere. Not blessed here: blessing a new group is not this PR's call.

Nothing pushed for these two.

🤖 Generated with Claude Code

@gHashTag

Copy link
Copy Markdown
Collaborator Author

Triage of the third CI wave on this PR (head eb81675). This PR changes only specs/t27os/keys.t27.

Caused by this PR (1):

  • coverage lists .trinity/seals/t27os_T27osKeys.json [stale] because keys.t27 changed after sealing. The seal must be re-saved by a master-built t27c (t27c seal specs/t27os/keys.t27 --save, then tri seals sync-twins). That is not done from this Mac: the heavy-command hook refuses t27c seal, and the only t27c here predates master's bootstrap, so a seal from it would embed the wrong compiler. Needed from the lab: one seal re-save of t27os_T27osKeys after PR seals: re-save 128 seal files for 70 specs (Refs #12972) #12985 (the 128 gen-drift re-seals) lands, so the two do not collide. Until then this one entry stays red; the rest of the coverage list is master's own.

Not caused by this PR (2):

  • emit-bitexact: the five specs that newly do not generate are specs/fpga/wasm_board_ax7203.t27 (typecheck refused) and four specs/tri/shootout/*.t27 (parse errors in run_option1/2/3, a missing use target). None is keys.t27, and keys.t27 typechecks clean here.
  • Documented t27c subcommands exist: dead tri mentions rose 68 -> 77. The count is over docs and records the PR does not touch, and the diff adds no tri <word> mention.

No fix was pushed for these two.

Refs #12983

🤖 Generated with Claude Code

@github-actions

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-10-31 08:56:35 UTC

Summary

Status Count
Total Open PRs 38
PRs with Failing Checks 37
PRs with All Checks Green 1
READY 0
FAILING 37
PENDING 0
NO CHECKS YET 0

These columns do not partition: 0 + 37 + 0 + 0 = 37, and there are 38 open PRs. A PR is being counted twice or not at all.

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=e75b498e5e79 != manifest seal=87e5cbd3ad94.
    The committed NMSE numbers were certified against an older compiler.rs.
    Run scripts/reseal-check.sh locally for the two-step reseal command (advisory; not a merge gate).

@gHashTag

Copy link
Copy Markdown
Collaborator Author

Triage of the fourth CI wave on this PR (head a4061dc = master 5550045 merged into the branch). This PR changes only specs/t27os/keys.t27. No fix was pushed.

Caused by this PR (1 seal, shown by 2 checks):

Not caused by this PR (the same checks fail on master tip 5550045):

Refs #12983

🤖 Generated with Claude Code

…12983)

One seal file. Saved with the post-#12824 t27c at ~/t27-lanes/t27c-bc19b54e6
(base bc19b54), on the owner's word for exactly one save, run from a shell
cell. The spec hash and the four generated-code hashes now describe keys.t27
at this head; tests 115 -> 117.

Refs #12983

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-10-31 09:17:54 UTC

Summary

Status Count
Total Open PRs 38
PRs with Failing Checks 36
PRs with All Checks Green 2
READY 1
FAILING 36
PENDING 0
NO CHECKS YET 0

These columns do not partition: 1 + 36 + 0 + 0 = 37, and there are 38 open PRs. A PR is being counted twice or not at all.

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=e75b498e5e79 != manifest seal=87e5cbd3ad94.
    The committed NMSE numbers were certified against an older compiler.rs.
    Run scripts/reseal-check.sh locally for the two-step reseal command (advisory; not a merge gate).

@gHashTag

Copy link
Copy Markdown
Collaborator Author

Triage of the sixth CI wave on this PR (head 25ff6dd, the T27osKeys seal re-save). No fix was pushed.

Caused by this PR: nothing left. t27os_T27osKeys no longer appears in coverage (stale list) or in spec-guards (gen-hash drift); both lists were checked in the failing logs.

Still red, all the same on master tip (not caused by this PR, nothing blessed):

The PR stays a draft. Nothing here needs a change in specs/t27os/keys.t27.

Refs #12983

🤖 Generated with Claude Code

@github-actions

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-10-31 13:22:33 UTC

Summary

Status Count
Total Open PRs 36
PRs with Failing Checks 33
PRs with All Checks Green 3
READY 0
FAILING 33
PENDING 0
NO CHECKS YET 0

These columns do not partition: 0 + 33 + 0 + 0 = 33, and there are 36 open PRs. A PR is being counted twice or not at all.

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=e75b498e5e79 != manifest seal=87e5cbd3ad94.
    The committed NMSE numbers were certified against an older compiler.rs.
    Run scripts/reseal-check.sh locally for the two-step reseal command (advisory; not a merge gate).

Co-authored-by: Dmitrii Vasilev <gHashTag@users.noreply.github.com>
@github-actions

github-actions Bot commented Nov 9, 2026

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-11-09 22:06:28 UTC

Summary

Status Count
Total Open PRs 40
PRs with Failing Checks 38
PRs with All Checks Green 2
READY 0
FAILING 38
PENDING 0
NO CHECKS YET 0

These columns do not partition: 0 + 38 + 0 + 0 = 38, and there are 40 open PRs. A PR is being counted twice or not at all.

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=b882be1e4933 != manifest seal=87e5cbd3ad94.
    The committed NMSE numbers were certified against an older compiler.rs.
    Run scripts/reseal-check.sh locally for the two-step reseal command (advisory; not a merge gate).

@cursor
cursor Bot merged commit 5f5848b into master Nov 9, 2026
43 of 49 checks passed
@cursor
cursor Bot deleted the claude/stoic-carson-0bcb6d branch November 9, 2026 22:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants