AI Agents SDE Task Viewer
      • Context
      • Plan
      • Prd
  1. Home
  2. AgentSDE
  3. agent-core
  4. gh-355
  5. plan
  6. prd.json
prd.json(2.3 KB)ยท Apr 8, 2026
{
  "issueNumber": 355,
  "branchName": "rc/multi-tenant",
  "generatedAt": "2026-04-08T22:10:00Z",
  "stories": [
    {
      "id": "S1",
      "title": "Add owner column to TaskEntity, JobEntity, and WebhookDeliveryEntity",
      "priority": 1,
      "dependsOn": [],
      "acceptanceCriteria": [
        "All three entities have @Column({ default: 'AgentSDE' }) owner: string",
        "TaskEntity unique constraint is ['owner', 'issue', 'repo']",
        "tsc --noEmit passes"
      ],
      "passes": false,
      "completedAt": null
    },
    {
      "id": "S2",
      "title": "Scope TaskStateService queries and creation by owner via TenantConfigService",
      "priority": 2,
      "dependsOn": [
        "S1"
      ],
      "acceptanceCriteria": [
        "findByIssueAndRepo includes owner in where clause",
        "findByStatus/findByStatuses/findAll include owner filter",
        "createTask sets owner from TenantConfigService.getConfig().org",
        "TenantModule imported in TaskStateModule"
      ],
      "passes": false,
      "completedAt": null
    },
    {
      "id": "S3",
      "title": "Scope SqliteJobQueue creation and polling by owner via TenantConfigService",
      "priority": 3,
      "dependsOn": [
        "S1"
      ],
      "acceptanceCriteria": [
        "enqueue() sets owner on created job",
        "processNext() QueryBuilder filters by owner in both outer and inner query",
        "onModuleInit() stale-job recovery filters by owner",
        "TenantModule imported in QueueModule"
      ],
      "passes": false,
      "completedAt": null
    },
    {
      "id": "S4",
      "title": "Scope WebhookController delivery creation by owner via TenantConfigService",
      "priority": 4,
      "dependsOn": [
        "S1"
      ],
      "acceptanceCriteria": [
        "deliveryRepo.create() includes owner from TenantConfigService",
        "TenantModule imported in WebhookModule"
      ],
      "passes": false,
      "completedAt": null
    },
    {
      "id": "S5",
      "title": "Update unit tests with owner fixtures and TenantConfigService mocks",
      "priority": 5,
      "dependsOn": [
        "S2",
        "S3",
        "S4"
      ],
      "acceptanceCriteria": [
        "npm run test passes",
        "npm run lint passes",
        "Tests verify owner is included in queries"
      ],
      "passes": false,
      "completedAt": null
    }
  ]
}
PlanPr description