{
  "id": "development",
  "title": "Shipyard development",
  "description": "One task of each type. Dashboard/browser are shared resources with coordinated ownership.",
  "scope": "Architecture, not live health. Evidence and status belong to inventory records.",
  "nodes": [
    {
      "id": "shipyard.api_task",
      "title": "API task",
      "kind": "workspace",
      "inventory_id": "workspace-api",
      "status": "observed",
      "evidence": [
        "setup-records",
        "live-inventory"
      ],
      "source_page": "src/content/docs/workflows/api-dashboard.md",
      "page": "/workflows/api-dashboard/"
    },
    {
      "id": "shipyard.appliance_task",
      "title": "Search-engine task",
      "kind": "workspace",
      "inventory_id": "workspace-appliance",
      "status": "observed",
      "evidence": [
        "setup-records",
        "live-inventory"
      ],
      "source_page": "src/content/docs/workflows/appliance.md",
      "page": "/workflows/appliance/"
    },
    {
      "id": "shipyard.api_task.lifecycle",
      "title": "API setup and archive",
      "kind": "service",
      "inventory_id": "service-api-lifecycle",
      "status": "observed",
      "evidence": [
        "setup-records"
      ],
      "source_page": "src/content/docs/workflows/api-dashboard.md",
      "page": "/workflows/api-dashboard/"
    },
    {
      "id": "shipyard.api_task.dashboard",
      "title": "Dashboard preview",
      "kind": "service",
      "inventory_id": "service-dashboard",
      "status": "observed",
      "evidence": [
        "setup-records",
        "live-inventory"
      ],
      "source_page": "src/content/docs/workflows/api-dashboard.md",
      "page": "/workflows/api-dashboard/"
    },
    {
      "id": "shipyard.appliance_task.lifecycle",
      "title": "Build and task lifecycle",
      "kind": "service",
      "inventory_id": "service-appliance-lifecycle",
      "status": "observed",
      "evidence": [
        "setup-records"
      ],
      "source_page": "src/content/docs/workflows/appliance.md",
      "page": "/workflows/appliance/"
    },
    {
      "id": "shipyard.seed",
      "title": "Primary local API seed",
      "kind": "resource",
      "inventory_id": "resource-api-seed",
      "status": "observed",
      "evidence": [
        "setup-records",
        "live-inventory"
      ],
      "source_page": "src/content/docs/workflows/staging-refresh.md",
      "page": "/workflows/staging-refresh/"
    },
    {
      "id": "shipyard.api_task.api",
      "title": "API process",
      "kind": "service",
      "inventory_id": "service-api",
      "status": "observed",
      "evidence": [
        "setup-records",
        "live-inventory"
      ],
      "source_page": "src/content/docs/workflows/api-dashboard.md",
      "page": "/workflows/api-dashboard/"
    },
    {
      "id": "shipyard.appliance_task.search",
      "title": "Search engine",
      "kind": "service",
      "inventory_id": "service-search",
      "status": "observed",
      "evidence": [
        "setup-records",
        "live-inventory"
      ],
      "source_page": "src/content/docs/workflows/appliance.md",
      "page": "/workflows/appliance/"
    },
    {
      "id": "shipyard.cargo",
      "title": "Shared Cargo cache",
      "kind": "resource",
      "inventory_id": "resource-cargo-cache",
      "status": "observed",
      "evidence": [
        "setup-records",
        "live-inventory"
      ],
      "source_page": "src/content/docs/workflows/appliance.md",
      "page": "/workflows/appliance/"
    },
    {
      "id": "shipyard.api_task.dependencies",
      "title": "Isolated API dependencies",
      "kind": "service",
      "inventory_id": "service-api-dependencies",
      "status": "observed",
      "evidence": [
        "setup-records",
        "live-inventory"
      ],
      "source_page": "src/content/docs/workflows/api-dashboard.md",
      "page": "/workflows/api-dashboard/"
    },
    {
      "id": "shipyard.appliance_task.dependencies",
      "title": "Separate runtime and test stacks",
      "kind": "service",
      "inventory_id": "service-search-dependencies",
      "status": "observed",
      "evidence": [
        "setup-records",
        "live-inventory"
      ],
      "source_page": "src/content/docs/workflows/appliance.md",
      "page": "/workflows/appliance/"
    }
  ],
  "edges": [
    {
      "source": "shipyard.api_task.lifecycle",
      "target": "shipyard.api_task.api",
      "label": "Start and check health",
      "relationships": [
        {
          "source": "shipyard.api_task.lifecycle",
          "target": "shipyard.api_task.api",
          "kind": "starts",
          "label": "Start and check health"
        }
      ]
    },
    {
      "source": "shipyard.api_task.lifecycle",
      "target": "shipyard.api_task.dependencies",
      "label": "Initialize isolated services",
      "relationships": [
        {
          "source": "shipyard.api_task.lifecycle",
          "target": "shipyard.api_task.dependencies",
          "kind": "starts",
          "label": "Initialize isolated services"
        }
      ]
    },
    {
      "source": "shipyard.api_task.api",
      "target": "shipyard.api_task.dependencies",
      "label": "Task-local connections",
      "relationships": [
        {
          "source": "shipyard.api_task.api",
          "target": "shipyard.api_task.dependencies",
          "kind": "depends",
          "label": "Task-local connections"
        }
      ]
    },
    {
      "source": "shipyard.api_task.dashboard",
      "target": "shipyard.api_task.api",
      "label": "HTTP proxy",
      "relationships": [
        {
          "source": "shipyard.api_task.dashboard",
          "target": "shipyard.api_task.api",
          "kind": "connects",
          "label": "HTTP proxy"
        }
      ]
    },
    {
      "source": "shipyard.appliance_task.lifecycle",
      "target": "shipyard.appliance_task.search",
      "label": "Build and replace executable",
      "relationships": [
        {
          "source": "shipyard.appliance_task.lifecycle",
          "target": "shipyard.appliance_task.search",
          "kind": "starts",
          "label": "Build and replace executable"
        }
      ]
    },
    {
      "source": "shipyard.appliance_task.lifecycle",
      "target": "shipyard.appliance_task.dependencies",
      "label": "Manage separate stacks",
      "relationships": [
        {
          "source": "shipyard.appliance_task.lifecycle",
          "target": "shipyard.appliance_task.dependencies",
          "kind": "starts",
          "label": "Manage separate stacks"
        }
      ]
    },
    {
      "source": "shipyard.appliance_task.search",
      "target": "shipyard.appliance_task.dependencies",
      "label": "Task-local connections",
      "relationships": [
        {
          "source": "shipyard.appliance_task.search",
          "target": "shipyard.appliance_task.dependencies",
          "kind": "depends",
          "label": "Task-local connections"
        }
      ]
    },
    {
      "source": "shipyard.api_task.lifecycle",
      "target": "shipyard.seed",
      "label": "Explicit first initialization",
      "relationships": [
        {
          "source": "shipyard.api_task.lifecycle",
          "target": "shipyard.seed",
          "kind": "reads",
          "label": "Explicit first initialization"
        }
      ]
    },
    {
      "source": "shipyard.appliance_task.lifecycle",
      "target": "shipyard.cargo",
      "label": "Serialized build cache",
      "relationships": [
        {
          "source": "shipyard.appliance_task.lifecycle",
          "target": "shipyard.cargo",
          "kind": "depends",
          "label": "Serialized build cache"
        }
      ]
    }
  ]
}
