Question
This is not a research campaign in the thesis-chain sense — it is a platform flexibility probe. It answers one question:
Can the IP-078 + IP-081 + IP-085 stack carry a simulator whose primary deliverable is an executed Jupyter notebook (plus interactive HTML and a static figure), end-to-end, with no per-simulator code in the supervisor or analysis-writer?
If the answer is yes, then role: notebook from IP-085 §Layer 2 is real — the contract holds for an artefact shape we have not yet exercised in production. If the answer is no, the campaign synthesis names the specific gap (renderer missing, S3 sync drops .ipynb, supervisor refuses an unfamiliar slug, format: html blocked by the artefact whitelist, etc.) and the platform gets a concrete bug to fix.
The walking-simulation content is incidental — a straight-corridor walk with JuPedSim's CFSM, just rich enough that the notebook has something to plot. The campaign exists to stress the artefact-shape surface, not to advance the crowd-dynamics chain.
What we already know
- IP-085 already declares
format: ipynb,format: html, androle: notebookas first-class entries in the artefact protocol (cf. IP-085 §Layer 2 format table and §"Manifest stability contract"). The schema lets a simulator emit them; nothing in the platform has actually done so yet. jupedsim-runnerships a working CFSM image — but its entrypoint writes a parquet trajectory, not a notebook. Reusing its Python deps is cheap (pinned to JuPedSim 1.2.x); writing a siblingwalk-notebookimage whose entrypoint ispapermill <notebook>adds ~3–8 s of kernel boot per run, which is fine at this budget.- The supervisor's tool whitelist (
monad_knowledge/campaigns/subagent_spawn.py) does not have a per-simulator branch — it askssim_simulatorsfor the manifest and reads artefacts viasim_read_run/ thesim://run/<run_id>/artefact/<path>resource template. If this works forparquet, it should work foripynbandhtmlmodulo the renderer's content-type handling. This campaign is the test. - The
walk-notebookcurated note exists alongside this brief and declares theoutputs:block the protocol consumes.
What I want the supervisor to do
A single batch, six sub-experiments (3 corridor widths × 2 seeds, no parameter sweep beyond that). At the budget ceiling this leaves ~30 % headroom for the analysis-writer + critic.
| Run group | corridor_width_m |
n_agents |
Expected mean_traversal_s band |
|---|---|---|---|
| W1 | 2.0 | 12 | 18 – 26 s (single-file with mild congestion) |
| W2 | 3.0 | 12 | 14 – 20 s (two-lane self-organisation) |
| W3 | 4.0 | 12 | 11 – 16 s (close to free-flow) |
Each group runs with seeds=[0,1] → 6 runs total. The campaign-wide constants (geometry, length_m, seconds, dt, window_s) live in sim_params.walk-notebook.base and are merged automatically — only vary corridor_width_m and n_agents group-to-group.
Analysis-writer responsibilities
Three things the synthesis must do, in order:
- Confirm the artefact surface. For each run, list which IP-085 roles came back. The expected set is
{scalar-summary, notebook, figure(html), figure(png), per-bin-summary}. If any are missing for any run, name the run and the missing role — that is the platform finding, not a research finding. - Read the scalar floor, not the notebook contents. Pull
mean_traversal_s,mean_speed_m_s,lane_countfrom each run'swalk-notebook.metrics.jsonviasim_read_run. Do not open the executed notebooks to extract numbers — the point is that the floor is machine-readable on its own. - Cite the notebooks by URI. When the synthesis discusses run-specific behaviour ("W1 seed 0 shows clear single-file with one pinch at t≈22 s") it must reference the notebook by
sim://run/<run_id>/artefact/analysis.ipynb. The notebook is the deep-dive surface — the metrics are the headline.
Figure render request
One renderer slug: traversal_vs_width — a per-seed scatter of (corridor_width_m, mean_traversal_s) with the three groups colour-coded, no published band overlay (this isn't a calibration campaign).
Out of scope
- Calibration against any published band. The (ρ, v) sanity gates in
_knowledge/simulators/jupedsim-runner§Sanity gates are not used here. We are not validating physics — we are validating artefact plumbing. - Sweeping JuPedSim model parameters.
time_gap,desired_speed,radiusstay at CFSM-V1 defaults. Any sensitivity question is a follow-on campaign. - Multi-simulator chaining. This campaign uses only
walk-notebook. Re-running the same trajectory throughpedpy-analyseris the natural next step but adds chain complexity that obscures the artefact-shape signal. - Bottleneck or queue geometries. Straight corridor only. The supervisor must not propose alternative geometries on replan —
straight_corridoris the onlygeometryvalue the entrypoint accepts. - Anything BLE / CSI / EXP-P1 hardware. Pure simulation.
Expected interpretation
Three closing-sentence outcomes the synthesis should distinguish:
- All three success criteria met → "The IP-085 protocol carries
role: notebookandformat: htmlend-to-end on thewalk-notebooksimulator; the platform supports notebook-as-artefact workflows without per-simulator supervisor code." Platform implication: notebook-emitting simulators are unlocked as a class. - Criteria 1 + 2 met, criterion 3 fails (no monotonic width effect) → "The artefact pipeline works; the toy physics doesn't show the expected width effect under CFSM defaults. The platform finding is positive; the physics finding is null and immaterial." Platform implication: same as outcome 1.
- Criterion 1 fails (any required role missing) → "Notebook / HTML artefacts do not round-trip cleanly:
<which role on which run>is missing. The renderer / S3-sync / manifest validator at<surface>needs a fix before notebook-emitting simulators ship." Platform implication: opens a bug-fix loop on the named surface, not a research follow-on.
Write whichever you actually find. The interesting outcome is outcome 3 — that is the one that pays for the campaign.
Operator notes — running this campaign in practice
- The budget envelope (0.6 CPU-h, 80 k LLM tokens, 500 MB S3) assumes 6 runs at ~30 s wall-clock each plus the supervisor + analysis-writer fan-out. Notebook execution dominates the wall-clock (papermill boot + ~12 cells); the simulation proper is < 5 s.
walk-notebookis a sibling image tojupedsim-runner. Until the Dockerfile lands (dockerfiles/simulators/walk-notebook/), this campaign cannot dispatch on CI — the/campaign-curiouspath will fail atsim_run_launchwithsimulator_not_registered. Treat the brief as design specification until the image publishes.- Once the image exists, the bridge path mirrors any other simulator:
monad-knowledge sim sweep walk-notebook --grid <grid.yaml>followed bymonad-knowledge sim campaign attach-run <session_id> <run_id>per resulting run, then/campaign-curious c-walk-notebook-flexto drive Step 6.
Notes (for future sessions)
If this probe passes, the natural follow-ons are:
c-notebook-vs-script-cost— same physics, two simulators (walk-notebookpapermill vs. a hypotheticalwalk-scriptthat emits the same metrics + figures without a notebook), to quantify the papermill overhead the IP-085 §Future Considerations note flags.c-notebook-cross-simulator-synthesis— twowalk-notebookruns at different widths PLUS onejupedsim-runner+pedpy-analyserrun on the same corridor, to test whether the analysis-writer can synthesise across heterogeneous notebook + parquet artefacts.c-html-figure-archive— push theformat: htmlboundary by emitting Plotly + Bokeh + a custom D3-vanilla HTML page in one run, to stress the artefact whitelist'shtmlvalue.
Each is a separate brief; do not bundle.