@fro.bot/systematic 3.13.2 → 3.13.3
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/cli.js
CHANGED
|
@@ -1981,6 +1981,7 @@ function cleanup(agentsRoot, configOptions) {
|
|
|
1981
1981
|
// src/lib/review-artifact-schema.ts
|
|
1982
1982
|
var MAX_REVIEWER_LENGTH = 64;
|
|
1983
1983
|
var MAX_RUN_ID_LENGTH = 64;
|
|
1984
|
+
var MAX_BRANCH_LENGTH = 256;
|
|
1984
1985
|
var MAX_INPUT_ID_LENGTH = 128;
|
|
1985
1986
|
var MAX_REASON_LENGTH = 2048;
|
|
1986
1987
|
var MAX_FINDINGS = 32;
|
|
@@ -2007,6 +2008,9 @@ var AdmittedDispositionSchema = DispositionSchema.exclude(["rejected"]);
|
|
|
2007
2008
|
var HarnessSchema = exports_external.enum(["opencode", "pi", "claude-code"]);
|
|
2008
2009
|
var RepoRelativePathSchema = boundedText(256).regex(/^(?!\/)(?![A-Za-z]:[\\/])(?!\\).+/);
|
|
2009
2010
|
var ReviewerSchema = boundedText(MAX_REVIEWER_LENGTH);
|
|
2011
|
+
var BranchSchema = exports_external.string().max(MAX_BRANCH_LENGTH);
|
|
2012
|
+
var HeadShaSchema = exports_external.string().regex(/^[0-9a-f]{40}$/);
|
|
2013
|
+
var CompletedAtSchema = exports_external.iso.datetime({ offset: false });
|
|
2010
2014
|
var ReasonSchema = boundedText(MAX_REASON_LENGTH);
|
|
2011
2015
|
var FindingTitleSchema = boundedText(256);
|
|
2012
2016
|
var SeveritySchema = exports_external.enum(["P0", "P1", "P2", "P3", "unknown"]);
|
|
@@ -2115,6 +2119,8 @@ var CoverageSchema = exports_external.object({
|
|
|
2115
2119
|
var ReviewArtifactSchema = exports_external.object({
|
|
2116
2120
|
schema_version: exports_external.literal(1),
|
|
2117
2121
|
run_id: boundedText(MAX_RUN_ID_LENGTH),
|
|
2122
|
+
branch: BranchSchema,
|
|
2123
|
+
head_sha: HeadShaSchema,
|
|
2118
2124
|
mode: exports_external.enum(["interactive", "autofix", "headless"]),
|
|
2119
2125
|
harness: HarnessSchema,
|
|
2120
2126
|
run_status: exports_external.enum([
|
|
@@ -2124,6 +2130,7 @@ var ReviewArtifactSchema = exports_external.object({
|
|
|
2124
2130
|
"abnormal"
|
|
2125
2131
|
]),
|
|
2126
2132
|
verdict: boundedText(256),
|
|
2133
|
+
completed_at: CompletedAtSchema,
|
|
2127
2134
|
dispatches: exports_external.array(DispatchSchema).max(MAX_PERSONAS),
|
|
2128
2135
|
input_findings: exports_external.array(InputFindingSchema).max(MAX_FINDINGS * MAX_PERSONAS),
|
|
2129
2136
|
findings: exports_external.array(SynthesizedFindingSchema).max(MAX_FINDINGS),
|
|
@@ -104,6 +104,8 @@ type SynthesizedFinding = Omit<SynthesizedFindingFields, 'validated' | 'validati
|
|
|
104
104
|
export declare const ReviewArtifactSchema: z.ZodObject<{
|
|
105
105
|
schema_version: z.ZodLiteral<1>;
|
|
106
106
|
run_id: z.ZodString;
|
|
107
|
+
branch: z.ZodString;
|
|
108
|
+
head_sha: z.ZodString;
|
|
107
109
|
mode: z.ZodEnum<{
|
|
108
110
|
autofix: "autofix";
|
|
109
111
|
headless: "headless";
|
|
@@ -121,6 +123,7 @@ export declare const ReviewArtifactSchema: z.ZodObject<{
|
|
|
121
123
|
in_progress: "in_progress";
|
|
122
124
|
}>;
|
|
123
125
|
verdict: z.ZodString;
|
|
126
|
+
completed_at: z.ZodISODateTime;
|
|
124
127
|
dispatches: z.ZodArray<z.ZodObject<{
|
|
125
128
|
persona: z.ZodString;
|
|
126
129
|
dispatch_outcome: z.ZodEnum<{
|
package/package.json
CHANGED
|
@@ -706,18 +706,7 @@ After presenting findings and verdict (Stage 6), route the next steps by mode. R
|
|
|
706
706
|
- `review-summary.json` is the parent-owned synthesis artifact. Its lifecycle, dispatch outcomes, complete input ledger, synthesized and filtered findings with provenance, disposition counts, and downstream work are defined in the [canonical synthesis artifact contract](./references/synthesis-artifact-contract.md), whose vocabulary and bounds are executable in [`findings-schema.json`](./references/findings-schema.json).
|
|
707
707
|
- Before finalizing, follow the [artifact validation and failure path](./references/synthesis-artifact-contract.md).
|
|
708
708
|
- Initialize the artifact before dispatch and persist only validated parent-owned records. Finalize lifecycle and reconciliation after synthesis; preserve the existing degraded and abnormal-run behavior described in the canonical contract.
|
|
709
|
-
-
|
|
710
|
-
```json
|
|
711
|
-
{
|
|
712
|
-
"run_id": "<run-id>",
|
|
713
|
-
"branch": "<git branch --show-current at dispatch time>",
|
|
714
|
-
"head_sha": "<git rev-parse HEAD at dispatch time>",
|
|
715
|
-
"harness": "<opencode | pi | claude-code>",
|
|
716
|
-
"verdict": "<Ready to merge | Ready with fixes | Not ready>",
|
|
717
|
-
"completed_at": "<ISO 8601 UTC timestamp>"
|
|
718
|
-
}
|
|
719
|
-
```
|
|
720
|
-
Capture `branch` and `head_sha` at dispatch time (before any autofixes land), and write the file after the verdict is finalized. This file is additive -- pre-existing artifacts that predate this field are still valid, and downstream skills fall back to file mtime when it is missing.
|
|
709
|
+
- Capture `branch` and `head_sha` at dispatch time, before any autofixes land, and write them into `review-summary.json` with `completed_at` when the verdict is finalized; see the [canonical synthesis artifact contract](./references/synthesis-artifact-contract.md) for the provenance semantics.
|
|
721
710
|
- In autofix mode, create durable todo files only for unresolved actionable findings whose final owner is `downstream-resolver`. Load the `todos` skill (Create section) for the canonical directory path, naming convention, YAML frontmatter structure, and template. Each todo should map the finding's severity to the todo priority (`P0`/`P1` -> `p1`, `P2` -> `p2`, `P3` -> `p3`) and set `status: ready` since these findings have already been triaged by synthesis.
|
|
722
711
|
- Do not create todos for `advisory` findings, `owner: human`, `owner: release`, or protected-artifact cleanup suggestions.
|
|
723
712
|
- If only advisory outputs remain, create no todos.
|
|
@@ -12,6 +12,14 @@
|
|
|
12
12
|
"maxLength": 64,
|
|
13
13
|
"pattern": "\\S"
|
|
14
14
|
},
|
|
15
|
+
"branch": {
|
|
16
|
+
"type": "string",
|
|
17
|
+
"maxLength": 256
|
|
18
|
+
},
|
|
19
|
+
"head_sha": {
|
|
20
|
+
"type": "string",
|
|
21
|
+
"pattern": "^[0-9a-f]{40}$"
|
|
22
|
+
},
|
|
15
23
|
"mode": {
|
|
16
24
|
"type": "string",
|
|
17
25
|
"enum": ["interactive", "autofix", "headless"]
|
|
@@ -30,6 +38,11 @@
|
|
|
30
38
|
"maxLength": 256,
|
|
31
39
|
"pattern": "\\S"
|
|
32
40
|
},
|
|
41
|
+
"completed_at": {
|
|
42
|
+
"type": "string",
|
|
43
|
+
"format": "date-time",
|
|
44
|
+
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
|
|
45
|
+
},
|
|
33
46
|
"dispatches": {
|
|
34
47
|
"maxItems": 64,
|
|
35
48
|
"type": "array",
|
|
@@ -500,10 +513,13 @@
|
|
|
500
513
|
"required": [
|
|
501
514
|
"schema_version",
|
|
502
515
|
"run_id",
|
|
516
|
+
"branch",
|
|
517
|
+
"head_sha",
|
|
503
518
|
"mode",
|
|
504
519
|
"harness",
|
|
505
520
|
"run_status",
|
|
506
521
|
"verdict",
|
|
522
|
+
"completed_at",
|
|
507
523
|
"dispatches",
|
|
508
524
|
"input_findings",
|
|
509
525
|
"findings",
|
|
@@ -136,12 +136,12 @@ The artifact must preserve these distinctions:
|
|
|
136
136
|
or higher.
|
|
137
137
|
|
|
138
138
|
The artifact also includes applied fixes, residual actionable work,
|
|
139
|
-
advisory-only outputs, coverage data, and the harness value.
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
139
|
+
advisory-only outputs, coverage data, and the harness value. The run artifact
|
|
140
|
+
itself carries the branch and HEAD provenance alongside the run ID, harness,
|
|
141
|
+
verdict, and completion timestamp. The parent captures `branch` and `head_sha`
|
|
142
|
+
at dispatch, before autofixes land, and writes the artifact after the verdict
|
|
143
|
+
is finalized; consumers can therefore tell whether the artifact describes the
|
|
144
|
+
current checkout.
|
|
145
145
|
|
|
146
146
|
Validation and persistence remain parent-side: no per-agent record or finding
|
|
147
147
|
is written or merged until that finding passes schema and environment-value
|