application · active

Improve Topolo

Shared contribution and triage surface for Topolo issues, ideas, and product improvements, backed by BugFix AI analysis and pull-request automation.

Documentation map

  • Topolo BugFix — Public overview of BugFix, including AI-assisted bug analysis, fix generation, and Nexus-backed provider usage.

Authority and runtime

System ID
topolo-bugfix
App IDs
app_topolo_bugfix
Owners
ai-platform
Repositories
system-apps/TopoloBugFix, system-apps/TopoloBugFixRunner
Hosts
https://bugfix.topolo.app, https://bugfix.stg.topolo.us
Dependencies
topolo-auth, topolo-nexus

Security and data ownership

Risk tier
standard
Tenant isolation
organization_scoped
Privacy classification
restricted
Storage
d1, external_provider
Export and deletion
planned
Enterprise ready
no

Source-derived capability inventory

Source revisions: system-apps/TopoloBugFix@f255bd2ae4f710130f36e8f5c6e42bd9fdac21f1, system-apps/TopoloBugFixRunner@92dcf622930a7b0c034d567f8362505b448294b5

Declared actions: 25 · API routes: 1 · UI routes: 6

{
  "id": "topolo-bugfix",
  "name": "Improve Topolo",
  "slug": "topolo-bugfix",
  "kind": "application",
  "visibility": "public",
  "repo_paths": [
    "system-apps/TopoloBugFix",
    "system-apps/TopoloBugFixRunner"
  ],
  "source_revisions": [
    {
      "source_path": "system-apps/TopoloBugFix",
      "repository": "system-apps/TopoloBugFix",
      "revision": "f255bd2ae4f710130f36e8f5c6e42bd9fdac21f1",
      "ref": "origin/staging"
    },
    {
      "source_path": "system-apps/TopoloBugFixRunner",
      "repository": "system-apps/TopoloBugFixRunner",
      "revision": "92dcf622930a7b0c034d567f8362505b448294b5",
      "ref": "origin/staging"
    }
  ],
  "source_counts": {
    "source_files": 45,
    "test_files": 37,
    "test_cases": 0,
    "migration_files": 9,
    "database_tables": 0,
    "manifests": 2,
    "deploy_targets": 2,
    "actions": 25,
    "mobile_contracts": 0,
    "notifications": 6,
    "package_manifests": 2,
    "deployment_configs": 0
  },
  "manifests": [
    {
      "source_path": "system-apps/TopoloBugFix/topolo.app.json",
      "service_slug": "topolo-bugfix",
      "name": "topolo-bugfix",
      "app_id": "app_topolo_bugfix",
      "compatibility_date": "2026-04-10",
      "primary_target": "api",
      "environments": [
        "development",
        "production",
        "staging"
      ],
      "targets": [
        {
          "name": "api",
          "kind": "worker",
          "directory": "apps/api",
          "main": "src/index.js",
          "worker_name": "topolo-bugfix",
          "subdomain": "bugfix",
          "healthcheck_path": "/health",
          "variable_names": [
            "BUGFIX_PUBLIC_BASE_URL",
            "ENVIRONMENT",
            "GITHUB_API_URL",
            "GITHUB_REPO_OWNER",
            "NEXUS_GATEWAY_URL",
            "PLATFORM_ADMIN_ORG_ID",
            "TOPOLO_APP_ID",
            "TOPOLO_AUTH_BASE_URL",
            "TOPOLO_DOCS_URL",
            "TOPOLO_NOTIFY_URL"
          ],
          "secret_names": [],
          "bindings": [
            {
              "kind": "d1",
              "binding": "BUGFIX_REPORTS_DB",
              "target": null
            },
            {
              "kind": "d1",
              "binding": "BUGFIX_FIXES_DB",
              "target": null
            },
            {
              "kind": "d1",
              "binding": "BUGFIX_OPERATIONS_DB",
              "target": null
            },
            {
              "kind": "d1",
              "binding": "BUGFIX_EVENTS_DB",
              "target": null
            }
          ]
        }
      ],
      "notifications": [
        "bugfix.fix.applied",
        "bugfix.fix.approval_requested",
        "bugfix.fix.failed",
        "bugfix.fix.ready",
        "bugfix.queue.stalled",
        "bugfix.report.created"
      ],
      "notification_contract": {
        "source_path": "topolo.notification-contracts.json",
        "role": "producer",
        "schema_version": 1,
        "owner_app_id": "app_topolo_bugfix",
        "events": [
          {
            "type": "bugfix.fix.applied",
            "version": 1,
            "description": "A BugFix pull request was durably recorded as merged.",
            "status": "published",
            "payloadSchema": {
              "type": "object",
              "required": [
                "title",
                "body",
                "object_id",
                "report_id",
                "app_name",
                "fix_id",
                "pull_request_number",
                "status",
                "occurred_at",
                "cta_url"
              ],
              "properties": {
                "title": {
                  "type": "string",
                  "minLength": 1
                },
                "body": {
                  "type": "string",
                  "minLength": 1
                },
                "object_id": {
                  "type": "string",
                  "minLength": 1
                },
                "report_id": {
                  "type": "string",
                  "minLength": 1
                },
                "app_name": {
                  "type": "string",
                  "minLength": 1
                },
                "fix_id": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "job_id": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "pull_request_number": {
                  "type": "integer",
                  "minimum": 1
                },
                "status": {
                  "const": "merged"
                },
                "occurred_at": {
                  "type": "string",
                  "format": "date-time"
                },
                "cta_url": {
                  "type": "string",
                  "format": "uri"
                }
              },
              "additionalProperties": false
            },
            "examples": [
              {
                "title": "Bug fix applied",
                "body": "Pull request #42 was merged.",
                "object_id": "fix_1",
                "report_id": "report_1",
                "app_name": "topolo-books",
                "fix_id": "fix_1",
                "pull_request_number": 42,
                "status": "merged",
                "occurred_at": "2026-07-20T00:00:00.000Z",
                "cta_url": "https://bugfix.stg.topolo.us/fixes/fix_1"
              }
            ],
            "dataClassification": "internal",
            "sensitiveFields": [],
            "recipients": {
              "modes": [
                "organization_member"
              ],
              "externalAddress": "forbidden"
            },
            "idempotency": {
              "required": true,
              "pattern": "^bugfix:fix-applied:"
            }
          },
          {
            "type": "bugfix.fix.approval_requested",
            "version": 1,
            "description": "A validated fix durably entered the review-pending state.",
            "status": "published",
            "payloadSchema": {
              "type": "object",
              "required": [
                "title",
                "body",
                "object_id",
                "report_id",
                "app_name",
                "fix_id",
                "pull_request_id",
                "status",
                "occurred_at",
                "cta_url"
              ],
              "properties": {
                "title": {
                  "type": "string",
                  "minLength": 1
                },
                "body": {
                  "type": "string",
                  "minLength": 1
                },
                "object_id": {
                  "type": "string",
                  "minLength": 1
                },
                "report_id": {
                  "type": "string",
                  "minLength": 1
                },
                "app_name": {
                  "type": "string",
                  "minLength": 1
                },
                "fix_id": {
                  "type": "string",
                  "minLength": 1
                },
                "pull_request_id": {
                  "type": "string",
                  "minLength": 1
                },
                "status": {
                  "const": "review_pending"
                },
                "occurred_at": {
                  "type": "string",
                  "format": "date-time"
                },
                "cta_url": {
                  "type": "string",
                  "format": "uri"
                }
              },
              "additionalProperties": false
            },
            "examples": [
              {
                "title": "Bug fix approval requested",
                "body": "A validated fix is ready for review.",
                "object_id": "fix_1",
                "report_id": "report_1",
                "app_name": "topolo-books",
                "fix_id": "fix_1",
                "pull_request_id": "pr_1",
                "status": "review_pending",
                "occurred_at": "2026-07-20T00:00:00.000Z",
                "cta_url": "https://bugfix.stg.topolo.us/fixes/fix_1"
              }
            ],
            "dataClassification": "internal",
            "sensitiveFields": [],
            "recipients": {
              "modes": [
                "organization_member"
              ],
              "externalAddress": "forbidden"
            },
            "idempotency": {
              "required": true,
              "pattern": "^bugfix:fix-approval-requested:"
            }
          },
          {
            "type": "bugfix.fix.failed",
            "version": 1,
            "description": "A fix generation job durably exhausted or entered the failed state.",
            "status": "published",
            "payloadSchema": {
              "type": "object",
              "required": [
                "title",
                "body",
                "object_id",
                "report_id",
                "app_name",
                "fix_id",
                "job_id",
                "status",
                "occurred_at",
                "cta_url"
              ],
              "properties": {
                "title": {
                  "type": "string",
                  "minLength": 1
                },
                "body": {
                  "type": "string",
                  "minLength": 1
                },
                "object_id": {
                  "type": "string",
                  "minLength": 1
                },
                "report_id": {
                  "type": "string",
                  "minLength": 1
                },
                "app_name": {
                  "type": "string",
                  "minLength": 1
                },
                "fix_id": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "job_id": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "status": {
                  "const": "failed"
                },
                "occurred_at": {
                  "type": "string",
                  "format": "date-time"
                },
                "cta_url": {
                  "type": "string",
                  "format": "uri"
                }
              },
              "additionalProperties": false
            },
            "examples": [
              {
                "title": "Bug fix failed",
                "body": "The external runner exhausted its fix attempts.",
                "object_id": "job_1",
                "report_id": "report_1",
                "app_name": "topolo-books",
                "fix_id": null,
                "job_id": "job_1",
                "status": "failed",
                "occurred_at": "2026-07-20T00:00:00.000Z",
                "cta_url": "https://bugfix.stg.topolo.us/reports/report_1"
              }
            ],
            "dataClassification": "internal",
            "sensitiveFields": [],
            "recipients": {
              "modes": [
                "organization_member"
              ],
              "externalAddress": "forbidden"
            },
            "idempotency": {
              "required": true,
              "pattern": "^bugfix:fix-failed:"
            }
          },
          {
            "type": "bugfix.fix.ready",
            "version": 1,
            "description": "A generated or runner-produced fix was durably recorded and is ready for its next step.",
            "status": "published",
            "payloadSchema": {
              "type": "object",
              "required": [
                "title",
                "body",
                "object_id",
                "report_id",
                "app_name",
                "fix_id",
                "status",
                "occurred_at",
                "cta_url"
              ],
              "properties": {
                "title": {
                  "type": "string",
                  "minLength": 1
                },
                "body": {
                  "type": "string",
                  "minLength": 1
                },
                "object_id": {
                  "type": "string",
                  "minLength": 1
                },
                "report_id": {
                  "type": "string",
                  "minLength": 1
                },
                "app_name": {
                  "type": "string",
                  "minLength": 1
                },
                "fix_id": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "job_id": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "confidence_score": {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 1
                },
                "status": {
                  "enum": [
                    "generated",
                    "fix_generated",
                    "pr_created",
                    "merged"
                  ]
                },
                "occurred_at": {
                  "type": "string",
                  "format": "date-time"
                },
                "cta_url": {
                  "type": "string",
                  "format": "uri"
                }
              },
              "additionalProperties": false
            },
            "examples": [
              {
                "title": "Bug fix ready",
                "body": "A proposed fix is ready for review.",
                "object_id": "fix_1",
                "report_id": "report_1",
                "app_name": "topolo-books",
                "fix_id": "fix_1",
                "confidence_score": 0.91,
                "status": "generated",
                "occurred_at": "2026-07-20T00:00:00.000Z",
                "cta_url": "https://bugfix.stg.topolo.us/fixes/fix_1"
              }
            ],
            "dataClassification": "internal",
            "sensitiveFields": [],
            "recipients": {
              "modes": [
                "organization_member"
              ],
              "externalAddress": "forbidden"
            },
            "idempotency": {
              "required": true,
              "pattern": "^bugfix:fix-ready:"
            }
          },
          {
            "type": "bugfix.queue.stalled",
            "version": 1,
            "description": "An expired runner lease was durably returned to the queued state.",
            "status": "published",
            "payloadSchema": {
              "type": "object",
              "required": [
                "title",
                "body",
                "object_id",
                "report_id",
                "app_name",
                "job_id",
                "runner_id",
                "lease_expires_at",
                "status",
                "occurred_at",
                "cta_url"
              ],
              "properties": {
                "title": {
                  "type": "string",
                  "minLength": 1
                },
                "body": {
                  "type": "string",
                  "minLength": 1
                },
                "object_id": {
                  "type": "string",
                  "minLength": 1
                },
                "report_id": {
                  "type": "string",
                  "minLength": 1
                },
                "app_name": {
                  "type": "string",
                  "minLength": 1
                },
                "job_id": {
                  "type": "string",
                  "minLength": 1
                },
                "runner_id": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "lease_expires_at": {
                  "type": "string",
                  "format": "date-time"
                },
                "status": {
                  "const": "queued"
                },
                "occurred_at": {
                  "type": "string",
                  "format": "date-time"
                },
                "cta_url": {
                  "type": "string",
                  "format": "uri"
                }
              },
              "additionalProperties": false
            },
            "examples": [
              {
                "title": "BugFix queue job stalled",
                "body": "An expired runner lease was returned to the fix queue.",
                "object_id": "job_1",
                "report_id": "report_1",
                "app_name": "topolo-books",
                "job_id": "job_1",
                "runner_id": "runner_1",
                "lease_expires_at": "2026-07-20T00:00:00.000Z",
                "status": "queued",
                "occurred_at": "2026-07-20T00:01:00.000Z",
                "cta_url": "https://bugfix.stg.topolo.us/reports/report_1"
              }
            ],
            "dataClassification": "internal",
            "sensitiveFields": [],
            "recipients": {
              "modes": [
                "organization_member"
              ],
              "externalAddress": "forbidden"
            },
            "idempotency": {
              "required": true,
              "pattern": "^bugfix:queue-stalled:"
            }
          },
          {
            "type": "bugfix.report.created",
            "version": 1,
            "description": "A bug report and its triage result were durably persisted.",
            "status": "published",
            "payloadSchema": {
              "type": "object",
              "required": [
                "title",
                "body",
                "object_id",
                "report_id",
                "app_name",
                "severity",
                "status",
                "triage_tier",
                "fingerprint",
                "occurred_at",
                "cta_url"
              ],
              "properties": {
                "title": {
                  "type": "string",
                  "minLength": 1
                },
                "body": {
                  "type": "string",
                  "minLength": 1
                },
                "object_id": {
                  "type": "string",
                  "minLength": 1
                },
                "report_id": {
                  "type": "string",
                  "minLength": 1
                },
                "app_name": {
                  "type": "string",
                  "minLength": 1
                },
                "severity": {
                  "enum": [
                    "low",
                    "medium",
                    "high",
                    "critical"
                  ]
                },
                "status": {
                  "const": "pending"
                },
                "triage_tier": {
                  "enum": [
                    "tier_1",
                    "tier_2"
                  ]
                },
                "fingerprint": {
                  "type": "string",
                  "minLength": 1
                },
                "occurred_at": {
                  "type": "string",
                  "format": "date-time"
                },
                "cta_url": {
                  "type": "string",
                  "format": "uri"
                }
              },
              "additionalProperties": false
            },
            "examples": [
              {
                "title": "Bug report created",
                "body": "topolo-books: Invoice total is stale",
                "object_id": "report_1",
                "report_id": "report_1",
                "app_name": "topolo-books",
                "severity": "high",
                "status": "pending",
                "triage_tier": "tier_1",
                "fingerprint": "books:invoice-total",
                "occurred_at": "2026-07-20T00:00:00.000Z",
                "cta_url": "https://bugfix.stg.topolo.us/reports/report_1"
              }
            ],
            "dataClassification": "confidential",
            "sensitiveFields": [
              "fingerprint"
            ],
            "recipients": {
              "modes": [
                "organization_member"
              ],
              "externalAddress": "forbidden"
            },
            "idempotency": {
              "required": true,
              "pattern": "^bugfix:report-created:"
            }
          }
        ]
      },
      "actions": [
        {
          "name": "widget.get",
          "title": "Get BugFix widget",
          "description": "Get the TopoloOne widget summary for BugFix.",
          "method": "GET",
          "path": "/api/widget",
          "permission": "issues:read",
          "authorizationMode": "static",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {},
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "documentation": {
            "example_input": {},
            "cli_example": [
              "topolo actions --service topolo-bugfix --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/widget",
              "body": null
            },
            "effects": "Reads state through GET /api/widget without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/widget",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "organizations.data.export",
          "title": "Export organization data",
          "description": "Export organization-authored BugFix data without credentials.",
          "method": "GET",
          "path": "/api/organizations/{organizationId}/data",
          "permission": "privacy:read",
          "authorizationMode": "static",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "organizationId": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "organizationId"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "documentation": {
            "example_input": {
              "organizationId": "example"
            },
            "cli_example": [
              "topolo actions --service topolo-bugfix --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/organizations/example/data",
              "body": null
            },
            "effects": "Reads state through GET /api/organizations/{organizationId}/data without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/organizations/*/data",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "organizations.data.erase",
          "title": "Erase organization data",
          "description": "Erase organization-authored BugFix data after active work is stopped and literal ERASE confirmation is provided.",
          "method": "DELETE",
          "path": "/api/organizations/{organizationId}/data",
          "permission": "privacy:write",
          "authorizationMode": "static",
          "readOnly": false,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "organizationId": {
                "type": "string",
                "minLength": 1
              },
              "confirmation": {
                "type": "string",
                "const": "ERASE"
              }
            },
            "required": [
              "organizationId",
              "confirmation"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "additionalProperties": true
          },
          "destructive": true,
          "requiresConfirmation": true,
          "agentAccess": "confirm",
          "documentation": {
            "example_input": {
              "organizationId": "example",
              "confirmation": "ERASE"
            },
            "cli_example": [
              "topolo actions --service topolo-bugfix --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "DELETE",
              "path": "/api/organizations/example/data",
              "body": null
            },
            "effects": "May change state through DELETE /api/organizations/{organizationId}/data. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "DELETE /api/organizations/*/data",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "reports.create",
          "title": "Create bug report",
          "description": "Create an authenticated bug report for a Topolo application.",
          "method": "POST",
          "path": "/api/actions/reports",
          "permission": "issues:write",
          "authorizationMode": "static",
          "readOnly": false,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "title": {
                "type": "string",
                "minLength": 1
              },
              "description": {
                "type": "string",
                "minLength": 1
              },
              "appName": {
                "type": "string",
                "minLength": 1
              },
              "severity": {
                "type": "string",
                "enum": [
                  "low",
                  "medium",
                  "high",
                  "critical"
                ]
              },
              "appVersion": {
                "type": "string"
              },
              "pageUrl": {
                "type": "string"
              },
              "userAgent": {
                "type": "string"
              },
              "screenshot": {
                "type": "string"
              },
              "consoleErrors": {},
              "componentStack": {
                "type": "string"
              },
              "additionalContext": {
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {}
              }
            },
            "required": [
              "title",
              "description",
              "appName"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": true,
          "agentAccess": "confirm",
          "documentation": {
            "example_input": {
              "title": "example",
              "description": "example",
              "appName": "example"
            },
            "cli_example": [
              "topolo actions --service topolo-bugfix --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "POST",
              "path": "/api/actions/reports",
              "body": {
                "title": "example",
                "description": "example",
                "appName": "example"
              }
            },
            "effects": "May change state through POST /api/actions/reports. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "POST /api/actions/reports",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "reports.list",
          "title": "List bug reports",
          "description": "List bug reports visible to the active principal.",
          "method": "GET",
          "path": "/api/reports",
          "permission": "issues:read",
          "authorizationMode": "static",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "app": {
                "type": "string",
                "minLength": 1
              },
              "status": {
                "type": "string",
                "minLength": 1
              },
              "limit": {
                "type": "integer",
                "minimum": 1,
                "maximum": 100
              },
              "offset": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              }
            },
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "documentation": {
            "example_input": {
              "app": "example",
              "status": "example",
              "limit": 1
            },
            "cli_example": [
              "topolo actions --service topolo-bugfix --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/reports",
              "body": null
            },
            "effects": "Reads state through GET /api/reports without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/reports",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "reports.get",
          "title": "Get bug report",
          "description": "Get one bug report.",
          "method": "GET",
          "path": "/api/reports/{reportId}",
          "permission": "issues:read",
          "authorizationMode": "static",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "reportId": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "reportId"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "documentation": {
            "example_input": {
              "reportId": "example"
            },
            "cli_example": [
              "topolo actions --service topolo-bugfix --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/reports/example",
              "body": null
            },
            "effects": "Reads state through GET /api/reports/{reportId} without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/reports/*",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "reports.status.get",
          "title": "Get bug report status",
          "description": "Get the current status and related fixes for one bug report.",
          "method": "GET",
          "path": "/api/reports/{reportId}/status",
          "permission": "issues:read",
          "authorizationMode": "static",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "reportId": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "reportId"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "documentation": {
            "example_input": {
              "reportId": "example"
            },
            "cli_example": [
              "topolo actions --service topolo-bugfix --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/reports/example/status",
              "body": null
            },
            "effects": "Reads state through GET /api/reports/{reportId}/status without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/reports/*/status",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "reports.fix.generate",
          "title": "Generate report fix",
          "description": "Start AI fix generation for one bug report.",
          "method": "POST",
          "path": "/api/reports/{reportId}/fix",
          "permission": "runs:invoke",
          "authorizationMode": "static",
          "readOnly": false,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "reportId": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "reportId"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": true,
          "agentAccess": "confirm",
          "documentation": {
            "example_input": {
              "reportId": "example"
            },
            "cli_example": [
              "topolo actions --service topolo-bugfix --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "POST",
              "path": "/api/reports/example/fix",
              "body": {
                "reportId": "example"
              }
            },
            "effects": "May change state through POST /api/reports/{reportId}/fix. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "POST /api/reports/*/fix",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "fixes.get",
          "title": "Get generated fix",
          "description": "Get one generated fix and its pull-request state.",
          "method": "GET",
          "path": "/api/fixes/{fixId}",
          "permission": "issues:read",
          "authorizationMode": "static",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "fixId": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "fixId"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "documentation": {
            "example_input": {
              "fixId": "example"
            },
            "cli_example": [
              "topolo actions --service topolo-bugfix --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/fixes/example",
              "body": null
            },
            "effects": "Reads state through GET /api/fixes/{fixId} without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/fixes/*",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "fixes.approve",
          "title": "Approve generated fix",
          "description": "Approve one generated fix and merge its open pull request.",
          "method": "POST",
          "path": "/api/fixes/{fixId}/approve",
          "permission": "issues:write",
          "authorizationMode": "static",
          "readOnly": false,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "fixId": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "fixId"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": true,
          "agentAccess": "confirm",
          "documentation": {
            "example_input": {
              "fixId": "example"
            },
            "cli_example": [
              "topolo actions --service topolo-bugfix --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "POST",
              "path": "/api/fixes/example/approve",
              "body": {
                "fixId": "example"
              }
            },
            "effects": "May change state through POST /api/fixes/{fixId}/approve. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "POST /api/fixes/*/approve",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "fixes.reject",
          "title": "Reject generated fix",
          "description": "Reject one generated fix and close its open pull request.",
          "method": "POST",
          "path": "/api/fixes/{fixId}/reject",
          "permission": "issues:write",
          "authorizationMode": "static",
          "readOnly": false,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "fixId": {
                "type": "string",
                "minLength": 1
              },
              "reason": {
                "type": "string"
              }
            },
            "required": [
              "fixId"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "additionalProperties": true
          },
          "destructive": true,
          "requiresConfirmation": true,
          "agentAccess": "confirm",
          "documentation": {
            "example_input": {
              "fixId": "example"
            },
            "cli_example": [
              "topolo actions --service topolo-bugfix --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "POST",
              "path": "/api/fixes/example/reject",
              "body": {
                "fixId": "example"
              }
            },
            "effects": "May change state through POST /api/fixes/{fixId}/reject. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "POST /api/fixes/*/reject",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "admin.stats.get",
          "title": "Get BugFix statistics",
          "description": "Get platform BugFix operational statistics.",
          "method": "GET",
          "path": "/api/admin/stats",
          "permission": "issues:read",
          "authorizationMode": "static",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {},
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "documentation": {
            "example_input": {},
            "cli_example": [
              "topolo actions --service topolo-bugfix --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/admin/stats",
              "body": null
            },
            "effects": "Reads state through GET /api/admin/stats without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/admin/stats",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "queue.retry",
          "title": "Retry failed reports",
          "description": "Move selected failed reports back to pending.",
          "method": "POST",
          "path": "/api/admin/retry",
          "permission": "issues:write",
          "authorizationMode": "static",
          "readOnly": false,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "reportIds": {
                "minItems": 1,
                "type": "array",
                "items": {
                  "type": "string",
                  "minLength": 1
                }
              }
            },
            "required": [
              "reportIds"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": true,
          "agentAccess": "confirm",
          "documentation": {
            "example_input": {
              "reportIds": [
                "example"
              ]
            },
            "cli_example": [
              "topolo actions --service topolo-bugfix --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "POST",
              "path": "/api/admin/retry",
              "body": {
                "reportIds": [
                  "example"
                ]
              }
            },
            "effects": "May change state through POST /api/admin/retry. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "POST /api/admin/retry",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "queue.list",
          "title": "List review queue",
          "description": "List the platform BugFix review queue.",
          "method": "GET",
          "path": "/api/admin/queue",
          "permission": "issues:read",
          "authorizationMode": "static",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "status": {
                "type": "string",
                "minLength": 1
              },
              "app": {
                "type": "string",
                "minLength": 1
              },
              "severity": {
                "type": "string",
                "minLength": 1
              },
              "limit": {
                "type": "integer",
                "minimum": 1,
                "maximum": 100
              },
              "offset": {
                "type": "integer",
                "minimum": 0,
                "maximum": 9007199254740991
              }
            },
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "documentation": {
            "example_input": {
              "status": "example",
              "app": "example",
              "severity": "example"
            },
            "cli_example": [
              "topolo actions --service topolo-bugfix --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/admin/queue",
              "body": null
            },
            "effects": "Reads state through GET /api/admin/queue without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/admin/queue",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "queue.stats.get",
          "title": "Get review queue statistics",
          "description": "Get review queue totals by state.",
          "method": "GET",
          "path": "/api/admin/queue/stats",
          "permission": "issues:read",
          "authorizationMode": "static",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {},
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "documentation": {
            "example_input": {},
            "cli_example": [
              "topolo actions --service topolo-bugfix --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/admin/queue/stats",
              "body": null
            },
            "effects": "Reads state through GET /api/admin/queue/stats without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/admin/queue/stats",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "queue.report.get",
          "title": "Get queued report",
          "description": "Get one report from the platform review queue.",
          "method": "GET",
          "path": "/api/admin/queue/{reportId}",
          "permission": "issues:read",
          "authorizationMode": "static",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "reportId": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "reportId"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "documentation": {
            "example_input": {
              "reportId": "example"
            },
            "cli_example": [
              "topolo actions --service topolo-bugfix --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/admin/queue/example",
              "body": null
            },
            "effects": "Reads state through GET /api/admin/queue/{reportId} without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/admin/queue/*",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "queue.report.update",
          "title": "Update queued report",
          "description": "Update review notes, guidance, priority, target, assignment, or state.",
          "method": "PUT",
          "path": "/api/admin/queue/{reportId}",
          "permission": "issues:write",
          "authorizationMode": "static",
          "readOnly": false,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "reportId": {
                "type": "string",
                "minLength": 1
              },
              "admin_notes": {
                "type": "string"
              },
              "admin_guidance": {
                "type": "string"
              },
              "priority": {
                "type": "string"
              },
              "target_repo": {
                "type": "string"
              },
              "target_branch": {
                "type": "string"
              },
              "assigned_agent": {
                "type": "string"
              },
              "status": {
                "type": "string"
              }
            },
            "required": [
              "reportId"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": true,
          "agentAccess": "confirm",
          "documentation": {
            "example_input": {
              "reportId": "example"
            },
            "cli_example": [
              "topolo actions --service topolo-bugfix --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "PUT",
              "path": "/api/admin/queue/example",
              "body": {
                "reportId": "example"
              }
            },
            "effects": "May change state through PUT /api/admin/queue/{reportId}. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "PUT /api/admin/queue/*",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "queue.report.generate",
          "title": "Generate queued report fix",
          "description": "Trigger AI fix generation for one queued report with optional guidance.",
          "method": "POST",
          "path": "/api/admin/queue/{reportId}/generate",
          "permission": "runs:invoke",
          "authorizationMode": "static",
          "readOnly": false,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "reportId": {
                "type": "string",
                "minLength": 1
              },
              "agent": {
                "type": "string"
              },
              "additional_guidance": {
                "type": "string"
              }
            },
            "required": [
              "reportId"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": true,
          "agentAccess": "confirm",
          "documentation": {
            "example_input": {
              "reportId": "example"
            },
            "cli_example": [
              "topolo actions --service topolo-bugfix --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "POST",
              "path": "/api/admin/queue/example/generate",
              "body": {
                "reportId": "example"
              }
            },
            "effects": "May change state through POST /api/admin/queue/{reportId}/generate. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "POST /api/admin/queue/*/generate",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "queue.report.dismiss",
          "title": "Dismiss queued report",
          "description": "Dismiss one queued report with an optional reason.",
          "method": "POST",
          "path": "/api/admin/queue/{reportId}/dismiss",
          "permission": "issues:write",
          "authorizationMode": "static",
          "readOnly": false,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "reportId": {
                "type": "string",
                "minLength": 1
              },
              "reason": {
                "type": "string"
              }
            },
            "required": [
              "reportId"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "additionalProperties": true
          },
          "destructive": true,
          "requiresConfirmation": true,
          "agentAccess": "confirm",
          "documentation": {
            "example_input": {
              "reportId": "example"
            },
            "cli_example": [
              "topolo actions --service topolo-bugfix --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "POST",
              "path": "/api/admin/queue/example/dismiss",
              "body": {
                "reportId": "example"
              }
            },
            "effects": "May change state through POST /api/admin/queue/{reportId}/dismiss. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "POST /api/admin/queue/*/dismiss",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "settings.public.get",
          "title": "Get public BugFix settings",
          "description": "Get BugReporter enablement and auto-fix status.",
          "method": "GET",
          "path": "/api/settings",
          "permission": "issues:read",
          "authorizationMode": "static",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {},
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "documentation": {
            "example_input": {},
            "cli_example": [
              "topolo actions --service topolo-bugfix --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/settings",
              "body": null
            },
            "effects": "Reads state through GET /api/settings without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/settings",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "auto_fix.get",
          "title": "Get auto-fix state",
          "description": "Get the current auto-fix kill-switch state and recent changes.",
          "method": "GET",
          "path": "/api/admin/auto-fix",
          "permission": "bugfix:admin",
          "authorizationMode": "static",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {},
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "documentation": {
            "example_input": {},
            "cli_example": [
              "topolo actions --service topolo-bugfix --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/admin/auto-fix",
              "body": null
            },
            "effects": "Reads state through GET /api/admin/auto-fix without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/admin/auto-fix",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "auto_fix.toggle",
          "title": "Toggle auto-fix",
          "description": "Enable or disable the manual auto-fix switch.",
          "method": "POST",
          "path": "/api/admin/auto-fix/toggle",
          "permission": "bugfix:admin",
          "authorizationMode": "static",
          "readOnly": false,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "enabled": {
                "type": "boolean"
              },
              "reason": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "enabled"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": true,
          "agentAccess": "confirm",
          "documentation": {
            "example_input": {
              "enabled": true
            },
            "cli_example": [
              "topolo actions --service topolo-bugfix --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "POST",
              "path": "/api/admin/auto-fix/toggle",
              "body": {
                "enabled": true
              }
            },
            "effects": "May change state through POST /api/admin/auto-fix/toggle. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "POST /api/admin/auto-fix/toggle",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "admin.settings.list",
          "title": "List BugFix settings",
          "description": "List all platform BugFix settings.",
          "method": "GET",
          "path": "/api/admin/settings",
          "permission": "bugfix:admin",
          "authorizationMode": "static",
          "readOnly": true,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {},
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": false,
          "agentAccess": "auto",
          "documentation": {
            "example_input": {},
            "cli_example": [
              "topolo actions --service topolo-bugfix --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --json"
            ],
            "http_example": {
              "method": "GET",
              "path": "/api/admin/settings",
              "body": null
            },
            "effects": "Reads state through GET /api/admin/settings without a declared mutation.",
            "verification": [
              "Check the structured action result and pagination or resource identifiers before using it downstream."
            ],
            "recovery": [
              "Correct identity, resource context, permission, or input validation failures, then retry the read."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "GET /api/admin/settings",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "admin.settings.update",
          "title": "Update BugFix setting",
          "description": "Update one platform BugFix setting.",
          "method": "PUT",
          "path": "/api/admin/settings/{key}",
          "permission": "bugfix:admin",
          "authorizationMode": "static",
          "readOnly": false,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "key": {
                "type": "string",
                "minLength": 1
              },
              "value": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "boolean"
                  },
                  {
                    "type": "number"
                  }
                ]
              }
            },
            "required": [
              "key",
              "value"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": true,
          "agentAccess": "confirm",
          "documentation": {
            "example_input": {
              "key": "example",
              "value": "example"
            },
            "cli_example": [
              "topolo actions --service topolo-bugfix --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "PUT",
              "path": "/api/admin/settings/example",
              "body": {
                "key": "example",
                "value": "example"
              }
            },
            "effects": "May change state through PUT /api/admin/settings/{key}. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "PUT /api/admin/settings/*",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        },
        {
          "name": "admin.settings.bulk_update",
          "title": "Bulk update BugFix settings",
          "description": "Update multiple platform BugFix settings atomically from one request.",
          "method": "POST",
          "path": "/api/admin/settings/bulk",
          "permission": "bugfix:admin",
          "authorizationMode": "static",
          "readOnly": false,
          "inputSchema": {
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "type": "object",
            "properties": {
              "settings": {
                "type": "object",
                "propertyNames": {
                  "type": "string"
                },
                "additionalProperties": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "boolean"
                    },
                    {
                      "type": "number"
                    }
                  ]
                }
              }
            },
            "required": [
              "settings"
            ],
            "additionalProperties": false
          },
          "target": "api",
          "outputSchema": {
            "type": "object",
            "additionalProperties": true
          },
          "destructive": false,
          "requiresConfirmation": true,
          "agentAccess": "confirm",
          "documentation": {
            "example_input": {
              "settings": {}
            },
            "cli_example": [
              "topolo actions --service topolo-bugfix --json",
              "topolo actions get <action-id> --json",
              "topolo actions validate <action-id> --data @payload.json --json",
              "topolo actions plan <action-id> --data @payload.json --json",
              "topolo actions call <action-id> --data @payload.json --confirm --json"
            ],
            "http_example": {
              "method": "POST",
              "path": "/api/admin/settings/bulk",
              "body": {
                "settings": {}
              }
            },
            "effects": "May change state through POST /api/admin/settings/bulk. Inspect the plan and honor the published confirmation policy.",
            "verification": [
              "Check the structured action result.",
              "Read the affected resource back through the corresponding get or list action."
            ],
            "recovery": [
              "Do not retry an ambiguous mutation until a read confirms whether it applied.",
              "Use a published inverse, update, archive, or delete action only after inspecting its contract."
            ],
            "docs_url": null,
            "resource": null,
            "next_action_ids": [],
            "rollback_action_id": null
          },
          "implementation": {
            "status": "implemented",
            "route_key": "POST /api/admin/settings/bulk",
            "evidence": "Matched to a served route extracted from canonical staging source."
          }
        }
      ],
      "action_coverage": {
        "status": "ok",
        "served_routes": 37,
        "matched_actions": 25,
        "declared_unserved_actions": [],
        "coverage_excluded_actions": [],
        "uncatalogued_routes": [],
        "ignored_routes": 12,
        "configured_exclusions": 9,
        "configuration_findings": [],
        "notes": [
          "32 manually-declared route(s)"
        ]
      },
      "runtime_contract_audit": {
        "status": "verified",
        "actions": 25,
        "contracts": 25,
        "contract_module": "topolo.action-contracts.mjs",
        "validator_sources": [
          "apps/api/src/index.js"
        ],
        "authorization_sources": [
          "apps/api/src/index.js"
        ],
        "findings": []
      }
    },
    {
      "source_path": "system-apps/TopoloBugFixRunner/topolo.app.json",
      "service_slug": "topolo-bugfix",
      "name": "topolo-bugfix-runner",
      "app_id": "app_topolo_bugfix_runner",
      "compatibility_date": null,
      "primary_target": null,
      "environments": [
        "production",
        "staging"
      ],
      "targets": [
        {
          "name": "runner",
          "kind": "none",
          "directory": "apps/runner",
          "main": null,
          "worker_name": null,
          "subdomain": null,
          "healthcheck_path": null,
          "variable_names": [],
          "secret_names": [],
          "bindings": []
        }
      ],
      "notifications": [],
      "notification_contract": {
        "source_path": null,
        "role": "internal_non_producer",
        "schema_version": null,
        "owner_app_id": null,
        "events": []
      },
      "actions": [],
      "action_coverage": {
        "status": "n/a",
        "served_routes": 0,
        "matched_actions": 0,
        "declared_unserved_actions": [],
        "coverage_excluded_actions": [],
        "uncatalogued_routes": [],
        "ignored_routes": 0,
        "configured_exclusions": 0,
        "configuration_findings": [],
        "notes": []
      },
      "runtime_contract_audit": {
        "status": "verified",
        "actions": 0,
        "contracts": 0,
        "contract_module": null,
        "validator_sources": [],
        "authorization_sources": [],
        "findings": []
      }
    }
  ],
  "mobile_contracts": [],
  "package_manifests": [],
  "deployment_configs": [],
  "source_signals": {
    "api_routes": [
      {
        "method": "ALL",
        "path": "*",
        "source_path": "system-apps/TopoloBugFix/apps/api/src/index.js"
      }
    ],
    "ui_routes": [
      {
        "path": "/fixes/${fixId}",
        "source_path": "system-apps/TopoloBugFix/apps/api/src/controllers/fixes.js"
      },
      {
        "path": "/reports/${reportId}",
        "source_path": "system-apps/TopoloBugFix/apps/api/src/controllers/fixes.js"
      },
      {
        "path": "/reports/${report.id}",
        "source_path": "system-apps/TopoloBugFix/apps/api/src/controllers/reports.js"
      },
      {
        "path": "/reports/${job.report_id}",
        "source_path": "system-apps/TopoloBugFix/apps/api/src/controllers/runner.js"
      },
      {
        "path": "/fixes/${pr.fix_id}",
        "source_path": "system-apps/TopoloBugFix/apps/api/src/controllers/webhooks.js"
      },
      {
        "path": "/reports/${job.report_id}",
        "source_path": "system-apps/TopoloBugFix/apps/api/src/services/fix-jobs.js"
      }
    ],
    "test_cases": [],
    "database_tables": []
  },
  "documentation": {
    "declared_paths": [
      "applications/bugfix",
      "internal/apps/bugfix",
      "internal/runbooks/bugfix-kill-switch",
      "internal/runbooks/bugfix-logpush"
    ],
    "present_paths": [
      "applications/bugfix",
      "internal/apps/bugfix",
      "internal/runbooks/bugfix-kill-switch",
      "internal/runbooks/bugfix-logpush"
    ],
    "missing_paths": [],
    "human_reference": "/systems/topolo-bugfix",
    "machine_reference": "/machine/systems/topolo-bugfix.json",
    "action_examples": 25,
    "action_schemas": 25
  },
  "source_findings": []
}