Skip to content

Release v2.29.0 - #1264

Merged
juan294 merged 23 commits into
mainfrom
develop
Sep 1, 2026
Merged

juan294 merged 23 commits into
mainfrom
develop

Conversation

@juan294

@juan294 juan294 commented Sep 1, 2026

Copy link
Copy Markdown
Owner

Summary

  • publish static and structured agent discovery surfaces
  • add the nine-tool read-only remote MCP endpoint
  • add durable agent analytics without raw user-agent retention
  • add the OpenAI plugin challenge route and reviewer pack

Verification

  • 8,334 unit tests
  • 70 local contract tests
  • typecheck, lint, build, migration validation, licenses, circular dependencies, and write-registration passed

Operations

Migration 038 seeds the remote MCP flag as disabled. Applying that migration and enabling the production flag require separate authorization.

juan294 and others added 22 commits September 1, 2026 11:20
The Script body opened at /studio?demo=1 while judge step 2 says to open /
and call get_site_capabilities, so the written script contradicted the
judging instructions and never demonstrated the two tools shipped in
v2.28.0.

New 0:00-0:22 opening: the agent calls get_site_capabilities, reads the
four-route tool map and the boundaries field before any tool runs, calls
find_profile, and follows the demoStudio entry point into the Studio
itself. The 1:30 segment now opens the URL find_profile returned rather
than a typed address, and the architecture card gains the landing row.

Rebudgeted rather than overran. The script was already at the 2:50 cap, so
Studio co-design goes 70s to 68s: 22 + 68 + 50 + 30 = 170s = 2:50,
contiguous, still under the three-minute limit.

Renaming the Studio heading to 0:22 broke the anchor at webmcp.md:88;
fixed. webmcp.md:80's landing role-play link pointed at the judge
checklist rather than a role-play, because no landing segment existed to
link to; it now points at the real segment. All four anchors verified
against the actual headings.

The 19 TODO_ placeholders are deliberate and untouched.

Fixes #1254

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QeMnjM7oeVWTbGwHbs5cfr
Verified v2.28.0 in production with flagged Chrome. All 19 registrations
across 18 distinct names are live and execute correctly, but the surfaces
do not register at the same speed.

Measured 2026-09-01 against production: /studio?demo=1 had all 9 tools at
0ms, while /u/:handle reported zero tools 8.7 seconds after navigation and
then registered all 6 once hydration completed. The share page is heavier
and its tool host mounts after hydration.

An agent or judge that lists tools immediately on navigation therefore sees
an empty list, which reads as broken. Recorded in the 1:30-1:48 segment and
in judge instruction 7, the two places a reader acts on it.

No timing change: the four segments still total 2:50.

Refs #1254

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QeMnjM7oeVWTbGwHbs5cfr
The assertion at StudioClient.render.test.tsx sampled aria-busy once,
outside any waitFor. The waitFor above it gates on the terminal line
count, which "initial 2 + input + result" can satisfy before the save
promise resolves, so the preview pane is still aria-busy="true" at that
moment. On slower CI runners it failed with "expected 'true' to be
'false'". It failed a required check during the v2.28.0 release and cost
a rerun cycle.

Reproduced deterministically before fixing, rather than assumed: holding
the race window open by resolving the fetch mock on a 15ms timer
reproduced the exact CI assertion locally.

Two changes. The assertion now waits on its own condition, matching the
sibling "Saving..." test 50 lines above which already used that pattern.
And the fetch mock keeps resolving on a real timer, so the race window
stays open on every run. That converts a flaky test into a deterministic
one: removing the waitFor now fails 3 runs out of 3 rather than
intermittently on CI.

Verified: 8 consecutive passing runs of the file, then 494 files / 8231
tests, typecheck and lint clean.

Fixes #1253

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QeMnjM7oeVWTbGwHbs5cfr
All values probed against production or GitHub this session: live URL,
handle juan294, verification hash 84567a48...a57, public repo URL, release
SHA 4d8a6b7 (v2.28.0), flag evidence.

Gates 1 to 3 closed. Release shipped and verified today. The flag flip
needed no action, all three were already enabled on 2026-08-27, and the
live catalog was confirmed in flagged Chrome at 19 registrations across 18
names. The repo is already public with the root LICENSE detected as MIT.

Corrects the 2:05 beat: the altered-hash page returns 200 and renders an
unverified state, only /api/verify answers 404. Expecting a browser error
page on camera would be wrong.

TODO_YOUTUBE_URL and TODO_DEVPOST_SUBMISSION_URL remain, both Juan-gated.
The verify step now expects exactly those two rather than zero.

Refs #1254

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QeMnjM7oeVWTbGwHbs5cfr
@vercel

vercel Bot commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
chapa Ready Ready Preview Sep 1, 2026 12:39pm UTC

Request Review

@github-actions

github-actions Bot commented Sep 1, 2026

Copy link
Copy Markdown

Bundle Size Report

Directory Raw Gzipped
.next/static 2.5M
.next/server 68M
Total .next 202M
.next/static/chunks JS 2039 KB 672 KB

Measured at commit 406f8d2

@juan294
juan294 merged commit abccbad into main Sep 1, 2026
60 of 61 checks passed

This branch was successfully deployed

1 active deployment
Preview 0fa3896d Deployed Sep 1, 2026 by vercel[bot]
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.

1 participant