{"database": "pub10", "table": "documents", "rows": [["brief: archiver.md", "# Archiver brief (pub-10 main run, v1, 21.10.2026)\n\nYou archive the first-party documentation of business applications for a research dataset. You do **not** extract features.\n\nWorking directory: `/home/bat/dev/phd`. For each application id you are given:\n\n1. Read `data/business-apps/run/<id>/app.json`. `key` is a GitHub `owner/repo` (frame F1) or a product name from the G2 directory (frame F2; names may be truncated with \"...\").\n2. Find the application's **first-party** sources, in this priority order (extraction-protocol.md \u00a71):\n   - **Official documentation**: user and administrator docs. Read the table of contents to the second level and choose the pages it links for each top-level section that describes what users can do.\n   - **Advertised feature page(s)**: the product or features page, used where documentation does not describe a capability or does not exist.\n   - For F1, the repository README counts as first-party documentation: archive it as `https://raw.githubusercontent.com/<owner>/<repo>/HEAD/README.md`. If the repo has a docs site or a `docs/` folder of user documentation, archive its main user-facing pages (raw markdown URLs work well).\n   - **Thin page rule:** if what you have would give fewer than ~20 concrete capabilities, or only names modules (\"Payroll, Benefits\u2026\"), add each module's own page, one level down, at most 10 extra pages.\n   - **Never archive:** testimonials, case studies, customer stories, blog posts, roadmaps, changelogs/release notes, pricing pages, competitor comparisons, third-party reviews, forums, marketplace/app-store listings, API reference pages (unless they are the only docs).\n   - Aim for roughly 3\u201312 pages and at most ~25,000 words per application; documentation over marketing.\n3. Archive with **one command per batch of URLs**:\n   `bun tools/business-apps/fetch-source.ts <id> <url1> <url2> \u2026`\n   It prints status and word count per URL. You may call it again for the same id to add pages (it appends).\n4. If a page returns an error or fewer than ~150 words (JavaScript-rendered or blocked), try first-party alternatives: a docs or help-centre subdomain, a static features page, raw markdown in the repository. Do not use third-party copies or caches.\n5. Update `app.json` by adding these fields (keep the existing ones):\n   `\"name\"` (product name), `\"vendorUrl\"`, `\"archiveStatus\"` (`\"ok\"`, `\"thin\"` if under ~1,000 useful words, or `\"failed\"`), `\"archiveNote\"` (one sentence: what was archived and anything that failed).\n   Use `jq` or a small script; keep valid JSON.\n6. If the application turns out not to be identifiable (e.g. an ambiguous truncated name), choose the product G2 lists under that name in the given PCF category and say so in `archiveNote`.\n\nUse WebSearch/WebFetch only to **locate** pages; only `fetch-source.ts` archives them.\n\nFinal answer: one line per application, `<id> <status> <pages> <words> <name>`. Nothing else.\n"]], "columns": ["name", "text"], "primary_keys": ["name"], "primary_key_values": ["brief: archiver.md"], "units": {}, "query_ms": 17.82091334462166, "source": "Ahmed ElBatanony, Innopolis University", "license": "Not yet licensed \u2014 internal review only"}