Status: Real /genpage capture (2026-05-21 → 2026-05-26). Both layers
fully green. Replaces the original memory-game capture under eval id 15.
Captured from a real /genpage session against
https://contosobapenv0001.crmtest.dynamics.com. Driven by
claude-sonnet-4-6 under the v2.1 plugin + v2.2 manifest generator + v2.2
planner-spec tightening. Working dir was D:/temp/support-tickets/.
Prompt was the eval 15 prompt verbatim:
Build a page tracking support tickets. I need a new cr_ticket entity with a priority choice column (Low, Medium, High, Critical), a status choice column (Open, In Progress, Resolved, Closed), and a due date column.
End-to-end entity-creation flow under the tightened v2.2 spec:
- All v2.2 spec requirements satisfied — workflow-log records every
prereq command verbatim (
node --version,pac help,pac auth list,pac model list-tables,pac model list,pac solution list), everyAskUserQuestioncall with the answer,EnterPlanMode called, thecheck-auth.jsresult on both retries (ok=false blocker=whoami_403thenok=true identitiesMatch=true), and the fullpac model genpage uploadcommand with--promptand all flags echoed. - check-auth.js retry flow correctly recorded — first run blocked on
whoami_403(identity mismatch); user instructed to runaz login --username; second run returnedok=true. The orchestrator correctly halted between attempts. - Entity creation with choice columns + sample data —
cr_tickettable withcr_priority(4 options, 100000000-100000003),cr_status(4 options, same range),cr_duedate(DateOnly). 10 sample records inserted via OData$batch. Transaction log written toentity-creation-log.md. - Prefix discipline held end-to-end — plan stores suffix-only names
(
ticket,priority,status,duedate); entity-creation-log records resolved full names (cr_ticket,cr_priority, etc.) starting with the publisher prefix from the plan's## Environment. - Choice column display via local enum mapping — page uses named
constants (
PRIORITY_LOW = 100000000, etc.) and an option-array helper rather thandataApi.getChoices()/FormattedValueannotations. The Layer 2 runner now accepts this as a valid alternative (added in the same change set as this capture).
The capture surfaced two additional regex narrowings that needed relaxing:
check-auth.js ok:truedetection — the runner only acceptedok: true(colon-space) or"ok": true(JSON). Real captures sometimes useok=true(equals-sign). Fixed to accept both forms via[:=]in the regex.- Choice column display patterns — the runner only accepted
dataApi.getChoices()orFormattedValue. Real captures often use a local enum mapping with named constants in the Dataverse choice value range (100000000+). Fixed to accept this as a third valid pattern — these constants are verified againstRuntimeTypesat generation time, so they're equivalent in correctness.
These relaxations only accept functionally-equivalent alternatives — they don't loosen the rules to admit drift.
This fixture replaces 15-memory-game-entity-with-choices/ (deleted
alongside this capture's commit). That earlier capture was driven by a
non-Claude model under the v2.1 spec and had 6 known-failing assertions
about workflow-log compactness + pageInput destructuring. The
support-tickets capture is the canonical eval 15 real fixture going
forward.
| File | Source |
|---|---|
support-tickets.tsx |
Generated by /genpage page-builder phase |
RuntimeTypes.ts |
Generated by pac model genpage generate-types --data-sources "cr_ticket" |
workflow-log.md |
Recorded during the run — command-verbatim format per v2.2 spec |
genpage-plan.md |
Written by genpage-planner agent |
entity-creation-log.md |
Written by genpage-entity-builder agent |