AI Agents SDE Task Viewer
      • Context
      • Plan
      • Prd
  1. Home
  2. AgentSDE
  3. agent-core
  4. gh-229
  5. plan
  6. prd.json
prd.json(1.7 KB)ยท Apr 1, 2026
{
  "issueNumber": 229,
  "branchName": "feat/229-cc-excluded-repos",
  "generatedAt": "2026-04-01T12:00:00Z",
  "stories": [
    {
      "id": "S1",
      "title": "Add EXCLUDED_REPOS env var and create ExcludedReposService",
      "priority": 1,
      "dependsOn": [],
      "acceptanceCriteria": [
        "EXCLUDED_REPOS env var registered in Joi schema with default 'AgentSDE/agent-core-e2e'",
        "ExcludedReposService parses CSV, exposes getList() and isExcluded()",
        "Service exported from AppConfigModule",
        "Unit tests pass for ExcludedReposService"
      ],
      "passes": false,
      "completedAt": null
    },
    {
      "id": "S2",
      "title": "Apply server-side exclusion to CC API list and direct-fetch endpoints",
      "priority": 2,
      "dependsOn": [
        "S1"
      ],
      "acceptanceCriteria": [
        "listTasks(), listEvents(), listJobs() exclude items from EXCLUDED_REPOS",
        "getTask() and getJob() return 404 for excluded repos",
        "bulkAction() excludes items from EXCLUDED_REPOS",
        "Debug-level logging on excluded access attempts",
        "Unit tests cover list filtering and 404 guard"
      ],
      "passes": false,
      "completedAt": null
    },
    {
      "id": "S3",
      "title": "Refactor MetricsService to use ExcludedReposService with parameterized queries",
      "priority": 3,
      "dependsOn": [
        "S1"
      ],
      "acceptanceCriteria": [
        "Hardcoded EXCLUDED_REPOS constant removed from metrics.service.ts",
        "All four metric methods use ExcludedReposService.getList()",
        "SQL uses parameterized placeholders instead of string interpolation for repo list",
        "Existing and new metrics tests pass"
      ],
      "passes": false,
      "completedAt": null
    }
  ]
}
PlanPr description