{
  "version": 3,
  "created_at": "2026-07-12T17:03:24.347Z",
  "task_summary": "Build a standalone browsable archive site of project chats + artifacts for Netlify",
  "agents": [],
  "phases": [
    {
      "name": "Plan",
      "delegations": [
        {
          "steps": [
            {
              "title": "Map chats to artifacts and gather metadata",
              "description": "Query all root frames (chat sessions) with task_summary, status, timestamps, token/cost, and output_data. For each artifact, resolve which frame produced it (root_frame_id/frame_id). Build a chat→artifacts mapping and an overall artifact index with content_type, size, and version_id. Write intermediate JSON (chats.json, artifacts_index.json) to workspace. Produce a coverage table so nothing is orphaned."
            },
            {
              "title": "Generate readable per-chat summaries",
              "description": "For each substantive chat, generate a concise summary (goal, what was done, key outcomes, notable artifacts) using host.llm fed with the chat's task_summary, output_data, and the filenames/types of artifacts it produced. Keep summaries factual and grounded in the provided metadata — no invented results. Save summaries.json."
            },
            {
              "title": "Curate artifact inclusion + provenance manifest",
              "description": "Classify artifacts into 'bundle' (web-friendly: png, csv, md, json, pdf, docx, pptx, py, fasta, pdb, html, txt — under a per-file cap) vs 'link-only' (large .h5ad, big videos, gzip bundles). For link-only files, capture provenance (filename, size, source GEO/public accession where derivable from lineage/summaries, how produced). Emit manifest.csv and manifest.json listing every artifact with status (bundled vs external) and provenance notes."
            },
            {
              "title": "Copy bundled artifacts into site asset tree",
              "description": "Copy the curated web-friendly artifacts into archive_site/assets/ organized by chat (assets/<chat-slug>/<filename>), deduping identical files. Report total bundled size to confirm it stays within Netlify-practical limits (target < 250 MB)."
            },
            {
              "title": "Build the static archive site",
              "description": "Generate a self-contained static site (no server/build step needed to view): index.html (project overview, chat list with summaries, search/filter by keyword and type), one summary page per chat linking its artifacts, an all-artifacts browser page (sortable table with type/size/download), and an 'external data' page listing large files with provenance. Include a clean stylesheet, PDB files rendered via a lightweight embedded viewer or download link, and a downloadable manifest.csv. Pure HTML/CSS/JS — deployable by dragging the folder to Netlify."
            },
            {
              "title": "Package, validate, and save",
              "description": "Verify all internal links resolve and every bundled asset exists. Zip the site as project_archive_site.zip and also save the unzipped archive_site/ tree. Save manifest.csv, chats+summaries JSON, and a README.md with Netlify deployment instructions (drag-drop and CLI). Report final size and file counts."
            }
          ]
        }
      ],
      "id": "phase-0"
    }
  ],
  "feasibility": {
    "rationale": "All data is available via host.frames/host.artifacts. The project has 33 substantive chat sessions and 779 artifacts (2.6 GB, but 2.1 GB is two .h5ad files handled by provenance-listing). The web-friendly subset is ~247 MB, deployable on Netlify. Summaries generated via host.llm from each chat's task_summary + output_data + produced artifacts.",
    "confidence": "high"
  }
}