patchwork-os 0.2.0-beta.13.canary.287 → 0.2.0-beta.13.canary.288

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "patchwork-os",
3
- "version": "0.2.0-beta.13.canary.287",
3
+ "version": "0.2.0-beta.13.canary.288",
4
4
  "description": "Your personal AI runtime, local-first. Patchwork OS gives any AI model a consistent set of tools, YAML recipes, a delegation policy with approval queue, and a durable trace memory — all on your machine, all under your policy.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -35,10 +35,12 @@ trigger:
35
35
  default: ""
36
36
  description: "owner/repo the issue is filed against (set this to enable)"
37
37
  steps:
38
- - tool: git.log_since
38
+ - id: get_commits
39
+ tool: git.log_since
39
40
  since: 12h
40
41
  into: recent
41
- - agent:
42
+ - id: triage_agent
43
+ agent:
42
44
  prompt: |
43
45
  Tests just failed. Runner: {{runner}}. Failed {{failed}} / {{total}}.
44
46
 
@@ -53,24 +55,53 @@ steps:
53
55
  command to run to confirm.
54
56
  driver: claude-code
55
57
  into: triage
56
- - tool: file.write
58
+ # Reproducibility gate (issue-hygiene). A worker triage is a LEAD, not a
59
+ # verified diagnosis — the on_test_run event can fire on a flake, a transient,
60
+ # or an already-fixed failure (e.g. #1046: a triage that confidently blamed a
61
+ # commit for a test that actually passes on `main`). Before filing a real,
62
+ # brand-exposed issue, re-run the named test(s) in ISOLATION and only proceed
63
+ # if the failure still reproduces. A non-reproducing run writes the draft note
64
+ # (below) but files NO issue — strictly noise-reducing, never blocks a real one.
65
+ - id: verify_reproduced
66
+ agent:
67
+ prompt: |
68
+ A test run reported failures and this triage was written:
69
+
70
+ {{triage}}
71
+
72
+ Re-run ONLY the specific failing test(s) named above, in isolation, on the
73
+ current checkout, to confirm they still fail — e.g.
74
+ `npx vitest run <file> -t "<test name>"`. A test that PASSES on isolated
75
+ re-run is a flake / transient / already-fixed and must NOT be filed.
76
+
77
+ Output EXACTLY one word and nothing else:
78
+ true — the failure REPRODUCED (a real, current failure worth filing)
79
+ false — it did NOT reproduce (flake / transient / already green)
80
+ driver: claude-code
81
+ into: reproduced
82
+ - id: write_note
83
+ tool: file.write
57
84
  path: ~/.patchwork/inbox/test-triage-{{date}}-{{time}}.md
58
85
  content: |
59
86
  # Test triage — {{date}} {{time}}
60
87
 
61
- Runner {{runner}} · failed {{failed}}/{{total}}
88
+ Runner {{runner}} · failed {{failed}}/{{total}} · reproduced: {{reproduced}}
62
89
 
63
90
  {{triage}}
64
- # The risky owned action. Runs AFTER the draft is written, so a gate
65
- # rejection (or a missing `repo`) never loses the triage note.
66
- - tool: github.create_issue
91
+ # The risky owned action. Runs AFTER the draft is written (so a gate rejection,
92
+ # a missing `repo`, or a non-reproducing failure never loses the triage note)
93
+ # and ONLY when the failure reproduced — `when` skips the step (not a failure)
94
+ # on a falsy guard ("", "false", "0", "null", "undefined").
95
+ - id: file_issue
96
+ when: "{{reproduced}}"
97
+ tool: github.create_issue
67
98
  repo: "{{repo}}"
68
99
  title: "Test triage {{date}}: {{runner}} failing {{failed}}/{{total}}"
69
100
  body: |
70
101
  {{triage}}
71
102
 
72
103
  ---
73
- _Filed by the Test Guardian Worker from a failing {{runner}} run._
104
+ _Filed by the Test Guardian Worker from a failing {{runner}} run (reproduced on isolated re-run)._
74
105
  labels:
75
106
  - test-failure
76
107
  into: filed_issue