{
  "version": "2.0",
  "generated_at": "2026-07-16",
  "tasks": [
    {
      "task_id": "readability-baseline",
      "description": "Repository readability baseline audit introduction and ratchet",
      "files": [
        "Makefile",
        "scripts/readability_audit.py",
        "scripts/readability_baseline.json",
        "scripts/readability_read_sets.json",
        "scripts/readability_audit_test.py"
      ],
      "budget": {
        "max_total_loc": 2209,
        "reason": "no new violations allowed; only existing baseline violations persist"
      }
    },
    {
      "task_id": "edge-openai-readability",
      "description": "Edge OpenAI adapter readability (chat/Responses surface, text-tool parsing, SSE, provider tunnel, route/policy)",
      "files": [
        "apps/edge/internal/openai/chat_handler.go",
        "apps/edge/internal/openai/chat_decode.go",
        "apps/edge/internal/openai/chat_policy.go",
        "apps/edge/internal/openai/chat_completion.go",
        "apps/edge/internal/openai/chat_types.go",
        "apps/edge/internal/openai/common_types.go",
        "apps/edge/internal/openai/responses_handler.go",
        "apps/edge/internal/openai/responses_decode.go",
        "apps/edge/internal/openai/responses_completion.go",
        "apps/edge/internal/openai/responses_types.go",
        "apps/edge/internal/openai/route_resolution.go",
        "apps/edge/internal/openai/normalized_sse.go",
        "apps/edge/internal/openai/buffered_sse.go",
        "apps/edge/internal/openai/sse_writer.go",
        "apps/edge/internal/openai/provider_tunnel.go",
        "apps/edge/internal/openai/provider_model_rewrite.go",
        "apps/edge/internal/openai/provider_observation.go",
        "apps/edge/internal/openai/text_tool_parser.go",
        "apps/edge/internal/openai/text_tool_markup.go",
        "apps/edge/internal/openai/text_tool_literals.go",
        "apps/edge/internal/openai/tool_argument_normalization.go",
        "apps/edge/internal/openai/tool_command_normalization.go",
        "apps/edge/internal/openai/tool_schema.go"
      ],
      "budget": {
        "max_total_loc": 800,
        "reason": "core adapter must be refactorable to smaller units; responsibilities are split per file so a task reads only the matching subset"
      }
    },
    {
      "task_id": "edge-service-readability",
      "description": "Edge service layer readability (run dispatch and model queue, split per responsibility)",
      "files": [
        "apps/edge/internal/service/run_types.go",
        "apps/edge/internal/service/run_submit.go",
        "apps/edge/internal/service/provider_resolution.go",
        "apps/edge/internal/service/provider_pool.go",
        "apps/edge/internal/service/provider_tunnel.go",
        "apps/edge/internal/service/run_cancel.go",
        "apps/edge/internal/service/run_wire.go",
        "apps/edge/internal/service/model_queue_types.go",
        "apps/edge/internal/service/model_queue_admission.go",
        "apps/edge/internal/service/model_queue_release.go",
        "apps/edge/internal/service/model_queue_snapshot.go",
        "apps/edge/internal/service/control_command.go"
      ],
      "budget": {
        "max_total_loc": 700,
        "reason": "service dispatch logic is large; refactor into smaller command handlers"
      }
    },
    {
      "task_id": "node-core-readability",
      "description": "Node core readability (node handlers and sink, split per responsibility)",
      "files": [
        "apps/node/internal/node/node.go",
        "apps/node/internal/node/run_handler.go",
        "apps/node/internal/node/tunnel_handler.go",
        "apps/node/internal/node/cancel_handler.go",
        "apps/node/internal/node/config_refresh_handler.go",
        "apps/node/internal/node/command_handler.go",
        "apps/node/internal/node/runtime_sink.go",
        "apps/node/internal/adapters/openai_compat/openai_compat.go",
        "apps/node/internal/bootstrap/module.go"
      ],
      "budget": {
        "max_total_loc": 700,
        "reason": "node runtime core; split into focused sub-packages"
      }
    },
    {
      "task_id": "client-edges-panel-readability",
      "description": "Flutter client Edges panel readability",
      "files": [
        "apps/client/lib/widgets/edges_panel.dart"
      ],
      "budget": {
        "max_total_loc": 600,
        "reason": "edges panel builder responsibilities extracted to focused widgets"
      }
    },
    {
      "task_id": "client-nodes-panel-readability",
      "description": "Flutter client Nodes panel readability (panel composition and node/provider sections)",
      "files": [
        "apps/client/lib/widgets/nodes_panel.dart",
        "apps/client/lib/widgets/nodes_panel_sections.dart"
      ],
      "budget": {
        "max_total_loc": 600,
        "reason": "nodes panel composition and node/provider section widgets split per responsibility"
      }
    },
    {
      "task_id": "client-runtime-orchestration-readability",
      "description": "Flutter client Runtime panel orchestration readability",
      "files": [
        "apps/client/lib/widgets/runtime_panel.dart"
      ],
      "budget": {
        "max_total_loc": 600,
        "reason": "runtime panel orchestration state and command dispatch"
      }
    },
    {
      "task_id": "client-runtime-sections-readability",
      "description": "Flutter client Runtime panel section widgets readability",
      "files": [
        "apps/client/lib/widgets/runtime_panel_sections.dart"
      ],
      "budget": {
        "max_total_loc": 600,
        "reason": "runtime panel section widgets extracted from the orchestration panel"
      }
    },
    {
      "task_id": "iop-console-overview-readability",
      "description": "IOP console overview widget readability",
      "files": [
        "packages/flutter/iop_console/lib/src/iop_console_overview.dart"
      ],
      "budget": {
        "max_total_loc": 600,
        "reason": "console overview responsive sections extracted to focused builders"
      }
    },
    {
      "task_id": "packages-go-config-readability",
      "description": "Go config package readability",
      "files": [
        "packages/go/config/config.go"
      ],
      "budget": {
        "max_total_loc": 700,
        "reason": "config struct defaults and parsing are mixed; split into struct defs and loaders"
      }
    },
    {
      "task_id": "edge-transport-readability",
      "description": "Edge transport layer readability",
      "files": [
        "apps/edge/internal/transport/server.go",
        "apps/edge/internal/transport/integration_test.go"
      ],
      "budget": {
        "max_total_loc": 600,
        "reason": "transport server has mixed concerns"
      }
    },
    {
      "task_id": "edge-config-refresh-readability",
      "description": "Edge config refresh readability",
      "files": [
        "apps/edge/internal/configrefresh/classify.go",
        "apps/edge/internal/edgecmd/node_register.go",
        "apps/edge/internal/edgecmd/smoke_openai.go"
      ],
      "budget": {
        "max_total_loc": 500,
        "reason": "config classification and edge commands are monolithic"
      }
    },
    {
      "task_id": "node-adapters-readability",
      "description": "Node adapter readability",
      "files": [
        "apps/node/internal/adapters/cli/persistent.go",
        "apps/node/internal/adapters/cli/opencode_sse.go",
        "apps/node/internal/adapters/ollama/ollama.go",
        "apps/node/internal/adapters/vllm/vllm.go",
        "apps/node/internal/adapters/cli/status/antigravity.go",
        "apps/node/internal/adapters/cli/status/claude.go",
        "apps/node/internal/adapters/cli/status/codex.go"
      ],
      "budget": {
        "max_total_loc": 500,
        "reason": "CLI adapters and status reporters have large functions"
      }
    },
    {
      "task_id": "openai-chat-stream-change",
      "description": "Mandatory project rules, focused OpenAI chat stream sources, and direct regression test",
      "files": [
        "AGENTS.md",
        "agent-ops/rules/project/rules.md",
        "agent-ops/rules/project/domain/edge/rules.md",
        "agent-ops/rules/project/domain/testing/rules.md",
        "apps/edge/internal/openai/chat_handler.go",
        "apps/edge/internal/openai/normalized_sse.go",
        "apps/edge/internal/openai/chat_stream_session.go",
        "apps/edge/internal/openai/chat_stream_session_test.go"
      ],
      "budget": {
        "max_total_loc": 2000,
        "reason": "representative project change read set; shared Agent-Ops common files are excluded"
      }
    },
    {
      "task_id": "provider-pool-dispatch-change",
      "description": "Mandatory project rules, focused provider-pool dispatch sources, and direct resolution tests",
      "files": [
        "AGENTS.md",
        "agent-ops/rules/project/rules.md",
        "agent-ops/rules/project/domain/edge/rules.md",
        "agent-ops/rules/project/domain/testing/rules.md",
        "apps/edge/internal/service/provider_resolution.go",
        "apps/edge/internal/service/model_queue_admission.go",
        "apps/edge/internal/service/service_internal_test.go"
      ],
      "budget": {
        "max_total_loc": 2000,
        "reason": "representative project change read set; shared Agent-Ops common files are excluded"
      }
    },
    {
      "task_id": "node-config-refresh-change",
      "description": "Mandatory project rules, focused Node config refresh source, and direct gate refresh regression",
      "files": [
        "AGENTS.md",
        "agent-ops/rules/project/rules.md",
        "agent-ops/rules/project/domain/node/rules.md",
        "agent-ops/rules/project/domain/testing/rules.md",
        "apps/node/internal/node/config_refresh_handler.go",
        "apps/node/internal/node/gate_refresh_test.go"
      ],
      "budget": {
        "max_total_loc": 2000,
        "reason": "representative project change read set; shared Agent-Ops common files are excluded"
      }
    },
    {
      "task_id": "flutter-runtime-panel-change",
      "description": "Mandatory project rules, focused Flutter runtime panel sources, and direct widget regression",
      "files": [
        "AGENTS.md",
        "agent-ops/rules/project/rules.md",
        "agent-ops/rules/project/domain/client/rules.md",
        "agent-ops/rules/project/domain/testing/rules.md",
        "apps/client/lib/widgets/runtime_panel.dart",
        "apps/client/lib/widgets/runtime_panel_sections.dart",
        "apps/client/test/runtime_panel_test.dart"
      ],
      "budget": {
        "max_total_loc": 2000,
        "reason": "representative project change read set; shared Agent-Ops common files are excluded"
      }
    }
  ]
}
