Start the stack
EVENT_PLAN_EXTRACTOR=fixture reads the brief with a deterministic local extractor, so the run needs no AI Gateway key. To exercise the model, drop that variable and set AI_GATEWAY_API_KEY; the request is sent with zero data retention.
Sign in as the seeded owner. The organization needs:
- one gig template with a timed run of show, at least two staffing shifts, and a task checklist. Save any seeded gig as a template if none exists;
- two saved venues with the same name in different cities, so the brief’s venue is ambiguous.
The brief
Pass one: app first, agent second
1
Create the plan in the app
New gig → Plan from a brief, paste the brief, and submit. Expect the plan page, not a gig.
2
Choose the template
The corporate template ranks first with its reasons listed. Select it. Schedule entries, roles, and tasks appear labelled Template; doors and program show From brief with the template’s times kept beside them.
3
Answer the blocking questions
Expect exactly these under Needed to create the draft: the year for October 20 (offered as choices, none selected) and which The Echo is meant (nothing selected). The timezone shows as Suggested from the organization. Answer the year only, then close the tab.
4
Continue with an agent
Connect an MCP client to
http://localhost:4000/mcp with the same user, and run the plan_event_from_brief prompt, or start CheckAI locally and ask it to continue the reception plan. The agent must list the existing plan rather than start a new one, present both venue candidates, and wait for your choice.5
Review and create
Ask the agent to review the plan. It summarises by origin and lists what stays open. Ask it to create the draft: it must show a confirmation summary ending in “nothing is sent” and wait for your yes.
6
Reopen in the app
Reload the plan page: it shows Created and links to the gig. The gig is a Draft, its Overview lists the open decisions, and Planned from a brief links back to the plan.
Pass two: agent first, app second
Give the agent the same brief in a new conversation. After it asks its questions, stop. Open Gigs → Plans in the app: the plan is there, at the questions step, with the agent’s answers recorded. Finish the questions, review, and create the draft from the app.Properties to check
0.
Automated coverage
The same properties are asserted without a browser inapi-events:
src/db/eventPlanDraftWriter.integration.test.tscovers one gig per plan, concurrent creates, rollback, stale review, and nothing outbound.src/db/eventPlan.integration.test.tscovers the version guard.src/systems/event-plans/eventPlansOperations.integration.test.tscovers the full pipeline with the fixture extractor.