Checkpoint requested before the targets read-tool correction. Includes canonical initial posts, creator/edit metadata, migration and UI work, and removal of delivery diagnostics from Ticket details.\n\nIntegration remains incomplete: the Client post-edit trait implementation and server post routes/dispatch are not yet connected; cargo check currently fails. This commit does not assert validation or delivery completion.
503 lines
14 KiB
JSON
503 lines
14 KiB
JSON
{
|
|
"schemaVersion": 1,
|
|
"id": "tickets-dark",
|
|
"title": "Ticket cases, classification and independent Orchestrator handling",
|
|
"baseUrl": "http://127.0.0.1:15289",
|
|
"colorScheme": "dark",
|
|
"reducedMotion": "reduce",
|
|
"personas": [
|
|
{
|
|
"id": "member",
|
|
"label": "Workspace member, not settings owner",
|
|
"auth": {
|
|
"kind": "anonymous"
|
|
}
|
|
}
|
|
],
|
|
"viewports": [
|
|
{
|
|
"label": "desktop",
|
|
"width": 1440,
|
|
"height": 900
|
|
},
|
|
{
|
|
"label": "narrow",
|
|
"width": 768,
|
|
"height": 900
|
|
},
|
|
{
|
|
"label": "mobile",
|
|
"width": 390,
|
|
"height": 844
|
|
}
|
|
],
|
|
"routes": [
|
|
{
|
|
"id": "posts",
|
|
"label": "Discussion with initial post and edited replies",
|
|
"path": "/w/tickets-posts/tickets/T-900",
|
|
"goal": "Read and edit any discussion post without changing Ticket metadata",
|
|
"dataState": "Four realistic posts, distinct authors, original and edited times",
|
|
"ready": {
|
|
"kind": "selector",
|
|
"selector": ".ticket-timeline article:nth-of-type(4)"
|
|
},
|
|
"capturePoints": [
|
|
{
|
|
"id": "initial",
|
|
"label": "Thread and metadata",
|
|
"fullPage": true
|
|
},
|
|
{
|
|
"id": "edit-initial",
|
|
"label": "Same post editor on initial post",
|
|
"interaction": [
|
|
{
|
|
"action": "click",
|
|
"selector": ".ticket-timeline article:first-of-type button"
|
|
}
|
|
],
|
|
"fullPage": true
|
|
},
|
|
{
|
|
"id": "later-posts",
|
|
"label": "Later discussion and edited attribution",
|
|
"interaction": [
|
|
{
|
|
"action": "click",
|
|
"selector": ".ticket-timeline article:first-of-type button[type=button]"
|
|
},
|
|
{
|
|
"action": "click",
|
|
"selector": ".ticket-timeline article:last-of-type header strong"
|
|
}
|
|
],
|
|
"fullPage": true
|
|
},
|
|
{
|
|
"id": "composer",
|
|
"label": "Thread-only comment and close footer",
|
|
"interaction": [
|
|
{
|
|
"action": "click",
|
|
"selector": ".ticket-thread-composer textarea"
|
|
}
|
|
],
|
|
"fullPage": true
|
|
},
|
|
{
|
|
"id": "metadata",
|
|
"label": "Title editing separate from post bodies",
|
|
"interaction": [
|
|
{
|
|
"action": "click",
|
|
"selector": ".ticket-metadata button"
|
|
}
|
|
],
|
|
"fullPage": true
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "options",
|
|
"label": "Return options without conclusion",
|
|
"path": "/w/tickets/tickets/T-1",
|
|
"goal": "Read intent, record results and progress without a repository",
|
|
"dataState": "No repository or MR",
|
|
"ready": {
|
|
"kind": "selector",
|
|
"selector": ".ticket-detail-header"
|
|
},
|
|
"capturePoints": [
|
|
{
|
|
"id": "initial",
|
|
"label": "Ticket detail",
|
|
"fullPage": true
|
|
},
|
|
{
|
|
"id": "resolution",
|
|
"label": "Reasoned case judgment",
|
|
"interaction": [
|
|
{
|
|
"action": "click",
|
|
"selector": ".ticket-thread-composer textarea"
|
|
}
|
|
],
|
|
"fullPage": true
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "read-only",
|
|
"label": "Investigation without review",
|
|
"path": "/w/tickets/tickets/T-2",
|
|
"goal": "Use read-only resources without requiring write or MR",
|
|
"dataState": "Read-only target",
|
|
"ready": {
|
|
"kind": "selector",
|
|
"selector": ".ticket-detail-header"
|
|
},
|
|
"capturePoints": [
|
|
{
|
|
"id": "initial",
|
|
"label": "Ticket detail",
|
|
"fullPage": true
|
|
},
|
|
{
|
|
"id": "resolution",
|
|
"label": "Reasoned case judgment",
|
|
"interaction": [
|
|
{
|
|
"action": "click",
|
|
"selector": ".ticket-thread-composer textarea"
|
|
}
|
|
],
|
|
"fullPage": true
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "review",
|
|
"label": "Independent review before merge",
|
|
"path": "/w/tickets/tickets/T-3",
|
|
"goal": "Separate progress from actual MR review and integration",
|
|
"dataState": "Open MR, unavailable source observation",
|
|
"ready": {
|
|
"kind": "selector",
|
|
"selector": ".ticket-detail-header"
|
|
},
|
|
"capturePoints": [
|
|
{
|
|
"id": "initial",
|
|
"label": "Ticket detail",
|
|
"fullPage": true
|
|
},
|
|
{
|
|
"id": "resolution",
|
|
"label": "Reasoned case judgment",
|
|
"interaction": [
|
|
{
|
|
"action": "click",
|
|
"selector": ".ticket-thread-composer textarea"
|
|
}
|
|
],
|
|
"fullPage": true
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "launch",
|
|
"label": "Natural request with optional recipe and resources",
|
|
"path": "/w/tickets/workers/new?ticketId=T-1&ticketTitle=Compare%20options%20without%20deciding&initialInput=Return%20options%20without%20a%20conclusion.%20Review%20is%20unnecessary.",
|
|
"goal": "Choose the general Ticket worker, no mandatory repository or Flow",
|
|
"dataState": "Member with embedded and remote Runtimes, read-only external grant available but not claimed",
|
|
"ready": {
|
|
"kind": "selector",
|
|
"selector": ".worker-launch-form"
|
|
},
|
|
"capturePoints": [
|
|
{
|
|
"id": "initial",
|
|
"label": "Ticket launch",
|
|
"fullPage": true
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "list",
|
|
"label": "Member creates a repository-free Ticket",
|
|
"path": "/w/tickets/tickets",
|
|
"goal": "Search one server-ordered Ticket list with typed qualifiers; create without a repository",
|
|
"dataState": "Default open cases; closed reason search and optional creation",
|
|
"ready": {
|
|
"kind": "selector",
|
|
"selector": ".ticket-list-row"
|
|
},
|
|
"capturePoints": [
|
|
{
|
|
"id": "initial",
|
|
"label": "Case list",
|
|
"fullPage": true
|
|
},
|
|
{
|
|
"id": "create",
|
|
"label": "Optional resources",
|
|
"interaction": [
|
|
{
|
|
"action": "click",
|
|
"selector": "button:has-text(\"Add Ticket\")"
|
|
}
|
|
],
|
|
"ready": {
|
|
"kind": "selector",
|
|
"selector": ".ticket-create-form"
|
|
},
|
|
"fullPage": true
|
|
},
|
|
{
|
|
"id": "reason-query",
|
|
"label": "Closed cases with a current completed reason",
|
|
"interaction": [
|
|
{
|
|
"action": "click",
|
|
"selector": ".ticket-panel-controls button:has-text(\"Cancel\")"
|
|
},
|
|
{
|
|
"action": "fill",
|
|
"selector": "input[aria-label=\"Search tickets\"]",
|
|
"value": "state:closed reason:completed"
|
|
},
|
|
{
|
|
"action": "click",
|
|
"selector": "form[aria-label=\"Search tickets\"] button:has-text(\"Search\")"
|
|
}
|
|
],
|
|
"ready": {
|
|
"kind": "selector",
|
|
"selector": ".ticket-list-row:has(.ticket-list-key:text-is(\"T-4\"))"
|
|
},
|
|
"fullPage": true
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "orchestrator",
|
|
"path": "/w/tickets/orchestrator",
|
|
"label": "Current self-reported handling",
|
|
"goal": "Current self-reported handling",
|
|
"dataState": "Waiting, inprogress and done independent of case",
|
|
"ready": {
|
|
"kind": "selector",
|
|
"selector": ".orchestrator-assignments"
|
|
},
|
|
"capturePoints": [
|
|
{
|
|
"id": "initial",
|
|
"label": "Current self-reported handling",
|
|
"fullPage": true
|
|
},
|
|
{
|
|
"id": "last-case",
|
|
"label": "Closed case and final handling result",
|
|
"interaction": [
|
|
{
|
|
"action": "press",
|
|
"selector": ".orchestrator-assignment:last-child",
|
|
"key": "End"
|
|
}
|
|
],
|
|
"fullPage": true
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "closed",
|
|
"path": "/w/tickets/tickets/T-4",
|
|
"label": "Closed case and retained history",
|
|
"goal": "Closed case and retained history",
|
|
"dataState": "Completed closure and replaced/unassigned history",
|
|
"ready": {
|
|
"kind": "selector",
|
|
"selector": ".ticket-detail-header"
|
|
},
|
|
"capturePoints": [
|
|
{
|
|
"id": "initial",
|
|
"label": "Closed case and retained history",
|
|
"fullPage": true
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "permission",
|
|
"path": "/w/tickets-readonly/tickets/T-2",
|
|
"label": "Read-only assignment",
|
|
"goal": "Read-only assignment",
|
|
"dataState": "Backend assignment eligibility denied",
|
|
"ready": {
|
|
"kind": "selector",
|
|
"selector": ".ticket-detail-header"
|
|
},
|
|
"capturePoints": [
|
|
{
|
|
"id": "initial",
|
|
"label": "Read-only assignment",
|
|
"fullPage": true
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "long",
|
|
"path": "/w/tickets-long/tickets?q=",
|
|
"label": "Long list titles and handling",
|
|
"goal": "Long list titles and handling",
|
|
"dataState": "Long titles and multiline results",
|
|
"ready": {
|
|
"kind": "selector",
|
|
"selector": ".ticket-list-row"
|
|
},
|
|
"capturePoints": [
|
|
{
|
|
"id": "initial",
|
|
"label": "Long list titles and handling",
|
|
"fullPage": true
|
|
},
|
|
{
|
|
"id": "last-case",
|
|
"label": "Closed case and final handling result",
|
|
"interaction": [
|
|
{
|
|
"action": "press",
|
|
"selector": ".ticket-list-rows > li:last-child .ticket-list-row",
|
|
"key": "End"
|
|
}
|
|
],
|
|
"fullPage": true
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "empty",
|
|
"path": "/w/tickets-empty/orchestrator",
|
|
"label": "No current assignments",
|
|
"goal": "No current assignments",
|
|
"dataState": "Empty response",
|
|
"ready": {
|
|
"kind": "selector",
|
|
"selector": ".orchestrator-assignments"
|
|
},
|
|
"capturePoints": [
|
|
{
|
|
"id": "initial",
|
|
"label": "No current assignments",
|
|
"fullPage": true
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "error",
|
|
"path": "/w/tickets-error/tickets",
|
|
"label": "Query failure recovery",
|
|
"goal": "Query failure recovery",
|
|
"dataState": "503 query, single list error and retry",
|
|
"ready": {
|
|
"kind": "selector",
|
|
"selector": "[role=alert]"
|
|
},
|
|
"capturePoints": [
|
|
{
|
|
"id": "initial",
|
|
"label": "Query failure recovery",
|
|
"fullPage": true
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "unknown",
|
|
"path": "/w/tickets-unknown/orchestrator",
|
|
"label": "Unknown historical handling",
|
|
"goal": "Unknown historical handling",
|
|
"dataState": "Null handling without inference",
|
|
"ready": {
|
|
"kind": "selector",
|
|
"selector": ".orchestrator-assignments"
|
|
},
|
|
"capturePoints": [
|
|
{
|
|
"id": "initial",
|
|
"label": "Unknown historical handling",
|
|
"fullPage": true
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "running",
|
|
"path": "/w/tickets-running/tickets/T-2",
|
|
"label": "Waiting with running Orchestrator Worker",
|
|
"goal": "Waiting with running Orchestrator Worker",
|
|
"dataState": "Waiting remains waiting while Worker is running",
|
|
"ready": {
|
|
"kind": "selector",
|
|
"selector": ".ticket-detail-header"
|
|
},
|
|
"capturePoints": [
|
|
{
|
|
"id": "initial",
|
|
"label": "Waiting with running Orchestrator Worker",
|
|
"fullPage": true
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "mixed",
|
|
"path": "/w/tickets/tickets?q=",
|
|
"label": "Explicit empty query includes both case states",
|
|
"goal": "Scan open and closed cases in one server-ordered list",
|
|
"dataState": "Open+done, open+waiting, inprogress with MR, closed with history",
|
|
"ready": {
|
|
"kind": "selector",
|
|
"selector": ".ticket-list-row:has(.ticket-list-key:text-is(\"T-4\"))"
|
|
},
|
|
"capturePoints": [
|
|
{
|
|
"id": "initial",
|
|
"label": "Mixed-state flat list",
|
|
"fullPage": true
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "list-empty",
|
|
"path": "/w/tickets-empty/tickets?q=",
|
|
"label": "No matching Tickets",
|
|
"goal": "Distinguish an empty list from a failed read",
|
|
"dataState": "Empty response",
|
|
"ready": {
|
|
"kind": "selector",
|
|
"selector": ".ticket-list :text-is(\"No tickets match this query.\")"
|
|
},
|
|
"capturePoints": [
|
|
{
|
|
"id": "initial",
|
|
"label": "Empty Ticket list",
|
|
"fullPage": true
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "invalid-query",
|
|
"path": "/w/tickets/tickets?q=state%3Aclose",
|
|
"label": "Invalid recognized state qualifier",
|
|
"goal": "Correct a query without issuing a broad fallback read",
|
|
"dataState": "Rejected close alias",
|
|
"ready": {
|
|
"kind": "selector",
|
|
"selector": "[role=alert]"
|
|
},
|
|
"capturePoints": [
|
|
{
|
|
"id": "initial",
|
|
"label": "Query validation error",
|
|
"fullPage": true
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"processes": [
|
|
{
|
|
"id": "ticket-fixture",
|
|
"command": "deno",
|
|
"cwd": "..",
|
|
"args": [
|
|
"run",
|
|
"--allow-net",
|
|
"--allow-read",
|
|
"browser-tests/ticket_fixture_server.ts",
|
|
"15289",
|
|
"../../web/workspace/build"
|
|
],
|
|
"readyUrl": "http://127.0.0.1:15289/health"
|
|
}
|
|
]
|
|
}
|