{
  "id": "05-planner",
  "title": "Agenda Pocket — room for reality",
  "seedSlug": "product-launch-company",
  "entrypoint": "projects/05-planner/index.html",
  "summary": "An original offline agenda planner that proves small-instance conflicts, exposes unknown/unsupported states, and offers exact minimum-cost explicit repairs without dropping commitments. Includes a synthetic Pocket Arcade tournament.",
  "checks": [
    ["node", "--test", "--test-reporter=tap", "projects/05-planner/tests/engine.test.mjs", "projects/05-planner/tests/oracle.test.mjs", "projects/05-planner/tests/editor.test.mjs", "projects/05-planner/tests/artifacts.test.mjs", "projects/05-planner/tests/ui.test.mjs"],
    ["node", "--check", "projects/05-planner/app.mjs"],
    ["node", "--check", "projects/05-planner/app.bundle.js"],
    ["node", "projects/05-planner/tools/build.mjs", "--check"]
  ],
  "artifacts": [
    "projects/05-planner/index.html",
    "projects/05-planner/engine.mjs",
    "projects/05-planner/app.mjs",
    "projects/05-planner/app.bundle.js",
    "projects/05-planner/editor.mjs",
    "projects/05-planner/presets.mjs",
    "projects/05-planner/styles.css",
    "projects/05-planner/README.md",
    "projects/05-planner/manifest.json",
    "projects/05-planner/fixtures/adversarial.json",
    "projects/05-planner/fixtures/pocket-arcade.json",
    "projects/05-planner/fixtures/library.json",
    "projects/05-planner/fixtures/disjoint.json",
    "projects/05-planner/fixtures/boundary.json",
    "projects/05-planner/provenance.json",
    "projects/05-planner/data/source/LICENSE",
    "projects/05-planner/data/source/sample-agenda.json",
    "projects/05-planner/data/source/acceptance-cases.json",
    "projects/05-planner/data/source/seed.json",
    "projects/05-planner/data/source/initialize.json",
    "projects/05-planner/data/source/intake.json",
    "projects/05-planner/data/source/task-board.json",
    "projects/05-planner/docs/task-mapping.md",
    "projects/05-planner/docs/launch-draft.md",
    "projects/05-planner/docs/FAQ.md",
    "projects/05-planner/docs/manual-checks.json",
    "projects/05-planner/evidence/result.json",
    "projects/05-planner/evidence/fixture-results.json",
    "projects/05-planner/evidence/check-01.tap"
  ],
  "limitations": [
    "Single track; at most 8 mandatory nonpreemptive tasks, 16 intervals per availability set, and 120 grid slots through the full repair envelope. Grids are 1/5/10/15/30/60 minutes; same day only.",
    "Only explicit availability, fixed starts and finish-to-start dependencies are modeled. Unknown fields/constraints are unsupported, never ignored.",
    "Feasibility search bounds return unproven, never impossible. Conflict-core minimum means task cardinality with induced dependencies, not minimum atomic constraints.",
    "Repair minimum is lexicographic changed field count then total changed minutes, only across declared cutoff extensions and permitted unfixed-task duration reductions. No task, availability, dependency or fixed event is relaxed.",
    "Duration reductions are proposed negotiated timeboxes/scope, not evidence that unchanged work takes less time. Declared availability is not externally verified.",
    "At most four tied repair choices are normally shown; tiesComplete explicitly distinguishes full from truncated enumeration.",
    "No calendar/date/recurrence/parallel-room integration, automatic persistence, telemetry, native Hive activation or external effects.",
    "Synthetic inputs and model results are not real tournament operations, customer validation, traction, publication or launch approval.",
    "Browser, keyboard, screen-reader and narrow-layout checks remain not observed. Node DOM-double/static tests do not certify real-browser accessibility or behavior.",
    "Synchronous bounded search can briefly occupy the main thread; no performance SLA or large-instance completeness claim."
  ],
  "stage": "work-produced"
}
