Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -25,3 +25,9 @@ workbench/measurements/** -text
# files in public/, served from the tree (README, raw.githubusercontent links),
# never from an archive, so leaving them out of archives costs nothing.
docs/assets/** export-ignore

# Generated Workbench evidence; review the scenario/code and recorded outcomes first.
workbench/measurements/public-demo-*/** linguist-generated=true
workbench/baselines/public-demo-*.json linguist-generated=true
workbench/docs/evidence/public-demo-459/*.json linguist-generated=true
workbench/public-fixtures/local-demo-v1/demo.webm.cursor.json linguist-generated=true
10 changes: 9 additions & 1 deletion biome.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,15 @@
"vcs": { "enabled": true, "clientKind": "git", "useIgnoreFile": true },
"files": {
"ignoreUnknown": false,
"includes": ["**", "!**/*.css", "!**/design/**", "!**/.worktrees/**", "!**/public/mediapipe/**"]
"includes": [
"**",
"!**/*.css",
"!**/design/**",
"!**/.worktrees/**",
"!**/public/mediapipe/**",
"!workbench/measurements/**",
"!workbench/docs/evidence/**"
]
},
"formatter": {
"enabled": true,
Expand Down
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -63,13 +63,13 @@
"wb:l0": "vitest --run --config vitest.workbench.config.ts workbench/l0",
"wb:watch": "vitest --config vitest.workbench.config.ts workbench/l0",
"wb:typecheck": "tsc -p tsconfig.workbench.json --noEmit",
"wb:build": "esbuild workbench/cli-entry.ts --bundle --platform=node --format=cjs --packages=external --outfile=workbench/.build/cli.cjs",
"wb:build": "esbuild workbench/build.ts --bundle --platform=node --format=cjs --packages=external --outfile=workbench/.build/build.cjs --log-level=warning && node workbench/.build/build.cjs",
"wb:live": "npm run wb:build --silent && node --env-file=.env.workbench workbench/.build/cli.cjs run",
"wb:record": "npm run wb:build --silent && node --env-file=.env.workbench workbench/.build/cli.cjs run --record",
"wb:judge": "npm run wb:build --silent && node --env-file=.env.workbench workbench/.build/cli.cjs judge",
"wb:judge:replay": "npm run wb:build --silent && node workbench/.build/cli.cjs judge --replay",
"wb:compare": "npm run wb:build --silent && node workbench/.build/cli.cjs compare",
"wb:measurement": "esbuild workbench/measurement-entry.ts --bundle --platform=node --format=cjs --packages=external --outfile=workbench/.build/measurement-cli.cjs --log-level=warning && node workbench/.build/measurement-cli.cjs",
"wb:measurement": "npm run wb:build --silent && node workbench/.build/measurement-cli.cjs",
"test:watch": "vitest",
"test:cursor-native:win": "node scripts/test-windows-native-cursor.mjs",
"test:wgc-helper:win": "node scripts/test-windows-wgc-helper.mjs",
Expand Down
4 changes: 3 additions & 1 deletion vitest.workbench.config.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import path from "node:path";
import { defineConfig } from "vitest/config";
import { DEFAULT_TURN_TIMEOUT_MS } from "./workbench/lib/harness";
import { documentIdsVitePlugin } from "./workbench/lib/id-instrumentation";
import { DEFAULT_TURN_TIMEOUT_MS } from "./workbench/lib/limits";

// ponytail: separate from vitest.config.ts on purpose — `workbench/` is outside
// that config's include glob AND outside tsconfig.test.json's include, so the
Expand All @@ -12,6 +13,7 @@ import { DEFAULT_TURN_TIMEOUT_MS } from "./workbench/lib/harness";
// is exactly the class of file that drifted out of the schema before
// tsconfig.test.json existed — they also go through `documentSchema.parse`.
export default defineConfig({
plugins: [documentIdsVitePlugin()],
test: {
globals: true,
environment: "node",
Expand Down
18 changes: 15 additions & 3 deletions workbench/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ node --env-file=.env.workbench workbench/.build/cli.cjs run --scenario target-ri
```

Le plafond de requêtes appartient à toute l'invocation. Le recorder impose `store:false`, le
plafond de sortie demandé, 64 KiB par requête, 1 MiB par réponse, 60 s par requête, zéro retry SDK
plafond de sortie demandé, 128 KiB par requête, 1 MiB par réponse, 60 s par requête, zéro retry SDK
et zéro répétition de secours. Il conserve les octets de réponse décodés par HTTP avec leur SHA,
statut et Content-Type exacts. Le replay principal ne lit aucun environnement live :

Expand Down Expand Up @@ -204,8 +204,7 @@ ces fichiers.

La barrière d'adoption est volontairement plus stricte que le stockage exploratoire. Elle refuse
les secrets connus fournis par l'appelant, les en-têtes d'autorisation, clés API, endpoints bruts,
chemins privés absolus et champs arbitraires de transcript/document. Seules les fixtures
synthétiques publiques inscrites dans le registre peuvent être adoptées. Pour une PR jugée, le
chemins privés absolus et champs arbitraires de transcript/document. Seules les fixtures publiques explicitement inscrites peuvent être adoptées : les synthétiques historiques et les trois scénarios `public-demo-*` de type `public-recorded`. Ces derniers lient aussi les octets du média et du sidecar ; ils ne remplacent aucune prise privée. Pour une PR jugée, le
paquet versionné avec ses cassettes et son reçu relu fait partie de l'évidence à committer ; un run
de réglage, incomplet ou non relu reste sous `workbench/runs/`.

Expand Down Expand Up @@ -865,3 +864,16 @@ l1/ boucle d'agent réelle contre un serveur SSE local
cli.ts `judge` la passe du juge sur workbench/runs/ — le seul chemin qui l'appelle
scenarios/*.scn.ts les scénarios (données)
```


## Public local demo — issue #459

`public-demo-enhance`, `public-demo-zooms` et `public-demo-grounding` utilisent une petite capture
locale publique et silencieuse, avec des identifiants distincts des `real-*`. Voir
[provenance et reproduction](public-fixtures/local-demo-v1/README.md) et
[statut des mesures, revue et limites](docs/public-demo-459.md). La capture est scriptée dans le
navigateur et déclarée `public-recorded`, jamais `public-synthetic`. Elle ne mesure ni la coupe
de parole ni la qualité de l'ancienne prise privée.

En Chat Completions, `--max-output-tokens` impose désormais `max_tokens` dans le recorder et
lie cette politique à la cassette. Sans ce flag, le profil Chat historique reste inchangé.
Loading
Loading