Skip to content

Stage C T3 lane: integrate #17, #20–#26 - #27

Merged
Andrey170170 merged 44 commits into
dev_v2from
trellis-v2/c-integration
Oct 3, 2026
Merged

Andrey170170 merged 44 commits into
dev_v2from
trellis-v2/c-integration

Conversation

@Andrey170170

Copy link
Copy Markdown
Owner

Merges the eight Stage C T3 PRs at once; they conflict pairwise (new RPCs, settings sections and tests in the same places), and this branch resolves the conflicts once. Each PR's head is contained here, so they close as merged.

Checked: typecheck, knip, server Trellis/MCP/Codex tests (529), web component tests (3108); demos on Trellis main: demo-trellis 22/22, demo-workers 10/10, demo-graduation 8/8.

🤖 Generated with Claude Code

Andrey170170 and others added 30 commits October 2, 2026 16:12
Bases show whether they were built from their current definition (Trellis
base_states) and can be rebuilt from their built-in definition through a
new trellis.buildBase RPC (POST /v1/bases/build, operate scope); custom
bases are left to the CLI.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…; Settings shows builds already running

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…tached build's failure; older servers' details still decode

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…s current

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Shows and edits Trellis's history settings (snapshot timer, turn and timer
snapshot retention, trash and incoming expiry) through two new RPCs,
trellis.getHistorySettings and trellis.updateHistorySettings, backed by
GET/PUT /v1/settings/history. Each value commits on blur, Enter or the
step buttons and sends only that key; Trellis's refusal shows under the
row, and a save that the next thinning acts on says how many snapshots go.
Live snapshot counts per kind and the last thinning are shown read only.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…t write

- Unchanged-detection compares with the field's pending value, else the
  value in force, so 30 -> 14 -> 30 before the answer still sends 30.
- updateHistorySettings runs serially per environment; each write carries
  a per-field revision, and only a field's latest write clears its draft or
  shows its refusal, so a stale failure never undoes a newer edit.
- A successful write's returned values show at once (until a newer read),
  and a failed refresh shows a stale notice beside the cached values.

The edit state lives in TrellisSettings.logic.ts with unit tests; the
server test also maps all eight keys out in one PUT.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ace Undo instead

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…or the base's state changes

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ne servers stay

Codex 0.160 lets a nested mcp_servers table in thread/start config replace
every server given on its command line (-c mcp_servers.*), which drops the
MCP servers Trellis agent profiles add; a dotted mcp_servers.t3-code key
merges.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… targets instead of the M1 limit

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…e number fields mounted while stepping

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…came with its build endpoint

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Trellis reports preview_host in /v1/status and changes it without a restart
(PUT /v1/settings/previews); Settings shows it and offers this machine,
the local network, the tailnet or an address, through a new
trellis.setPreviewHost RPC (operate scope).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…a refused address; say what LAN exposure means

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ot move

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…keys

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ngs refresh every minute

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… field never saves

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ted for failed

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…llis launch skips profile instructions

The primer request names the provider, so it carries that provider's agent
profile instructions, and launch.env sets TRELLIS_INSTRUCTIONS=t3 so
trellis launch does not add them a second time.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… launch

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…edge option

A fork made for a delegated child is sent with spawn: true, so Trellis
gives it the project knowledge tier read-only by default, and
workspace.fork.knowledge ({project, notes, groups, groupsRw}) passes
through to POST /v1/fork. The worker guide names the knowledge paths.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…group names checked

T3 forks on the user socket, which Trellis does not limit, so delegate_task
checks the lead's own access (GET /v1/knowledge): project write, and each
existing group at the access handed out; new groups are created by the
spawn. Group names follow Trellis's [a-z0-9_-].

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ages

Adds trellis.getProfile (GET /v1/profile) with a lenient decoder, and an
Agent profile section: Settings > Trellis shows the agent homes and global
layer, a Trellis project's settings show each live workspace's effective
profile with T3's own t3-code server. Items show their layer and states
(needs approval, needs trust, not enforced, not loaded, error); profile
errors show as warnings. No approve or apply actions yet.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…s and only the lead's own groups

A lead that sees no project tier hands its worker none (the worker
default, read, is lowered), group access is looked up only among the
lead's own groups, and a Trellis without knowledge tiers still forks a
worker that asked for none.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…the profile's instructions

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
A failed refresh flags the cached profile as possibly out of date; loose
profile errors are matched by layer, item and message against the shown
provider only; a layer's switch shows on approved items too. The server
test's fake filters by provider as Trellis does.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 3, 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-10-03T04:36:12.106694Z db24211 PR opened
ℹ️ 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.

@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XXL labels Oct 3, 2026

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: db24211cbc

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

Comment on lines 702 to 704
{defaultMissing ? (
<SettingsRow
title={

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Offer the build action for an unbuilt default base

When defaultBase is configured but absent from bases—a state explicitly allowed by the contract—this branch renders only a warning badge. Because the new build button exists only inside bases.map, users cannot invoke trellis.buildBase for the missing default even though project creation is blocked until that base is built, forcing them back to the CLI.

Useful? React with 👍 / 👎.

Comment on lines +992 to +994
if (edit.kind === "invalid") {
apply((current) => rejectHistoryEdit(current, key, edit.message));
return;

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Block maintenance after a locally rejected history edit

If a user clears a history field or enters another locally invalid value and immediately clicks Run now, the field's blur reaches this branch before the button click, but the rejection is not recorded in writes.current. Consequently thinNow still sees a successful save chain and runs thinning with the previous retention value, potentially deleting snapshots under settings different from what the user intended; local validation failures should make the pending maintenance check fail just like rejected RPC writes.

Useful? React with 👍 / 👎.

@Andrey170170
Andrey170170 merged commit 034701f into dev_v2 Oct 3, 2026
8 of 17 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XXL vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant