{
"issueNumber": 42,
"branchName": "feat/42-exclude-e2e-global-filter",
"generatedAt": "2026-04-01T12:00:00Z",
"stories": [
{
"id": "S1",
"title": "Create shared constants module and update API filter interfaces",
"priority": 1,
"dependsOn": [],
"acceptanceCriteria": [
"lib/constants.ts exports E2E_REPO, E2E_REPOS, and VIEWER_BASE",
"JobFilters and EventFilters interfaces include excludeRepo?: string",
"getJobs() and getEvents() serialize excludeRepo to query params"
],
"passes": false,
"completedAt": null
},
{
"id": "S2",
"title": "Consolidate pipeline pages to use shared constants",
"priority": 2,
"dependsOn": [
"S1"
],
"acceptanceCriteria": [
"app/pipeline/page.tsx imports from lib/constants.ts, no local E2E_REPO/E2E_REPOS/VIEWER_BASE",
"app/pipeline/[taskId]/page.tsx imports from lib/constants.ts, no local E2E_REPOS/VIEWER_BASE",
"Existing pipeline filtering behavior unchanged"
],
"passes": false,
"completedAt": null
},
{
"id": "S3",
"title": "Add e2e exclusion to jobs, events, agents, and dashboard pages",
"priority": 3,
"dependsOn": [
"S1"
],
"acceptanceCriteria": [
"Jobs page excludes e2e by default with Show e2e toggle",
"Events page excludes e2e by default with Show e2e toggle",
"Agents page filters out e2e tasks client-side by default with toggle",
"Dashboard excludes e2e data where feasible"
],
"passes": false,
"completedAt": null
},
{
"id": "S4",
"title": "Verify lint and build pass",
"priority": 4,
"dependsOn": [
"S2",
"S3"
],
"acceptanceCriteria": [
"npm run lint exits 0 with zero warnings",
"npm run build exits 0 with no errors"
],
"passes": false,
"completedAt": null
}
]
}