Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
e033c90
feat(007): foundation increment: weekly budget ledger, durable eviden…
LucasWaki Sep 8, 2026
cf745f1
feat(plans): evaluation track field (agentic-request | create-run) on…
LucasWaki Sep 8, 2026
921f52a
feat(studio): hosted mode: basic auth, public host allowlist, data fo…
LucasWaki Sep 8, 2026
0034329
fix(studio): log the cause of a failed GET on the server side
LucasWaki Sep 8, 2026
c83c5f0
feat(007): paid dispatch through the weekly ledger: one reservation p…
LucasWaki Sep 8, 2026
3829be8
test(studio): build name without git; MONARCH_BUILD fallback
LucasWaki Sep 8, 2026
ed2ec45
docs(plan): 8 Sep evening findings: the 67% run identity, the fork-on…
LucasWaki Sep 8, 2026
6a16bae
docs(research): PG-Waki v1 provenance: the 67% run record and the rec…
LucasWaki Sep 8, 2026
b159432
feat(007): approval flow per decision D5, capability checks in place …
LucasWaki Sep 8, 2026
5316845
docs(007): the D5 rule in the constitution, CLAUDE.md and the benchma…
LucasWaki Sep 8, 2026
ff6a229
chore: ignore agent worktrees
LucasWaki Sep 8, 2026
a21b23f
feat(corpus): wb corpus slate freezes a task set listed by id with it…
LucasWaki Sep 8, 2026
38b09e6
config: the two gauntlet plans, achievable-50-request (track agentic-…
LucasWaki Sep 8, 2026
96d8fd3
research: pre-registrations EXP-2026-001 (gauntlet, one-off request t…
LucasWaki Sep 8, 2026
4841c96
Merge branch 'worktree-agent-aef8182935801fb3d' into 007-benchmark-fo…
LucasWaki Sep 8, 2026
41f6ae4
tasks: achievable-50 frozen on corpus revision 1.0.6 (50 prompts, ove…
LucasWaki Sep 8, 2026
2a26250
config: control-only gauntlet plans (bare Opus 5 beside the answer ke…
LucasWaki Sep 8, 2026
c69e2f8
feat(007): adopt AutomationBench 1.0.6+evalrepair.10 as the bench's w…
LucasWaki Sep 8, 2026
a2cd731
feat(007): every task records its world revision; suite ids carry it;…
LucasWaki Sep 8, 2026
08bf6fe
corpus: the seven AutomationBench domains imported under revision eva…
LucasWaki Sep 8, 2026
58eb3c5
docs(007): dependency adoption record for 1.0.6+evalrepair.10
LucasWaki Sep 8, 2026
b18eca2
feat(M6): lab seeds: `wb monarch knowledge` writes the stock seeds wi…
LucasWaki Sep 8, 2026
c757764
research(pg-waki v1): the catalog-to-seed mapping report of the first…
LucasWaki Sep 8, 2026
6845376
Merge origin/main (Carlos, 8 Sep: seeds v5.3, front-door access log, …
LucasWaki Sep 8, 2026
5943f02
specs: track features 007 to 011 (they were wrongly ignored with the …
LucasWaki Sep 8, 2026
afabbb5
Merge M1 (AutomationBench 1.0.6+evalrepair.10 adopted; corpus-evalrep…
LucasWaki Sep 8, 2026
c977677
Merge M6 (lab seeds: wb monarch knowledge, the PG-Waki catalog-to-see…
LucasWaki Sep 8, 2026
cdefc9b
tasks: achievable-50 re-frozen on corpus revision 1.0.6+evalrepair.10…
LucasWaki Sep 8, 2026
3fb41e6
docs(plan): state at the end of 8 Sep: paid dispatch, slate, approval…
LucasWaki Sep 8, 2026
9f4fbb4
test(slate): the frozen-set check reads the corpus folders from the m…
LucasWaki Sep 8, 2026
565e640
docs(plan): the fork tree is on origin (ailabs/unattended-authoring);…
LucasWaki Sep 8, 2026
65c7a6a
feat(studio): hosted front door and Langfuse key derivation
LucasWaki Sep 8, 2026
d3d91ff
chore: ignore the generated seeds for the hosted front door
LucasWaki Sep 8, 2026
a847ecb
feat(M5): wb monarch verify; a fresh passing verification of the name…
LucasWaki Sep 8, 2026
c49485b
config: knowledge-base hashes of the seeds imported for the hosted fr…
LucasWaki Sep 8, 2026
7ba9a56
fix(studio): a declared build (MONARCH_BUILD, optional MONARCH_BUILD_…
LucasWaki Sep 8, 2026
a691ec7
docs(plan): Monarch stock arm verified end to end from the web app; p…
LucasWaki Sep 8, 2026
bd2f2fa
feat(studio): design system, reports, live views, Genesis as an auton…
LucasWaki Sep 9, 2026
e82e4b6
Merge origin/main (Carlos, 8 Sep: handoff of 8 Sep, doctor must check…
LucasWaki Sep 9, 2026
d2692e2
feat(genesis): feature 022 layer 0, design of record, plugin seam and…
LucasWaki Sep 10, 2026
f7accc4
feat(studio): visual pass, Genesis takes the screen, Live Monarch Gra…
LucasWaki Sep 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
33 changes: 33 additions & 0 deletions .claude/launch.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
{
"version": "0.0.1",
"configurations": [
{
"name": "studio",
"runtimeExecutable": "uv",
"runtimeArgs": [
"run",
"--directory",
"monarch-benchmark/workflowbench",
"wb",
"studio"
],
"port": 8765,
"autoPort": true
},
{
"name": "studio-fixture",
"runtimeExecutable": "uv",
"runtimeArgs": [
"run",
"--directory",
"monarch-benchmark/workflowbench",
"python",
"tests/browser/server.py",
"--port",
"8766",
"--live"
],
"port": 8766
}
]
}
32 changes: 22 additions & 10 deletions .claude/skills/monarch-benchmark/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,19 @@ names, task ids and command lines exactly as they are — do not translate them.

## Rules you may not break

- No round beyond smoke scale (10 tasks, 2 repetitions = 20 attempts per
competitor) without Carlos approving that specific round AND `approved_by`
filled in the plan file. `wb run` enforces this; do not work around it.
- Always state attempts and a cost band before running. Never run without the
explicit "sim".
- Lucas approves paid rounds (decision D5, 8 Sep 2026). Above smoke scale (20
attempts per competitor, retries included) `wb run` by anyone but an approver
writes an approval request and waits; after `wb approve <id>` it runs with
`wb run ... --request <id>`. `approved_by` in a plan file approves nothing.
Every paid launch needs `WB_OPERATOR=<name>` in the environment. Do not work
around any of this.
- The weekly ledger (US$ 300, `research/budget.sqlite3`) is the spending gate:
`wb run` refuses a round the week cannot cover and names the shortfall;
`wb budget status` shows what is left. Always state attempts and a cost band
before running. Never run without the explicit "sim".
- Monarch competitors, `wb monarch recipes` and `wb doctor --monarch-probe` are
refused until milestone M5 verifies an instance; Claude Code until M7. Say
so; do not look for another path.
- Pre-registration: never edit a task's prompt, starting data or approval rule.
Never edit prices. If the user asks for an edit after seeing results, say it
needs Lucas's sign-off and that it makes old rows non-regradable.
Expand Down Expand Up @@ -72,8 +80,8 @@ names, ask the user to pick. Never invent a plan.

If the user describes a round no plan file matches, draft a new file under
`config/plans/` — copy the shape of `config/plans/railway-round-001.yaml`, with
`approved_by: null`, `audience: internal` and a `cost_ceiling_usd` and show it
before continuing. Field tables: `config/README.md`,
`audience: internal`, a `cost_ceiling_usd` and, when the default US$ 3.00 is not
right, an `attempt_cap_usd` — and show it before continuing. Field tables: `config/README.md`,
`specs/001-declarative-benchmark-config/contracts/config-files.md`,
`specs/002-monarch-create-run/contracts/config-files.md`.

Expand Down Expand Up @@ -118,8 +126,9 @@ has no rows, say **"sem dados anteriores"** for it — never guess.
```
Rodada: <plan> · produto sob teste: <product> (<kind>, <N> apps) · modo: <mode>
Prompts: <n_tasks> · tentativas por prompt e competidor: <k> · por competidor: <n> (= prompts × tentativas) · total: <total>
Teto de custo: US$ <ceiling> · approved_by: <valor ou "não definido">
Escala: <smoke (<=20 por competidor) | acima de smoke — exige approved_by>
Teto de custo: US$ <ceiling> · teto por tentativa: US$ <attempt_cap_usd>
Escala: <smoke (<=20 por competidor) | acima de smoke — exige aprovação do Lucas (wb approve)>
Operador: <WB_OPERATOR> · semana no ledger: US$ <available> disponíveis de US$ 300 (wb budget status)
Hash da configuração: <hash>

| competidor | harness | provedor | US$/milhão (in / cached / out) |
Expand Down Expand Up @@ -197,7 +206,10 @@ makes resume refuse with a drift error, and the round has to start over.
| Symptom | Cause and fix |
|---|---|
| `config error in ...: key_env: ... not set` | The API key is missing from `.env`. Show the line; do not run. |
| `config error in ...: approved_by: ...` | Above smoke scale without approval. Ask Carlos; only he fills `approved_by`. |
| `paid launch refused: WB_OPERATOR is not set` | Set `WB_OPERATOR=<name>` in the environment (who is launching), then retry. |
| `<id> awaiting approval` | Above smoke scale, launched by a non-approver. Lucas runs `wb approve <id>`; then `wb run ... --request <id>`. |
| `the week cannot cover this round ... short by US$ X` | The weekly ledger has no room. `wb budget status`; wait for Monday or reduce the plan. Never edit the ledger. |
| `paid launch refused: ... milestone M5` / `M7` | Monarch or Claude Code is not verified yet. Say so; drop that competitor or wait for the milestone. |
| Knowledge-base drift error | The seeds Monarch imported no longer match. `uv run wb monarch setup --product <product>` again, then say the config hash moved. |
| Monarch unreachable / 502 | Railway is locked or asleep: `railway-ops.sh status`, then `unlock`. |
| Monarch reaches nothing / front door times out | The `FRONT_DOOR_URL` tunnel is down. Restart ngrok; if its host changed, rerun `wb monarch setup`. |
Expand Down
24 changes: 24 additions & 0 deletions .claude/skills/monarch-benchmark/references/tasks.md
Original file line number Diff line number Diff line change
Expand Up @@ -75,3 +75,27 @@ rather than improvising a draw.

Never draw a set by copying files by hand: a set without a recorded seed cannot
be redrawn, and the round loses its source line.

## A set listed by id is a slate

When the members are chosen by a rule outside the bench (the first is
`tasks/achievable-50-ids.txt`, the 50-task gauntlet of the unblock plan of
8 Sep 2026), the set is frozen by the bench from that list, not by hand:

```bash
uv run wb corpus slate --ids tasks/<name>-ids.txt --out tasks/<name> --because "<why>"
```

The list holds one task id per line; its `#` comment lines become the
manifest's selection rule, so write the rule and its source there. The
command copies each corpus file unchanged into the folder and writes
`tasks/<name>-manifest.yaml` beside it: when, the rule, why the set exists,
the suite revision, the difficulty cut points it reused from
`tasks/tiers-manifest.yaml`, the count per domain, and one row per task with
its domain, hash, difficulty score and tier label. It refuses, naming every
offender, when an id is not in the corpus, has no approval rule, does not
match its own hash, or already sits in a frozen set (`tier-*`, `random-10`,
or any folder with a manifest beside it); nothing is written before every id
passes. A folder that already holds a set needs `--refreeze`, which keeps the
ids the manifest records and refreshes the copies and hashes after an
approval-rule change or a corpus re-import. Free and offline.
10 changes: 10 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# Server-side credentials for AI Labs. Copy to .env; never commit actual values.
# Supported bounded API control:
GEMINI_API_KEY=
# Native runners also require a verified isolated runtime; keys alone do not enable them.
ANTHROPIC_API_KEY=
OPENAI_API_KEY=

# Model catalog; optional account includes your custom models.
FIREWORKS_API_KEY=
FIREWORKS_ACCOUNT_ID=
83 changes: 83 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,86 @@ graphify-out/

# Generated Monarch knowledge-base seeds (wb monarch setup); regenerate, do not version
monarch-benchmark/workflowbench/out/monarch-seeds/

# Local Studio jobs contain private task evidence and are not source.
monarch-benchmark/workflowbench/out/studio/

# Files from other workspaces that landed in this checkout (Lucas, 2026-09-08): kept out of the lab repo, not deleted
/WorldRoadBridgeProvenance.cs
/_drainage_audit.py
/_drainage_seams.py
/authenticated-principal-snapshot-report.md
/bridge_catalog_deep_freeze.ps1
/bridge_catalog_fix.patch
/bridge_catalog_fix.ps1
/bridge_catalog_more_tests.ps1
/bridge_catalog_tests_fix.ps1
/bridge_catalog_typed_failure.ps1
/command-receipt-query-contract-review.md
/complete_f3a_archive_plumbing.py
/contract-at-99cb205.md
/edit_g0_capture_test.py
/edit_g0_replay.py
/edit_g0_replay_tests.py
/explore_floor_slices.py
/explore_obj.py
/explore_obj_components.py
/finish_f3a_witness_regressions.py
/implement_f3a_archive_witness.py
/inspect_cycle_runs.py
/inspect_floor_cycles.py
/inspect_longitudinal_edges.py
/measure_tunnel_sections.py
/mission-crown07-review-report.md
/mission-crown08-review-report.md
/mission-persistence-probe-20260908/
/mission-underflow01-review-report.md
/mission-underflow02-review-report.md
/mission-underflow03-review-report.md
/plot_floor_slices.py
/provenance_catalog_tests_mapping.ps1
/provenance_catalog_types.ps1
/provenance_endpoint.ps1
/provenance_hard_terminals.ps1
/provenance_junction.ps1
/provenance_prepare_adoption.ps1
/provenance_smoothing.ps1
/provenance_world_route.ps1
/provenance_world_route2.ps1
/sample_curved_x.py
/seal_bridge_catalog.ps1
/section_probe.py
/streets-path-attestation-current-packet.md
/strengthen_f3a_witness_tests.py
/underpressure-party-architecture-review.md
/visual-combat-integration-report.md
/wire_f3a_witness_tests.py
/artifacts/exact-lease-approval-20260908/

# Agent worktrees (Claude Code)
.claude/worktrees/
monarch-benchmark/workflowbench/out/monarch-seeds-lab/
monarch-benchmark/workflowbench/out/monarch-seeds-studio/

# Private local preview snapshot
/artifacts/studio-refactor/studio/
/artifacts/studio-refactor/research/
/artifacts/studio-refactor/*.log
.tmp/research-matrix/
artifacts/studio-refactor/implement_*.py
artifacts/studio-refactor/fix_review.py
artifacts/studio-refactor/tests.xml
artifacts/studio-refactor/taskset-check/
artifacts/studio-refactor/*-check.json
artifacts/studio-refactor/rebuild-*.py
artifacts/studio-refactor/wire-*.py
artifacts/studio-refactor/launcher-*.py
artifacts/studio-refactor/settings-copy.py
artifacts/studio-refactor/tasksets-sample.py

# Local snapshots and scratch, never committed
artifacts/enterprise-local/
.tmp/
.impeccable/
monarch-benchmark/workflowbench/.testagent/
artifacts/genesis-check/
Binary file added .impeccable/review/before-outcomes.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .impeccable/review/builder-activity-2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .impeccable/review/builder-activity.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .impeccable/review/builder-connecting.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .impeccable/review/builder-desktop.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .impeccable/review/builder-launch-2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .impeccable/review/builder-launch.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .impeccable/review/builder-mobile.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .impeccable/review/builder-published.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .impeccable/review/builder-versions.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .impeccable/review/builder3-connecting.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .impeccable/review/builder3-desktop.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .impeccable/review/builder3-mobile.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .impeccable/review/builder3-problem.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .impeccable/review/builder3-quickadd.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .impeccable/review/builder3-shortcuts.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .impeccable/review/comparison-modes-mobile.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .impeccable/review/comparison-modes.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 2 additions & 0 deletions .impeccable/review/confirm-graph.cjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
const {chromium}=require('C:/Users/Lucas Wakigawa/.cache/codex-runtimes/codex-primary-runtime/dependencies/node/node_modules/playwright');
(async()=>{const b=await chromium.launch({headless:true,channel:'msedge'}),p=await b.newPage({viewport:{width:1600,height:1080}});const errors=[];p.on('pageerror',e=>errors.push(e.message));await p.goto('http://127.0.0.1:8765');await p.getByRole('button',{name:'Monarch setups',exact:true}).click();const option=await p.locator('#blueprint-library option').filter({hasText:/Product graph enrichment/}).first().getAttribute('value');await p.locator('#blueprint-library').selectOption(option);await p.locator('[data-graph-node]').filter({hasText:'Enrich the graph'}).click();const original=await p.locator('#node-instructions').inputValue();await p.getByRole('button',{name:'Save draft',exact:true}).click();await p.locator('#blueprint-state').filter({hasText:/Draft saved/}).waitFor();await p.locator('#node-instructions').fill(original+'\nKeep citations with each field.');await p.getByRole('button',{name:'Save draft',exact:true}).click();await p.locator('#blueprint-state').filter({hasText:/Draft saved/}).waitFor();const data=await p.evaluate(async()=>await(await fetch('/api/blueprints')).json());if(!data.items.find(x=>x.id===option).graph.nodes.find(n=>n.type==='enrich').config.instructions.endsWith('Keep citations with each field.'))throw Error('Post-save edits lost');await p.locator('#node-instructions').fill(original);await p.getByRole('button',{name:'Save draft',exact:true}).click();await p.locator('#blueprint-state').filter({hasText:/Draft saved/}).waitFor();await p.locator('[data-graph-node]').filter({hasText:'Enrich the graph'}).focus();await p.keyboard.press('Enter');if(!await p.locator('#node-label').evaluate(el=>el===document.activeElement))throw Error('Keyboard focus lost');await p.screenshot({path:'.impeccable/review/graph-desktop.png',fullPage:true});await p.locator('#node-label').fill('Discard test');p.once('dialog',d=>d.accept());await p.getByRole('button',{name:'New architecture',exact:true}).click();if(await p.evaluate(()=>localStorage.getItem('ailabs-architecture-draft')))throw Error('Discarded edits retained');await p.locator('#blueprint-library').selectOption(option);await p.setViewportSize({width:390,height:844});await p.screenshot({path:'.impeccable/review/graph-mobile.png',fullPage:true});await p.getByRole('button',{name:'Back to runs'}).click();await p.getByRole('button',{name:'New run',exact:false}).click();await p.locator('#task-search').fill('Lisa Park');await p.locator('.difficulty-badge.easy').waitFor();await p.screenshot({path:'.impeccable/review/graph-difficulty.png',fullPage:true});console.log(JSON.stringify({postSaveEditsRetained:true,keyboardFocus:true,discardCleared:true,realDifficultyBadge:true,errors,overflow:await p.evaluate(()=>document.documentElement.scrollWidth>innerWidth)}));await b.close()})().catch(e=>{console.error(e);process.exit(1)});
Binary file added .impeccable/review/desktop.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .impeccable/review/enterprise-custom.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .impeccable/review/enterprise-default.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .impeccable/review/enterprise-mobile.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .impeccable/review/graph-desktop.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .impeccable/review/graph-difficulty.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .impeccable/review/graph-mobile.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added .impeccable/review/graph-runners.png
Binary file added .impeccable/review/mobile.png
Binary file added .impeccable/review/outcomes-desktop.png
Binary file added .impeccable/review/outcomes-detail.png
Binary file added .impeccable/review/outcomes-launch.png
Binary file added .impeccable/review/outcomes-mobile.png
Binary file added .impeccable/review/outcomes-setup-mobile.png
Binary file added .impeccable/review/outcomes-setup.png
Binary file added .impeccable/review/pg-activity.png
Binary file added .impeccable/review/pg-draft.png
Binary file added .impeccable/review/pg-node.png
Binary file added .impeccable/review/pg-version1.png
Binary file added .impeccable/review/pg-version2.png
8 changes: 8 additions & 0 deletions .impeccable/review/verify-builder-2.cjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
const {chromium}=require('C:/Users/Lucas Wakigawa/.cache/codex-runtimes/codex-primary-runtime/dependencies/node/node_modules/playwright');
(async()=>{const b=await chromium.launch({headless:true,channel:'msedge'});const p=await b.newPage({viewport:{width:1600,height:1000}});const errors=[];p.on('pageerror',e=>errors.push(e.message));p.on('dialog',d=>d.accept());
await p.goto('http://127.0.0.1:8765');await p.getByRole('tab',{name:'Activity'}).click();await p.waitForTimeout(800);await p.screenshot({path:'.impeccable/review/builder-activity-2.png',fullPage:false});
await p.getByRole('button',{name:'Monarch setups',exact:true}).click();await p.locator('.bp-node').first().waitFor();await p.evaluate(()=>localStorage.removeItem('ailabs-architecture-draft'));
const options=await p.locator('#blueprint-library option').allTextContents();const target=options.findIndex(o=>o.startsWith('Opus planner'));await p.locator('#blueprint-library').selectOption({index:target});await p.waitForTimeout(1000);
await p.locator('[data-node="planner"]').click({position:{x:30,y:20}});await p.waitForTimeout(500);await p.screenshot({path:'.impeccable/review/builder-published.png',fullPage:true});
await p.getByRole('button',{name:'Run latest version'}).click();await p.waitForTimeout(1500);await p.screenshot({path:'.impeccable/review/builder-launch-2.png',fullPage:false});
console.log(JSON.stringify({errors,options}));await b.close()})().catch(e=>{console.error(e);process.exit(1)});
Loading
Loading