Reference: pm-core-explainer.md for the conceptual model (signal hierarchy, coherence, the three-phase pipeline).
We want v0 to do less bespoke shit. This means:
- Align with Vercel platform behavior: if a project builds on platform, it
| From 0135ad15ffb5a82f2638dc233584723a42833522 Mon Sep 17 00:00:00 2001 | |
| From: Yehuda Katz <[email protected]> | |
| Date: Tue, 21 Apr 2026 19:35:24 -0700 | |
| Subject: [PATCH 01/17] CI-in-preview prototype: OIDC verifier, | |
| encrypt-override route, smoke workflow | |
| Test the "authenticated work lives in deployment, not CI" pattern end-to-end | |
| with the smallest useful scope: CI mints a GitHub Actions OIDC token, hits a | |
| preview-only route in v0chat, and the route uses FLAGS_SECRET from the preview | |
| environment to encrypt a flag override cookie. No secret is mirrored in GH. |
Reference: pm-core-explainer.md for the conceptual model (signal hierarchy, coherence, the three-phase pipeline).
We want v0 to do less bespoke shit. This means:
Grand theories of software complexity (Simple Made Easy, Out of the Tarpit) create intellectual frameworks that let their adherents opt out of shared solutions while feeling superior about it.
The mechanism:
| import { CachedFormula, Cell, Formula } from "@starbeam-lite/core"; | |
| import { EventRecorder, TestScheduler } from "@workspace/test-utils"; | |
| import { describe, expect, it } from "vitest"; | |
| import { subscribe } from "../src/subtle"; | |
| import { TAG } from "@starbeam-lite/shared"; | |
| describe("subscribe", () => { | |
| describe("equivalent to Signal.subtle.Watcher (ported tests)", () => { | |
| it("should work", () => { | |
| const events = new EventRecorder(); |
Broadly speaking, the idea is that you should be able to create an accessor decorator that doesn't expose a setter.
I think the most natural way to express this is for the set function returned by an accessor decorator to have a never return type. The idea is that such a decorator would result in the type system treating the resulting field as if it was a manually written getter without a setter.
Here's an example scenario:
import { Friend } from "hypothetical-lib";| { | |
| "public": true | |
| } |