auditor-lambda 0.2.8 → 0.2.9
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/README.md +6 -0
- package/audit-code-wrapper-lib.mjs +1 -1
- package/dist/adapters/eslint.js +9 -5
- package/dist/cli.d.ts +42 -1
- package/dist/cli.js +114 -64
- package/dist/extractors/bucketing.d.ts +4 -0
- package/dist/extractors/bucketing.js +6 -2
- package/dist/extractors/disposition.d.ts +4 -0
- package/dist/extractors/disposition.js +6 -2
- package/dist/extractors/fileInventory.js +24 -28
- package/dist/extractors/flows.d.ts +5 -0
- package/dist/extractors/flows.js +18 -38
- package/dist/extractors/pathPatterns.d.ts +10 -3
- package/dist/extractors/pathPatterns.js +109 -61
- package/dist/extractors/surfaces.d.ts +4 -0
- package/dist/extractors/surfaces.js +11 -11
- package/dist/index.d.ts +1 -1
- package/dist/index.js +2 -1
- package/dist/io/artifacts.d.ts +55 -40
- package/dist/io/artifacts.js +73 -110
- package/dist/io/json.js +52 -21
- package/dist/io/runArtifacts.d.ts +1 -1
- package/dist/io/runArtifacts.js +26 -3
- package/dist/orchestrator/advance.js +83 -62
- package/dist/orchestrator/flowCoverage.js +11 -5
- package/dist/orchestrator/flowPlanning.d.ts +7 -2
- package/dist/orchestrator/flowPlanning.js +46 -21
- package/dist/orchestrator/flowRequeue.js +28 -8
- package/dist/orchestrator/internalExecutors.js +12 -8
- package/dist/orchestrator/planning.js +25 -3
- package/dist/orchestrator/requeue.js +11 -1
- package/dist/orchestrator/taskBuilder.d.ts +4 -2
- package/dist/orchestrator/taskBuilder.js +153 -52
- package/dist/orchestrator/unitBuilder.d.ts +3 -1
- package/dist/orchestrator/unitBuilder.js +24 -16
- package/dist/prompts/renderWorkerPrompt.d.ts +1 -1
- package/dist/prompts/renderWorkerPrompt.js +16 -8
- package/dist/providers/claudeCodeProvider.d.ts +4 -1
- package/dist/providers/claudeCodeProvider.js +8 -5
- package/dist/providers/localSubprocessProvider.d.ts +4 -0
- package/dist/providers/localSubprocessProvider.js +7 -2
- package/dist/providers/spawnLoggedCommand.d.ts +9 -1
- package/dist/providers/spawnLoggedCommand.js +77 -29
- package/dist/reporting/synthesis.d.ts +2 -0
- package/dist/reporting/synthesis.js +12 -9
- package/dist/supervisor/operatorHandoff.js +48 -18
- package/dist/supervisor/runLedger.d.ts +1 -1
- package/dist/supervisor/runLedger.js +112 -5
- package/dist/supervisor/sessionConfig.js +10 -10
- package/dist/types/externalAnalyzer.d.ts +3 -0
- package/dist/types/flowCoverage.d.ts +5 -1
- package/dist/types/flowCoverage.js +5 -1
- package/dist/types/flows.d.ts +5 -1
- package/dist/types/flows.js +1 -1
- package/dist/types/runLedger.d.ts +5 -1
- package/dist/types/runLedger.js +6 -1
- package/dist/types/runtimeValidation.d.ts +12 -3
- package/dist/types/runtimeValidation.js +16 -1
- package/dist/types/sessionConfig.d.ts +15 -2
- package/dist/types/sessionConfig.js +15 -1
- package/dist/types/surfaces.d.ts +4 -1
- package/dist/types/surfaces.js +1 -1
- package/dist/types/workerSession.d.ts +9 -0
- package/dist/types/workerSession.js +5 -1
- package/dist/validation/artifacts.d.ts +1 -1
- package/dist/validation/artifacts.js +33 -20
- package/dist/validation/auditResults.d.ts +2 -2
- package/dist/validation/auditResults.js +7 -15
- package/dist/validation/basic.d.ts +9 -1
- package/dist/validation/basic.js +40 -3
- package/dist/validation/sessionConfig.d.ts +4 -2
- package/dist/validation/sessionConfig.js +62 -15
- package/docs/agent-integrations.md +29 -9
- package/docs/next-steps.md +21 -4
- package/docs/packaging.md +14 -0
- package/docs/product-direction.md +22 -0
- package/docs/production-launch-bar.md +2 -0
- package/docs/releasing.md +17 -0
- package/docs/remediation-baseline.md +75 -0
- package/docs/run-flow.md +23 -11
- package/docs/session-config.md +50 -5
- package/docs/supervisor.md +7 -0
- package/docs/workflow-refactor-brief.md +177 -0
- package/package.json +1 -1
- package/schemas/audit_result.schema.json +4 -1
- package/schemas/audit_task.schema.json +3 -1
- package/schemas/coverage_matrix.schema.json +3 -3
- package/schemas/critical_flows.schema.json +6 -2
- package/schemas/file_disposition.schema.json +2 -2
- package/schemas/finding.schema.json +9 -4
- package/schemas/flow_coverage.schema.json +2 -2
- package/schemas/repo_manifest.schema.json +4 -4
- package/schemas/risk_register.schema.json +2 -2
- package/schemas/runtime_validation_report.schema.json +2 -2
- package/schemas/runtime_validation_tasks.schema.json +8 -2
- package/schemas/surface_manifest.schema.json +6 -3
- package/schemas/unit_manifest.schema.json +3 -2
- package/skills/audit-code/SKILL.md +5 -0
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
# Workflow Refactor Brief
|
|
2
|
+
|
|
3
|
+
This document is the handoff for the next context window.
|
|
4
|
+
|
|
5
|
+
Use it as the source of truth for the workflow refactor before running a fresh audit again.
|
|
6
|
+
|
|
7
|
+
## Why this refactor is needed
|
|
8
|
+
|
|
9
|
+
The current implementation still advances deterministic audit state correctly, but the semantic-review phase has drifted away from the intended product behavior.
|
|
10
|
+
|
|
11
|
+
The key symptom is that the backend can currently treat `provider` selection as the owner of review work, which is how the recent rerun ended up trying to use `claude-code` from `.audit-artifacts/session-config.json`.
|
|
12
|
+
|
|
13
|
+
That is not the intended workflow.
|
|
14
|
+
|
|
15
|
+
## Intended workflow
|
|
16
|
+
|
|
17
|
+
The intended `/audit-code` workflow is:
|
|
18
|
+
|
|
19
|
+
1. The active conversation agent owns semantic review work.
|
|
20
|
+
2. Deterministic planning computes which files need which lenses.
|
|
21
|
+
3. Pending review is partitioned into non-overlapping review blocks, preferably grouped by lens.
|
|
22
|
+
4. One dispatched review task should correspond to one review block.
|
|
23
|
+
5. `agent_task_batch_size` should stay `1` by default.
|
|
24
|
+
6. If the active conversation agent can delegate to subagents in parallel, that fan-out belongs to the host agent runtime, not to the backend session config.
|
|
25
|
+
7. Backend provider adapters are fallback compatibility bridges only. They should not be the default review owner.
|
|
26
|
+
|
|
27
|
+
## Current implementation drift
|
|
28
|
+
|
|
29
|
+
The current code differs from that model in several important ways.
|
|
30
|
+
|
|
31
|
+
### 1. Review ownership is provider-mediated
|
|
32
|
+
|
|
33
|
+
Today, the `agent` executor in the backend fallback path is still routed through `createFreshSessionProvider()` and may spawn an external CLI such as `claude` or `opencode`.
|
|
34
|
+
|
|
35
|
+
Relevant files:
|
|
36
|
+
|
|
37
|
+
- [src/cli.ts](/C:/Code/auditor-lambda/src/cli.ts:771)
|
|
38
|
+
- [src/providers/index.ts](/C:/Code/auditor-lambda/src/providers/index.ts:37)
|
|
39
|
+
- [src/providers/claudeCodeProvider.ts](/C:/Code/auditor-lambda/src/providers/claudeCodeProvider.ts:12)
|
|
40
|
+
- [src/providers/opencodeProvider.ts](/C:/Code/auditor-lambda/src/providers/opencodeProvider.ts)
|
|
41
|
+
- [src/providers/spawnLoggedCommand.ts](/C:/Code/auditor-lambda/src/providers/spawnLoggedCommand.ts:24)
|
|
42
|
+
|
|
43
|
+
### 2. Task planning is unit-first, not lens-first
|
|
44
|
+
|
|
45
|
+
`buildChunkedAuditTasks()` currently creates tasks as `unit x lens`, then optionally splits oversized files into separate per-lens tasks.
|
|
46
|
+
|
|
47
|
+
Relevant files:
|
|
48
|
+
|
|
49
|
+
- [src/orchestrator/taskBuilder.ts](/C:/Code/auditor-lambda/src/orchestrator/taskBuilder.ts:101)
|
|
50
|
+
- [src/orchestrator/unitBuilder.ts](/C:/Code/auditor-lambda/src/orchestrator/unitBuilder.ts:130)
|
|
51
|
+
|
|
52
|
+
### 3. Required lenses are unioned at the unit level
|
|
53
|
+
|
|
54
|
+
The planner derives `required_lenses` for a unit, then applies that whole union to every file in the unit.
|
|
55
|
+
|
|
56
|
+
That means the task count grows with `units x required_lenses`, not with a deliberately partitioned set of file/lens review blocks.
|
|
57
|
+
|
|
58
|
+
Relevant files:
|
|
59
|
+
|
|
60
|
+
- [src/orchestrator/unitBuilder.ts](/C:/Code/auditor-lambda/src/orchestrator/unitBuilder.ts:153)
|
|
61
|
+
- [src/orchestrator/planning.ts](/C:/Code/auditor-lambda/src/orchestrator/planning.ts:63)
|
|
62
|
+
- [src/coverage.ts](/C:/Code/auditor-lambda/src/coverage.ts:29)
|
|
63
|
+
|
|
64
|
+
### 4. Flow augmentation adds overlapping review tasks
|
|
65
|
+
|
|
66
|
+
After the base unit tasks are built, the planner adds extra flow-aware tasks rather than repartitioning the pending review set into one global non-overlapping dispatch plan.
|
|
67
|
+
|
|
68
|
+
Relevant file:
|
|
69
|
+
|
|
70
|
+
- [src/orchestrator/flowPlanning.ts](/C:/Code/auditor-lambda/src/orchestrator/flowPlanning.ts:9)
|
|
71
|
+
|
|
72
|
+
### 5. `parallel_workers` means subprocess fan-out, not agent-owned parallelism
|
|
73
|
+
|
|
74
|
+
The current `parallel_workers` setting only controls how many external provider worker runs the backend fallback CLI launches.
|
|
75
|
+
|
|
76
|
+
It does not represent, and should not limit, the active conversation agent's own ability to use subagents.
|
|
77
|
+
|
|
78
|
+
Relevant files:
|
|
79
|
+
|
|
80
|
+
- [src/cli.ts](/C:/Code/auditor-lambda/src/cli.ts:83)
|
|
81
|
+
- [src/cli.ts](/C:/Code/auditor-lambda/src/cli.ts:960)
|
|
82
|
+
|
|
83
|
+
## Evidence from the current stale audit
|
|
84
|
+
|
|
85
|
+
The current stale audit run produced:
|
|
86
|
+
|
|
87
|
+
- `91` units
|
|
88
|
+
- average `3.26` required lenses per unit
|
|
89
|
+
- `333` audit tasks total
|
|
90
|
+
- `294` regular unit-lens tasks
|
|
91
|
+
- `10` large-file split tasks
|
|
92
|
+
- `29` flow tasks
|
|
93
|
+
|
|
94
|
+
That fan-out is consistent with the current unit-first planner, not with the intended lens-block dispatch model.
|
|
95
|
+
|
|
96
|
+
## Refactor goals
|
|
97
|
+
|
|
98
|
+
The next implementation pass should do the following.
|
|
99
|
+
|
|
100
|
+
### A. Make the active conversation agent the semantic-review owner
|
|
101
|
+
|
|
102
|
+
The `agent` executor should represent review work owned by the current conversation or host agent session.
|
|
103
|
+
|
|
104
|
+
Target behavior:
|
|
105
|
+
|
|
106
|
+
- normal `/audit-code` usage does not require `provider: "claude-code"` or `provider: "opencode"`
|
|
107
|
+
- session-config should not be the normal way to choose a second LLM for review
|
|
108
|
+
- backend provider bridges remain available only for explicit fallback workflows
|
|
109
|
+
|
|
110
|
+
### B. Plan review work at the file/lens level
|
|
111
|
+
|
|
112
|
+
Coverage should still know which files require which lenses, but dispatch planning should work from unresolved `(file, lens)` obligations rather than from unit-wide lens unions.
|
|
113
|
+
|
|
114
|
+
Target behavior:
|
|
115
|
+
|
|
116
|
+
- each review block should have explicit `file_paths`
|
|
117
|
+
- each review block should represent one lens
|
|
118
|
+
- review blocks in the same dispatch wave should be file-disjoint unless overlap is intentionally justified
|
|
119
|
+
|
|
120
|
+
### C. Partition pending review into non-overlapping blocks
|
|
121
|
+
|
|
122
|
+
Replace the current unit-first task planner with a lens-aware block planner.
|
|
123
|
+
|
|
124
|
+
Target behavior:
|
|
125
|
+
|
|
126
|
+
- no combinatorial `unit x lens` explosion unless that is genuinely the smallest valid partition
|
|
127
|
+
- large-file splitting may remain, but it should happen inside the lens-block planner
|
|
128
|
+
- critical-flow context should influence block construction without blindly adding overlapping tasks on top
|
|
129
|
+
|
|
130
|
+
### D. Keep result ingestion deterministic
|
|
131
|
+
|
|
132
|
+
The current ingestion model is mostly sound and should be preserved.
|
|
133
|
+
|
|
134
|
+
Relevant files:
|
|
135
|
+
|
|
136
|
+
- [src/orchestrator/resultIngestion.ts](/C:/Code/auditor-lambda/src/orchestrator/resultIngestion.ts)
|
|
137
|
+
- [src/coverage.ts](/C:/Code/auditor-lambda/src/coverage.ts:42)
|
|
138
|
+
|
|
139
|
+
### E. Reframe session-config as backend fallback only
|
|
140
|
+
|
|
141
|
+
`session-config.json` should continue to configure backend fallback bridges, but it should not be treated as the owner of semantic-review orchestration in the canonical workflow.
|
|
142
|
+
|
|
143
|
+
`parallel_workers` should either:
|
|
144
|
+
|
|
145
|
+
- become a legacy fallback-only knob, or
|
|
146
|
+
- be removed from the semantic-review mental model entirely
|
|
147
|
+
|
|
148
|
+
## Acceptance criteria
|
|
149
|
+
|
|
150
|
+
The refactor should be treated as done only when all of the following are true.
|
|
151
|
+
|
|
152
|
+
- Starting `/audit-code` in a conversation does not rely on an external `claude-code` or `opencode` subprocess to own semantic review.
|
|
153
|
+
- The backend fallback still supports deterministic stages and explicit compatibility bridges.
|
|
154
|
+
- The default dispatch granularity for semantic review remains one review block per task.
|
|
155
|
+
- Pending review tasks are planned as lens-aware, non-overlapping file blocks.
|
|
156
|
+
- `parallel_workers` no longer defines the default semantic-review parallelism model.
|
|
157
|
+
- The next fresh audit can be run from a clean slate without inheriting the current stale provider-mediated task queue.
|
|
158
|
+
|
|
159
|
+
## Suggested implementation order
|
|
160
|
+
|
|
161
|
+
1. Refactor the review-ownership model in [src/cli.ts](/C:/Code/auditor-lambda/src/cli.ts), [src/providers/index.ts](/C:/Code/auditor-lambda/src/providers/index.ts), and related supervisor docs.
|
|
162
|
+
2. Replace the current task planner in [src/orchestrator/taskBuilder.ts](/C:/Code/auditor-lambda/src/orchestrator/taskBuilder.ts) with a lens-block planner.
|
|
163
|
+
3. Rework flow-aware planning in [src/orchestrator/flowPlanning.ts](/C:/Code/auditor-lambda/src/orchestrator/flowPlanning.ts) so it participates in block construction instead of layering overlapping tasks afterward.
|
|
164
|
+
4. Update docs and tests.
|
|
165
|
+
5. Delete the stale audit state and rerun the audit from scratch.
|
|
166
|
+
|
|
167
|
+
## Clean rerun after refactor
|
|
168
|
+
|
|
169
|
+
Once the refactor is in place, the next context should:
|
|
170
|
+
|
|
171
|
+
1. keep the source changes and documentation already in the worktree
|
|
172
|
+
2. delete `.audit-artifacts/`
|
|
173
|
+
3. delete `audit-report.md`
|
|
174
|
+
4. run the workflow again from a clean state
|
|
175
|
+
5. treat the new audit output as authoritative
|
|
176
|
+
|
|
177
|
+
For the remediation baseline that should survive the stale audit reset, see [docs/remediation-baseline.md](/C:/Code/auditor-lambda/docs/remediation-baseline.md).
|
package/package.json
CHANGED
|
@@ -20,7 +20,10 @@
|
|
|
20
20
|
"task_id": { "type": "string" },
|
|
21
21
|
"unit_id": { "type": "string" },
|
|
22
22
|
"pass_id": { "type": "string" },
|
|
23
|
-
"lens": {
|
|
23
|
+
"lens": {
|
|
24
|
+
"type": "string",
|
|
25
|
+
"enum": ["correctness", "architecture", "maintainability", "security", "reliability", "performance", "data_integrity", "tests", "operability", "config_deployment"]
|
|
26
|
+
},
|
|
24
27
|
"agent_role": { "type": "string" },
|
|
25
28
|
"file_coverage": {
|
|
26
29
|
"type": "array",
|
|
@@ -21,6 +21,7 @@
|
|
|
21
21
|
},
|
|
22
22
|
"file_paths": {
|
|
23
23
|
"type": "array",
|
|
24
|
+
"minItems": 1,
|
|
24
25
|
"items": { "type": "string" }
|
|
25
26
|
},
|
|
26
27
|
"line_ranges": {
|
|
@@ -44,7 +45,7 @@
|
|
|
44
45
|
"mechanical_results_ref": { "type": "string" },
|
|
45
46
|
"risk_register_ref": { "type": "string" }
|
|
46
47
|
},
|
|
47
|
-
"additionalProperties":
|
|
48
|
+
"additionalProperties": { "type": "string" }
|
|
48
49
|
},
|
|
49
50
|
"rationale": { "type": "string" },
|
|
50
51
|
"priority": {
|
|
@@ -53,6 +54,7 @@
|
|
|
53
54
|
},
|
|
54
55
|
"tags": {
|
|
55
56
|
"type": "array",
|
|
57
|
+
"minItems": 1,
|
|
56
58
|
"items": { "type": "string" }
|
|
57
59
|
},
|
|
58
60
|
"status": {
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"type": "array",
|
|
10
10
|
"items": {
|
|
11
11
|
"type": "object",
|
|
12
|
-
"required": ["path", "classification_status", "audit_status"],
|
|
12
|
+
"required": ["path", "unit_ids", "classification_status", "audit_status", "required_lenses", "completed_lenses"],
|
|
13
13
|
"properties": {
|
|
14
14
|
"path": { "type": "string" },
|
|
15
15
|
"unit_ids": {
|
|
@@ -39,9 +39,9 @@
|
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
41
|
},
|
|
42
|
-
"additionalProperties":
|
|
42
|
+
"additionalProperties": false
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
45
|
},
|
|
46
|
-
"additionalProperties":
|
|
46
|
+
"additionalProperties": false
|
|
47
47
|
}
|
|
@@ -31,11 +31,15 @@
|
|
|
31
31
|
"notes": {
|
|
32
32
|
"type": "array",
|
|
33
33
|
"items": { "type": "string" }
|
|
34
|
+
},
|
|
35
|
+
"confidence": {
|
|
36
|
+
"type": "string",
|
|
37
|
+
"enum": ["high", "low"]
|
|
34
38
|
}
|
|
35
39
|
},
|
|
36
|
-
"additionalProperties":
|
|
40
|
+
"additionalProperties": false
|
|
37
41
|
}
|
|
38
42
|
}
|
|
39
43
|
},
|
|
40
|
-
"additionalProperties":
|
|
44
|
+
"additionalProperties": false
|
|
41
45
|
}
|
|
@@ -11,7 +11,8 @@
|
|
|
11
11
|
"confidence",
|
|
12
12
|
"lens",
|
|
13
13
|
"affected_files",
|
|
14
|
-
"summary"
|
|
14
|
+
"summary",
|
|
15
|
+
"evidence"
|
|
15
16
|
],
|
|
16
17
|
"properties": {
|
|
17
18
|
"id": { "type": "string" },
|
|
@@ -54,13 +55,14 @@
|
|
|
54
55
|
"summary": { "type": "string" },
|
|
55
56
|
"affected_files": {
|
|
56
57
|
"type": "array",
|
|
58
|
+
"minItems": 1,
|
|
57
59
|
"items": {
|
|
58
60
|
"type": "object",
|
|
59
61
|
"required": ["path"],
|
|
60
62
|
"properties": {
|
|
61
63
|
"path": { "type": "string" },
|
|
62
|
-
"line_start": { "type": "integer" },
|
|
63
|
-
"line_end": { "type": "integer" },
|
|
64
|
+
"line_start": { "type": "integer", "minimum": 1 },
|
|
65
|
+
"line_end": { "type": "integer", "minimum": 1 },
|
|
64
66
|
"symbol": { "type": "string" }
|
|
65
67
|
},
|
|
66
68
|
"additionalProperties": false
|
|
@@ -70,17 +72,20 @@
|
|
|
70
72
|
"likelihood": { "type": "string" },
|
|
71
73
|
"evidence": {
|
|
72
74
|
"type": "array",
|
|
75
|
+
"minItems": 1,
|
|
73
76
|
"items": { "type": "string" }
|
|
74
77
|
},
|
|
75
78
|
"reproduction": {
|
|
76
79
|
"type": "array",
|
|
80
|
+
"minItems": 1,
|
|
77
81
|
"items": { "type": "string" }
|
|
78
82
|
},
|
|
79
83
|
"systemic": { "type": "boolean" },
|
|
80
84
|
"related_findings": {
|
|
81
85
|
"type": "array",
|
|
86
|
+
"minItems": 1,
|
|
82
87
|
"items": { "type": "string" }
|
|
83
88
|
}
|
|
84
89
|
},
|
|
85
|
-
"additionalProperties":
|
|
90
|
+
"additionalProperties": false
|
|
86
91
|
}
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"root": { "type": "string" },
|
|
14
14
|
"default_branch": { "type": "string" }
|
|
15
15
|
},
|
|
16
|
-
"additionalProperties":
|
|
16
|
+
"additionalProperties": false
|
|
17
17
|
},
|
|
18
18
|
"generated_at": { "type": "string" },
|
|
19
19
|
"files": {
|
|
@@ -24,14 +24,14 @@
|
|
|
24
24
|
"properties": {
|
|
25
25
|
"path": { "type": "string" },
|
|
26
26
|
"language": { "type": "string" },
|
|
27
|
-
"size_bytes": { "type": "integer" },
|
|
27
|
+
"size_bytes": { "type": "integer", "minimum": 0 },
|
|
28
28
|
"hash": { "type": "string" },
|
|
29
29
|
"excluded": { "type": "boolean" },
|
|
30
30
|
"exclusion_reason": { "type": "string" }
|
|
31
31
|
},
|
|
32
|
-
"additionalProperties":
|
|
32
|
+
"additionalProperties": false
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
35
|
},
|
|
36
|
-
"additionalProperties":
|
|
36
|
+
"additionalProperties": false
|
|
37
37
|
}
|
|
@@ -18,10 +18,16 @@
|
|
|
18
18
|
},
|
|
19
19
|
"target_paths": {
|
|
20
20
|
"type": "array",
|
|
21
|
+
"minItems": 1,
|
|
21
22
|
"items": { "type": "string" }
|
|
22
23
|
},
|
|
23
24
|
"reason": { "type": "string" },
|
|
24
25
|
"priority": { "type": "string", "enum": ["high", "medium", "low"] },
|
|
26
|
+
"command": {
|
|
27
|
+
"type": "array",
|
|
28
|
+
"minItems": 1,
|
|
29
|
+
"items": { "type": "string" }
|
|
30
|
+
},
|
|
25
31
|
"suggested_checks": {
|
|
26
32
|
"type": "array",
|
|
27
33
|
"items": { "type": "string" }
|
|
@@ -31,9 +37,9 @@
|
|
|
31
37
|
"items": { "type": "string" }
|
|
32
38
|
}
|
|
33
39
|
},
|
|
34
|
-
"additionalProperties":
|
|
40
|
+
"additionalProperties": false
|
|
35
41
|
}
|
|
36
42
|
}
|
|
37
43
|
},
|
|
38
|
-
"additionalProperties":
|
|
44
|
+
"additionalProperties": false
|
|
39
45
|
}
|
|
@@ -17,7 +17,10 @@
|
|
|
17
17
|
"enum": ["interface", "background"]
|
|
18
18
|
},
|
|
19
19
|
"entrypoint": { "type": "string" },
|
|
20
|
-
"exposure": {
|
|
20
|
+
"exposure": {
|
|
21
|
+
"type": "string",
|
|
22
|
+
"enum": ["network", "local"]
|
|
23
|
+
},
|
|
21
24
|
"methods": {
|
|
22
25
|
"type": "array",
|
|
23
26
|
"items": { "type": "string" }
|
|
@@ -27,9 +30,9 @@
|
|
|
27
30
|
"items": { "type": "string" }
|
|
28
31
|
}
|
|
29
32
|
},
|
|
30
|
-
"additionalProperties":
|
|
33
|
+
"additionalProperties": false
|
|
31
34
|
}
|
|
32
35
|
}
|
|
33
36
|
},
|
|
34
|
-
"additionalProperties":
|
|
37
|
+
"additionalProperties": false
|
|
35
38
|
}
|
|
@@ -25,6 +25,7 @@
|
|
|
25
25
|
},
|
|
26
26
|
"required_lenses": {
|
|
27
27
|
"type": "array",
|
|
28
|
+
"minItems": 1,
|
|
28
29
|
"items": {
|
|
29
30
|
"type": "string",
|
|
30
31
|
"enum": ["correctness", "architecture", "maintainability", "security", "reliability", "performance", "data_integrity", "tests", "operability", "config_deployment"]
|
|
@@ -35,9 +36,9 @@
|
|
|
35
36
|
"items": { "type": "string" }
|
|
36
37
|
}
|
|
37
38
|
},
|
|
38
|
-
"additionalProperties":
|
|
39
|
+
"additionalProperties": false
|
|
39
40
|
}
|
|
40
41
|
}
|
|
41
42
|
},
|
|
42
|
-
"additionalProperties":
|
|
43
|
+
"additionalProperties": false
|
|
43
44
|
}
|
|
@@ -17,6 +17,9 @@ Normal usage should:
|
|
|
17
17
|
- avoid manual paths, provider flags, and model-selection arguments
|
|
18
18
|
- advance the audit automatically until it completes or no further automatic progress is possible
|
|
19
19
|
|
|
20
|
+
Semantic review should stay with the active conversation agent by default.
|
|
21
|
+
If the host can delegate to subagents, that fan-out belongs to the host agent runtime rather than to repo-local backend provider settings.
|
|
22
|
+
|
|
20
23
|
Bounded steps are a backend implementation detail, not the intended user experience.
|
|
21
24
|
|
|
22
25
|
## Embedded Prompt Payload
|
|
@@ -58,6 +61,8 @@ For repo-local backend usage:
|
|
|
58
61
|
- `provider: "auto"` is the explicit opt-in best-effort routing mode
|
|
59
62
|
- explicit provider names remain available when an operator wants a specific backend
|
|
60
63
|
|
|
64
|
+
Those explicit provider names are backend compatibility bridges, not the intended default review owner.
|
|
65
|
+
|
|
61
66
|
## Development rule
|
|
62
67
|
|
|
63
68
|
Prefer the skill-first conversational contract over the CLI-first backend shape.
|