Operations
Worlds Crud
Generated
This page is generated from qa/operations/specs/worlds-crud.md — the source of truth. Edit the spec, not this page.
Last run: not yet recorded (run the replay suite to populate status).
Overview
Rulesets are the top-level container an operator authors against (the UI says
“ruleset”; the route + wire stay /worlds / world_id). The worlds
list supports creating a ruleset (name + optional scope metadata), opening its
detail page, retiring it (with an explicit confirmation), and toggling visibility
of retired worlds. These are the entry actions to the whole authoring flow.
Preconditions
- Signed in as the seeded operator.
- On the worlds list (
/worlds).
Scenarios
1. Create a ruleset
- Open the create-world form on the worlds list
- Enter the name “qa-filing-status”
- Enter scope metadata “year=2026, jurisdiction=federal”
- Submit the create form
- Expected: A success state confirms the created world (id + name); the new world appears in the worlds table.
2. Create is disabled without a name
- Clear the name field in the create form
- Expected: The submit control is disabled; no world is created.
3. Scope metadata is parsed from key=value pairs
- Create a world with scope metadata “a=1, b=2”
- Expected: The new world’s row in the worlds table shows the parsed scope as JSON (
{"a":"1","b":"2"}).
4. Open a ruleset’s Rules tab
- Activate a ruleset’s name link in the rulesets table
- Expected: Ruleset’s Rules tab renders for that ruleset (its masked id shown), with an “Author a rule” control and the rules table (or its empty state when the ruleset has no rules yet).
8. Author a rule from the Rules tab
- On a ruleset’s Rules tab, activate “Author a rule”
- Expected: The rule-authoring form appears (rule text, source tier, source origin); activating the control again hides it.
9. Inspect a rule in the split detail panel
- On a ruleset that has at least one rule, select a row in the rules table
- Expected: The split detail panel opens for that rule, showing the rule statement, where it came from (source), and a “Deterministic logic” block carrying a “no LLM in path” badge; each rule row shows its lifecycle state via the four-state marker (Live / Under review / Inactive), an importance label, and a per-rule tests-pass cell (the generated-test results, or an em-dash when no suite has been generated). The detail panel’s Verification card shows the same tests-pass read. Closing the panel returns to the list-only view.
5. Retire a world with confirmation
- For an active world, activate its Retire control
- Confirm the retirement in the confirmation dialog
- Expected: A retired confirmation is shown; the world is marked retired.
6. Cancel a retire
- Open the retire confirmation for a world, then cancel
- Expected: The dialog closes and the world remains active.
7. Show / hide retired worlds
- Toggle “Show retired” on the worlds list
- Expected: Retired worlds appear when enabled and are hidden when disabled; a retired world shows a non-actionable “Retired” marker (no Retire button).
Test Data
| Label | Value | Notes |
|---|---|---|
| World name | qa-filing-status | Happy-path create |
| Scope metadata | year=2026, jurisdiction=federal | Comma-separated key=value |