chatroom-cli 1.129.0 → 1.130.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -100665,6 +100665,102 @@ function getHandoffSeverityGuidanceBlock() {
100665
100665
  - [low] <minor cleanup — nice to have>`;
100666
100666
  }
100667
100667
 
100668
+ // ../../services/backend/prompts/teams/verifier-handoff-templates.ts
100669
+ function normalizeEntryPointRole3(entryPointRole) {
100670
+ return entryPointRole.trim().toLowerCase() || "planner";
100671
+ }
100672
+ function getEntryPointToVerifierHandoffTemplate(entryPointRole) {
100673
+ const entryPoint = normalizeEntryPointRole3(entryPointRole);
100674
+ return `${getHandoffRecipientVisibilityCallout("verifier")}
100675
+
100676
+ ## Handoff Template (${entryPoint} → verifier)
100677
+
100678
+ The verifier judges, from chatroom logs only, whether the user's last message was achieved. It ${VERIFIER_TEST_RULE}; list any user-requested tests under Requested test runs. Treat the claimed outcome as a claim, not as evidence: the verifier does not trust it and checks every requirement against the logs themselves. Request this review only when the task involved code changes, in any conversation mode. The verdict returns to \`${entryPoint}\`.
100679
+
100680
+ ## Round
100681
+ <1 or 2; for 2, cite the round-1 verdict message id>
100682
+
100683
+ ## Mode
100684
+ <chat | code | code:enhanced>
100685
+
100686
+ ## User message id
100687
+ <id of the user's last message: the origin message id of the user task, or from \`chatroom messages anchor\`>
100688
+
100689
+ ## Context id
100690
+ <id from \`chatroom context read\`, or \`none\` if no context was read for this task>
100691
+
100692
+ ## Requested test runs
100693
+ <the test commands the user explicitly asked for, one per line, or exactly \`None requested.\`>
100694
+
100695
+ ## Claimed outcome
100696
+ <requirement-by-requirement what you believe is complete>
100697
+
100698
+ ## Evidence pointers
100699
+ <builder handoff message ids, commits, PRs, and test results as quoted in those handoffs>
100700
+
100701
+ ## Known gaps
100702
+ <anything incomplete, or exactly \`None.\`>
100703
+
100704
+ ## Handoff
100705
+ Send this request to the verifier with the command below, then stop. The verdict returns to \`${entryPoint}\`.
100706
+
100707
+ \`\`\`bash
100708
+ ${handoffCommand({
100709
+ chatroomId: "<chatroom-id>",
100710
+ role: entryPoint,
100711
+ nextRole: "verifier",
100712
+ cliEnvPrefix: ""
100713
+ })}
100714
+ \`\`\``;
100715
+ }
100716
+ function getVerifierToEntryPointHandoffTemplate(entryPointRole) {
100717
+ const entryPoint = normalizeEntryPointRole3(entryPointRole);
100718
+ return `${getHandoffRecipientVisibilityCallout(entryPoint)}
100719
+
100720
+ ## Handoff Template (Verifier → ${entryPoint})
100721
+
100722
+ Return one advisory verdict for the authoritative request. This review is non-binding: it uses chatroom logs, plus the requested test runs listed in the request, if any, deciding every requirement from the evidence those logs and runs actually contain. It also checks the work against the user's expectations (\`## User Expectations\`) under the same logs-only, claim-is-not-evidence rule. It ${VERIFIER_TEST_RULE}. Never accept the claimed outcome as proof. Use the exact sections below, in this order.
100723
+
100724
+ ## Verdict
100725
+ <exactly one of ${VERIFIER_VERDICTS.join(", ")} as the value; ${ACHIEVED} only if every requirement and user expectation is met; ${NOT_ACHIEVED} if any requirement or user expectation is unmet (logs show it was not done, or contradict it); ${INCONCLUSIVE} if none is unmet but any is unverified (logs are silent)>
100726
+
100727
+ ## Objective
100728
+ <user message id, any prior user messages used, objective in 1-2 sentences>
100729
+
100730
+ ## Requirements
100731
+ <numbered \`R1 — <requirement> — met | unmet | unverified — <evidence ref>\`>
100732
+
100733
+ ## User Expectations
100734
+ <numbered \`U1 — <expectation from the user's handoff template> — met | unmet | unverified — <evidence ref>\`; exactly \`None applicable.\` in chat mode or when no expectation applies>
100735
+
100736
+ ## Evidence
100737
+ <bullets: \`<message id or handoff> — "<short quote>" — supports R#\`; for a requested test run, \`<command> — exit <result> — supports R#\`>
100738
+
100739
+ ## Missing or unmet
100740
+ <per unmet or unverified requirement or user expectation: what is missing and what evidence would resolve it; exactly \`None.\` if ${ACHIEVED}>
100741
+
100742
+ ## Scope and limits
100743
+ <state the test runs the verifier executed (command and exit result), or "No tests were run; none were requested."; log range read; whether the download was truncated; context id read and whether it matched the request>
100744
+
100745
+ ## Handoff
100746
+ Run the normal handoff command to \`${entryPoint}\` with this complete verdict, then stop.
100747
+
100748
+ \`\`\`bash
100749
+ ${handoffCommand({
100750
+ chatroomId: "<chatroom-id>",
100751
+ role: "verifier",
100752
+ nextRole: entryPoint,
100753
+ cliEnvPrefix: ""
100754
+ })}
100755
+ \`\`\``;
100756
+ }
100757
+ var VERIFIER_VERDICTS, VERIFIER_TEST_RULE = "runs no test the user did not ask for, and never builds, lints, or edits", ACHIEVED, NOT_ACHIEVED, INCONCLUSIVE;
100758
+ var init_verifier_handoff_templates = __esm(() => {
100759
+ init_command2();
100760
+ VERIFIER_VERDICTS = ["ACHIEVED", "NOT_ACHIEVED", "INCONCLUSIVE"];
100761
+ [ACHIEVED, NOT_ACHIEVED, INCONCLUSIVE] = VERIFIER_VERDICTS;
100762
+ });
100763
+
100668
100764
  // ../../services/backend/prompts/utils/proof-of-verification.ts
100669
100765
  function messagesAnchorCommand(params = {}) {
100670
100766
  const prefix = params.cliEnvPrefix ?? "";
@@ -100680,6 +100776,21 @@ function messagesDownloadSinceCommand(params = {}) {
100680
100776
  const limit = params.limit ?? 100;
100681
100777
  return `${prefix}chatroom messages download --chatroom-id="${chatroomId}" --role="${role}" --since-message-id="${sinceMessageId}" --limit=${limit}`;
100682
100778
  }
100779
+ function verifierRequestCommand(params = {}) {
100780
+ const prefix = params.cliEnvPrefix ?? "";
100781
+ const chatroomId = params.chatroomId ?? "<chatroom-id>";
100782
+ const role = params.role ?? "<role>";
100783
+ return `${prefix}chatroom handoff --chatroom-id="${chatroomId}" --role="${role}" --next-role="verifier"`;
100784
+ }
100785
+ function getVerifierReviewDisclosureBlock(params = {}) {
100786
+ return `**Proof of verification (verifier review):**
100787
+ ${VERIFIER_REVIEW_CHECKBOX}
100788
+ - Verifier review: <${VERIFIER_REVIEW_VALUES}>
100789
+ - Verifier request command (disclose the command you sent): \`${verifierRequestCommand(params)}\`
100790
+ - Verifier request message id: <id of your verifier handoff> · Round: <1 | 2>
100791
+ - Verdict message id: <id of the verifier's verdict handoff> · Verdict user message id: <id> (must equal the current last user message)
100792
+ - Verdict gaps (only if not ACHIEVED): <each unmet item, or \`None.\`>`;
100793
+ }
100683
100794
  function getProofOfVerificationComment(params = {}) {
100684
100795
  const anchorCmd = messagesAnchorCommand(params);
100685
100796
  const downloadCmd = messagesDownloadSinceCommand({
@@ -100696,9 +100807,14 @@ Then: \`${anchorCmd}\` → \`${downloadCmd}\` (use the message ID from anchor ou
100696
100807
  }
100697
100808
  function getEntryPointProofOfCompletionVerificationBlock(params = {}) {
100698
100809
  return `${getProofOfVerificationComment(params)}
100699
- ${PROOF_OF_VERIFICATION_CHECKBOX}`;
100810
+ ${PROOF_OF_VERIFICATION_CHECKBOX}
100811
+ ${getVerifierReviewDisclosureBlock(params)}`;
100700
100812
  }
100701
- var PROOF_OF_VERIFICATION_CHECKBOX = "- [ ] I confirm I verified the user's full request: anchored on the last user message, downloaded history since that anchor, reviewed handoffs/goals (including prior user messages when the latest was a terse follow-up), and validated every requirement below before this handoff";
100813
+ var PROOF_OF_VERIFICATION_CHECKBOX = "- [ ] I confirm I verified the user's full request: anchored on the last user message, downloaded history since that anchor, reviewed handoffs/goals (including prior user messages when the latest was a terse follow-up), and validated every requirement below before this handoff", VERIFIER_REVIEW_CHECKBOX = "- [ ] I checked the verifier verdict for this task: its user message id is the user's current last message, it is round 1 or 2 (maximum 2), and the verdict is `ACHIEVED` — or every unmet item is listed under Unresolved / action required", VERIFIER_REVIEW_VALUES;
100814
+ var init_proof_of_verification = __esm(() => {
100815
+ init_verifier_handoff_templates();
100816
+ VERIFIER_REVIEW_VALUES = `${VERIFIER_VERDICTS.join(" | ")} | UNAVAILABLE (<reason>) | not required (no code changes)`;
100817
+ });
100702
100818
 
100703
100819
  // ../../services/backend/prompts/utils/unresolved-decisions.ts
100704
100820
  function getUnresolvedDecisionsSectionBlock() {
@@ -100798,6 +100914,7 @@ ${getHandoffNotApplicableSectionComment("List manual steps outside the system")}
100798
100914
  var init_handoff_report_template_body = __esm(() => {
100799
100915
  init_context_disclosure();
100800
100916
  init_handoff_quality_principles();
100917
+ init_proof_of_verification();
100801
100918
  init_role_guidance_disclosure();
100802
100919
  init_unresolved_decisions();
100803
100920
  });
@@ -100829,11 +100946,11 @@ function getChatToUserHandoffTemplate() {
100829
100946
  var init_chat_handoff_template = () => {};
100830
100947
 
100831
100948
  // ../../services/backend/prompts/teams/researcher-handoff-templates.ts
100832
- function normalizeEntryPointRole3(entryPointRole) {
100949
+ function normalizeEntryPointRole4(entryPointRole) {
100833
100950
  return entryPointRole.trim().toLowerCase() || "planner";
100834
100951
  }
100835
100952
  function getEntryPointToResearcherHandoffTemplate(entryPointRole) {
100836
- const entryPoint = normalizeEntryPointRole3(entryPointRole);
100953
+ const entryPoint = normalizeEntryPointRole4(entryPointRole);
100837
100954
  return `${getHandoffRecipientVisibilityCallout("researcher")}
100838
100955
 
100839
100956
  ## Handoff Template (${entryPoint} → researcher)
@@ -100862,7 +100979,7 @@ ${handoffCommand({
100862
100979
  \`\`\``;
100863
100980
  }
100864
100981
  function getResearcherToEntryPointHandoffTemplate(entryPointRole) {
100865
- const entryPoint = normalizeEntryPointRole3(entryPointRole);
100982
+ const entryPoint = normalizeEntryPointRole4(entryPointRole);
100866
100983
  return `${getHandoffRecipientVisibilityCallout(entryPoint)}
100867
100984
 
100868
100985
  ## Handoff Template (Researcher → ${entryPoint})
@@ -100913,11 +101030,11 @@ var init_researcher_handoff_templates = __esm(() => {
100913
101030
  });
100914
101031
 
100915
101032
  // ../../services/backend/prompts/teams/triage-handoff-templates.ts
100916
- function normalizeEntryPointRole4(entryPointRole) {
101033
+ function normalizeEntryPointRole5(entryPointRole) {
100917
101034
  return entryPointRole.trim().toLowerCase() || "planner";
100918
101035
  }
100919
101036
  function getEntryPointToTriageHandoffTemplate(entryPointRole) {
100920
- const entryPoint = normalizeEntryPointRole4(entryPointRole);
101037
+ const entryPoint = normalizeEntryPointRole5(entryPointRole);
100921
101038
  return `${getHandoffRecipientVisibilityCallout("triage")}
100922
101039
 
100923
101040
  ## Handoff Template (${entryPoint} → triage)
@@ -100936,12 +101053,12 @@ ${handoffCommand({
100936
101053
  \`\`\``;
100937
101054
  }
100938
101055
  function getTriageToEntryPointHandoffTemplate(entryPointRole) {
100939
- const entryPoint = normalizeEntryPointRole4(entryPointRole);
101056
+ const entryPoint = normalizeEntryPointRole5(entryPointRole);
100940
101057
  return `${getHandoffRecipientVisibilityCallout(entryPoint)}
100941
101058
 
100942
101059
  ## Handoff Template (Triage → ${entryPoint})
100943
101060
 
100944
- Return a complete, evidence-backed investigation of the authoritative reported bug. Triage is advisory: do not edit implementation files or implement the proposed fix. Use the exact sections below. Cite concrete repository paths and symbols, observed behavior, commands, and test output. Distinguish confirmed findings from hypotheses; never claim a test proved behavior unless its failing assertion demonstrates the report.
101061
+ Return a complete, evidence-backed investigation of the authoritative reported bug. Triage is advisory: do not edit implementation files or implement the proposed fix. Begin with the \`## Summary\` section, then use the remaining sections below in order. Use \`###\` for sub-items within a section. Cite concrete repository paths and symbols, observed behavior, commands, and test output. Distinguish confirmed findings from hypotheses; never claim a test proved behavior unless its failing assertion demonstrates the report.
100945
101062
 
100946
101063
  ## Summary
100947
101064
  <briefly state the diagnosis and whether the root cause was confirmed or remains a hypothesis>
@@ -100980,99 +101097,6 @@ var init_triage_handoff_templates = __esm(() => {
100980
101097
  init_command2();
100981
101098
  });
100982
101099
 
100983
- // ../../services/backend/prompts/teams/verifier-handoff-templates.ts
100984
- function normalizeEntryPointRole5(entryPointRole) {
100985
- return entryPointRole.trim().toLowerCase() || "planner";
100986
- }
100987
- function getEntryPointToVerifierHandoffTemplate(entryPointRole) {
100988
- const entryPoint = normalizeEntryPointRole5(entryPointRole);
100989
- return `${getHandoffRecipientVisibilityCallout("verifier")}
100990
-
100991
- ## Handoff Template (${entryPoint} → verifier)
100992
-
100993
- The verifier judges, from chatroom logs only, whether the user's last message was achieved. It ${VERIFIER_TEST_RULE}; list any user-requested tests under Requested test runs. Treat the claimed outcome as a claim, not as evidence: the verifier does not trust it and checks every requirement against the logs themselves. Request this review only when the task involved code changes, in any conversation mode. The verdict returns to \`${entryPoint}\`.
100994
-
100995
- ## Round
100996
- <1 or 2; for 2, cite the round-1 verdict message id>
100997
-
100998
- ## Mode
100999
- <chat | code | code:enhanced>
101000
-
101001
- ## User message id
101002
- <id of the user's last message: the origin message id of the user task, or from \`chatroom messages anchor\`>
101003
-
101004
- ## Context id
101005
- <id from \`chatroom context read\`, or \`none\` if no context was read for this task>
101006
-
101007
- ## Requested test runs
101008
- <the test commands the user explicitly asked for, one per line, or exactly \`None requested.\`>
101009
-
101010
- ## Claimed outcome
101011
- <requirement-by-requirement what you believe is complete>
101012
-
101013
- ## Evidence pointers
101014
- <builder handoff message ids, commits, PRs, and test results as quoted in those handoffs>
101015
-
101016
- ## Known gaps
101017
- <anything incomplete, or exactly \`None.\`>
101018
-
101019
- ## Handoff
101020
- Send this request to the verifier with the command below, then stop. The verdict returns to \`${entryPoint}\`.
101021
-
101022
- \`\`\`bash
101023
- ${handoffCommand({
101024
- chatroomId: "<chatroom-id>",
101025
- role: entryPoint,
101026
- nextRole: "verifier",
101027
- cliEnvPrefix: ""
101028
- })}
101029
- \`\`\``;
101030
- }
101031
- function getVerifierToEntryPointHandoffTemplate(entryPointRole) {
101032
- const entryPoint = normalizeEntryPointRole5(entryPointRole);
101033
- return `${getHandoffRecipientVisibilityCallout(entryPoint)}
101034
-
101035
- ## Handoff Template (Verifier → ${entryPoint})
101036
-
101037
- Return one advisory verdict for the authoritative request. This review is non-binding: it uses chatroom logs, plus the requested test runs listed in the request, if any, deciding every requirement from the evidence those logs and runs actually contain. It ${VERIFIER_TEST_RULE}. Never accept the claimed outcome as proof. Use the exact sections below, in this order.
101038
-
101039
- ## Verdict
101040
- <exactly one of ${VERIFIER_VERDICTS.join(", ")} as the value; ${ACHIEVED} only if every requirement is met; ${NOT_ACHIEVED} if any requirement is unmet (logs show it was not done, or contradict it); ${INCONCLUSIVE} if none is unmet but any is unverified (logs are silent)>
101041
-
101042
- ## Objective
101043
- <user message id, any prior user messages used, objective in 1-2 sentences>
101044
-
101045
- ## Requirements
101046
- <numbered \`R1 — <requirement> — met | unmet | unverified — <evidence ref>\`>
101047
-
101048
- ## Evidence
101049
- <bullets: \`<message id or handoff> — "<short quote>" — supports R#\`; for a requested test run, \`<command> — exit <result> — supports R#\`>
101050
-
101051
- ## Missing or unmet
101052
- <per unmet or unverified requirement: what is missing and what evidence would resolve it; exactly \`None.\` if ${ACHIEVED}>
101053
-
101054
- ## Scope and limits
101055
- <state the test runs the verifier executed (command and exit result), or "No tests were run; none were requested."; log range read; whether the download was truncated; context id read and whether it matched the request>
101056
-
101057
- ## Handoff
101058
- Run the normal handoff command to \`${entryPoint}\` with this complete verdict, then stop.
101059
-
101060
- \`\`\`bash
101061
- ${handoffCommand({
101062
- chatroomId: "<chatroom-id>",
101063
- role: "verifier",
101064
- nextRole: entryPoint,
101065
- cliEnvPrefix: ""
101066
- })}
101067
- \`\`\``;
101068
- }
101069
- var VERIFIER_VERDICTS, VERIFIER_TEST_RULE = "runs no test the user did not ask for, and never builds, lints, or edits", ACHIEVED, NOT_ACHIEVED, INCONCLUSIVE;
101070
- var init_verifier_handoff_templates = __esm(() => {
101071
- init_command2();
101072
- VERIFIER_VERDICTS = ["ACHIEVED", "NOT_ACHIEVED", "INCONCLUSIVE"];
101073
- [ACHIEVED, NOT_ACHIEVED, INCONCLUSIVE] = VERIFIER_VERDICTS;
101074
- });
101075
-
101076
101100
  // ../../services/backend/prompts/teams/duo/handoff-templates/planner.ts
101077
101101
  var duoPlannerHandoffContract;
101078
101102
  var init_planner = __esm(() => {
@@ -101871,7 +101895,9 @@ var init_glossary = __esm(() => {
101871
101895
  });
101872
101896
 
101873
101897
  // ../../services/backend/prompts/cli/history-retrieval/guidance.ts
101874
- var init_guidance = () => {};
101898
+ var init_guidance = __esm(() => {
101899
+ init_proof_of_verification();
101900
+ });
101875
101901
 
101876
101902
  // ../../services/backend/prompts/sections/general-knowledge.ts
101877
101903
  var init_general_knowledge = __esm(() => {
@@ -101879,6 +101905,7 @@ var init_general_knowledge = __esm(() => {
101879
101905
  init_glossary();
101880
101906
  init_guidance();
101881
101907
  init_utils3();
101908
+ init_proof_of_verification();
101882
101909
  });
101883
101910
 
101884
101911
  // ../../services/backend/prompts/sections/commands-reference.ts
@@ -101899,7 +101926,9 @@ function getInterRoleHandoffRule() {
101899
101926
  // ../../services/backend/prompts/cli/sections/handoff-rules.ts
101900
101927
  var init_handoff_rules = () => {};
101901
101928
  // ../../services/backend/prompts/cli/sections/proof-of-verification.ts
101902
- var init_proof_of_verification = () => {};
101929
+ var init_proof_of_verification2 = __esm(() => {
101930
+ init_proof_of_verification();
101931
+ });
101903
101932
 
101904
101933
  // ../../services/backend/prompts/cli/sections/operating-model.ts
101905
101934
  var init_operating_model = () => {};
@@ -101908,7 +101937,7 @@ var init_operating_model = () => {};
101908
101937
  var init_sections = __esm(() => {
101909
101938
  init_core_responsibilities();
101910
101939
  init_handoff_rules();
101911
- init_proof_of_verification();
101940
+ init_proof_of_verification2();
101912
101941
  init_operating_model();
101913
101942
  });
101914
101943
 
@@ -101975,6 +102004,29 @@ chatroom handoff --chatroom-id="<chatroom-id>" --role="researcher" --next-role="
101975
102004
  \`\`\``;
101976
102005
  });
101977
102006
 
102007
+ // ../../services/backend/prompts/cli/roles/triage.ts
102008
+ var TRIAGE_GUIDANCE;
102009
+ var init_triage3 = __esm(() => {
102010
+ init_sections();
102011
+ TRIAGE_GUIDANCE = `## Triage Operating Model
102012
+
102013
+ You are the triage agent responsible for investigating a reported bug so the entry point can delegate a precise fix. You are advisory only: do not edit implementation files or implement the fix.
102014
+
102015
+ ${"{SESSION_CONTINUITY}"}
102016
+
102017
+ ${getInterRoleHandoffRule()}
102018
+
102019
+ 1. Recover the reported bug from the injected task and chatroom history: the observed behavior, the expected behavior, and any reproduction details. If the expected behavior is not explicit, state the assumption you made.
102020
+ 2. Trace the relevant code paths with concrete repository paths and symbols. Label every finding \`confirmed\` or \`hypothesis\`. Never present a hypothesis as fact.
102021
+ 3. Attempt a focused reproduction only when it is cheap and safe. A focused regression test may be written as evidence. Do not edit implementation files.
102022
+ 4. Write the report using the sections in the injected \`<handoff-templates>\`, in the order given, beginning with the \`## Summary\` section.
102023
+ 5. Hand the report to the configured entry point with the normal command, then stop:
102024
+
102025
+ \`\`\`bash
102026
+ chatroom handoff --chatroom-id="<chatroom-id>" --role="triage" --next-role="{ENTRY_POINT_ROLE}"
102027
+ \`\`\``;
102028
+ });
102029
+
101978
102030
  // ../../services/backend/prompts/cli/roles/uiux-engineer.ts
101979
102031
  var UIUX_ENGINEER_GUIDANCE;
101980
102032
  var init_uiux_engineer3 = __esm(() => {
@@ -102006,6 +102058,8 @@ The handoff must contain every required brief section, repository evidence, chos
102006
102058
  var ACHIEVED2, NOT_ACHIEVED2, INCONCLUSIVE2, VERIFIER_GUIDANCE;
102007
102059
  var init_verifier3 = __esm(() => {
102008
102060
  init_verifier_handoff_templates();
102061
+ init_chat_handoff_template();
102062
+ init_handoff_report_template_body();
102009
102063
  init_sections();
102010
102064
  [ACHIEVED2, NOT_ACHIEVED2, INCONCLUSIVE2] = VERIFIER_VERDICTS;
102011
102065
  VERIFIER_GUIDANCE = `## Verifier Operating Model
@@ -102021,8 +102075,9 @@ ${getInterRoleHandoffRule()}
102021
102075
  2a. Requested test runs: if the user's last message (or prior user messages for this objective) explicitly asks for tests to be run, run exactly those commands from the repository root, record the command and exit result, and count the output as evidence. Run no test the user did not ask for. If the request is absent, run nothing.
102022
102076
  3. Run \`chatroom context read --chatroom-id="<chatroom-id>" --role="verifier"\` and note any mismatch with the request's context id.
102023
102077
  4. Decompose the objective into numbered requirements R1..Rn. Split compound requests and ignore anything the user did not actually ask for.
102078
+ 4a. User expectations: the user's handoff template (the section at the end of this prompt) defines what the user expects from the work. In a code mode, turn each applicable item that concerns the work into an expectation \`U1..Un\`: each requirement's evidence (PR, commit, or file), files changed, Code Change Verification, backlog items moved to \`pending_user_review\` after a verified end-to-end feature with a PR, and any manual steps or unresolved decisions the user must act on. Skip presentation-only items: template disclosure checkboxes, section order, collapsing, diagram format, and Proof of Planning. In \`chat\` mode the template asks only for a direct, concise answer, so add no expectations beyond the requirements.
102024
102079
  5. Find evidence for every requirement in the logs alone: builder handoff reports, planner delegations, quoted test output, commits, and PRs. \`met\` requires concrete evidence in the logs. The planner's claimed outcome is a claim, not evidence. Silence means \`unverified\`. A contradiction, or a log showing the requirement was not done, means \`unmet\`. Never state that tests passed unless a log reports it, or you ran the requested tests yourself.
102025
- 6. Choose the verdict by the rules in the injected verdict template: exactly one of ${VERIFIER_VERDICTS.join(", ")}. ${ACHIEVED2} only if every requirement is met; ${NOT_ACHIEVED2} if any requirement is unmet; ${INCONCLUSIVE2} if none is unmet but any is unverified.
102080
+ 6. Choose the verdict by the rules in the injected verdict template: exactly one of ${VERIFIER_VERDICTS.join(", ")}. ${ACHIEVED2} only if every requirement and every U-expectation is met; ${NOT_ACHIEVED2} if any is unmet; ${INCONCLUSIVE2} if none is unmet but any is unverified.
102026
102081
  7. Follow the injected \`<handoff-templates>\` verdict template exactly, in its order, and put the complete verdict in the handoff. Then hand off to the configured entry point with the normal command, then stop:
102027
102082
 
102028
102083
  \`\`\`bash
@@ -102052,6 +102107,7 @@ var init_fromContext2 = __esm(() => {
102052
102107
  init_builder2();
102053
102108
  init_planner2();
102054
102109
  init_researcher2();
102110
+ init_triage3();
102055
102111
  init_uiux_engineer3();
102056
102112
  init_verifier3();
102057
102113
  init_fromContext();
@@ -138448,4 +138504,4 @@ program2.hook("preAction", async (_thisCommand, actionCommand) => {
138448
138504
  });
138449
138505
  program2.parse();
138450
138506
 
138451
- //# debugId=8506C14FCD932D1964756E2164756E21
138507
+ //# debugId=6447CA0431CEDFDC64756E2164756E21