{
  "skill_name": "plastic-project-continuing",
  "notes": "Intent 158a1. New project route, absorbing intent-continuing's Continue/Priority Order/Stale Future Intents sections (move, not duplicate). Scopes: description triggering (1-3) and behavior/convention compliance (4-10), the latter checked against SKILL.md.",
  "results": {
    "triggering": { "cases": 3, "passed": 3, "run": "2026-07-10, one subagent per case" },
    "behavior": { "cases": 7, "passed": 7, "evidence": "convention checks against skills/project-continuing/SKILL.md after the 158a1 extraction; id 10 (intent 170) added for the research-dispatch wiring of plastic-future-intent-researcher" }
  },
  "evals": [
    {
      "id": 1, "scope": "triggering", "set": "train",
      "prompt": "what should I work on in this project",
      "expected_output": "Activates plastic-project-continuing.",
      "files": [],
      "assertions": [
        { "type": "code", "check": "router CHOICE == plastic-project-continuing", "observed": "plastic-project-continuing", "result": "pass" }
      ]
    },
    {
      "id": 2, "scope": "triggering", "set": "train",
      "prompt": "land me on the project board",
      "expected_output": "Activates plastic-project-continuing.",
      "files": [],
      "assertions": [
        { "type": "code", "check": "router CHOICE == plastic-project-continuing", "observed": "plastic-project-continuing", "result": "pass" }
      ]
    },
    {
      "id": 3, "scope": "triggering", "set": "validation",
      "prompt": "continue",
      "expected_output": "Bare 'continue' with no specific intent or roadmap named reaches plastic-project-continuing via plastic-continuing's default route.",
      "files": [],
      "assertions": [
        { "type": "code", "check": "router CHOICE == plastic-project-continuing", "observed": "plastic-project-continuing", "result": "pass" }
      ]
    },
    {
      "id": 4, "scope": "behavior", "set": "train",
      "prompt": "Is dashboard selection project-aware?",
      "expected_output": "Project loaded -> `dashboard.rb project <slug> --data` -> fills dashboard-project.md; otherwise -> `dashboard.rb continue --data`. Skill only invokes, does not render.",
      "files": ["skills/project-continuing/SKILL.md"],
      "assertions": [
        { "type": "convention", "check": "both dashboard invocations present and gated on project detection", "observed": "'dashboard.rb project <slug>' and 'dashboard.rb continue' in the 'Continue (present the board)' section", "result": "pass" }
      ]
    },
    {
      "id": 5, "scope": "behavior", "set": "train",
      "prompt": "Does the skill cite the classification rules by name instead of copying the logic?",
      "expected_output": "SKILL.md's 'Deciding rules' section names Effort/Value/Flags/Override/Caps and points to plastic-dashboard's references/classification.md; it does not restate the rule definitions.",
      "files": ["skills/project-continuing/SKILL.md"],
      "assertions": [
        { "type": "convention", "check": "rule names cited, no copied Effort/Value/Flags/Override/Caps definitions", "observed": "present in 'Deciding rules'", "result": "pass" }
      ]
    },
    {
      "id": 6, "scope": "behavior", "set": "train",
      "prompt": "Does the project route ask 'auto or guided?' before stopping?",
      "expected_output": "No. The project route presents state then stops; it asks nothing. The single ask lives in plastic-intent-starting once a specific intent is named.",
      "files": ["skills/project-continuing/SKILL.md"],
      "assertions": [
        { "type": "convention", "check": "no 'auto or guided' ask anywhere in SKILL.md", "observed": "absent", "result": "pass" }
      ]
    },
    {
      "id": 7, "scope": "behavior", "set": "validation",
      "prompt": "Does the skill present the board before stopping?",
      "expected_output": "The filled Markdown board is presented in the reply (non-optional), then a 'Then stop' section waits for the user.",
      "files": ["skills/project-continuing/SKILL.md"],
      "assertions": [
        { "type": "convention", "check": "presentation is mandatory and precedes the 'Then stop' wait", "observed": "present", "result": "pass" }
      ]
    },
    {
      "id": 8, "scope": "behavior", "set": "validation",
      "prompt": "Does the skill carry the intent-202 coordination note (project board short by default)?",
      "expected_output": "A 'Coordination' section records that intent 202 has landed: the Recently-worked and raw Future tables are gone, replaced by a prose summary (built in dashboard.rb) and an honest-totals footer; Active is capped at 3 (lifecycle-stage descending, D2) and Next-work at 5; conversational paging re-invokes dashboard.rb --data with --limit-active/--limit-next/--all (no state on disk); --plain prints the full uncapped plain-text board. The rule-name citations and the dashboard.rb project <slug> --data -> dashboard-project.md path still resolve.",
      "files": ["skills/project-continuing/SKILL.md"],
      "assertions": [
        { "type": "convention", "check": "'202' present with the landed coordination note describing the new shape, caps, paging flags, and --plain", "observed": "present: 'Intent 202 has landed' paragraph with the described content", "result": "pass" }
      ]
    },
    {
      "id": 9, "scope": "behavior", "set": "validation",
      "prompt": "Are Priority Order and Stale Future Intents present here and only here (not in intent-continuing)?",
      "expected_output": "Both sections are present verbatim in this skill; they no longer exist in skills/intent-continuing/SKILL.md.",
      "files": ["skills/project-continuing/SKILL.md", "skills/intent-continuing/SKILL.md"],
      "assertions": [
        { "type": "convention", "check": "'## Priority Order' and '## Stale Future Intents' present here, absent from intent-continuing", "observed": "present here, absent there", "result": "pass" }
      ]
    },
    {
      "id": 10, "scope": "behavior", "set": "validation",
      "prompt": "In the stale-future-intent triage, the user picks option c) Defer to agent: research. What happens?",
      "expected_output": "A real dispatch, not a label: plastic-future-intent-researcher's model is resolved via `read-config agents.models.<basename> --project <repo>` (never bare frontmatter, sanctioned-override-aware), the agent is dispatched via the Agent tool on the selected stale future intent and writes its findings into that intent's `## Context`, then the skill re-presents the stale-future-intent triage.",
      "files": ["skills/project-continuing/SKILL.md"],
      "assertions": [
        { "type": "convention", "check": "the 'Defer to agent: research' paragraph under Stale Future Intents resolves the model via read-config (not bare frontmatter), dispatches plastic-future-intent-researcher via the Agent tool, and re-presents the triage after the agent returns", "observed": "'Defer to agent: research.' paragraph present: resolves via read-config agents.models.<basename> --project <repo>, dispatches subagent_type plastic-future-intent-researcher, findings land in ## Context, then re-presents the triage", "result": "pass" }
      ]
    }
  ]
}
