Skip to content

scenario: hotel reservations ships ready (transactional-review)#20

Merged
ryandmonk merged 2 commits into
mainfrom
feat/hotel-reservations
Jul 22, 2026
Merged

scenario: hotel reservations ships ready (transactional-review)#20
ryandmonk merged 2 commits into
mainfrom
feat/hotel-reservations

Conversation

@ryandmonk

Copy link
Copy Markdown
Contributor

What

PR B of the approved platform design — stacked on #19 (retarget to main when it merges). The transactional-review intent and the scenario that validates it land atomically; the shelf completes at six ready, zero planned.

Governance (floors only, ceilings stated honestly)

Five rules: options-in-a-collection with an explicit action; ≥2 alternatives per list (required-composition min:2 — the platform reason list exists); every option states attributes (selectable-card ⊃ metadata-list); metadata carries items; every option is named. Exact counts, upper bounds, and exactly-one-primary-per-option are inexpressible in current rule types and remain prose guidance, stated inside the rules' own rationales. The worked example is deliberately not a hotel (ex.plan-comparison, pricing plans) — the domain-neutrality test built into the contract itself.

Fixtures (Spark Ollama, published dspack-gen 0.1.2)

  • fixture-015 "clean first pass": the first live attempt on the deepest composite yet (card → list → selectable-cards → metadata-lists) passed clean — three named, badged hotels with populated 3-item attribute lists and one "Book now" action. The 0.1.2 required-props grammar mechanism carried straight over.
  • fixture-016 "the interface argues back": asked for a single no-options recommendation, the model shipped a bare apology text node ("I'm sorry, but I can't comply with that request."); rule.review-presents-options caught a surface with nothing to choose (three findings — list, selectable-card, button all absent), and the repair shipped two named hotels compared on their attributes. First --require-repair attempt, unforced.

Spec housekeeping (the milestone's end state)

  • studio-shell.spec.ts: planned-reveal test becomes "six ready scenarios, no planned placeholders" (the planned-entry machinery keeps its code path for the next expansion).
  • permalinks.spec.ts: the not-yet-ready-link test uses an invented id, since no planned scenario remains.

Fail-first evidence

Error: intent 'transactional-review' is not registered in the contract
(known: destructive-action, scheduling, structured-editing, record-collection, data-collection)
4 failed  (pre-scenario build)
  hotel-reservations is a ready, selectable scenario on the shelf
  clean replay: three named options, attributes as metadata, one action
  repair replay: a bare apology caught by the review rules, options ship
  permalink: a hotel-reservations deep link resolves

Gates

pnpm -r typecheck / test green · contracts build:catalogs + drift-check clean · local Playwright 106 passed / 4 skipped · production config vs the local deploy artifact 86 passed · one live agent run: clean three-option comparison, audit passed.

🤖 Generated with Claude Code

The scenario that validates the selection vocabulary — atomic with the
intent that governs it, per the established no-intent-without-scenario
discipline. The shelf completes: six ready, zero planned.

Intent transactional-review + five floor rules: options in a collection
with an explicit action (component-choice); at least two alternatives
per list (required-composition min:2 — the reason `list` exists); every
option states attributes (selectable-card ⊃ metadata-list); metadata
carries items; every option is named. Exact counts, upper bounds, and
exactly-one-primary are inexpressible in current rule types and remain
prose guidance, stated in the rules' own rationales. The worked example
is deliberately NOT a hotel — ex.plan-comparison, pricing plans — so
the vocabulary's domain neutrality is exercised before hotel copy
exists.

Fixtures (Spark, ollama:gpt-oss:latest, published dspack-gen 0.1.2):
- fixture-015 clean: FIRST live pass on the deepest composite yet
  (card → list → selectable-cards → metadata-lists): three named,
  badged hotels, 3-item metadata each, one "Book now" action.
- fixture-016 argues-back: asked for a single no-options
  recommendation, the model ships a bare apology text node;
  rule.review-presents-options catches a surface with nothing to
  choose (three findings) and the repair ships two named hotels
  compared on their attributes. First --require-repair attempt,
  unforced.

Break-it: review-without-options (recordedCatch → argues-back).
studio-shell's planned-reveal test becomes "six ready, no planned
placeholders" (the planned-entry machinery keeps its code path);
permalinks' not-ready test uses an invented id now that none remains.

Fail-first: pre-contract recording failed with "intent
'transactional-review' is not registered"; all four
hotel-reservations.spec.ts tests failed on the pre-scenario build.
Gates: pnpm -r typecheck/test green; contracts build+drift clean;
local Playwright 106 passed / 4 skipped; production config vs local
deploy artifact 86 passed; one live agent run produced a clean
three-option comparison, audit passed.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings July 21, 2026 23:27

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR completes the “transactional-review” platform slice by registering the new intent and governance rules in the Astryx contract, and landing the validating “hotel-reservations” scenario (with replay fixtures and E2E coverage) so the shelf reaches six ready scenarios and zero planned placeholders.

Changes:

  • Adds the transactional-review intent plus five governance rules and a worked example (ex.plan-comparison) to the Astryx contract.
  • Promotes hotel-reservations to ready, adds two live replay fixtures (clean + governed repair), and wires a matching Break-it condition.
  • Updates Playwright/E2E and docs to reflect “six ready, zero planned,” including a new hotel-reservations spec and updated permalink handling.

Reviewed changes

Copilot reviewed 12 out of 12 changed files in this pull request and generated no comments.

Show a summary per file
File Description
playwright.production.config.ts Includes the new hotel-reservations E2E spec in the production Playwright suite.
packages/scenarios/src/registry.ts Marks hotel-reservations as ready and attaches seed/break prompts plus fixtures 015/016.
packages/scenarios/src/break-conditions.ts Adds a governed-repair Break-it condition for transactional-review with recorded catch linkage.
packages/replay/fixtures/fixture-015.json Adds the “clean first pass” live recording for hotel-reservations.
packages/replay/fixtures/fixture-016.json Adds the “argues back” governed-repair live recording for hotel-reservations.
packages/contracts/astryx.dspack.json Registers the new intent, governance rules, and the domain-neutral plan comparison example.
e2e/studio-shell.spec.ts Updates shelf assertions to “six ready scenarios, no planned placeholders” and verifies selection works.
e2e/permalinks.spec.ts Switches the “not-yet-ready” link test to an invented id now that no planned scenarios remain.
e2e/hotel-reservations.spec.ts Adds replay-first E2E coverage for the new scenario (clean, repair, and permalink resolution).
docs/NAV-REFACTOR.md Updates scenario inventory and audit table notes to reflect hotel-reservations as ready.
docs/IMPLEMENTATION_LOG.md Logs the completion of the vocabulary + intent + scenario shelf.
docs/AUDIT.md Updates the Scenarios milestone status from partial to complete (6 ready / 0 planned).

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@ryandmonk
ryandmonk changed the base branch from feat/vocabulary-selection to main July 22, 2026 01:16
@ryandmonk
ryandmonk merged commit 7db93d8 into main Jul 22, 2026
1 check failed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants