Skip to content

Commit 4e848d5

Browse files
Merge remote-tracking branch 'origin/main' into pr-25588
2 parents 05d1a23 + ff71186 commit 4e848d5

1,129 files changed

Lines changed: 21299 additions & 23693 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.agents/skills/test-t3-app/SKILL.md‎

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,19 @@ Test with meaningful project and thread data. Read
2121
[references/sqlite-fixtures.md](references/sqlite-fixtures.md) only when
2222
inspecting or seeding SQLite. Stop the test server before direct fixture writes.
2323

24+
## Drive agent turns for free
25+
26+
Do not spend a paid model to see a turn render. `vp run dev` registers the
27+
`Replay (dev)` provider, which replays recorded turns with simulated streaming
28+
through the real adapter and orchestration. Its models are scenarios:
29+
`showcase` covers thinking, a plan, tool calls, an approval, and markdown.
30+
Press `Ctrl+Alt+Shift+R` for a picker (GNOME takes that key for screen
31+
recording), call `window.t3dev.replay("showcase")`
32+
with `preview_evaluate`, or run
33+
`node apps/server/src/bin.ts thread start --base-dir .t3 --provider devReplay --model showcase <project> "go"`.
34+
When the test needs real provider behavior, use that provider's cheapest
35+
model, such as Haiku for Claude or Luna for Codex.
36+
2437
## Use the Browser panel
2538

2639
Call `preview_status`, then `preview_open` if the Browser panel is

‎.coderabbit.config.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ export default defineConfig((ctx) => ({
2727
instructions: "Hold changed code to the rules in docs/internals/web-ui.md.",
2828
},
2929
{
30-
path: "**/*.test.{ts,tsx}",
30+
path: "**/*.test.*",
3131
instructions:
3232
"Hold changed tests to the rules in docs/internals/testing.md. Request tests only as those rules allow.",
3333
},

‎.github/triage/PLAYBOOK.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ provided alongside this playbook. Everything machine-specific lives there, not h
1111

1212
## 1. Ask what went wrong
1313

14-
Your first message to the user: ask them to describe what went wrong, in their own
15-
words. Ask them to paste screenshots directly into this session if they have any.
14+
Unless the user already described it, your first message asks what went wrong, in
15+
their own words. Ask them to paste screenshots directly into this session if they have any.
1616
Ask follow-up questions when the description is vague. Good repro steps are the most
1717
valuable thing you can extract from this conversation.
1818

‎.github/workflows/ci.yml‎

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -225,16 +225,6 @@ jobs:
225225
!/apps/mobile/modules/t3-terminal/Vendor/**/*.a
226226
sparse-checkout-cone-mode: false
227227

228-
# Blacksmith boots GitHub's Ubuntu runner image (gcc is usually present),
229-
# but ACP process-tree live tests compile a small pthread fixture with `cc`
230-
# and soft-skip when it is missing. Install build-essential so that path
231-
# always runs in CI instead of silently no-oping.
232-
- name: Install C toolchain for process-tree fixtures
233-
run: |
234-
sudo apt-get update
235-
sudo apt-get install -y --no-install-recommends build-essential
236-
command -v cc
237-
238228
- uses: ./.github/actions/setup-apt-mirrors
239229

240230
# The desktop tests compile the browser secret helper. The install runs in

‎.gitignore‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ apps/mobile/.android-cache/
3737
/.generated/
3838
artifacts/app-store/screenshots/
3939
artifacts/mobile-e2e/
40+
artifacts/mobile-behavior/
4041
.github/pr-assets/
4142
native/**/target/
4243
node_modules/

‎.macroscope/check-run-agents/effect-service-conventions.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
title: Effect Service Conventions
3-
model: gpt-6-sol
4-
effort: max
3+
model: gpt-6-1-sol
4+
reasoning: low
55
input: incremental
66
tools:
77
- browse_code
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
---
2+
title: Test Signal
3+
model: gpt-6-1-terra
4+
reasoning: low
5+
input: incremental
6+
tools:
7+
- browse_code
8+
- modify_pr
9+
# An explicit include overrides ignore.md, which skips test files for every other check.
10+
include:
11+
- "**/*.test.*"
12+
exclude:
13+
- ".repos/**"
14+
requires:
15+
- Check
16+
maxBudgetPerRun: 1
17+
maxBudgetPerPR: 5
18+
conclusion: neutral
19+
---
20+
21+
# Test signal review
22+
23+
Review only the tests this pull request adds or grows. Tests it moves, renames, or deletes are not findings. The rules are in `docs/internals/testing.md` under `## What to test`; read that section first and hold new tests to it.
24+
25+
Post each finding as a brief inline comment on the new test with one fix. Ask only for fewer or smaller tests, never for more coverage.
26+
27+
When there are no findings, make the entire final response exactly `All clear` on one line with nothing else.

‎.macroscope/check-run-agents/ui-consistency.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
title: UI Consistency
3-
model: gpt-6-sol
4-
effort: max
3+
model: gpt-6-1-sol
4+
reasoning: low
55
input: incremental
66
tools:
77
- browse_code

‎AGENTS.md‎

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -102,11 +102,13 @@ An empty database is a bad test. Seed your worktree's `.t3` with a copy of real
102102
- While you iterate, run `vp test run <files>`. For big files, add `-t "<name>"`.
103103
- Use `vp run typecheck`, not `npx tsc`; it caches per package. Both run tsc-rs (`typescript` is the `@tsc-rs/typescript` drop-in).
104104
- Run `node -e` snippets from `apps/server` or the owning package. `effect` does not resolve from the repo root.
105-
- Test meaningful logic or observable behavior. Do not render components to static markup to assert props or attributes, or add tests that merely assert callback wiring or mirror the implementation.
105+
- Test behavior that can break, such as orchestration and event-sourcing, provider protocol translation, auth and permission guards, persistence and migrations, external-format parsing, race fixes, and the logic a bug fix changed. Leave out tests for what types already guarantee, trivial logic, copy text, smoke runs, mock-call mirrors, callback wiring, and props rendered to static markup.
106+
- Extend before you add. When an existing test or table covers the behavior, add a row or an assertion there. Write a new `it` only when no case fits.
107+
- Test at one layer: the lowest one that fails on `main`. Do not repeat the case in a wrapper test, at each call site, or in web and mobile copies of the same logic.
106108
- [Testing](docs/internals/testing.md) carries these same test rules, plus review guidance, for review bots. Change both together.
107109
- **Do not run repo-wide checks.** No `vp check`, no `vp run -r test`, no `vp run -r typecheck` unless I ask. CI owns the full suite.
108110
- Backend behavior changes ship with focused tests for that behavior.
109-
- Proof for a bug fix depends on the bug. Logic, data, state, and protocol bugs get a failing test first (the fewest that fail on `main` for that reason, in the module's existing test file), then the fix. Purely visual bugs (spacing, colour, alignment, a layout shift) get before/after captures as their proof and no test: do not add UI tests for nitpicks, and do not ask for one in review when a capture already shows it. A server-only fix with no visible surface ships the test plus a short runtime transcript.
111+
- Proof for a bug fix depends on the bug. Logic, data, state, and protocol bugs get a failing test first (the fewest that fail on `main` for that reason, in an existing case of the module's test file where one fits), then the fix. Purely visual bugs (spacing, colour, alignment, a layout shift) get before/after captures as their proof and no test: do not add UI tests for nitpicks, and do not ask for one in review when a capture already shows it. A server-only fix with no visible surface ships the test plus a short runtime transcript.
110112
- The server is event-sourced, and side effects run after the command commits. In tests, drain the effect worker (`OrchestrationEffectWorkerV2.drain`) or await the specific persisted event or `Deferred` that marks the milestone. Never wait on sleeps or polling. A test that needs a timeout to pass is wrong. Concretely:
111113
- `it.effect` runs on a `TestClock`; `Effect.sleep` only advances through `TestClock.adjust`. `it.live` is wall-clock and only for subprocess or network fixtures.
112114
- No `yieldNow` or `sleep` polling loops. Await the `Deferred`, take from the `Queue`, or drain the worker.
@@ -135,6 +137,8 @@ An empty database is a bad test. Seed your worktree's `.t3` with a copy of real
135137

136138
- Upon request, user-visible frontend changes should get one integrated pass in a real client: `test-t3-app` for web, `test-t3-mobile` for mobile. The primary agent does this once after integrating. Subagents do not launch their own dev servers. Ask permission before doing computer use or spinning up browsers.
137139

140+
- Real agent turns cost money. To watch a turn stream through the pipeline and UI, use the free `Replay (dev)` provider that `vp run dev` registers; [test-t3-app](.agents/skills/test-t3-app/SKILL.md) shows how to start one. Use a real provider only when the change depends on that provider's behavior, and then pick its cheapest model, such as Haiku for Claude or Luna for Codex.
141+
138142
For authorized mobile verification, a missing or outdated native client is an install step, not a blocker. Run `vp run mobile:install <ios|android> [device-id]` on the device host before starting Metro; it targets the only booted simulator or connected Android device when the id is omitted. It installs the dev client for this checkout's native fingerprint from the shared cache in seconds and builds only when no machine has built it yet, so prefer it over `expo run:*`, `xcodebuild`, or `gradlew`, which rebuild from scratch. Its stdout is one JSON line; build output goes to the log it names. See `test-t3-mobile` for the full workflow.
139143

140144
## Evals

‎apps/desktop/src/app/DesktopConnectionCatalogStore.test.ts‎

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -100,17 +100,14 @@ const withStore = <A, E, R>(
100100
}).pipe(Effect.provide(NodeServices.layer), Effect.scoped);
101101

102102
describe("DesktopConnectionCatalogStore", () => {
103-
it.effect("persists, reads, and clears an encrypted connection catalog", () =>
103+
it.effect("persists and reads an encrypted connection catalog", () =>
104104
withStore(
105105
Effect.gen(function* () {
106106
const store = yield* DesktopConnectionCatalogStore.DesktopConnectionCatalogStore;
107107
const catalog = '{"schemaVersion":1,"targets":[]}';
108108

109109
assert.isTrue(yield* store.set(catalog));
110110
assert.deepStrictEqual(yield* store.get, Option.some(catalog));
111-
112-
yield* store.clear;
113-
assert.deepStrictEqual(yield* store.get, Option.none());
114111
}),
115112
),
116113
);

0 commit comments

Comments
 (0)