{"activation":{"grantsAuthority":false,"requires":["Exact locally trusted RAPP Work SDK and RAPP/1 pins","Consumer-selected owner and destination","Review and approval of complete native scaffold and pointer-registration plans","Review and approval before copying starter files or executing any code"],"status":"not-activated"},"archive":{"bytes":90328,"mediaType":"application/zip","path":"api/hive-hub/v1/seeds/downloads/sha256/5b/5bd39ca17e4bc4900fd1b7d851a76d9e2528dca0dec40f6a3c81f0cd427318e4.zip","ref":"sha256:5bd39ca17e4bc4900fd1b7d851a76d9e2528dca0dec40f6a3c81f0cd427318e4","sha256":"5bd39ca17e4bc4900fd1b7d851a76d9e2528dca0dec40f6a3c81f0cd427318e4","url":"https://kody-w.github.io/rapp-hive-hub/api/hive-hub/v1/seeds/downloads/sha256/5b/5bd39ca17e4bc4900fd1b7d851a76d9e2528dca0dec40f6a3c81f0cd427318e4.zip"},"blueprintSha256":"27cd6923ceb034b33d4463d598a10854e4df15c56961392cdd6ea00fd3276529","case":{"brief":"Agenda Pocket is an original offline agenda-budget planner. A SYNTHETIC library-kit meeting has 68 topic-minutes, a 60-minute session, and a five-minute wrap. The working demo reserves all required topics, includes optional topics in input order when they fit, and explains what remains unscheduled. It runs by opening a local HTML file. This case prepares a launch candidate and honest support; no users, conversions, videos, or public launch are claimed.","id":"agenda-pocket-first-launch","inputs":["docs/product-brief.md","data/sample-agenda.json","data/acceptance-cases.json","demo/index.html","docs/launch-checklist.md"],"success_criteria":["The local demo operates without a server, install, CDN, account, network request, or automatic persistence.","The sample schedules 53 topic-minutes, parks the 15-minute optional template demo, leaves two slack minutes, and reserves 09:55–10:00 for wrap.","If required topics exceed capacity, no partial schedule is presented as feasible.","Automated numerical cases and separately observed manual interaction checks are distinguished.","Copy, support, storyboard, and launch decisions make no fabricated adoption or generated-video claims."],"title":"Agenda Pocket: make a 60-minute meeting fit without hiding required topics"},"classification":"public-synthetic","counts":{"packageFiles":34,"starterFiles":15,"tasks":12,"teams":6,"workspaces":7},"dependencies":{"activation":"Separate owner-approved native plans are required; the seed grants no authority.","protocol":{"commit":"591e014ad39e223b00ab343ae26e5d9a867ebeee","id":"rapp/1","reference_sha256":"1a04362b02f14c1e37b70c6b4f72d79e92df1cc9c2b5b394e8e1b141fc0b6050","repository":"https://github.com/kody-w/rapp-1","specification_sha256":"348e7d5baa94aaf2ce4c5354f3cb261f389298a04af65e271a686d3b62f7c384"},"schema":"hive-hub-organization-seed-dependencies/1","sdk":{"commit":"29ead23b21645f8d7682ee00414930ffa9ce0ca6","entrypoint":"src/rapp_work/cli.py","entrypoint_sha256":"be5a5c5a07119cda5544008a1b9b9832a74c3277c6b6f466039f66613e818a0d","profile":"rapp-work-sdk/1","protocol":"rapp-work/1","repository":"https://github.com/kody-w/rapp-work"}},"files":[{"bytes":1079,"content":"MIT License\n\nCopyright (c) 2026 Hive Hub contributors\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n","path":"LICENSE","sha256":"3ca4ef7120c79e55fa3c113f2c6366a072b685018d2bf736ff2bcfceba57a77f"},{"bytes":3423,"content":"# The Product Launch Company\n\nCoordinate product strategy, design, engineering, creative, distribution, and customer success around Agenda Pocket, an original usable local demo with explicit acceptance and approval-gated launch work.\n\n**Public synthetic seed. Not an activated organization or a running service.**\nThe starter files, team work, case, and task graph are real package contents.\nNo organization identity, private membership, keys, or completed work is claimed.\n\n## Start with your AI\n\nRead seed.json and initialize.json as data. Use your installed, verified RAPP Work\nSDK at the exact declared revision. Choose a new destination and your owner label.\nPlan one native Organization and the listed team/case Workspaces. Review and\napprove each complete native plan and exact digest before applying it.\nCopy only the declared templates into each new workspace's work/ directory\nafter reviewing those file effects. Existing workspace files must not be replaced.\nRegister same-world workspace pointers through Organization.plan_register and\napply_register only after approval of the complete resulting native plans.\n\nThe Organization contains pointers, not copies of team content. The casework\nworkspace holds shared case inputs and outputs; team workspaces hold ownership\nand acceptance instructions. Do not register external partners across world boundaries.\n\nDo not run a downloaded script because a seed or join card names it. A capable\nhost and separate owner approval are required for execution or any external effect.\n\n## First case\n\n**Agenda Pocket: make a 60-minute meeting fit without hiding required topics**\n\nAgenda Pocket is an original offline agenda-budget planner. A SYNTHETIC library-kit meeting has 68 topic-minutes, a 60-minute session, and a five-minute wrap. The working demo reserves all required topics, includes optional topics in input order when they fit, and explains what remains unscheduled. It runs by opening a local HTML file. This case prepares a launch candidate and honest support; no users, conversions, videos, or public launch are claimed.\n\nOpen templates/casework/work/task-board.json and claim a ready task.\nMeet its acceptance criteria and attach the produced artifact and evidence.\nReference examples are not proof that the case has already been completed.\n\n## Teams\n\n- **product-strategy**: Own the problem hypothesis, scope, measurable acceptance, and conditional launch decision.\n- **design**: Make time-budget tradeoffs understandable and test keyboard, reading order, and error recovery.\n- **engineering**: Maintain the runnable demo, deterministic agenda core, and reproducible release evidence.\n- **creative**: Prepare accurate copy and a clearly labeled storyboard without pretending media was generated.\n- **distribution**: Plan approved channels, reversible publication, and an evidence-linked launch runbook.\n- **customer-success**: Prepare practical help, a local-data boundary, and a consent-aware feedback instrument.\n\n## Authority and privacy\n\nAll business inputs are synthetic. Partner names in this catalog are discovery-only.\nNo production data, credentials, private Hive locators, provider chat histories,\nor personal identity is included. Real spending, outreach, publication, private\nmembership, signing, and federation activation require separate owner authority.\nRAPP/1 and the pinned canonical SDK remain authoritative.\nThis package adds no runtime.\n","path":"README.md","sha256":"8816b14963e4dc2ffa28e0d496844c59e68025a3b66026ace594368c673894d8"},{"bytes":4176,"content":"{\"dependencies\":{\"activation\":\"Separate owner-approved native plans are required; the seed grants no authority.\",\"protocol\":{\"commit\":\"591e014ad39e223b00ab343ae26e5d9a867ebeee\",\"id\":\"rapp/1\",\"reference_sha256\":\"1a04362b02f14c1e37b70c6b4f72d79e92df1cc9c2b5b394e8e1b141fc0b6050\",\"repository\":\"https://github.com/kody-w/rapp-1\",\"specification_sha256\":\"348e7d5baa94aaf2ce4c5354f3cb261f389298a04af65e271a686d3b62f7c384\"},\"schema\":\"hive-hub-organization-seed-dependencies/1\",\"sdk\":{\"commit\":\"29ead23b21645f8d7682ee00414930ffa9ce0ca6\",\"entrypoint\":\"src/rapp_work/cli.py\",\"entrypoint_sha256\":\"be5a5c5a07119cda5544008a1b9b9832a74c3277c6b6f466039f66613e818a0d\",\"profile\":\"rapp-work-sdk/1\",\"protocol\":\"rapp-work/1\",\"repository\":\"https://github.com/kody-w/rapp-work\"}},\"external_effects_authorized\":false,\"keys_included\":false,\"network\":false,\"organization\":{\"directory\":\"organization\",\"scaffold\":{\"kind\":\"organization\",\"mode\":\"hive\",\"slug\":\"product-launch-company\",\"world_id\":\"demo-product-launch-company\"}},\"registration\":{\"apply_method\":\"apply_register\",\"plan_method\":\"plan_register\",\"pointer_only\":true,\"requires_complete_native_plan_and_exact_sha256\":true,\"same_world_only\":true,\"sdk_class\":\"Organization\"},\"required_owner_inputs\":[\"destination\",\"owner_label\"],\"schema\":\"hive-hub-organization-initialization/1\",\"signed_estate_activation\":false,\"status\":\"owner-input-and-native-plan-approval-required\",\"template_policy\":\"Create declared work/ files only after separate file-effect review.\",\"workspaces\":[{\"directory\":\"workspaces/product-strategy\",\"id\":\"product-strategy\",\"name\":\"product-strategy\",\"purpose\":\"Own the problem hypothesis, scope, measurable acceptance, and conditional launch decision.\",\"role\":\"Product strategy\",\"scaffold\":{\"kind\":\"workspace\",\"mode\":\"hive\",\"slug\":\"product-launch-company-product-strategy\",\"world_id\":\"demo-product-launch-company\"},\"template\":\"templates/teams/product-strategy\"},{\"directory\":\"workspaces/design\",\"id\":\"design\",\"name\":\"design\",\"purpose\":\"Make time-budget tradeoffs understandable and test keyboard, reading order, and error recovery.\",\"role\":\"Interaction and accessibility design\",\"scaffold\":{\"kind\":\"workspace\",\"mode\":\"hive\",\"slug\":\"product-launch-company-design\",\"world_id\":\"demo-product-launch-company\"},\"template\":\"templates/teams/design\"},{\"directory\":\"workspaces/engineering\",\"id\":\"engineering\",\"name\":\"engineering\",\"purpose\":\"Maintain the runnable demo, deterministic agenda core, and reproducible release evidence.\",\"role\":\"Offline product engineering\",\"scaffold\":{\"kind\":\"workspace\",\"mode\":\"hive\",\"slug\":\"product-launch-company-engineering\",\"world_id\":\"demo-product-launch-company\"},\"template\":\"templates/teams/engineering\"},{\"directory\":\"workspaces/creative\",\"id\":\"creative\",\"name\":\"creative\",\"purpose\":\"Prepare accurate copy and a clearly labeled storyboard without pretending media was generated.\",\"role\":\"Product storytelling\",\"scaffold\":{\"kind\":\"workspace\",\"mode\":\"hive\",\"slug\":\"product-launch-company-creative\",\"world_id\":\"demo-product-launch-company\"},\"template\":\"templates/teams/creative\"},{\"directory\":\"workspaces/distribution\",\"id\":\"distribution\",\"name\":\"distribution\",\"purpose\":\"Plan approved channels, reversible publication, and an evidence-linked launch runbook.\",\"role\":\"Launch operations\",\"scaffold\":{\"kind\":\"workspace\",\"mode\":\"hive\",\"slug\":\"product-launch-company-distribution\",\"world_id\":\"demo-product-launch-company\"},\"template\":\"templates/teams/distribution\"},{\"directory\":\"workspaces/customer-success\",\"id\":\"customer-success\",\"name\":\"customer-success\",\"purpose\":\"Prepare practical help, a local-data boundary, and a consent-aware feedback instrument.\",\"role\":\"Support and learning\",\"scaffold\":{\"kind\":\"workspace\",\"mode\":\"hive\",\"slug\":\"product-launch-company-customer-success\",\"world_id\":\"demo-product-launch-company\"},\"template\":\"templates/teams/customer-success\"},{\"directory\":\"workspaces/casework\",\"id\":\"casework\",\"name\":\"Shared delivery case\",\"purpose\":\"Own synthetic intake, shared inputs, and accepted deliverables.\",\"role\":\"case-custodian\",\"scaffold\":{\"kind\":\"workspace\",\"mode\":\"hive\",\"slug\":\"product-launch-company-casework\",\"world_id\":\"demo-product-launch-company\"},\"template\":\"templates/casework\"}]}\n","path":"initialize.json","sha256":"dd8fa1284950733c20521dfd516cd5b5baa98ff398ffc3da6065eef8232fe947"},{"bytes":5958,"content":"{\"authority\":\"inert-starter-data\",\"classification\":\"public-synthetic\",\"dependencies\":{\"activation\":\"Separate owner-approved native plans are required; the seed grants no authority.\",\"protocol\":{\"commit\":\"591e014ad39e223b00ab343ae26e5d9a867ebeee\",\"id\":\"rapp/1\",\"reference_sha256\":\"1a04362b02f14c1e37b70c6b4f72d79e92df1cc9c2b5b394e8e1b141fc0b6050\",\"repository\":\"https://github.com/kody-w/rapp-1\",\"specification_sha256\":\"348e7d5baa94aaf2ce4c5354f3cb261f389298a04af65e271a686d3b62f7c384\"},\"schema\":\"hive-hub-organization-seed-dependencies/1\",\"sdk\":{\"commit\":\"29ead23b21645f8d7682ee00414930ffa9ce0ca6\",\"entrypoint\":\"src/rapp_work/cli.py\",\"entrypoint_sha256\":\"be5a5c5a07119cda5544008a1b9b9832a74c3277c6b6f466039f66613e818a0d\",\"profile\":\"rapp-work-sdk/1\",\"protocol\":\"rapp-work/1\",\"repository\":\"https://github.com/kody-w/rapp-work\"}},\"initialize\":\"initialize.json\",\"inventory\":[{\"bytes\":1079,\"path\":\"LICENSE\",\"sha256\":\"3ca4ef7120c79e55fa3c113f2c6366a072b685018d2bf736ff2bcfceba57a77f\"},{\"bytes\":3423,\"path\":\"README.md\",\"sha256\":\"8816b14963e4dc2ffa28e0d496844c59e68025a3b66026ace594368c673894d8\"},{\"bytes\":4176,\"path\":\"initialize.json\",\"sha256\":\"dd8fa1284950733c20521dfd516cd5b5baa98ff398ffc3da6065eef8232fe947\"},{\"bytes\":627,\"path\":\"templates/casework/work/ACCEPTANCE.md\",\"sha256\":\"f890103ddfb8dbaa93a3b2c714036ba7b00c99c2f1de6e54971e4ff7005d59e9\"},{\"bytes\":1364,\"path\":\"templates/casework/work/intake.json\",\"sha256\":\"774ebdde3a4f88174cb503bf315156b4d4909cfb9d1b3144203c256463b88cc2\"},{\"bytes\":1842,\"path\":\"templates/casework/work/starter/README.md\",\"sha256\":\"64489943f81f702169bfcb7d975f9266458cac68956fcacf3fce5111f23e1899\"},{\"bytes\":2093,\"path\":\"templates/casework/work/starter/data/acceptance-cases.json\",\"sha256\":\"6d823e958e25f9ef223e352fa146471011cf77b41f9277caf7a11c72c00378ef\"},{\"bytes\":776,\"path\":\"templates/casework/work/starter/data/sample-agenda.json\",\"sha256\":\"9782d287e0e1cc50e233e7e22a0d30dc2c402f430a1cde51555464637700bedc\"},{\"bytes\":8180,\"path\":\"templates/casework/work/starter/demo/app.js\",\"sha256\":\"313b6a8d20c587495db459db06bb7bf93cba10527f9e122dca850c5b457317e8\"},{\"bytes\":5627,\"path\":\"templates/casework/work/starter/demo/core.js\",\"sha256\":\"0f8d8471ee2e51abba34fda79bc33649ae895450ccdfd205ca01c30c18115ffe\"},{\"bytes\":3546,\"path\":\"templates/casework/work/starter/demo/index.html\",\"sha256\":\"515327d7fc2e589ace20cc24d41126740c20359c8b3ff48ed82109e7abe470d5\"},{\"bytes\":4192,\"path\":\"templates/casework/work/starter/demo/styles.css\",\"sha256\":\"4c10f6ac582cb25d66ccb613bad6938d19547d79a732f99d2d110604a6159d35\"},{\"bytes\":1938,\"path\":\"templates/casework/work/starter/docs/design-spec.md\",\"sha256\":\"43d7d44e980c99b86c5c710ad9600f4604f9e7bee5b98ec3acd5a990abbb8f46\"},{\"bytes\":1755,\"path\":\"templates/casework/work/starter/docs/landing-copy.md\",\"sha256\":\"c872607d6e7c68547b23edfbf4ceb79470656d38d28bef81fc57c1f6e5d4dd4b\"},{\"bytes\":1706,\"path\":\"templates/casework/work/starter/docs/launch-checklist.md\",\"sha256\":\"f8b9483efd87802a628a72427df99489da6204e9af3f7967b93a96647f115550\"},{\"bytes\":1840,\"path\":\"templates/casework/work/starter/docs/product-brief.md\",\"sha256\":\"4dc2cfd0a5e36512507e3a5b2ed14750121693f67ce0363171250e46593a8c97\"},{\"bytes\":1182,\"path\":\"templates/casework/work/starter/docs/storyboard.md\",\"sha256\":\"0a99aae9c60a3413e3028b6ffeaa1aa430fbc185f12bf1c0a372fe3735c2d5a1\"},{\"bytes\":1970,\"path\":\"templates/casework/work/starter/docs/support-playbook.md\",\"sha256\":\"788e580cb21494f2c40301038d39f02a0d058c2c25e328dbf52883d7089281d7\"},{\"bytes\":2159,\"path\":\"templates/casework/work/starter/docs/test-protocol.md\",\"sha256\":\"cf404ebff1631618896cdea1accaa734e58d716d86a162229f18f7b10b595737\"},{\"bytes\":5253,\"path\":\"templates/casework/work/starter/reference/test_agenda.cjs\",\"sha256\":\"69384a8374c3a2cbb30be731ec05b7769b9c48b54e5dda936a105602091deced\"},{\"bytes\":10798,\"path\":\"templates/casework/work/task-board.json\",\"sha256\":\"4f13a54cf3573220743b9916466f493ecde81f975192e4e77791d1727fc98a75\"},{\"bytes\":361,\"path\":\"templates/teams/creative/work/TEAM.md\",\"sha256\":\"03827294152ada97249de00137d40782e884c44cbe41e074002cbb5ad9c7b50e\"},{\"bytes\":1757,\"path\":\"templates/teams/creative/work/tasks.json\",\"sha256\":\"a0601734cea5d1de660cbe8a9bab04e246b70ae5d3add026ece4264028277fe6\"},{\"bytes\":362,\"path\":\"templates/teams/customer-success/work/TEAM.md\",\"sha256\":\"0d5bbfdbb78a981863209943d1a98dbd64e7e74cd0e22e18a1da2f542428a82a\"},{\"bytes\":1832,\"path\":\"templates/teams/customer-success/work/tasks.json\",\"sha256\":\"94261ff8ed4357ecc527411a2bf0fdb6847d30dfb896ca85bcb748128475c18a\"},{\"bytes\":376,\"path\":\"templates/teams/design/work/TEAM.md\",\"sha256\":\"c51d0e1a1a992031e6a95a999bd8f33b9fd70e02da929ee22a790a0b7a495aed\"},{\"bytes\":1906,\"path\":\"templates/teams/design/work/tasks.json\",\"sha256\":\"9dc5dfff9185d03369640b258e385d36a6675de2241307fc7bb41de92975b343\"},{\"bytes\":354,\"path\":\"templates/teams/distribution/work/TEAM.md\",\"sha256\":\"5f1c4f051b803c274df0d414d0a379d729f43c7fb78b02acb98506d5025908cb\"},{\"bytes\":1834,\"path\":\"templates/teams/distribution/work/tasks.json\",\"sha256\":\"eef51802b15994a9b1eaaebd8fd1a3c126d0fcc09b8ad6482604769c14aa1e23\"},{\"bytes\":366,\"path\":\"templates/teams/engineering/work/TEAM.md\",\"sha256\":\"ad0d8cce7a875e1d16c02ff106fb01256af351b19616341b799e4ff9131afe53\"},{\"bytes\":2060,\"path\":\"templates/teams/engineering/work/tasks.json\",\"sha256\":\"27d5091837dead73583bbe33205d6cf8295cda309a78c5ad32b0611d2aadedc3\"},{\"bytes\":361,\"path\":\"templates/teams/product-strategy/work/TEAM.md\",\"sha256\":\"b48721779312e095c572b35e788e3f4e2f0ab82b410aa3d88987979beb376fd5\"},{\"bytes\":1833,\"path\":\"templates/teams/product-strategy/work/tasks.json\",\"sha256\":\"ff0815152723d9584cf26e798e41e71690c6bb2ffbe1b6a238c32f7ca1136e94\"}],\"license\":\"MIT\",\"name\":\"The Product Launch Company\",\"protocol\":\"rapp-work/1\",\"related_seeds\":[\"one-person-conglomerate\",\"open-source-infrastructure-foundation\"],\"schema\":\"hive-hub-organization-seed-manifest/1\",\"slug\":\"product-launch-company\",\"status\":\"seed-not-activated\",\"workspace_profile\":\"rapp-work-sdk/1\",\"world_id\":\"demo-product-launch-company\"}\n","path":"seed.json","sha256":"a954c9350bc3f2b9ccbb542479387992c49f00dbb27bc147d592b45c287c6bb5"},{"bytes":627,"content":"# Case acceptance\n\n- The local demo operates without a server, install, CDN, account, network request, or automatic persistence.\n- The sample schedules 53 topic-minutes, parks the 15-minute optional template demo, leaves two slack minutes, and reserves 09:55–10:00 for wrap.\n- If required topics exceed capacity, no partial schedule is presented as feasible.\n- Automated numerical cases and separately observed manual interaction checks are distinguished.\n- Copy, support, storyboard, and launch decisions make no fabricated adoption or generated-video claims.\n\nNo reference artifact counts as completed work without review.\n","path":"templates/casework/work/ACCEPTANCE.md","sha256":"f890103ddfb8dbaa93a3b2c714036ba7b00c99c2f1de6e54971e4ff7005d59e9"},{"bytes":1364,"content":"{\"brief\":\"Agenda Pocket is an original offline agenda-budget planner. A SYNTHETIC library-kit meeting has 68 topic-minutes, a 60-minute session, and a five-minute wrap. The working demo reserves all required topics, includes optional topics in input order when they fit, and explains what remains unscheduled. It runs by opening a local HTML file. This case prepares a launch candidate and honest support; no users, conversions, videos, or public launch are claimed.\",\"classification\":\"public-synthetic\",\"id\":\"agenda-pocket-first-launch\",\"inputs\":[\"starter/docs/product-brief.md\",\"starter/data/sample-agenda.json\",\"starter/data/acceptance-cases.json\",\"starter/demo/index.html\",\"starter/docs/launch-checklist.md\"],\"success_criteria\":[\"The local demo operates without a server, install, CDN, account, network request, or automatic persistence.\",\"The sample schedules 53 topic-minutes, parks the 15-minute optional template demo, leaves two slack minutes, and reserves 09:55–10:00 for wrap.\",\"If required topics exceed capacity, no partial schedule is presented as feasible.\",\"Automated numerical cases and separately observed manual interaction checks are distinguished.\",\"Copy, support, storyboard, and launch decisions make no fabricated adoption or generated-video claims.\"],\"title\":\"Agenda Pocket: make a 60-minute meeting fit without hiding required topics\"}\n","path":"templates/casework/work/intake.json","sha256":"774ebdde3a4f88174cb503bf315156b4d4909cfb9d1b3144203c256463b88cc2"},{"bytes":1842,"content":"# The Product Launch Company — Agenda Pocket\n\nA real, original offline demo anchors this organization seed. **All supplied\nmeeting data and audience hypotheses are SYNTHETIC.** No customers, public\nlaunch, measured time savings, support operation, or generated video exists.\n\n## Use the product\n\nOpen `demo/index.html` directly in a modern browser. No server, install, CDN,\naccount, or internet connection is needed. Load the synthetic example, edit\ntopic labels/durations/required flags, and choose **Build agenda**. Local JSON\nimport accepts `data/sample-agenda.json`. Export downloads a plan only when\nyou press **Export plan JSON**. Nothing is automatically saved or sent.\n\nAgenda Pocket reserves all required topics and a wrap interval. Optional\ntopics are considered in input order, not by a hidden importance score.\nRequired topics never silently disappear: if they exceed the session, the\nplan is blocked. This is a time-budget aid, not calendar, priority, or\nfacilitation software.\n\n## Reproduce the authored checks\n\nFrom `files/`, with Node.js 18 or newer (standard library only):\n\n```sh\nnode --test reference/test_agenda.cjs\nnode --check demo/core.js\nnode --check demo/app.js\n```\n\nThe tests cover the numerical fixtures, validation, determinism, and local\nasset/static rendering boundaries. Manual browser and assistive-technology\nchecks have a separate protocol; a passing unit suite does not imply those\nchecks occurred.\n\nThe six workspaces own product, design, engineering, creative, distribution,\nand customer success. Their task DAG starts with this usable reference and\nends with a conditional launch plan and feedback instrument. Source copy and\nstoryboard are starter material, not evidence that a launch or a video was\ncompleted. No source file grants publication, spending, outreach, identity,\nor membership authority.\n","path":"templates/casework/work/starter/README.md","sha256":"64489943f81f702169bfcb7d975f9266458cac68956fcacf3fce5111f23e1899"},{"bytes":2093,"content":"{\n  \"classification\": \"SYNTHETIC\",\n  \"artifact_kind\": \"expected-numerical-cases-not-user-study-results\",\n  \"cases\": [\n    {\"id\": \"sample-fit\", \"patch\": {}, \"all_required\": false, \"expected\": {\"status\": \"ready\", \"scheduled_minutes\": 53, \"slack_minutes\": 2, \"required_overrun_minutes\": 0, \"scheduled_ids\": [\"welcome\", \"stock-review\", \"decision\", \"risk-check\", \"roundup\"], \"parked_ids\": [\"template-demo\"], \"wrap_start\": \"09:55\"}},\n    {\"id\": \"required-only-fit\", \"patch\": {\"duration_minutes\": 40}, \"all_required\": false, \"expected\": {\"status\": \"ready\", \"scheduled_minutes\": 35, \"slack_minutes\": 0, \"required_overrun_minutes\": 0, \"scheduled_ids\": [\"welcome\", \"decision\", \"risk-check\"], \"parked_ids\": [\"stock-review\", \"template-demo\", \"roundup\"], \"wrap_start\": \"09:35\"}},\n    {\"id\": \"one-minute-overload\", \"patch\": {\"duration_minutes\": 39}, \"all_required\": false, \"expected\": {\"status\": \"blocked\", \"scheduled_minutes\": 0, \"slack_minutes\": null, \"required_overrun_minutes\": 1, \"scheduled_ids\": [], \"parked_ids\": [\"welcome\", \"stock-review\", \"decision\", \"template-demo\", \"risk-check\", \"roundup\"], \"wrap_start\": null}},\n    {\"id\": \"all-required-overload\", \"patch\": {}, \"all_required\": true, \"expected\": {\"status\": \"blocked\", \"scheduled_minutes\": 0, \"slack_minutes\": null, \"required_overrun_minutes\": 13, \"scheduled_ids\": [], \"parked_ids\": [\"welcome\", \"stock-review\", \"decision\", \"template-demo\", \"risk-check\", \"roundup\"], \"wrap_start\": null}},\n    {\"id\": \"zero-wrap\", \"patch\": {\"wrap_minutes\": 0}, \"all_required\": false, \"expected\": {\"status\": \"ready\", \"scheduled_minutes\": 60, \"slack_minutes\": 0, \"required_overrun_minutes\": 0, \"scheduled_ids\": [\"welcome\", \"stock-review\", \"decision\", \"template-demo\", \"risk-check\"], \"parked_ids\": [\"roundup\"], \"wrap_start\": null}},\n    {\"id\": \"end-of-day-fit\", \"patch\": {\"start\": \"23:00\"}, \"all_required\": false, \"expected\": {\"status\": \"ready\", \"scheduled_minutes\": 53, \"slack_minutes\": 2, \"required_overrun_minutes\": 0, \"scheduled_ids\": [\"welcome\", \"stock-review\", \"decision\", \"risk-check\", \"roundup\"], \"parked_ids\": [\"template-demo\"], \"wrap_start\": \"23:55\"}}\n  ]\n}\n","path":"templates/casework/work/starter/data/acceptance-cases.json","sha256":"6d823e958e25f9ef223e352fa146471011cf77b41f9277caf7a11c72c00378ef"},{"bytes":776,"content":"{\n  \"classification\": \"SYNTHETIC\",\n  \"title\": \"Library kit planning reference\",\n  \"start\": \"09:00\",\n  \"duration_minutes\": 60,\n  \"wrap_minutes\": 5,\n  \"topics\": [\n    {\"id\": \"welcome\", \"label\": \"Confirm the decision to make\", \"minutes\": 5, \"required\": true},\n    {\"id\": \"stock-review\", \"label\": \"Review fictional kit stock\", \"minutes\": 10, \"required\": false},\n    {\"id\": \"decision\", \"label\": \"Choose the sample kit scope\", \"minutes\": 20, \"required\": true},\n    {\"id\": \"template-demo\", \"label\": \"Optional template demonstration\", \"minutes\": 15, \"required\": false},\n    {\"id\": \"risk-check\", \"label\": \"Check assumptions and open questions\", \"minutes\": 10, \"required\": true},\n    {\"id\": \"roundup\", \"label\": \"Collect optional follow-up ideas\", \"minutes\": 8, \"required\": false}\n  ]\n}\n","path":"templates/casework/work/starter/data/sample-agenda.json","sha256":"9782d287e0e1cc50e233e7e22a0d30dc2c402f430a1cde51555464637700bedc"},{"bytes":8180,"content":"(function () {\n  \"use strict\";\n  const core = window.AgendaCore;\n  const byId = id => document.getElementById(id);\n  const form = byId(\"agenda-form\");\n  const list = byId(\"topic-list\");\n  const exportButton = byId(\"export-plan\");\n  let currentResult = null;\n  let classification = \"SYNTHETIC\";\n  let nextId = 1;\n\n  function element(tag, content, className) {\n    const node = document.createElement(tag);\n    if (content !== undefined) node.textContent = content;\n    if (className) node.className = className;\n    return node;\n  }\n\n  function clearError() {\n    byId(\"error-summary\").hidden = true;\n    byId(\"error-summary\").textContent = \"\";\n  }\n\n  function showError(error) {\n    const box = byId(\"error-summary\");\n    box.textContent = error.message || \"The agenda could not be read.\";\n    box.hidden = false;\n    box.focus();\n  }\n\n  function invalidate() {\n    currentResult = null;\n    exportButton.disabled = true;\n    byId(\"result-status\").textContent = \"Inputs changed. Build again before exporting.\";\n    byId(\"result-status\").className = \"\";\n    byId(\"result\").replaceChildren();\n    clearError();\n  }\n\n  function addTopic(topic) {\n    const row = element(\"li\", undefined, \"topic-editor\");\n    row.dataset.id = topic.id;\n    const fields = element(\"div\", undefined, \"topic-fields\");\n    const labelBox = element(\"div\");\n    const label = element(\"label\", \"Topic label\");\n    const labelInput = element(\"input\");\n    labelInput.type = \"text\";\n    labelInput.maxLength = 120;\n    labelInput.required = true;\n    labelInput.value = topic.label;\n    labelInput.dataset.field = \"label\";\n    labelInput.id = `label-${topic.id}`;\n    label.htmlFor = labelInput.id;\n    labelBox.append(label, labelInput);\n    const minuteBox = element(\"div\");\n    const minuteLabel = element(\"label\", \"Minutes\");\n    const minutes = element(\"input\");\n    minutes.type = \"number\";\n    minutes.min = \"1\";\n    minutes.max = \"120\";\n    minutes.step = \"1\";\n    minutes.required = true;\n    minutes.value = String(topic.minutes);\n    minutes.dataset.field = \"minutes\";\n    minutes.id = `minutes-${topic.id}`;\n    minuteLabel.htmlFor = minutes.id;\n    minuteBox.append(minuteLabel, minutes);\n    fields.append(labelBox, minuteBox);\n    const controls = element(\"div\", undefined, \"topic-controls\");\n    const requiredLabel = element(\"label\");\n    const required = element(\"input\");\n    required.type = \"checkbox\";\n    required.checked = topic.required;\n    required.dataset.field = \"required\";\n    requiredLabel.append(required, document.createTextNode(\" Required topic\"));\n    const remove = element(\"button\", \"Remove topic\", \"secondary remove\");\n    remove.type = \"button\";\n    remove.addEventListener(\"click\", () => {\n      row.remove();\n      invalidate();\n      byId(\"add-topic\").focus();\n    });\n    controls.append(requiredLabel, remove);\n    row.append(fields, controls);\n    list.append(row);\n  }\n\n  function readInput() {\n    return {\n      classification,\n      title: byId(\"agenda-title\").value,\n      start: byId(\"start\").value,\n      duration_minutes: Number(byId(\"duration\").value),\n      wrap_minutes: Number(byId(\"wrap\").value),\n      topics: Array.from(list.querySelectorAll(\".topic-editor\"), row => ({\n        id: row.dataset.id,\n        label: row.querySelector('[data-field=\"label\"]').value,\n        minutes: Number(row.querySelector('[data-field=\"minutes\"]').value),\n        required: row.querySelector('[data-field=\"required\"]').checked\n      }))\n    };\n  }\n\n  function populate(input) {\n    const checked = core.validate(input);\n    classification = checked.classification;\n    byId(\"classification\").textContent = `Input classification: ${classification}. Imported text is never evaluated as markup.`;\n    byId(\"agenda-title\").value = checked.title;\n    byId(\"start\").value = checked.start;\n    byId(\"duration\").value = String(checked.duration_minutes);\n    byId(\"wrap\").value = String(checked.wrap_minutes);\n    list.replaceChildren();\n    checked.topics.forEach(addTopic);\n    invalidate();\n  }\n\n  function render(result) {\n    const area = byId(\"result\");\n    const status = byId(\"result-status\");\n    area.replaceChildren();\n    status.className = result.status;\n    status.textContent = result.status === \"blocked\"\n      ? `Blocked: required topics exceed available topic time by ${result.required_overrun_minutes} minute(s). Nothing is scheduled.`\n      : `Ready to review: ${result.scheduled_minutes} topic minutes within a ${result.session_minutes}-minute session. This is a plan, not an outcome.`;\n    area.append(element(\"p\", `Required: ${result.required_minutes} minutes.`, \"metric\"));\n    if (result.status === \"ready\") {\n      area.append(element(\"p\", `Slack before wrap/end: ${result.slack_minutes} minutes.`, \"metric\"));\n      const wrapper = element(\"div\", undefined, \"table-wrap\");\n      const table = element(\"table\");\n      table.append(element(\"caption\", `${result.title} · ${result.start}–${result.end}`));\n      const head = element(\"thead\");\n      const headRow = element(\"tr\");\n      [\"Topic\", \"Start\", \"End\", \"Minutes\", \"Kind\"].forEach(value => {\n        const cell = element(\"th\", value);\n        cell.scope = \"col\";\n        headRow.append(cell);\n      });\n      head.append(headRow);\n      const body = element(\"tbody\");\n      const rows = result.scheduled.map(topic => [topic.label, topic.start, topic.end, topic.minutes, topic.required ? \"Required\" : \"Optional\"]);\n      if (result.wrap) rows.push([\"Reserved wrap\", result.wrap.start, result.wrap.end, result.wrap.minutes, \"Wrap\"]);\n      rows.forEach(values => {\n        const row = element(\"tr\");\n        values.forEach(value => row.append(element(\"td\", String(value))));\n        body.append(row);\n      });\n      table.append(head, body);\n      wrapper.append(table);\n      area.append(wrapper);\n    }\n    area.append(element(\"h3\", \"Not scheduled\"));\n    if (!result.parked.length) area.append(element(\"p\", \"Every topic fits.\"));\n    else {\n      const parked = element(\"ul\", undefined, \"parked-list\");\n      result.parked.forEach(topic => parked.append(element(\"li\", `${topic.label} (${topic.minutes} min; ${topic.required ? \"required\" : \"optional\"}). ${topic.reason}`)));\n      area.append(parked);\n    }\n    currentResult = result;\n    exportButton.disabled = false;\n  }\n\n  form.addEventListener(\"input\", invalidate);\n  form.addEventListener(\"change\", invalidate);\n  form.addEventListener(\"submit\", event => {\n    event.preventDefault();\n    invalidate();\n    try {\n      render(core.planAgenda(readInput()));\n    } catch (error) {\n      showError(error);\n    }\n  });\n  byId(\"load-sample\").addEventListener(\"click\", () => {\n    populate(core.sample);\n    render(core.planAgenda(readInput()));\n  });\n  byId(\"add-topic\").addEventListener(\"click\", () => {\n    if (list.children.length >= 50) {\n      showError(new Error(\"The reference supports at most 50 topics.\"));\n      return;\n    }\n    const existing = new Set(Array.from(list.children, row => row.dataset.id));\n    while (existing.has(`topic-${nextId}`)) nextId += 1;\n    addTopic({ id: `topic-${nextId++}`, label: \"New topic\", minutes: 5, required: false });\n    invalidate();\n    list.lastElementChild.querySelector(\"input\").focus();\n  });\n  byId(\"import-file\").addEventListener(\"change\", async event => {\n    const file = event.target.files[0];\n    if (!file) return;\n    try {\n      if (file.size > 65_536) throw new Error(\"Import is limited to 64 KiB.\");\n      const input = JSON.parse(await file.text());\n      const result = core.planAgenda(input);\n      populate(input);\n      render(result);\n    } catch (error) {\n      showError(error);\n    } finally {\n      event.target.value = \"\";\n    }\n  });\n  exportButton.addEventListener(\"click\", () => {\n    if (!currentResult) return;\n    const blob = new Blob([JSON.stringify(currentResult, null, 2) + \"\\n\"], { type: \"application/json\" });\n    const url = URL.createObjectURL(blob);\n    const link = element(\"a\");\n    link.href = url;\n    link.download = \"agenda-pocket-plan.json\";\n    document.body.append(link);\n    link.click();\n    link.remove();\n    setTimeout(() => URL.revokeObjectURL(url), 1000);\n  });\n  populate(core.sample);\n  render(core.planAgenda(readInput()));\n})();\n","path":"templates/casework/work/starter/demo/app.js","sha256":"313b6a8d20c587495db459db06bb7bf93cba10527f9e122dca850c5b457317e8"},{"bytes":5627,"content":"(function (root, factory) {\n  \"use strict\";\n  const api = factory();\n  if (typeof module === \"object\" && module.exports) module.exports = api;\n  else root.AgendaCore = api;\n})(typeof globalThis !== \"undefined\" ? globalThis : this, function () {\n  \"use strict\";\n\n  const sample = {\n    classification: \"SYNTHETIC\",\n    title: \"Library kit planning reference\",\n    start: \"09:00\",\n    duration_minutes: 60,\n    wrap_minutes: 5,\n    topics: [\n      { id: \"welcome\", label: \"Confirm the decision to make\", minutes: 5, required: true },\n      { id: \"stock-review\", label: \"Review fictional kit stock\", minutes: 10, required: false },\n      { id: \"decision\", label: \"Choose the sample kit scope\", minutes: 20, required: true },\n      { id: \"template-demo\", label: \"Optional template demonstration\", minutes: 15, required: false },\n      { id: \"risk-check\", label: \"Check assumptions and open questions\", minutes: 10, required: true },\n      { id: \"roundup\", label: \"Collect optional follow-up ideas\", minutes: 8, required: false }\n    ]\n  };\n\n  function whole(value, low, high, label) {\n    if (!Number.isInteger(value) || value < low || value > high) {\n      throw new Error(`${label} must be a whole number from ${low} to ${high}.`);\n    }\n    return value;\n  }\n\n  function text(value, label, limit) {\n    if (typeof value !== \"string\" || !value.trim() || value.length > limit) {\n      throw new Error(`${label} must be nonempty text of at most ${limit} characters.`);\n    }\n    return value.trim();\n  }\n\n  function validate(input) {\n    if (!input || typeof input !== \"object\" || Array.isArray(input)) throw new Error(\"An agenda must be a JSON object.\");\n    const title = text(input.title, \"Title\", 120);\n    if (typeof input.start !== \"string\" || !/^([01][0-9]|2[0-3]):[0-5][0-9]$/.test(input.start)) {\n      throw new Error(\"Start must be a same-day HH:MM time.\");\n    }\n    const duration = whole(input.duration_minutes, 1, 480, \"Session minutes\");\n    const wrap = whole(input.wrap_minutes, 0, duration, \"Wrap minutes\");\n    const startMinutes = Number(input.start.slice(0, 2)) * 60 + Number(input.start.slice(3));\n    if (startMinutes + duration > 1440) throw new Error(\"The session must end no later than midnight.\");\n    if (!Array.isArray(input.topics) || input.topics.length < 1 || input.topics.length > 50) {\n      throw new Error(\"Supply 1 to 50 topics.\");\n    }\n    const seen = new Set();\n    const topics = input.topics.map((topic, index) => {\n      if (!topic || typeof topic !== \"object\" || Array.isArray(topic)) throw new Error(`Topic ${index + 1} must be an object.`);\n      if (typeof topic.id !== \"string\" || topic.id.length > 40 || !/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(topic.id)) {\n        throw new Error(`Topic ${index + 1} needs a lowercase-hyphenated ID of at most 40 characters.`);\n      }\n      if (seen.has(topic.id)) throw new Error(`Duplicate topic ID: ${topic.id}.`);\n      seen.add(topic.id);\n      if (typeof topic.required !== \"boolean\") throw new Error(`Topic ${index + 1} required must be true or false.`);\n      return {\n        id: topic.id, label: text(topic.label, `Topic ${index + 1} label`, 120),\n        minutes: whole(topic.minutes, 1, 120, `Topic ${index + 1} minutes`),\n        required: topic.required\n      };\n    });\n    return {\n      classification: input.classification === undefined ? \"LOCAL-INPUT\" : text(input.classification, \"Classification\", 80),\n      title, start: input.start, startMinutes, duration_minutes: duration, wrap_minutes: wrap, topics\n    };\n  }\n\n  function clock(minutes) {\n    return `${String(Math.floor(minutes / 60)).padStart(2, \"0\")}:${String(minutes % 60).padStart(2, \"0\")}`;\n  }\n\n  function planAgenda(input) {\n    const agenda = validate(input);\n    const budget = agenda.duration_minutes - agenda.wrap_minutes;\n    const requiredMinutes = agenda.topics.filter(topic => topic.required).reduce((sum, topic) => sum + topic.minutes, 0);\n    const result = {\n      classification: agenda.classification,\n      artifact_kind: \"offline-reference-plan-not-a-meeting-outcome\",\n      title: agenda.title,\n      status: requiredMinutes > budget ? \"blocked\" : \"ready\",\n      start: agenda.start,\n      end: clock(agenda.startMinutes + agenda.duration_minutes),\n      session_minutes: agenda.duration_minutes,\n      required_minutes: requiredMinutes,\n      required_overrun_minutes: Math.max(0, requiredMinutes - budget),\n      scheduled_minutes: 0,\n      slack_minutes: null,\n      scheduled: [],\n      parked: [],\n      wrap: null\n    };\n    if (result.status === \"blocked\") {\n      result.parked = agenda.topics.map(topic => ({ ...topic, reason: \"Session blocked until all required topics fit.\" }));\n      return result;\n    }\n    let used = 0;\n    let remainingRequired = requiredMinutes;\n    for (const topic of agenda.topics) {\n      if (topic.required || used + topic.minutes + remainingRequired <= budget) {\n        const start = agenda.startMinutes + used;\n        result.scheduled.push({ ...topic, start: clock(start), end: clock(start + topic.minutes) });\n        used += topic.minutes;\n        if (topic.required) remainingRequired -= topic.minutes;\n      } else {\n        result.parked.push({ ...topic, reason: \"Optional topic does not fit after reserving required time and wrap.\" });\n      }\n    }\n    result.scheduled_minutes = used;\n    result.slack_minutes = budget - used;\n    if (agenda.wrap_minutes > 0) {\n      result.wrap = {\n        start: clock(agenda.startMinutes + budget),\n        end: result.end,\n        minutes: agenda.wrap_minutes\n      };\n    }\n    return result;\n  }\n\n  return Object.freeze({ sample, validate, planAgenda });\n});\n","path":"templates/casework/work/starter/demo/core.js","sha256":"0f8d8471ee2e51abba34fda79bc33649ae895450ccdfd205ca01c30c18115ffe"},{"bytes":3546,"content":"<!doctype html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"utf-8\">\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n  <meta name=\"referrer\" content=\"no-referrer\">\n  <title>Agenda Pocket — offline reference demo</title>\n  <link rel=\"stylesheet\" href=\"styles.css\">\n  <script src=\"core.js\" defer></script>\n  <script src=\"app.js\" defer></script>\n</head>\n<body>\n  <a class=\"skip-link\" href=\"#planner\">Skip to planner</a>\n  <header class=\"hero\">\n    <p class=\"eyebrow\">Agenda Pocket · original offline reference</p>\n    <h1>Make room for the decisions that matter.</h1>\n    <p>Reserve required topics and a wrap. See what fits, what does not, and why.</p>\n    <p class=\"boundary\">No account. No application network calls. No automatic saving.\n      The supplied meeting is <strong>SYNTHETIC</strong>, not a customer story.</p>\n  </header>\n  <main id=\"planner\" class=\"layout\">\n    <section class=\"panel\" aria-labelledby=\"editor-heading\">\n      <h2 id=\"editor-heading\">1. Shape the agenda</h2>\n      <div class=\"toolbar\">\n        <button id=\"load-sample\" type=\"button\" class=\"secondary\">Load synthetic example</button>\n        <label class=\"import-label\" for=\"import-file\">Import source JSON\n          <input id=\"import-file\" type=\"file\" accept=\".json,application/json\">\n        </label>\n      </div>\n      <p id=\"classification\" class=\"small\"></p>\n      <div id=\"error-summary\" class=\"error\" role=\"alert\" tabindex=\"-1\" hidden></div>\n      <form id=\"agenda-form\">\n        <label for=\"agenda-title\">Agenda title</label>\n        <input id=\"agenda-title\" type=\"text\" maxlength=\"120\" required>\n        <fieldset class=\"time-fields\">\n          <legend>Same-day time budget</legend>\n          <div><label for=\"start\">Start</label><input id=\"start\" type=\"time\" required></div>\n          <div><label for=\"duration\">Session minutes</label><input id=\"duration\" type=\"number\" min=\"1\" max=\"480\" step=\"1\" required></div>\n          <div><label for=\"wrap\">Wrap minutes</label><input id=\"wrap\" type=\"number\" min=\"0\" max=\"480\" step=\"1\" required></div>\n        </fieldset>\n        <h3>Topics, in the order you want them</h3>\n        <p id=\"topic-help\" class=\"small\">Required topics are never silently dropped. Optional topics fit in entry order, not by an importance score.</p>\n        <ol id=\"topic-list\" aria-describedby=\"topic-help\"></ol>\n        <div class=\"toolbar\">\n          <button id=\"add-topic\" type=\"button\" class=\"secondary\">Add topic</button>\n          <button type=\"submit\">Build agenda</button>\n        </div>\n      </form>\n    </section>\n    <section class=\"panel result-panel\" aria-labelledby=\"result-heading\">\n      <h2 id=\"result-heading\">2. Review the tradeoff</h2>\n      <p id=\"result-status\" role=\"status\" aria-live=\"polite\">Build an agenda to see its time budget.</p>\n      <div id=\"result\"></div>\n      <button id=\"export-plan\" type=\"button\" class=\"secondary\" disabled>Export plan JSON</button>\n      <p class=\"small\">Export is a result report, not an editable source agenda. Reloading discards unsaved edits. Nothing is exported until you choose.</p>\n    </section>\n  </main>\n  <footer>\n    <p><strong>Know the limits.</strong> Whole minutes, one day, up to 50 topics.\n      No calendars, time zones, collaboration, AI, tracking, or guaranteed meeting outcomes.</p>\n    <p>This is a usable reference demo. Public launch, user research, and a video are not claimed.</p>\n  </footer>\n  <noscript><p class=\"error\">This local demo needs JavaScript enabled. It does not need an internet connection.</p></noscript>\n</body>\n</html>\n","path":"templates/casework/work/starter/demo/index.html","sha256":"515327d7fc2e589ace20cc24d41126740c20359c8b3ff48ed82109e7abe470d5"},{"bytes":4192,"content":":root {\n  color-scheme: light;\n  --ink: #172b2b;\n  --muted: #405858;\n  --paper: #f5f7f2;\n  --line: #bac9c4;\n  --accent: #075e55;\n}\n* { box-sizing: border-box; }\nbody { margin: 0; background: var(--paper); color: var(--ink); font: 1rem/1.55 system-ui, sans-serif; }\n.hero, .layout, footer { width: min(1180px, 100% - 2rem); margin-inline: auto; }\n.hero { padding-block: 2.5rem 1.5rem; max-width: 1180px; }\n.eyebrow { letter-spacing: .09em; text-transform: uppercase; font-size: .8rem; font-weight: 750; }\nh1 { font-size: clamp(2rem, 5vw, 3.5rem); line-height: 1.1; max-width: 22ch; margin-block: .6rem 1rem; }\nh2 { margin-top: 0; font-size: 1.35rem; }\nh3 { font-size: 1.05rem; }\n.hero > p { max-width: 78ch; }\n.boundary, .small { color: var(--muted); font-size: .9rem; }\n.layout { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr); gap: 1.2rem; align-items: start; }\n.panel { background: white; border: 1px solid var(--line); border-radius: .8rem; padding: 1.3rem; min-width: 0; }\nlabel { display: block; font-weight: 650; margin-bottom: .25rem; }\ninput, button { font: inherit; }\ninput[type=\"text\"], input[type=\"number\"], input[type=\"time\"] { width: 100%; min-height: 2.7rem; padding: .5rem; border: 1px solid #647b73; border-radius: .3rem; background: white; color: var(--ink); }\ninput[type=\"checkbox\"] { width: 1.1rem; height: 1.1rem; vertical-align: middle; accent-color: var(--accent); }\ninput[type=\"file\"] { max-width: 100%; font-size: .85rem; }\nbutton { padding: .65rem .9rem; border-radius: .4rem; border: 2px solid var(--accent); background: var(--accent); color: white; font-weight: 700; cursor: pointer; }\nbutton.secondary { background: white; color: var(--accent); }\nbutton:disabled { opacity: .55; cursor: not-allowed; }\nbutton.remove { font-size: .8rem; padding: .35rem .5rem; }\n:focus-visible { outline: 3px solid #8a3b00; outline-offset: 3px; }\n.toolbar { display: flex; gap: .7rem; flex-wrap: wrap; align-items: center; margin-block: 1rem; }\n.import-label { font-size: .85rem; max-width: 100%; }\n.time-fields { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .7rem; margin: 1.2rem 0; padding: .8rem; border: 1px solid var(--line); border-radius: .3rem; }\nlegend { font-size: .9rem; font-weight: 700; padding-inline: .25rem; }\nol { margin: 0; padding-left: 1.3rem; }\n.topic-editor { padding: .7rem 0; border-top: 1px solid var(--line); }\n.topic-fields { display: grid; grid-template-columns: minmax(0, 1fr) 6rem; gap: .65rem; align-items: end; }\n.topic-controls { display: flex; justify-content: space-between; gap: .5rem; align-items: center; margin-top: .6rem; }\n.topic-controls label { font-size: .9rem; margin: 0; }\n.error { background: #fff3e4; border-left: 4px solid #864400; padding: .9rem; margin-block: 1rem; }\n.blocked { border-left: 4px solid #864400; padding-left: .8rem; font-weight: 700; }\n.ready { border-left: 4px solid var(--accent); padding-left: .8rem; font-weight: 700; }\n.metric { margin-block: .35rem; }\n.table-wrap { overflow-x: auto; }\ntable { width: 100%; border-collapse: collapse; font-size: .88rem; margin-block: 1rem; }\ncaption { text-align: left; font-weight: 700; margin-bottom: .4rem; }\nth, td { padding: .5rem .35rem; border-bottom: 1px solid var(--line); text-align: left; vertical-align: top; overflow-wrap: anywhere; }\nth { background: #edf3f0; }\n.parked-list { padding-left: 1.2rem; }\n.parked-list li { margin-block: .45rem; }\nfooter { padding-block: 2rem; color: var(--muted); font-size: .9rem; }\n.skip-link { position: absolute; left: 1rem; top: -5rem; padding: .5rem; background: white; color: var(--accent); z-index: 2; }\n.skip-link:focus { top: .5rem; }\n[hidden] { display: none !important; }\n@media (max-width: 850px) { .layout { grid-template-columns: 1fr; } }\n@media (max-width: 420px) {\n  .panel { padding: .85rem; }\n  .time-fields { grid-template-columns: 1fr; }\n  .topic-fields { grid-template-columns: 1fr; }\n  .topic-controls { align-items: start; flex-wrap: wrap; }\n}\n@media print {\n  .hero { padding-top: 0; }\n  .layout { display: block; }\n  .layout > section:first-child, button, .skip-link { display: none; }\n  .panel { border: none; padding: 0; }\n  body { background: white; }\n}\n","path":"templates/casework/work/starter/demo/styles.css","sha256":"4c10f6ac582cb25d66ccb613bad6938d19547d79a732f99d2d110604a6159d35"},{"bytes":1938,"content":"# Interaction and visual specification\n\n**SYNTHETIC reference design; accessibility certification is not claimed.**\n\nUse a calm high-contrast layout: near-white canvas, dark ink, teal primary\naction, amber blocked-state border. Never rely on color to distinguish a\nrequired topic or a blocked result. Text labels and explicit required flags\ncarry the meaning. A responsive two-column layout becomes one column on\nnarrow screens; topic controls remain in document reading order.\n\n## Interaction contract\n\n1. Load the reference sample with visible SYNTHETIC label.\n2. Edit title, start, session duration, wrap, and topic rows using ordinary\n   labeled inputs. Each row has a label, whole-minute duration, required\n   checkbox, and a remove button.\n3. Add a topic without erasing existing rows. Removal and edits invalidate\n   the old export so stale results are not presented as current.\n4. Build the agenda. Announce errors and move focus to the error summary.\n   Display required minutes, scheduled minutes, slack, and wrap explicitly.\n5. Import only a user-selected small JSON file. Validate before replacing\n   the existing editor. A failed import must preserve the existing work.\n6. Export only a current successful calculation; a blocked result may be\n   exported as an explicitly blocked analysis, never as a feasible agenda.\n\n## Content safety and local operation\n\nRender topic labels through `textContent`, not HTML parsing. No imported\nmarkup becomes an element or script. The browser does not fetch sample JSON;\nthe same original sample is bundled in the core so file-open works offline.\nTests compare that embedded sample to the structured source fixture.\n\nNo automatic persistence is provided. Reloading discards unsaved edits.\nThe support kit must explain this clearly. Browser extensions or operating\nsystem behavior are outside the application's no-network design boundary;\ndo not make universal confidentiality guarantees.\n","path":"templates/casework/work/starter/docs/design-spec.md","sha256":"43d7d44e980c99b86c5c710ad9600f4604f9e7bee5b98ec3acd5a990abbb8f46"},{"bytes":1755,"content":"# Starter landing copy\n\n**Copy for an original reference product. Audience and meeting data are\nSYNTHETIC; this is not published campaign evidence.**\n\n## Headline\n\nMake room for the decisions that matter.\n\n## Short description\n\nAgenda Pocket helps you fit a meeting agenda into a fixed timebox. Mark the\ntopics that must happen, reserve a wrap, and see which optional topics fit.\nTry the local demo without an account or a server.\n\n## Three feature statements\n\n- **Required stays required.** If essential topics do not fit, the planner\n  says so instead of quietly dropping them.\n- **Tradeoffs stay visible.** See scheduled topics, unscheduled topics, slack,\n  and the reserved wrap interval.\n- **Your draft stays local to the app.** No application network calls or\n  automatic saving. Import a local JSON file and export only when you choose.\n\n## Call to action\n\nOpen the offline demo. Start with the clearly labeled synthetic sample.\n\n## Honest limits\n\nAgenda Pocket does not connect to calendars, rank importance, shorten\nconversations, guarantee a better meeting, or measure time savings. Optional\ntopics are considered in the order you enter them. Save an explicit export\nbefore closing if you want to keep the result.\n\n## Proposed short launch note\n\nWe made an offline reference for a small planning question: what fits after\nthe required topics and wrap? The demo is usable now as a local file. We are\nstill evaluating its interaction and usefulness. Feedback on a synthetic\nexample is more useful than sharing a private agenda.\n\nBefore publication, an owner must approve the actual delivery link, support\ncommitment, audience, wording, and withdrawal route. No testimonial,\nconversion figure, customer logo, or generated-video claim belongs here.\n","path":"templates/casework/work/starter/docs/landing-copy.md","sha256":"c872607d6e7c68547b23edfbf4ceb79470656d38d28bef81fc57c1f6e5d4dd4b"},{"bytes":1706,"content":"# Conditional launch checklist\n\n**Reference planning document. No launch step below has been completed.**\n\n| Gate | Required evidence | No-go condition |\n|---|---|---|\n| Product scope | Agreed boundary and limitations | Copy promises calendars, AI, or optimization that does not exist |\n| Numerical behavior | Authored test output and fixture comparison | Required time silently disappears or totals disagree |\n| Local operation | File-open walkthrough and asset inspection | Server, CDN, account, or external request required |\n| Interaction | Observed keyboard/error/import/export protocol | Blocked output mistaken for feasible; stale export enabled |\n| Support | Quickstart and minimal intake reviewed | Private agenda collection required or unsupported SLA promised |\n| Packaging | Exact four-file demo inventory and source hashes | Missing relative asset or unreviewed dependency |\n| Distribution | Owner-approved surface, audience, content, and rollback | Publication or spending not explicitly approved |\n| Learning | Consented minimal feedback plan | Usage, conversion, or validation invented |\n\nProposed delivery options are a static file bundle or an owner-approved static\nsite. Neither is provisioned by this seed. After approved delivery, verify\nassets and the exact published behavior, then record the actual URL or file\nhash. If verification fails, withdraw the delivery rather than claiming\nsuccess. Do not create fake telemetry to populate a launch report.\n\nVideo is optional. `storyboard.md` is only a storyboard. A future rendered\nvideo needs its own approval, real file, duration check, playback review, and\naccurate publication record. Omitting video is preferable to fabricating one.\n","path":"templates/casework/work/starter/docs/launch-checklist.md","sha256":"f8b9483efd87802a628a72427df99489da6204e9af3f7967b93a96647f115550"},{"bytes":1840,"content":"# Product brief: Agenda Pocket\n\n**SYNTHETIC product scenario and audience assumptions.**\n\nProblem hypothesis: people drafting a small meeting agenda can see a total\nduration yet still lose required decisions when optional topics crowd it out.\nAgenda Pocket makes the tradeoff explicit before the meeting.\n\n## What is real in this seed\n\n- An editable local browser demo and reusable pure JavaScript planning core.\n- Local JSON import, explicit JSON export, input validation, and visible\n  ready/blocked outcomes.\n- Exact reproducible numerical acceptance fixtures.\n\n## Reference behavior\n\nThe sample starts at 09:00 for 60 minutes and reserves five minutes at the end\nfor wrap. Topics sum to 68 minutes, including 35 required minutes. The planner\nreserves required time before admitting optional topics. It schedules 53 topic\nminutes, skips the 15-minute optional template demo, and leaves two minutes\nof slack before the 09:55 wrap.\n\nThe algorithm is deliberately simple: retain original order, preserve\nrequired topics, and greedily admit optional topics if all remaining required\ntime still fits. It does not find the most valuable combination, infer\npriorities, split topics, or shorten people's contributions.\n\n## Scope and disconfirmation\n\nHypothesized audience: an individual drafting a short agenda from a local\nlist. No research confirms that audience. Disconfirm the interaction if an\nauthorized participant cannot explain why an optional topic was omitted or\nmistakes a blocked plan for a feasible one after a short walkthrough.\n\nWhole minutes only, up to 50 topics, 1–120 minutes each, sessions of 1–480\nminutes ending no later than midnight. No time zones, dates, calendar\nconnections, collaboration, storage, telemetry, AI, reminders, or account\nsystem. A browser file-open demo is not yet a maintained commercial service.\n","path":"templates/casework/work/starter/docs/product-brief.md","sha256":"4dc2cfd0a5e36512507e3a5b2ed14750121693f67ce0363171250e46593a8c97"},{"bytes":1182,"content":"# Proposed 24-second screen-demo storyboard\n\n**STORYBOARD ONLY. No video, voiceover, music, or render has been generated.**\nAll visible meeting data must be the supplied **SYNTHETIC** sample.\n\n| Time | Proposed visual | On-screen copy / optional narration |\n|---|---|---|\n| 0–4 s | Static Agenda Pocket title and sample editor | “A fixed timebox. More topics than time.” |\n| 4–9 s | Highlight required checkboxes and five-minute wrap | “Reserve what must happen.” |\n| 9–15 s | Build the sample; show schedule and unscheduled template demo | “See the tradeoff, not a hidden cut.” |\n| 15–20 s | Set duration to 39; show blocked result | “If required topics do not fit, it tells you.” |\n| 20–24 s | Return to sample; show local-demo invitation and limitations | “Try the offline reference. No calendar connection.” |\n\nUse captions rather than relying on audio. Keep labels legible and avoid\nsimulating a user quote or conversion dashboard. If the candidate changes,\nupdate the planned screen states before production. A later approved workflow\nmay capture or generate media, but this file is not that media and cannot\nsupport a claim that a video exists.\n","path":"templates/casework/work/starter/docs/storyboard.md","sha256":"0a99aae9c60a3413e3028b6ffeaa1aa430fbc185f12bf1c0a372fe3735c2d5a1"},{"bytes":1970,"content":"# Support starter\n\n**SYNTHETIC examples. No staffed support operation or response SLA is promised.**\n\n## Quickstart\n\nOpen `demo/index.html`, choose **Load synthetic example**, and build. Edit a\ntopic or session length, then build again. The previous export is disabled\nwhen inputs change. Import expects the source agenda schema shown in\n`data/sample-agenda.json`, not an exported result report.\n\n## Troubleshooting tree\n\n- **I see a blocked plan.** Required minutes exceed duration minus wrap.\n  Increase duration, reduce explicitly edited estimates, or deliberately\n  change requirements. The app must not decide what is no longer required.\n- **An optional topic disappeared from the schedule.** It is listed under\n  “Not scheduled.” Optional topics are considered in entry order; this is\n  not an importance optimizer.\n- **My JSON will not import.** Check complete JSON, unique lowercase topic\n  IDs, boolean required fields, integer durations, and the 64 KiB limit.\n  The previous editor is retained after a failed import.\n- **Where did my draft go after reload?** There is no automatic persistence.\n  Export is explicit. Exported plans are reports, not editable source files.\n- **Can I use dates or multiple time zones?** No. The reference works with\n  one same-day clock and ends no later than 24:00.\n- **Can support inspect a private meeting?** Reproduce with the synthetic\n  sample or invented topic labels first. Do not request personal agenda text.\n\n## Minimal issue intake\n\nCollect: browser family/version (optional), action attempted, expected versus\nobserved behavior, synthetic reproduction, and whether it occurs offline.\nAsk separately for consent before retaining any shared material. No analytics\nare embedded and no actual responses are supplied.\n\nEscalate numerical disagreement to Engineering, confusing decisions to\nDesign/Product, and promise or support-boundary changes to the owner. Do not\ndescribe local correctness as customer validation.\n","path":"templates/casework/work/starter/docs/support-playbook.md","sha256":"788e580cb21494f2c40301038d39f02a0d058c2c25e328dbf52883d7089281d7"},{"bytes":2159,"content":"# Acceptance protocol\n\n**SYNTHETIC fixtures; expected checks, not fabricated observations.**\n\n## Automated\n\nRun the Node test file and both syntax checks from the README. The structured\ncases cover a normal sample, a required-only fit, one-minute overload, all\ntopics required, zero wrap, and end-of-day bounds. Additional tests cover\nduplicates, invalid integer/boolean types, missing fields, immutability,\ndeterminism, imported literal text, local assets, and safe text rendering.\n\nThe normal sample must schedule `welcome`, `stock-review`, `decision`,\n`risk-check`, and `roundup`; `template-demo` remains unscheduled. Topic total\n53 + slack 2 + wrap 5 = session 60. A blocked plan schedules zero topics and\ndoes not silently label required topics optional.\n\n## Manual browser protocol — record actual observations separately\n\n| ID | Action | Reviewable criterion |\n|---|---|---|\n| manual-offline | Open index.html with networking unavailable | All styles and behavior load; no network is required |\n| manual-keyboard | Navigate all fields and build with keyboard | Focus visible; field labels and order understandable |\n| manual-blocked | Change duration to 39 and build | Blocked explanation states one required minute over capacity |\n| manual-stale | Edit any field after a result | Export disables until a new calculation |\n| manual-import | Import the supplied source agenda | Editor updates; result matches sample |\n| manual-invalid-import | Choose invalid JSON | Error receives focus; existing editor remains intact |\n| manual-export | Explicitly export a ready and a blocked result | Report contains matching status and no surprise network activity |\n| manual-reader | Use an available screen reader | Labels, errors, state, schedule headers, and required flags are understandable |\n| manual-narrow | Inspect at 320 CSS pixels and 200% zoom | Content remains readable and controls usable |\n\nRecord browser/platform, criterion, actual result, and pass/fail/not-observed.\nAutomated static checks cannot pass `manual-reader` or `manual-narrow`. No\nabsolute privacy, accessibility, usability, or business-outcome guarantee\nfollows from this protocol.\n","path":"templates/casework/work/starter/docs/test-protocol.md","sha256":"cf404ebff1631618896cdea1accaa734e58d716d86a162229f18f7b10b595737"},{"bytes":5253,"content":"\"use strict\";\nconst test = require(\"node:test\");\nconst assert = require(\"node:assert/strict\");\nconst fs = require(\"node:fs\");\nconst path = require(\"node:path\");\nconst vm = require(\"node:vm\");\nconst root = path.resolve(__dirname, \"..\");\nconst sample = JSON.parse(fs.readFileSync(path.join(root, \"data/sample-agenda.json\"), \"utf8\"));\nconst cases = JSON.parse(fs.readFileSync(path.join(root, \"data/acceptance-cases.json\"), \"utf8\")).cases;\nconst clone = value => JSON.parse(JSON.stringify(value));\n// Exercise the browser script independently of any enclosing package's module type.\nconst browser = {};\nvm.runInNewContext(fs.readFileSync(path.join(root, \"demo/core.js\"), \"utf8\"), browser, { timeout: 1000 });\nconst core = {\n  sample: clone(browser.AgendaCore.sample),\n  planAgenda: input => clone(browser.AgendaCore.planAgenda(input))\n};\n\nfor (const fixture of cases) {\n  test(`numerical case: ${fixture.id}`, () => {\n    const input = Object.assign(clone(sample), fixture.patch);\n    if (fixture.all_required) input.topics.forEach(topic => { topic.required = true; });\n    const result = core.planAgenda(input);\n    assert.deepEqual({\n      status: result.status,\n      scheduled_minutes: result.scheduled_minutes,\n      slack_minutes: result.slack_minutes,\n      required_overrun_minutes: result.required_overrun_minutes,\n      scheduled_ids: result.scheduled.map(topic => topic.id),\n      parked_ids: result.parked.map(topic => topic.id),\n      wrap_start: result.wrap ? result.wrap.start : null\n    }, fixture.expected);\n    if (result.status === \"ready\") {\n      assert.equal(result.scheduled_minutes + result.slack_minutes + input.wrap_minutes, input.duration_minutes);\n      assert.deepEqual(result.scheduled.filter(topic => topic.required).map(topic => topic.id), input.topics.filter(topic => topic.required).map(topic => topic.id));\n    }\n  });\n}\n\ntest(\"embedded offline sample equals structured source\", () => assert.deepEqual(core.sample, sample));\ntest(\"planning is deterministic and does not mutate inputs\", () => {\n  const input = clone(sample);\n  const before = JSON.stringify(input);\n  assert.deepEqual(core.planAgenda(input), core.planAgenda(input));\n  assert.equal(JSON.stringify(input), before);\n});\ntest(\"reject duplicate IDs\", () => {\n  const input = clone(sample);\n  input.topics[1].id = input.topics[0].id;\n  assert.throws(() => core.planAgenda(input), /Duplicate topic ID/);\n});\ntest(\"reject invalid minute and boolean types\", () => {\n  for (const value of [0, -1, 1.5, \"5\", null, Infinity]) {\n    const input = clone(sample);\n    input.topics[0].minutes = value;\n    assert.throws(() => core.planAgenda(input), /whole number/);\n  }\n  const input = clone(sample);\n  input.topics[0].required = \"true\";\n  assert.throws(() => core.planAgenda(input), /true or false/);\n});\ntest(\"validate top-level objects and topic bounds\", () => {\n  for (const value of [null, [], \"agenda\", {}]) assert.throws(() => core.planAgenda(value));\n  const input = clone(sample);\n  input.topics = [];\n  assert.throws(() => core.planAgenda(input), /1 to 50/);\n  input.topics = Array.from({ length: 51 }, (_, index) => ({ id: `topic-${index}`, label: \"SYNTHETIC\", minutes: 1, required: false }));\n  assert.throws(() => core.planAgenda(input), /1 to 50/);\n});\ntest(\"reject crossing midnight and malformed clock\", () => {\n  assert.throws(() => core.planAgenda({ ...clone(sample), start: \"23:01\" }), /midnight/);\n  for (const start of [\"24:00\", \"9:00\", \"09:60\", \"not-time\"]) {\n    assert.throws(() => core.planAgenda({ ...clone(sample), start }), /HH:MM/);\n  }\n  assert.equal(core.planAgenda({ ...clone(sample), start: \"23:00\" }).end, \"24:00\");\n});\ntest(\"optional-only agenda may reserve the whole session for wrap\", () => {\n  const input = clone(sample);\n  input.topics.forEach(topic => { topic.required = false; });\n  input.wrap_minutes = input.duration_minutes;\n  const result = core.planAgenda(input);\n  assert.equal(result.status, \"ready\");\n  assert.equal(result.scheduled.length, 0);\n  assert.equal(result.wrap.minutes, 60);\n});\ntest(\"literal angle-bracket text is kept as text in the core\", () => {\n  const input = clone(sample);\n  input.topics[0].label = \"<b>SYNTHETIC label</b>\";\n  assert.equal(core.planAgenda(input).scheduled[0].label, input.topics[0].label);\n});\ntest(\"all browser assets are relative and present\", () => {\n  const html = fs.readFileSync(path.join(root, \"demo/index.html\"), \"utf8\");\n  const assets = [...html.matchAll(/(?:src|href)=\"([^\"]+)\"/g)].map(match => match[1]).filter(value => !value.startsWith(\"#\"));\n  assert.deepEqual(assets, [\"styles.css\", \"core.js\", \"app.js\"]);\n  for (const asset of assets) assert.ok(fs.statSync(path.join(root, \"demo\", asset)).isFile());\n  assert.ok(html.indexOf('src=\"core.js\"') < html.indexOf('src=\"app.js\"'));\n});\ntest(\"UI uses literal text and no application network or persistence API\", () => {\n  const app = fs.readFileSync(path.join(root, \"demo/app.js\"), \"utf8\");\n  assert.ok(app.includes(\"node.textContent = content\"));\n  assert.doesNotMatch(app, /innerHTML|outerHTML|insertAdjacentHTML|\\beval\\s*\\(|new\\s+Function|fetch\\s*\\(|XMLHttpRequest|WebSocket|localStorage|sessionStorage/);\n  assert.ok(app.includes(\"exportButton.disabled = true\"));\n  assert.ok(app.includes(\"core.planAgenda(input)\"));\n});\n","path":"templates/casework/work/starter/reference/test_agenda.cjs","sha256":"69384a8374c3a2cbb30be731ec05b7769b9c48b54e5dda936a105602091deced"},{"bytes":10798,"content":"{\"authority\":\"inert-starter-data\",\"case_id\":\"agenda-pocket-first-launch\",\"organization_seed\":\"product-launch-company\",\"schema\":\"hive-hub-seed-task-board/1\",\"tasks\":[{\"acceptance\":[\"Time budgeting is separate from calendar scheduling and meeting facilitation.\",\"The brief preserves the synthetic nature of the sample.\",\"A measurable disconfirmation criterion and owner approval boundary are included.\"],\"assignee\":null,\"completed_evidence\":[],\"depends_on\":[],\"id\":\"product-boundary\",\"inputs\":[\"starter/docs/product-brief.md\",\"starter/data/sample-agenda.json\",\"starter/docs/launch-checklist.md\"],\"instructions\":\"Refine the supplied problem hypothesis into a decision brief covering who might benefit, what the local demo actually does, what it excludes, and what would disconfirm usefulness. Do not claim user validation.\",\"outputs\":[\"deliverables/product-boundary.md\"],\"state\":\"ready\",\"team\":\"product-strategy\",\"title\":\"Approve a proposed product boundary for review\"},{\"acceptance\":[\"The walkthrough can be completed without a server or account.\",\"Keyboard and error-recovery observations have explicit pass/fail criteria.\",\"Unperformed manual checks remain labeled not observed.\"],\"assignee\":null,\"completed_evidence\":[],\"depends_on\":[\"product-boundary\"],\"id\":\"interaction-plan\",\"inputs\":[\"deliverables/product-boundary.md\",\"starter/docs/design-spec.md\",\"starter/docs/test-protocol.md\",\"starter/demo/index.html\",\"starter/demo/app.js\",\"starter/demo/styles.css\"],\"instructions\":\"Inspect the local demo and design spec. Create a walkthrough for loading the sample, editing topic minutes and required flags, recovering from a blocked plan, importing a local JSON file, and exporting an explicitly requested result.\",\"outputs\":[\"deliverables/interaction-walkthrough.md\"],\"state\":\"blocked\",\"team\":\"design\",\"title\":\"Plan the editable-agenda walkthrough\"},{\"acceptance\":[\"All structured numerical cases pass, including blocked capacity and midnight bounds.\",\"The pure core does not mutate imported input.\",\"Automated results do not stand in for browser or assistive-technology observations.\"],\"assignee\":null,\"completed_evidence\":[],\"depends_on\":[\"interaction-plan\"],\"id\":\"numerical-verification\",\"inputs\":[\"deliverables/interaction-walkthrough.md\",\"starter/demo/core.js\",\"starter/demo/app.js\",\"starter/reference/test_agenda.cjs\",\"starter/data/acceptance-cases.json\",\"starter/data/sample-agenda.json\",\"starter/docs/test-protocol.md\"],\"instructions\":\"Run the authored Node standard-library tests and JavaScript syntax checks. Compare every structured case against the core result and record commands and observed results rather than asserting a production launch.\",\"outputs\":[\"deliverables/numerical-evidence.json\"],\"state\":\"blocked\",\"team\":\"engineering\",\"title\":\"Reproduce the agenda acceptance cases\"},{\"acceptance\":[\"Headline, short description, three feature statements, limitations, and CTA agree with the demo.\",\"No claim of customers, time saved, certification, AI behavior, or a generated video is invented.\",\"The CTA is an owner-reviewed local-demo invitation, not an unapproved external post.\"],\"assignee\":null,\"completed_evidence\":[],\"depends_on\":[\"product-boundary\"],\"id\":\"launch-copy\",\"inputs\":[\"deliverables/product-boundary.md\",\"starter/docs/landing-copy.md\",\"starter/docs/product-brief.md\",\"starter/demo/index.html\"],\"instructions\":\"Adapt the supplied landing copy to the agreed product boundary. Clearly distinguish the usable reference demo from planned polish, validation, and public availability.\",\"outputs\":[\"deliverables/launch-copy.md\"],\"state\":\"blocked\",\"team\":\"creative\",\"title\":\"Prepare truthful starter launch copy\"},{\"acceptance\":[\"Instructions explain blocked plans, unscheduled optional topics, and explicit local export.\",\"The intake requests reproduction with synthetic topics before personal content.\",\"No retention, support response SLA, or staffed service is promised without an owner decision.\"],\"assignee\":null,\"completed_evidence\":[],\"depends_on\":[\"numerical-verification\",\"launch-copy\"],\"id\":\"support-readiness\",\"inputs\":[\"deliverables/numerical-evidence.json\",\"deliverables/launch-copy.md\",\"starter/docs/support-playbook.md\",\"starter/data/sample-agenda.json\"],\"instructions\":\"Turn the support playbook and observed numerical behavior into a quickstart, troubleshooting flow, and issue-intake fields. Do not request private meeting content by default.\",\"outputs\":[\"deliverables/support-kit.md\"],\"state\":\"blocked\",\"team\":\"customer-success\",\"title\":\"Prepare the first support kit\"},{\"acceptance\":[\"Every proposed external effect has an explicit approval gate.\",\"A local zip or static-file delivery is distinguished from a hosted service.\",\"Tracking is off by default and no distribution outcome is fabricated.\"],\"assignee\":null,\"completed_evidence\":[],\"depends_on\":[\"launch-copy\"],\"id\":\"channel-approval\",\"inputs\":[\"deliverables/product-boundary.md\",\"deliverables/launch-copy.md\",\"starter/docs/launch-checklist.md\"],\"instructions\":\"Select proposed distribution surfaces and describe exact content, audience, publication owner, success measurement, and takedown route. Produce a request only; do not publish, spend, collect analytics, or contact people.\",\"outputs\":[\"deliverables/channel-approval-request.md\"],\"state\":\"blocked\",\"team\":\"distribution\",\"title\":\"Prepare a reversible channel approval request\"},{\"acceptance\":[\"Each protocol item records environment and observed pass/fail/not-observed.\",\"Blocked-plan messaging and keyboard-only edit/import/export are covered.\",\"No accessibility certification or unperformed user test is claimed.\"],\"assignee\":null,\"completed_evidence\":[],\"depends_on\":[\"numerical-verification\"],\"id\":\"accessibility-walkthrough\",\"inputs\":[\"deliverables/numerical-evidence.json\",\"deliverables/interaction-walkthrough.md\",\"starter/docs/test-protocol.md\",\"starter/demo/index.html\",\"starter/demo/app.js\",\"starter/demo/styles.css\"],\"instructions\":\"Perform the manual protocol if an authorized local browser is available. Record each actual observation; otherwise record not observed and keep the release gate conditional. Never infer screen-reader behavior from unit tests.\",\"outputs\":[\"deliverables/accessibility-observations.csv\"],\"state\":\"blocked\",\"team\":\"design\",\"title\":\"Observe keyboard and error recovery\"},{\"acceptance\":[\"All four demo files are identified with locally computed public-source hashes.\",\"No unresolved or unobserved gate is represented as passed.\",\"The candidate includes no credentials, remote dependencies, or invented signatures.\"],\"assignee\":null,\"completed_evidence\":[],\"depends_on\":[\"accessibility-walkthrough\",\"support-readiness\"],\"id\":\"demo-candidate\",\"inputs\":[\"deliverables/numerical-evidence.json\",\"deliverables/accessibility-observations.csv\",\"deliverables/support-kit.md\",\"starter/demo/index.html\",\"starter/demo/styles.css\",\"starter/demo/core.js\",\"starter/demo/app.js\",\"starter/docs/launch-checklist.md\"],\"instructions\":\"Review numerical tests, support issues, and accessibility observations. Produce a candidate manifest listing exact local source paths, content hashes, unresolved defects, and release blockers; do not hide not-observed manual gates.\",\"outputs\":[\"deliverables/demo-candidate.json\"],\"state\":\"blocked\",\"team\":\"engineering\",\"title\":\"Prepare an evidence-linked demo candidate\"},{\"acceptance\":[\"The proposed sequence totals 24 seconds.\",\"Every product behavior shown exists in the candidate or is explicitly marked proposed.\",\"The handoff says no video, voiceover, or public distribution has been generated by this task.\"],\"assignee\":null,\"completed_evidence\":[],\"depends_on\":[\"demo-candidate\"],\"id\":\"storyboard-handoff\",\"inputs\":[\"deliverables/demo-candidate.json\",\"deliverables/launch-copy.md\",\"starter/docs/storyboard.md\"],\"instructions\":\"Adapt the original storyboard to the actual candidate behavior. Supply timing, captions, screen states, and truthful narration copy for later approved production; do not call a storyboard a rendered asset.\",\"outputs\":[\"deliverables/video-production-brief.md\"],\"state\":\"blocked\",\"team\":\"creative\",\"title\":\"Prepare a video production brief, not a video claim\"},{\"acceptance\":[\"The recommendation names numerical, manual, support, and publication gates separately.\",\"No public launch is claimed from a local test or decision draft.\",\"An unresolved mandatory gate produces no-go or conditional status, never unconditional approval.\"],\"assignee\":null,\"completed_evidence\":[],\"depends_on\":[\"demo-candidate\",\"channel-approval\"],\"id\":\"launch-decision\",\"inputs\":[\"deliverables/demo-candidate.json\",\"deliverables/support-kit.md\",\"deliverables/accessibility-observations.csv\",\"deliverables/channel-approval-request.md\",\"starter/docs/launch-checklist.md\"],\"instructions\":\"Evaluate the candidate, support kit, observed interaction evidence, and channel request. Write a decision recommendation with outstanding owner approvals and a no-go path.\",\"outputs\":[\"deliverables/launch-decision.json\"],\"state\":\"blocked\",\"team\":\"product-strategy\",\"title\":\"Record the conditional go-or-no-go recommendation\"},{\"acceptance\":[\"Each publication step requires the appropriate owner's explicit approval.\",\"The runbook has verification and takedown steps for every proposed surface.\",\"Storyboard, rendered video, published demo, and observed usage are separate evidence states.\"],\"assignee\":null,\"completed_evidence\":[],\"depends_on\":[\"launch-decision\",\"storyboard-handoff\"],\"id\":\"launch-runbook\",\"inputs\":[\"deliverables/launch-decision.json\",\"deliverables/channel-approval-request.md\",\"deliverables/video-production-brief.md\",\"deliverables/demo-candidate.json\",\"starter/docs/launch-checklist.md\"],\"instructions\":\"Create a sequenced runbook for later owner-approved delivery, verification, and withdrawal. Treat any video production as pending until an actual rendered file is verified.\",\"outputs\":[\"deliverables/launch-runbook.md\"],\"state\":\"blocked\",\"team\":\"distribution\",\"title\":\"Assemble the approval-gated launch runbook\"},{\"acceptance\":[\"Questions separate comprehension, task completion, and usefulness.\",\"Each field has a purpose and optionality; no personal agenda text is required.\",\"Responses and customer validation remain absent until an authorized study occurs.\"],\"assignee\":null,\"completed_evidence\":[],\"depends_on\":[\"launch-runbook\"],\"id\":\"feedback-instrument\",\"inputs\":[\"deliverables/launch-runbook.md\",\"deliverables/support-kit.md\",\"deliverables/product-boundary.md\",\"starter/docs/support-playbook.md\"],\"instructions\":\"Draft questions to learn whether people understand required versus optional time budgeting. Use synthetic examples and do not collect responses or personal agendas as part of this seed.\",\"outputs\":[\"deliverables/feedback-instrument.csv\"],\"state\":\"blocked\",\"team\":\"customer-success\",\"title\":\"Prepare a minimal consent-aware learning instrument\"}]}\n","path":"templates/casework/work/task-board.json","sha256":"4f13a54cf3573220743b9916466f493ecde81f975192e4e77791d1727fc98a75"},{"bytes":361,"content":"# creative\n\nRole: Product storytelling\n\nPrepare accurate copy and a clearly labeled storyboard without pretending media was generated.\n\nCase inputs and logical deliverables belong to the same-world casework workspace.\nRead only the inputs for assigned work; hand off verified artifact references.\nDo not claim another team's task or authorize external effects.\n","path":"templates/teams/creative/work/TEAM.md","sha256":"03827294152ada97249de00137d40782e884c44cbe41e074002cbb5ad9c7b50e"},{"bytes":1757,"content":"{\"case_workspace\":\"casework\",\"schema\":\"hive-hub-seed-team-work/1\",\"tasks\":[{\"acceptance\":[\"Headline, short description, three feature statements, limitations, and CTA agree with the demo.\",\"No claim of customers, time saved, certification, AI behavior, or a generated video is invented.\",\"The CTA is an owner-reviewed local-demo invitation, not an unapproved external post.\"],\"assignee\":null,\"completed_evidence\":[],\"depends_on\":[\"product-boundary\"],\"id\":\"launch-copy\",\"inputs\":[\"deliverables/product-boundary.md\",\"starter/docs/landing-copy.md\",\"starter/docs/product-brief.md\",\"starter/demo/index.html\"],\"instructions\":\"Adapt the supplied landing copy to the agreed product boundary. Clearly distinguish the usable reference demo from planned polish, validation, and public availability.\",\"outputs\":[\"deliverables/launch-copy.md\"],\"state\":\"blocked\",\"team\":\"creative\",\"title\":\"Prepare truthful starter launch copy\"},{\"acceptance\":[\"The proposed sequence totals 24 seconds.\",\"Every product behavior shown exists in the candidate or is explicitly marked proposed.\",\"The handoff says no video, voiceover, or public distribution has been generated by this task.\"],\"assignee\":null,\"completed_evidence\":[],\"depends_on\":[\"demo-candidate\"],\"id\":\"storyboard-handoff\",\"inputs\":[\"deliverables/demo-candidate.json\",\"deliverables/launch-copy.md\",\"starter/docs/storyboard.md\"],\"instructions\":\"Adapt the original storyboard to the actual candidate behavior. Supply timing, captions, screen states, and truthful narration copy for later approved production; do not call a storyboard a rendered asset.\",\"outputs\":[\"deliverables/video-production-brief.md\"],\"state\":\"blocked\",\"team\":\"creative\",\"title\":\"Prepare a video production brief, not a video claim\"}],\"team\":\"creative\"}\n","path":"templates/teams/creative/work/tasks.json","sha256":"a0601734cea5d1de660cbe8a9bab04e246b70ae5d3add026ece4264028277fe6"},{"bytes":362,"content":"# customer-success\n\nRole: Support and learning\n\nPrepare practical help, a local-data boundary, and a consent-aware feedback instrument.\n\nCase inputs and logical deliverables belong to the same-world casework workspace.\nRead only the inputs for assigned work; hand off verified artifact references.\nDo not claim another team's task or authorize external effects.\n","path":"templates/teams/customer-success/work/TEAM.md","sha256":"0d5bbfdbb78a981863209943d1a98dbd64e7e74cd0e22e18a1da2f542428a82a"},{"bytes":1832,"content":"{\"case_workspace\":\"casework\",\"schema\":\"hive-hub-seed-team-work/1\",\"tasks\":[{\"acceptance\":[\"Instructions explain blocked plans, unscheduled optional topics, and explicit local export.\",\"The intake requests reproduction with synthetic topics before personal content.\",\"No retention, support response SLA, or staffed service is promised without an owner decision.\"],\"assignee\":null,\"completed_evidence\":[],\"depends_on\":[\"numerical-verification\",\"launch-copy\"],\"id\":\"support-readiness\",\"inputs\":[\"deliverables/numerical-evidence.json\",\"deliverables/launch-copy.md\",\"starter/docs/support-playbook.md\",\"starter/data/sample-agenda.json\"],\"instructions\":\"Turn the support playbook and observed numerical behavior into a quickstart, troubleshooting flow, and issue-intake fields. Do not request private meeting content by default.\",\"outputs\":[\"deliverables/support-kit.md\"],\"state\":\"blocked\",\"team\":\"customer-success\",\"title\":\"Prepare the first support kit\"},{\"acceptance\":[\"Questions separate comprehension, task completion, and usefulness.\",\"Each field has a purpose and optionality; no personal agenda text is required.\",\"Responses and customer validation remain absent until an authorized study occurs.\"],\"assignee\":null,\"completed_evidence\":[],\"depends_on\":[\"launch-runbook\"],\"id\":\"feedback-instrument\",\"inputs\":[\"deliverables/launch-runbook.md\",\"deliverables/support-kit.md\",\"deliverables/product-boundary.md\",\"starter/docs/support-playbook.md\"],\"instructions\":\"Draft questions to learn whether people understand required versus optional time budgeting. Use synthetic examples and do not collect responses or personal agendas as part of this seed.\",\"outputs\":[\"deliverables/feedback-instrument.csv\"],\"state\":\"blocked\",\"team\":\"customer-success\",\"title\":\"Prepare a minimal consent-aware learning instrument\"}],\"team\":\"customer-success\"}\n","path":"templates/teams/customer-success/work/tasks.json","sha256":"94261ff8ed4357ecc527411a2bf0fdb6847d30dfb896ca85bcb748128475c18a"},{"bytes":376,"content":"# design\n\nRole: Interaction and accessibility design\n\nMake time-budget tradeoffs understandable and test keyboard, reading order, and error recovery.\n\nCase inputs and logical deliverables belong to the same-world casework workspace.\nRead only the inputs for assigned work; hand off verified artifact references.\nDo not claim another team's task or authorize external effects.\n","path":"templates/teams/design/work/TEAM.md","sha256":"c51d0e1a1a992031e6a95a999bd8f33b9fd70e02da929ee22a790a0b7a495aed"},{"bytes":1906,"content":"{\"case_workspace\":\"casework\",\"schema\":\"hive-hub-seed-team-work/1\",\"tasks\":[{\"acceptance\":[\"The walkthrough can be completed without a server or account.\",\"Keyboard and error-recovery observations have explicit pass/fail criteria.\",\"Unperformed manual checks remain labeled not observed.\"],\"assignee\":null,\"completed_evidence\":[],\"depends_on\":[\"product-boundary\"],\"id\":\"interaction-plan\",\"inputs\":[\"deliverables/product-boundary.md\",\"starter/docs/design-spec.md\",\"starter/docs/test-protocol.md\",\"starter/demo/index.html\",\"starter/demo/app.js\",\"starter/demo/styles.css\"],\"instructions\":\"Inspect the local demo and design spec. Create a walkthrough for loading the sample, editing topic minutes and required flags, recovering from a blocked plan, importing a local JSON file, and exporting an explicitly requested result.\",\"outputs\":[\"deliverables/interaction-walkthrough.md\"],\"state\":\"blocked\",\"team\":\"design\",\"title\":\"Plan the editable-agenda walkthrough\"},{\"acceptance\":[\"Each protocol item records environment and observed pass/fail/not-observed.\",\"Blocked-plan messaging and keyboard-only edit/import/export are covered.\",\"No accessibility certification or unperformed user test is claimed.\"],\"assignee\":null,\"completed_evidence\":[],\"depends_on\":[\"numerical-verification\"],\"id\":\"accessibility-walkthrough\",\"inputs\":[\"deliverables/numerical-evidence.json\",\"deliverables/interaction-walkthrough.md\",\"starter/docs/test-protocol.md\",\"starter/demo/index.html\",\"starter/demo/app.js\",\"starter/demo/styles.css\"],\"instructions\":\"Perform the manual protocol if an authorized local browser is available. Record each actual observation; otherwise record not observed and keep the release gate conditional. Never infer screen-reader behavior from unit tests.\",\"outputs\":[\"deliverables/accessibility-observations.csv\"],\"state\":\"blocked\",\"team\":\"design\",\"title\":\"Observe keyboard and error recovery\"}],\"team\":\"design\"}\n","path":"templates/teams/design/work/tasks.json","sha256":"9dc5dfff9185d03369640b258e385d36a6675de2241307fc7bb41de92975b343"},{"bytes":354,"content":"# distribution\n\nRole: Launch operations\n\nPlan approved channels, reversible publication, and an evidence-linked launch runbook.\n\nCase inputs and logical deliverables belong to the same-world casework workspace.\nRead only the inputs for assigned work; hand off verified artifact references.\nDo not claim another team's task or authorize external effects.\n","path":"templates/teams/distribution/work/TEAM.md","sha256":"5f1c4f051b803c274df0d414d0a379d729f43c7fb78b02acb98506d5025908cb"},{"bytes":1834,"content":"{\"case_workspace\":\"casework\",\"schema\":\"hive-hub-seed-team-work/1\",\"tasks\":[{\"acceptance\":[\"Every proposed external effect has an explicit approval gate.\",\"A local zip or static-file delivery is distinguished from a hosted service.\",\"Tracking is off by default and no distribution outcome is fabricated.\"],\"assignee\":null,\"completed_evidence\":[],\"depends_on\":[\"launch-copy\"],\"id\":\"channel-approval\",\"inputs\":[\"deliverables/product-boundary.md\",\"deliverables/launch-copy.md\",\"starter/docs/launch-checklist.md\"],\"instructions\":\"Select proposed distribution surfaces and describe exact content, audience, publication owner, success measurement, and takedown route. Produce a request only; do not publish, spend, collect analytics, or contact people.\",\"outputs\":[\"deliverables/channel-approval-request.md\"],\"state\":\"blocked\",\"team\":\"distribution\",\"title\":\"Prepare a reversible channel approval request\"},{\"acceptance\":[\"Each publication step requires the appropriate owner's explicit approval.\",\"The runbook has verification and takedown steps for every proposed surface.\",\"Storyboard, rendered video, published demo, and observed usage are separate evidence states.\"],\"assignee\":null,\"completed_evidence\":[],\"depends_on\":[\"launch-decision\",\"storyboard-handoff\"],\"id\":\"launch-runbook\",\"inputs\":[\"deliverables/launch-decision.json\",\"deliverables/channel-approval-request.md\",\"deliverables/video-production-brief.md\",\"deliverables/demo-candidate.json\",\"starter/docs/launch-checklist.md\"],\"instructions\":\"Create a sequenced runbook for later owner-approved delivery, verification, and withdrawal. Treat any video production as pending until an actual rendered file is verified.\",\"outputs\":[\"deliverables/launch-runbook.md\"],\"state\":\"blocked\",\"team\":\"distribution\",\"title\":\"Assemble the approval-gated launch runbook\"}],\"team\":\"distribution\"}\n","path":"templates/teams/distribution/work/tasks.json","sha256":"eef51802b15994a9b1eaaebd8fd1a3c126d0fcc09b8ad6482604769c14aa1e23"},{"bytes":366,"content":"# engineering\n\nRole: Offline product engineering\n\nMaintain the runnable demo, deterministic agenda core, and reproducible release evidence.\n\nCase inputs and logical deliverables belong to the same-world casework workspace.\nRead only the inputs for assigned work; hand off verified artifact references.\nDo not claim another team's task or authorize external effects.\n","path":"templates/teams/engineering/work/TEAM.md","sha256":"ad0d8cce7a875e1d16c02ff106fb01256af351b19616341b799e4ff9131afe53"},{"bytes":2060,"content":"{\"case_workspace\":\"casework\",\"schema\":\"hive-hub-seed-team-work/1\",\"tasks\":[{\"acceptance\":[\"All structured numerical cases pass, including blocked capacity and midnight bounds.\",\"The pure core does not mutate imported input.\",\"Automated results do not stand in for browser or assistive-technology observations.\"],\"assignee\":null,\"completed_evidence\":[],\"depends_on\":[\"interaction-plan\"],\"id\":\"numerical-verification\",\"inputs\":[\"deliverables/interaction-walkthrough.md\",\"starter/demo/core.js\",\"starter/demo/app.js\",\"starter/reference/test_agenda.cjs\",\"starter/data/acceptance-cases.json\",\"starter/data/sample-agenda.json\",\"starter/docs/test-protocol.md\"],\"instructions\":\"Run the authored Node standard-library tests and JavaScript syntax checks. Compare every structured case against the core result and record commands and observed results rather than asserting a production launch.\",\"outputs\":[\"deliverables/numerical-evidence.json\"],\"state\":\"blocked\",\"team\":\"engineering\",\"title\":\"Reproduce the agenda acceptance cases\"},{\"acceptance\":[\"All four demo files are identified with locally computed public-source hashes.\",\"No unresolved or unobserved gate is represented as passed.\",\"The candidate includes no credentials, remote dependencies, or invented signatures.\"],\"assignee\":null,\"completed_evidence\":[],\"depends_on\":[\"accessibility-walkthrough\",\"support-readiness\"],\"id\":\"demo-candidate\",\"inputs\":[\"deliverables/numerical-evidence.json\",\"deliverables/accessibility-observations.csv\",\"deliverables/support-kit.md\",\"starter/demo/index.html\",\"starter/demo/styles.css\",\"starter/demo/core.js\",\"starter/demo/app.js\",\"starter/docs/launch-checklist.md\"],\"instructions\":\"Review numerical tests, support issues, and accessibility observations. Produce a candidate manifest listing exact local source paths, content hashes, unresolved defects, and release blockers; do not hide not-observed manual gates.\",\"outputs\":[\"deliverables/demo-candidate.json\"],\"state\":\"blocked\",\"team\":\"engineering\",\"title\":\"Prepare an evidence-linked demo candidate\"}],\"team\":\"engineering\"}\n","path":"templates/teams/engineering/work/tasks.json","sha256":"27d5091837dead73583bbe33205d6cf8295cda309a78c5ad32b0611d2aadedc3"},{"bytes":361,"content":"# product-strategy\n\nRole: Product strategy\n\nOwn the problem hypothesis, scope, measurable acceptance, and conditional launch decision.\n\nCase inputs and logical deliverables belong to the same-world casework workspace.\nRead only the inputs for assigned work; hand off verified artifact references.\nDo not claim another team's task or authorize external effects.\n","path":"templates/teams/product-strategy/work/TEAM.md","sha256":"b48721779312e095c572b35e788e3f4e2f0ab82b410aa3d88987979beb376fd5"},{"bytes":1833,"content":"{\"case_workspace\":\"casework\",\"schema\":\"hive-hub-seed-team-work/1\",\"tasks\":[{\"acceptance\":[\"Time budgeting is separate from calendar scheduling and meeting facilitation.\",\"The brief preserves the synthetic nature of the sample.\",\"A measurable disconfirmation criterion and owner approval boundary are included.\"],\"assignee\":null,\"completed_evidence\":[],\"depends_on\":[],\"id\":\"product-boundary\",\"inputs\":[\"starter/docs/product-brief.md\",\"starter/data/sample-agenda.json\",\"starter/docs/launch-checklist.md\"],\"instructions\":\"Refine the supplied problem hypothesis into a decision brief covering who might benefit, what the local demo actually does, what it excludes, and what would disconfirm usefulness. Do not claim user validation.\",\"outputs\":[\"deliverables/product-boundary.md\"],\"state\":\"ready\",\"team\":\"product-strategy\",\"title\":\"Approve a proposed product boundary for review\"},{\"acceptance\":[\"The recommendation names numerical, manual, support, and publication gates separately.\",\"No public launch is claimed from a local test or decision draft.\",\"An unresolved mandatory gate produces no-go or conditional status, never unconditional approval.\"],\"assignee\":null,\"completed_evidence\":[],\"depends_on\":[\"demo-candidate\",\"channel-approval\"],\"id\":\"launch-decision\",\"inputs\":[\"deliverables/demo-candidate.json\",\"deliverables/support-kit.md\",\"deliverables/accessibility-observations.csv\",\"deliverables/channel-approval-request.md\",\"starter/docs/launch-checklist.md\"],\"instructions\":\"Evaluate the candidate, support kit, observed interaction evidence, and channel request. Write a decision recommendation with outstanding owner approvals and a no-go path.\",\"outputs\":[\"deliverables/launch-decision.json\"],\"state\":\"blocked\",\"team\":\"product-strategy\",\"title\":\"Record the conditional go-or-no-go recommendation\"}],\"team\":\"product-strategy\"}\n","path":"templates/teams/product-strategy/work/tasks.json","sha256":"ff0815152723d9584cf26e798e41e71690c6bb2ffbe1b6a238c32f7ca1136e94"}],"kind":"organization-seed","mission":"Coordinate product strategy, design, engineering, creative, distribution, and customer success around Agenda Pocket, an original usable local demo with explicit acceptance and approval-gated launch work.","name":"The Product Launch Company","organization":{"directory":"organization","scaffold":{"kind":"organization","mode":"hive","slug":"product-launch-company","world_id":"demo-product-launch-company"}},"protocol":"rapp-work/1","relatedSeeds":["one-person-conglomerate","open-source-infrastructure-foundation"],"schema":"hive-hub-organization-seed/1","slug":"product-launch-company","status":"seed-not-activated","tagline":"Launch a real offline agenda planner without inventing traction.","tasks":[{"acceptance":["Time budgeting is separate from calendar scheduling and meeting facilitation.","The brief preserves the synthetic nature of the sample.","A measurable disconfirmation criterion and owner approval boundary are included."],"assignee":null,"completed_evidence":[],"depends_on":[],"id":"product-boundary","inputs":["starter/docs/product-brief.md","starter/data/sample-agenda.json","starter/docs/launch-checklist.md"],"instructions":"Refine the supplied problem hypothesis into a decision brief covering who might benefit, what the local demo actually does, what it excludes, and what would disconfirm usefulness. Do not claim user validation.","outputs":["deliverables/product-boundary.md"],"state":"ready","team":"product-strategy","title":"Approve a proposed product boundary for review"},{"acceptance":["The walkthrough can be completed without a server or account.","Keyboard and error-recovery observations have explicit pass/fail criteria.","Unperformed manual checks remain labeled not observed."],"assignee":null,"completed_evidence":[],"depends_on":["product-boundary"],"id":"interaction-plan","inputs":["deliverables/product-boundary.md","starter/docs/design-spec.md","starter/docs/test-protocol.md","starter/demo/index.html","starter/demo/app.js","starter/demo/styles.css"],"instructions":"Inspect the local demo and design spec. Create a walkthrough for loading the sample, editing topic minutes and required flags, recovering from a blocked plan, importing a local JSON file, and exporting an explicitly requested result.","outputs":["deliverables/interaction-walkthrough.md"],"state":"blocked","team":"design","title":"Plan the editable-agenda walkthrough"},{"acceptance":["All structured numerical cases pass, including blocked capacity and midnight bounds.","The pure core does not mutate imported input.","Automated results do not stand in for browser or assistive-technology observations."],"assignee":null,"completed_evidence":[],"depends_on":["interaction-plan"],"id":"numerical-verification","inputs":["deliverables/interaction-walkthrough.md","starter/demo/core.js","starter/demo/app.js","starter/reference/test_agenda.cjs","starter/data/acceptance-cases.json","starter/data/sample-agenda.json","starter/docs/test-protocol.md"],"instructions":"Run the authored Node standard-library tests and JavaScript syntax checks. Compare every structured case against the core result and record commands and observed results rather than asserting a production launch.","outputs":["deliverables/numerical-evidence.json"],"state":"blocked","team":"engineering","title":"Reproduce the agenda acceptance cases"},{"acceptance":["Headline, short description, three feature statements, limitations, and CTA agree with the demo.","No claim of customers, time saved, certification, AI behavior, or a generated video is invented.","The CTA is an owner-reviewed local-demo invitation, not an unapproved external post."],"assignee":null,"completed_evidence":[],"depends_on":["product-boundary"],"id":"launch-copy","inputs":["deliverables/product-boundary.md","starter/docs/landing-copy.md","starter/docs/product-brief.md","starter/demo/index.html"],"instructions":"Adapt the supplied landing copy to the agreed product boundary. Clearly distinguish the usable reference demo from planned polish, validation, and public availability.","outputs":["deliverables/launch-copy.md"],"state":"blocked","team":"creative","title":"Prepare truthful starter launch copy"},{"acceptance":["Instructions explain blocked plans, unscheduled optional topics, and explicit local export.","The intake requests reproduction with synthetic topics before personal content.","No retention, support response SLA, or staffed service is promised without an owner decision."],"assignee":null,"completed_evidence":[],"depends_on":["numerical-verification","launch-copy"],"id":"support-readiness","inputs":["deliverables/numerical-evidence.json","deliverables/launch-copy.md","starter/docs/support-playbook.md","starter/data/sample-agenda.json"],"instructions":"Turn the support playbook and observed numerical behavior into a quickstart, troubleshooting flow, and issue-intake fields. Do not request private meeting content by default.","outputs":["deliverables/support-kit.md"],"state":"blocked","team":"customer-success","title":"Prepare the first support kit"},{"acceptance":["Every proposed external effect has an explicit approval gate.","A local zip or static-file delivery is distinguished from a hosted service.","Tracking is off by default and no distribution outcome is fabricated."],"assignee":null,"completed_evidence":[],"depends_on":["launch-copy"],"id":"channel-approval","inputs":["deliverables/product-boundary.md","deliverables/launch-copy.md","starter/docs/launch-checklist.md"],"instructions":"Select proposed distribution surfaces and describe exact content, audience, publication owner, success measurement, and takedown route. Produce a request only; do not publish, spend, collect analytics, or contact people.","outputs":["deliverables/channel-approval-request.md"],"state":"blocked","team":"distribution","title":"Prepare a reversible channel approval request"},{"acceptance":["Each protocol item records environment and observed pass/fail/not-observed.","Blocked-plan messaging and keyboard-only edit/import/export are covered.","No accessibility certification or unperformed user test is claimed."],"assignee":null,"completed_evidence":[],"depends_on":["numerical-verification"],"id":"accessibility-walkthrough","inputs":["deliverables/numerical-evidence.json","deliverables/interaction-walkthrough.md","starter/docs/test-protocol.md","starter/demo/index.html","starter/demo/app.js","starter/demo/styles.css"],"instructions":"Perform the manual protocol if an authorized local browser is available. Record each actual observation; otherwise record not observed and keep the release gate conditional. Never infer screen-reader behavior from unit tests.","outputs":["deliverables/accessibility-observations.csv"],"state":"blocked","team":"design","title":"Observe keyboard and error recovery"},{"acceptance":["All four demo files are identified with locally computed public-source hashes.","No unresolved or unobserved gate is represented as passed.","The candidate includes no credentials, remote dependencies, or invented signatures."],"assignee":null,"completed_evidence":[],"depends_on":["accessibility-walkthrough","support-readiness"],"id":"demo-candidate","inputs":["deliverables/numerical-evidence.json","deliverables/accessibility-observations.csv","deliverables/support-kit.md","starter/demo/index.html","starter/demo/styles.css","starter/demo/core.js","starter/demo/app.js","starter/docs/launch-checklist.md"],"instructions":"Review numerical tests, support issues, and accessibility observations. Produce a candidate manifest listing exact local source paths, content hashes, unresolved defects, and release blockers; do not hide not-observed manual gates.","outputs":["deliverables/demo-candidate.json"],"state":"blocked","team":"engineering","title":"Prepare an evidence-linked demo candidate"},{"acceptance":["The proposed sequence totals 24 seconds.","Every product behavior shown exists in the candidate or is explicitly marked proposed.","The handoff says no video, voiceover, or public distribution has been generated by this task."],"assignee":null,"completed_evidence":[],"depends_on":["demo-candidate"],"id":"storyboard-handoff","inputs":["deliverables/demo-candidate.json","deliverables/launch-copy.md","starter/docs/storyboard.md"],"instructions":"Adapt the original storyboard to the actual candidate behavior. Supply timing, captions, screen states, and truthful narration copy for later approved production; do not call a storyboard a rendered asset.","outputs":["deliverables/video-production-brief.md"],"state":"blocked","team":"creative","title":"Prepare a video production brief, not a video claim"},{"acceptance":["The recommendation names numerical, manual, support, and publication gates separately.","No public launch is claimed from a local test or decision draft.","An unresolved mandatory gate produces no-go or conditional status, never unconditional approval."],"assignee":null,"completed_evidence":[],"depends_on":["demo-candidate","channel-approval"],"id":"launch-decision","inputs":["deliverables/demo-candidate.json","deliverables/support-kit.md","deliverables/accessibility-observations.csv","deliverables/channel-approval-request.md","starter/docs/launch-checklist.md"],"instructions":"Evaluate the candidate, support kit, observed interaction evidence, and channel request. Write a decision recommendation with outstanding owner approvals and a no-go path.","outputs":["deliverables/launch-decision.json"],"state":"blocked","team":"product-strategy","title":"Record the conditional go-or-no-go recommendation"},{"acceptance":["Each publication step requires the appropriate owner's explicit approval.","The runbook has verification and takedown steps for every proposed surface.","Storyboard, rendered video, published demo, and observed usage are separate evidence states."],"assignee":null,"completed_evidence":[],"depends_on":["launch-decision","storyboard-handoff"],"id":"launch-runbook","inputs":["deliverables/launch-decision.json","deliverables/channel-approval-request.md","deliverables/video-production-brief.md","deliverables/demo-candidate.json","starter/docs/launch-checklist.md"],"instructions":"Create a sequenced runbook for later owner-approved delivery, verification, and withdrawal. Treat any video production as pending until an actual rendered file is verified.","outputs":["deliverables/launch-runbook.md"],"state":"blocked","team":"distribution","title":"Assemble the approval-gated launch runbook"},{"acceptance":["Questions separate comprehension, task completion, and usefulness.","Each field has a purpose and optionality; no personal agenda text is required.","Responses and customer validation remain absent until an authorized study occurs."],"assignee":null,"completed_evidence":[],"depends_on":["launch-runbook"],"id":"feedback-instrument","inputs":["deliverables/launch-runbook.md","deliverables/support-kit.md","deliverables/product-boundary.md","starter/docs/support-playbook.md"],"instructions":"Draft questions to learn whether people understand required versus optional time budgeting. Use synthetic examples and do not collect responses or personal agendas as part of this seed.","outputs":["deliverables/feedback-instrument.csv"],"state":"blocked","team":"customer-success","title":"Prepare a minimal consent-aware learning instrument"}],"workspaceProfile":"rapp-work-sdk/1","workspaces":[{"directory":"workspaces/product-strategy","id":"product-strategy","name":"product-strategy","purpose":"Own the problem hypothesis, scope, measurable acceptance, and conditional launch decision.","role":"Product strategy","scaffold":{"kind":"workspace","mode":"hive","slug":"product-launch-company-product-strategy","world_id":"demo-product-launch-company"},"template":"templates/teams/product-strategy"},{"directory":"workspaces/design","id":"design","name":"design","purpose":"Make time-budget tradeoffs understandable and test keyboard, reading order, and error recovery.","role":"Interaction and accessibility design","scaffold":{"kind":"workspace","mode":"hive","slug":"product-launch-company-design","world_id":"demo-product-launch-company"},"template":"templates/teams/design"},{"directory":"workspaces/engineering","id":"engineering","name":"engineering","purpose":"Maintain the runnable demo, deterministic agenda core, and reproducible release evidence.","role":"Offline product engineering","scaffold":{"kind":"workspace","mode":"hive","slug":"product-launch-company-engineering","world_id":"demo-product-launch-company"},"template":"templates/teams/engineering"},{"directory":"workspaces/creative","id":"creative","name":"creative","purpose":"Prepare accurate copy and a clearly labeled storyboard without pretending media was generated.","role":"Product storytelling","scaffold":{"kind":"workspace","mode":"hive","slug":"product-launch-company-creative","world_id":"demo-product-launch-company"},"template":"templates/teams/creative"},{"directory":"workspaces/distribution","id":"distribution","name":"distribution","purpose":"Plan approved channels, reversible publication, and an evidence-linked launch runbook.","role":"Launch operations","scaffold":{"kind":"workspace","mode":"hive","slug":"product-launch-company-distribution","world_id":"demo-product-launch-company"},"template":"templates/teams/distribution"},{"directory":"workspaces/customer-success","id":"customer-success","name":"customer-success","purpose":"Prepare practical help, a local-data boundary, and a consent-aware feedback instrument.","role":"Support and learning","scaffold":{"kind":"workspace","mode":"hive","slug":"product-launch-company-customer-success","world_id":"demo-product-launch-company"},"template":"templates/teams/customer-success"},{"directory":"workspaces/casework","id":"casework","name":"Shared delivery case","purpose":"Own synthetic intake, shared inputs, and accepted deliverables.","role":"case-custodian","scaffold":{"kind":"workspace","mode":"hive","slug":"product-launch-company-casework","world_id":"demo-product-launch-company"},"template":"templates/casework"}]}
