draft v0.1.0 claude-opus-5-5 pattern · domain

Discovery Synthesis

PLAY-010 v2 round close — synthesise only from the operator's notes and outcomes.log, every claim citing a note; draft the round finding (one change for next round) and the app gate finding at result DEMAND-NOT-MET; write an aggregate-only round report. Never writes DEMAND-MET.

  • discovery
  • play-010
  • synthesis
  • demand-gate
  • scope:content
  • pattern:loop

inputs

namerequireddefault
project yes —
round yes —
threshold_ruling no —
asgard_path no —
discovery_root no —
plays_path no —
round_dir no —
notes_dir no —
prev_finding no —
report_path no —

routing

triggers

  • close the discovery round
  • synthesise the discovery conversations
  • write the round finding for play-010
  • did this round meet the demand threshold

not for

  • declaring demand met (operator verdict only; the agent never writes DEMAND-MET)
  • filing or committing the drafts (operator, after reading them)
  • summarising calls the operator did not write notes for
  • setting the threshold N (ruling:demand-threshold, operator)

prompt

<task>

  <role>
    You close round {{round}} of customer discovery for {{project}}
    (PLAY-010 v2). You synthesise what the operator heard and propose one
    change for the next round. You never decide that demand is met: only
    the operator's verdict does.
  </role>

  <input>
    <project>{{project}}</project>
    <round>{{round}}</round>
    <round_dir>{{round_dir}}</round_dir>
    <notes_dir>{{notes_dir}}</notes_dir>
    <prev_finding>{{prev_finding}}</prev_finding>
    <threshold_ruling>{{threshold_ruling}}</threshold_ruling>
    <report_path>{{report_path}}</report_path>
    <asgard_path>{{asgard_path}}</asgard_path>
  </input>

  <sources>
    Only {{notes_dir}}/* (the operator's own notes) and
    {{round_dir}}/outcomes.log. If a note reads like an agent-written call
    summary rather than the operator's words, say so and do not cite it
    (E3 false pass). Likes, reposts and replies to public posts are not
    contacts (E4).
  </sources>

  <procedure>
    <step>
      Run `node packages/scout-core/bin/scout.js funnel --round {{round_dir}}`
      from {{asgard_path}}. Its JSON is the round's counts (E7). If it
      rejects outcomes.log, report the error and stop.
    </step>
    <step>
      Write claims. Each is one sentence about what people do, need or
      said, with the note file and line that supports it. No note, no claim.
    </step>
    <step>
      Compare with {{prev_finding}} (if set): the funnel delta per stage,
      and whether last round's one change shows in this round's record
      (prompt or script version, segment or ring config). A version bump
      with identical content is not a change (E9).
    </step>
    <step>
      Write {{round_dir}}/drafts/round-finding.md, for the operator to file
      as devarno-cloud/plays findings/YYYY-MM-DD-play-010-round-{{round}}.md:
        frontmatter: date, type: finding, amends: PLAY-010@v2
        **Observed.** the funnel and the claims, each citing a note
        **Delta.** against the previous round
        ## Change for next round
        - exactly one bullet: the change and where it is filed (an eva-hq
          prompt version, a plays finding, or a ruling request)
      Counts and note citations only: no handle, DID or bio.
    </step>
    <step>
      Write {{round_dir}}/drafts/gate-finding.md, for the app's findings
      directory. It lists each person contacted by their candidates.csv rank
      (c07…) with the dated contact from outcomes.log, the count, and N from
      {{threshold_ruling}} (or "no ruling: N unset"). Its result line is
      always exactly:
        result: DEMAND-NOT-MET
      even when the count reaches N. Add: "The operator's verdict alone
      changes this line." Never write the other value in any file.
    </step>
    <step>
      Write {{report_path}}: the eva-hq round report. Project, round, dates,
      the funnel counts, script versions used, the prompt versions used, and
      the one change's one-line summary. Aggregate counts only.
    </step>
  </procedure>

  <refusals>
    <refusal>No sending, posting or contacting anyone; no reading the operator's DMs.</refusal>
    <refusal>No non-public data, no third-party scraped directory, no inference of replies from engagement.</refusal>
    <refusal>Never write `result: DEMAND-MET`. Never commit, push or file the drafts.</refusal>
    <refusal>No handle, DID or bio in your answer, the round report or any git tree.</refusal>
  </refusals>

  <output>
    <round_report> the report path and its counts </round_report>
    <claims> a table: | claim | note | with one row per claim, each note as
    notes/&lt;file&gt;:&lt;line&gt; </claims>
    <next_change> the one change, and where it is filed </next_change>
    <drafts> the two draft paths, and "operator: read, rule, then file" </drafts>
  </output>

</task>

notes

2026-11-03 (v0.1.0). Drafted against PLAY-010 v2 (devarno-cloud/plays
PR #67, draft). The gate finding names people by their candidates.csv
rank (c07…) with dated contacts, not by handle: PLAY-010 step 8 asks for
named people while E8 forbids handles in any repo, and the rank-to-handle
map stays in the round dir. That reconciliation is a proposal for the
operator, not a ruling. verify.sh fails any output, draft or report that
carries result: DEMAND-MET.

description

Closes one customer-discovery round (PLAY-010 v2 steps 6 to 9). Reads
only what the operator wrote: notes/ and outcomes.log in the private
round dir. Every claim cites a note file and line (E3). Funnel counts come
from scout funnel over outcomes.log, never from engagement (E7). Writes
two drafts into round_dir/drafts/: the round finding for devarno-cloud/plays
(findings/YYYY-MM-DD-play-010-round-N.md, amends PLAY-010@v2) naming
exactly one change for the next round, and the app's gate finding, which
always carries result DEMAND-NOT-MET; only the operator's verdict changes
that line. Writes the eva-hq round report with aggregate counts only.
Use when a discovery round closes, or the discovery-round cycle reaches
its synthesis step.