You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 95239ca
Browse filesBrowse the repository at this point in the historyBrowse files
Rebuild the run page around one client, with live status per URL
The run page now says what a run is and how many cells can start at each
revision (18 and 31 today, not 49 at every revision), then leads with the
config picker, whose block covers the starter set only. Below it come the
one URL per revision for scenarios that need no sign-in, the cells that
need a URL of their own, and the auth cells, metadata-default first and
the rest folded by group. Every URL carries a live line: its state as a
glyph and a word, the time of the last request and the client's name,
judged by buildReport() from the stored log so every process agrees with
the report. It refreshes with the report's 10-second script, paused while
the tab is hidden. The page ends with how many cells were reached and how
many need a look.
Every client's full block, copy all, the mcpServers map of every cell and
the run's matrix move to a bulk page at /s/<run-id>/bulk.
Copy file name to clipboardExpand all lines: src/hosted/README.md
+41-7Lines changed: 41 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -68,8 +68,9 @@ name (`auth/metadata-var2/tenant1` → scenario `auth/metadata-var2`, suffix
68
68
Before the matrix it says, in plain sentences: what this is (a server that
69
69
tests a client you point at it by hand; a cell is one scenario at one
70
70
revision with its own MCP URL); how to test a client in five minutes (a new
71
-
run at `/s`, the run page's composite URLs and per-client config blocks,
72
-
the cell steps, the report and its frozen, Markdown and plain-text copies);
71
+
run at `/s`, the run page's composite URLs, `auth/metadata-default` and
72
+
client picker, the cell steps, the report and its frozen, Markdown and
73
+
plain-text copies);
73
74
what the score means (the frozen requirement set's scored cells per
74
75
revision, "X of the M scored cells you can run here pass · N are scored for
75
76
the revision", one line per state, and that a
@@ -82,8 +83,41 @@ issue tracker are. Every page ends with the server's build (short commit,
82
83
run report stores it as `server` (`build`, `deployedAt`), so a frozen copy
83
84
names the build that froze it. The Val Town deploy stamps the staged
84
85
`src/hosted/build-stamp.ts`; the local `hosted` command reads the checkout's
85
-
commit from git; anything else reads "unknown". The run page's two sections it names carry anchors,
86
-
`#composites` and `#client-config`.
86
+
commit from git; anything else reads "unknown". The run page's sections carry anchors:
87
+
`#client-config`, `#composites`, `#own-url`, `#auth` and `#results`.
88
+
89
+
**The run page** (`/s/<run-id>`; `/s/<run-id>/<rev>` for one revision) is
90
+
written for the author of one client setting it up. It says what a run is
91
+
and how many cells can start at each revision ("At 2025-11-25, 18 cells can
92
+
start here, and at 2026-07-28, 31 can."), then:
93
+
94
+
1.**Pick your client**: a picker (`src/hosted/config-picker.ts`) whose
95
+
default is "Just the URL", with VS Code, Codex, Goose, Copilot CLI and
96
+
`mcpServers` JSON behind it. The choice is kept in the browser's
97
+
localStorage (`c9e-client`), read and written inside try/catch, so a
98
+
blocked store leaves the URL. Its block covers the starter set only: the
99
+
ready-made composites and `auth/metadata-default` at each revision.
100
+
2. One URL per revision for the scenarios that need no sign-in (the
101
+
ready-made composite), with the scenarios behind it folded.
102
+
3. The cells that need a URL of their own (no composite can carry them), each
103
+
with the reason.
104
+
4. The auth cells: `auth/metadata-default` at each revision, then the rest
105
+
folded by group (metadata discovery, scopes, registration and token
106
+
endpoint authentication, issuer checks, other auth).
107
+
5. How many cells the client has reached and how many need a look, with
108
+
"Open the results".
109
+
110
+
Every URL has a live line: `✓ reached`, `✗ fails`, `■ stopped`, `◔ waiting`,
111
+
`◑ in progress`, `◐ stopped short` or `○ not reached yet`, with the time of
112
+
the last request and the client's name. A cell the client reached reads
113
+
"reached" until it fails or stops; only the report says pass. A composite's
114
+
line is its worst child's, with how many of its scenarios were reached. The
115
+
lines are judged exactly as the report judges the cell
116
+
(`src/hosted/run-status.ts` over `buildReport()`), from the stored log when
117
+
there is a store, and the page refreshes them with the report's 10-second
118
+
script, paused while the tab is hidden. The bulk page (`/s/<run-id>/bulk`)
119
+
has every client's full block with "copy all", the `mcpServers` map of every
120
+
cell, and the run's matrix with each cell's steps, links and copy buttons.
87
121
88
122
**How long results last.** The landing page states these from the values
89
123
the deployment runs with, not from the defaults, so it cannot disagree with
@@ -173,10 +207,10 @@ each with its own copy button and a line on adding it to a file that already
173
207
has servers. Names are `c9e-<revision>-<scenario>` with
174
208
anything but letters, digits, `*`and`-`made`-`
175
209
(`c9e-2025-11-25-auth-metadata-default`); the run page's ready-made
176
-
composites are `c9e-<revision>-composite`. The run pagegives each client a
210
+
composites are `c9e-<revision>-composite`. The run page's picker gives the
177
211
starter block (the ready-made composites and `auth/metadata-default`per
178
-
revision) and, folded, the full one, which covers every startable cell of the
179
-
run once: the composites, each cell no composite carries (such as`request-metadata`and`http-invalid-tool-headers`), and every auth cell, switched off where
212
+
revision); the bulk page gives each client the full one, which covers every
213
+
startable cell of the run once: the composites, each cell no composite carries (such as`request-metadata`and`http-invalid-tool-headers`), and every auth cell, switched off where
180
214
the format can say so (`enabled: false`for Goose,`enabled = false` for
181
215
Codex), since each auth cell starts a sign-in when the client connects
182
216
(`src/hosted/client-config.ts`). An `auth/\*`cell, which has no generic-client steps, shows plain ones for a hand-driven
0 commit comments