audit-tools 0.50.19 → 0.50.21

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.
Files changed (53) hide show
  1. package/dist/audit/cli/conceptualDispatch.d.ts.map +1 -1
  2. package/dist/audit/cli/conceptualDispatch.js +26 -1
  3. package/dist/audit/cli/conceptualDispatch.js.map +1 -1
  4. package/dist/audit/cli/confirmIntentStep.d.ts +8 -0
  5. package/dist/audit/cli/confirmIntentStep.d.ts.map +1 -1
  6. package/dist/audit/cli/confirmIntentStep.js +19 -2
  7. package/dist/audit/cli/confirmIntentStep.js.map +1 -1
  8. package/dist/audit/cli/laneValidators.d.ts.map +1 -1
  9. package/dist/audit/cli/laneValidators.js +9 -1
  10. package/dist/audit/cli/laneValidators.js.map +1 -1
  11. package/dist/audit/cli/nextStepCommand.d.ts.map +1 -1
  12. package/dist/audit/cli/nextStepCommand.js +31 -3
  13. package/dist/audit/cli/nextStepCommand.js.map +1 -1
  14. package/dist/audit/cli/nextStepHelpers.d.ts.map +1 -1
  15. package/dist/audit/cli/nextStepHelpers.js +63 -2
  16. package/dist/audit/cli/nextStepHelpers.js.map +1 -1
  17. package/dist/audit/cli/resynthesizeCommand.d.ts.map +1 -1
  18. package/dist/audit/cli/resynthesizeCommand.js +2 -0
  19. package/dist/audit/cli/resynthesizeCommand.js.map +1 -1
  20. package/dist/audit/cli/steps.d.ts +2 -2
  21. package/dist/audit/io/artifacts.d.ts +3 -0
  22. package/dist/audit/io/artifacts.d.ts.map +1 -1
  23. package/dist/audit/io/artifacts.js +1 -0
  24. package/dist/audit/io/artifacts.js.map +1 -1
  25. package/dist/audit/orchestrator/dependencyMap.d.ts +1 -0
  26. package/dist/audit/orchestrator/dependencyMap.d.ts.map +1 -1
  27. package/dist/audit/orchestrator/dependencyMap.js +3 -0
  28. package/dist/audit/orchestrator/dependencyMap.js.map +1 -1
  29. package/dist/audit/orchestrator/designReviewPrompt.d.ts +2 -1
  30. package/dist/audit/orchestrator/designReviewPrompt.d.ts.map +1 -1
  31. package/dist/audit/orchestrator/designReviewPrompt.js +5 -2
  32. package/dist/audit/orchestrator/designReviewPrompt.js.map +1 -1
  33. package/dist/audit/orchestrator/executors.d.ts.map +1 -1
  34. package/dist/audit/orchestrator/executors.js +5 -0
  35. package/dist/audit/orchestrator/executors.js.map +1 -1
  36. package/dist/audit/orchestrator/synthesisExecutors.d.ts.map +1 -1
  37. package/dist/audit/orchestrator/synthesisExecutors.js +27 -1
  38. package/dist/audit/orchestrator/synthesisExecutors.js.map +1 -1
  39. package/dist/audit/reporting/synthesis.d.ts +4 -0
  40. package/dist/audit/reporting/synthesis.d.ts.map +1 -1
  41. package/dist/audit/reporting/synthesis.js +229 -5
  42. package/dist/audit/reporting/synthesis.js.map +1 -1
  43. package/dist/audit/systemic/secondOrderAdversaryPrompt.d.ts +7 -11
  44. package/dist/audit/systemic/secondOrderAdversaryPrompt.d.ts.map +1 -1
  45. package/dist/audit/systemic/secondOrderAdversaryPrompt.js +135 -54
  46. package/dist/audit/systemic/secondOrderAdversaryPrompt.js.map +1 -1
  47. package/dist/audit/types/conceptualAdjudication.d.ts +665 -0
  48. package/dist/audit/types/conceptualAdjudication.d.ts.map +1 -0
  49. package/dist/audit/types/conceptualAdjudication.js +298 -0
  50. package/dist/audit/types/conceptualAdjudication.js.map +1 -0
  51. package/opencode.json +2 -2
  52. package/package.json +1 -1
  53. package/skills/audit-code/audit-code.prompt.md +11 -1
@@ -1,84 +1,165 @@
1
- // Phase E — the SECOND-ORDER ADVERSARY prompt (host_delegation).
1
+ // Phase E — SECOND-ORDER ADVERSARY prompt (host_delegation).
2
2
  //
3
- // The adversary runs as a SEPARATE agent ([[delegate-adversarial-phases-to-separate-
4
- // agent]]) an author marking its own homework misses the gaps. Its mandate is
5
- // OPTIMIZATION / BETTER-WAY, not defect-finding: it must actively seek SUPERIOR
6
- // ALTERNATIVES to things that currently WORK (the class no correctness lens flags
7
- // because nothing is broken) — what's redundant, serial-that-could-be-parallel,
8
- // duplicated, over-built; what assumption went unquestioned; is there a categorically
9
- // better approach (design of record spec + backlog "Systemic reviewers must be pushed
10
- // adversarially for improvement"). LOOP-UNTIL-DRY: this is round N of a loop that ends
11
- // only when CONSECUTIVE rounds surface NOTHING NEW (the register's convergence_rule).
12
- //
13
- // The aggregate-metrics digest is NECESSARY supporting evidence, explicitly NOT
14
- // SUFFICIENT alone the adversary reasons from the whole system, using the counts as
15
- // leads, not conclusions.
3
+ // The adversary is a SEPARATE agent and receives the evidence the earlier
4
+ // design-review contributors actually produced. Aggregate metrics remain leads,
5
+ // never a substitute for charters, candidate dispositions, prior findings, and
6
+ // direct repository/source verification.
7
+ function priorFindings(bundle) {
8
+ const candidates = [
9
+ ...(bundle.design_assessment?.contract_findings ?? []),
10
+ ...(bundle.design_assessment?.conceptual_findings ?? []),
11
+ ...(bundle.charter_register?.findings ?? []),
12
+ ...(bundle.systemic_challenge?.findings ?? []),
13
+ ];
14
+ const seen = new Set();
15
+ return candidates.filter((finding) => {
16
+ const key = `${finding.lens}\u0000${finding.category}\u0000${finding.title}`;
17
+ if (seen.has(key))
18
+ return false;
19
+ seen.add(key);
20
+ return true;
21
+ });
22
+ }
23
+ function renderPriorFindings(findings) {
24
+ if (findings.length === 0)
25
+ return ["No prior findings were banked."];
26
+ return findings.map((finding) => {
27
+ const files = finding.affected_files.map((entry) => entry.path).join(", ");
28
+ return `- **${finding.id} — ${finding.title}** (${finding.lens}/${finding.severity}): ${finding.summary} [${files || "no files"}]`;
29
+ });
30
+ }
31
+ function renderCharterProjection(bundle) {
32
+ const register = bundle.charter_register;
33
+ if (!register || register.status === "omitted") {
34
+ return ["No charter register was produced for this run."];
35
+ }
36
+ const projection = {
37
+ subsystems: register.subsystems.map((subsystem) => ({
38
+ node_id: subsystem.node_id,
39
+ members: subsystem.members,
40
+ charters: subsystem.charters.map((charter) => ({
41
+ charter_id: charter.charter_id,
42
+ kind: charter.kind,
43
+ purpose: charter.purpose,
44
+ confidence: charter.confidence,
45
+ provenance: charter.provenance,
46
+ nominated_alternative: charter.nominated_alternative,
47
+ nominated_cost: charter.nominated_cost,
48
+ })),
49
+ })),
50
+ goal_graph: register.goal_graph,
51
+ deltas: register.deltas.map((delta) => ({
52
+ delta_id: delta.delta_id,
53
+ node_id: delta.node_id,
54
+ goal_node_id: delta.goal_node_id,
55
+ pair: delta.pair,
56
+ kind: delta.kind,
57
+ routed_to: delta.routed_to,
58
+ summary: delta.summary,
59
+ })),
60
+ triangulated: register.triangulated,
61
+ disagreement: register.disagreement,
62
+ validation_issues: register.validation_issues,
63
+ };
64
+ return ["```json", JSON.stringify(projection, null, 2), "```"];
65
+ }
66
+ function renderAdjudication(bundle) {
67
+ const adjudication = bundle.conceptual_review_adjudication;
68
+ if (!adjudication) {
69
+ return ["No deep conceptual adjudication record was produced."];
70
+ }
71
+ return [
72
+ `Round: \`${adjudication.round_id}\``,
73
+ "",
74
+ "```json",
75
+ JSON.stringify({
76
+ contributors: adjudication.contributors.map((contributor) => contributor.role === "judge"
77
+ ? { ...contributor, result_path: undefined }
78
+ : contributor),
79
+ candidate_dispositions: adjudication.candidate_dispositions,
80
+ final_finding_shares: adjudication.final_finding_shares,
81
+ }, null, 2),
82
+ "```",
83
+ ];
84
+ }
16
85
  /**
17
- * Render the second-order-adversary LANE prompt for one challenge round. `round` is
18
- * the 1-based loop ordinal; `priorFindingCount` orients the adversary on what already
19
- * surfaced (so it pushes for NEW improvements, not re-statements). `submissionPath`
20
- * is where the agent writes its findings; an EMPTY findings array marks a QUIET
21
- * round (this round found nothing new) — the loop converges after consecutive
22
- * quiet rounds, per the register's `convergence_rule`.
23
- *
24
- * Advance-free (design resolution 2): the lane prompt is materialized to a file
25
- * and carries no continue-command — the step prompt owns the advance, so a lane
26
- * executor can never become a second orchestrator driver.
86
+ * Render one systemic challenge round. `evidencePaths` are also granted in the
87
+ * host step's read set; the prompt names them so the adversary can inspect the
88
+ * full perspective artifacts and persisted judge adjudication rather than
89
+ * reasoning from counts.
27
90
  */
28
91
  export function renderSecondOrderAdversaryPrompt(opts) {
29
- const metricLines = opts.metrics.rollups.map((r) => `- ${r.label}: ${r.count} ${r.unit}`);
92
+ const metricLines = opts.metrics.rollups.map((rollup) => `- ${rollup.label}: ${rollup.count} ${rollup.unit}`);
30
93
  metricLines.push(`- Max fan-out (out-degree): ${opts.metrics.max_fan_out}`);
94
+ const bankedFindings = priorFindings(opts.bundle);
95
+ const evidencePaths = [...new Set(opts.evidencePaths)].sort();
31
96
  return [
32
97
  "# Design review — systemic improvement-seeking challenge (second-order adversary)",
33
98
  "",
34
99
  `You are a SEPARATE second-order adversary. This is challenge round ${opts.round}.`,
35
- `The pass has already surfaced ${opts.priorFindingCount} improvement(s); your job is`,
36
- "to push HARDER and find what earlier rounds missed.",
100
+ `The audit already banked ${bankedFindings.length} distinct finding(s). Push HARDER for what those findings and their contributors missed.`,
37
101
  "",
38
102
  "## Mandate — optimization / better-way, NOT defect-finding",
39
- "Do NOT hunt for bugs (other lenses own that). Re-interrogate the system with",
40
- "human-grade pressure and seek SUPERIOR ALTERNATIVES to things that currently WORK:",
41
- "- What is **redundant** — done more than once, or more than needed?",
103
+ "",
104
+ "Do NOT hunt ordinary bugs (other lenses own that). Re-interrogate the system with human-grade pressure for SUPERIOR ALTERNATIVES to things that currently work:",
105
+ "- What is **redundant** — done more than once or more than needed?",
42
106
  "- What is **serial that could be parallel**?",
43
- "- What is **duplicated** across places that should share?",
107
+ "- What is **duplicated** across places that should share one mechanism?",
44
108
  "- What is **over-built** — complexity with no payload?",
45
109
  "- What **assumption went unquestioned**?",
46
- "- Is there a **categorically better approach** to a whole subsystem?",
110
+ "- Is there a **categorically better approach** for a whole subsystem?",
111
+ "",
112
+ "## Required evidence files",
113
+ "",
114
+ "Read these full artifacts before concluding the round. They include the charter register, persisted conceptual judge/adjudication record, and every current-round perspective result:",
115
+ ...evidencePaths.map((path) => `- \`${path}\``),
116
+ "",
117
+ "## Stated-purpose / goal / delta projection",
118
+ "",
119
+ "This projection comes from `charter_register.json`, not `docs_digest.json`. Treat triangulated telos as a lead, preserve disagreement, and inspect the full artifact when the projection raises a question:",
120
+ ...renderCharterProjection(opts.bundle),
121
+ "",
122
+ "## Conceptual contributors, dispositions, and attribution",
123
+ "",
124
+ ...renderAdjudication(opts.bundle),
125
+ "",
126
+ "## Actual banked findings",
127
+ "",
128
+ ...renderPriorFindings(bankedFindings),
129
+ "",
130
+ "## Repository/source verification (required)",
131
+ "",
132
+ "Use the repository and the strongest structural tools available. For every proposed improvement, inspect exact source sites, trace relevant callers and callees in both directions, and verify the affected paths. Before any negative or exhaustive claim, check structural-index coverage/freshness and directly read every reported gap. If equivalent symbol search, bidirectional tracing, exact snippets, or coverage accounting is unavailable, state that limitation and do not present the claim as comprehensive. Aggregate counts and prior-review consensus are never proof.",
47
133
  "",
48
134
  "## Aggregate metrics (supporting evidence — necessary, NOT sufficient)",
49
- "These abstract, language-neutral counts are LEADS, not conclusions. Reason from",
50
- "the whole system; use them only to aim your attention:",
135
+ "",
136
+ "These abstract, language-neutral counts are leads only:",
51
137
  ...metricLines,
52
138
  "",
53
139
  "## True lens (required)",
54
- "Tag each finding with its TRUE lens — a test-parallelization finding is `tests`",
55
- "or `performance`; an ops finding is `operability`. Do NOT default to",
56
- "`architecture`. The lens routes the improvement to the right place in synthesis.",
140
+ "",
141
+ "Tag each finding with its TRUE lens — for example, test parallelization is `tests` or `performance`, and operational simplification is `operability`. Do not default everything to `architecture`.",
57
142
  "",
58
143
  "## Loop-until-dry",
59
- "The review is done only when consecutive rounds yield NOTHING NEW — not when it",
60
- "first has an answer. If, after genuine pressure, you find no NEW improvement this",
61
- "round, submit an EMPTY findings array; that marks a quiet round, and the loop",
62
- "converges after consecutive quiet rounds. Otherwise submit the new",
63
- "improvements (each pointing at at least one real component).",
144
+ "",
145
+ "The review is done only when consecutive rounds yield NOTHING NEW. If genuine source-backed pressure finds no new improvement this round, submit an empty `findings` array. Otherwise submit only new improvements, each anchored to at least one real component.",
64
146
  "",
65
147
  "## Output",
148
+ "",
66
149
  `Write JSON to \`${opts.submissionPath}\` with this shape:`,
67
150
  "",
68
151
  "```json",
69
152
  "{",
70
- ' "findings": [',
71
- " {",
72
- ' "id": "<stable id>",',
73
- ' "title": "<the improvement>",',
74
- ' "category": "systemic_improvement",',
75
- ' "severity": "low|medium|high",',
76
- ' "confidence": "low|medium|high",',
77
- ' "lens": "<the TRUE lens: tests|performance|operability|...>",',
78
- ' "summary": "<what to do and why it is better>",',
79
- ' "affected_files": [{ "path": "<a real repo path>" }]',
80
- " }",
81
- " ]",
153
+ ' "findings": [{',
154
+ ' "id": "<stable id>",',
155
+ ' "title": "<the improvement>",',
156
+ ' "category": "systemic_improvement",',
157
+ ' "severity": "low|medium|high",',
158
+ ' "confidence": "low|medium|high",',
159
+ ' "lens": "<the TRUE lens: tests|performance|operability|...>",',
160
+ ' "summary": "<what to do, why it is better, and source verification>",',
161
+ ' "affected_files": [{ "path": "<a real repo path>" }]',
162
+ " }]",
82
163
  "}",
83
164
  "```",
84
165
  "",
@@ -1 +1 @@
1
- {"version":3,"file":"secondOrderAdversaryPrompt.js","sourceRoot":"","sources":["../../../src/audit/systemic/secondOrderAdversaryPrompt.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,EAAE;AACF,qFAAqF;AACrF,gFAAgF;AAChF,gFAAgF;AAChF,kFAAkF;AAClF,gFAAgF;AAChF,sFAAsF;AACtF,sFAAsF;AACtF,uFAAuF;AACvF,sFAAsF;AACtF,EAAE;AACF,gFAAgF;AAChF,sFAAsF;AACtF,0BAA0B;AAI1B;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,gCAAgC,CAAC,IAKhD;IACC,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAC1C,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,EAAE,CAC5C,CAAC;IACF,WAAW,CAAC,IAAI,CAAC,+BAA+B,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAE5E,OAAO;QACL,mFAAmF;QACnF,EAAE;QACF,sEAAsE,IAAI,CAAC,KAAK,GAAG;QACnF,iCAAiC,IAAI,CAAC,iBAAiB,8BAA8B;QACrF,qDAAqD;QACrD,EAAE;QACF,4DAA4D;QAC5D,8EAA8E;QAC9E,oFAAoF;QACpF,qEAAqE;QACrE,8CAA8C;QAC9C,2DAA2D;QAC3D,wDAAwD;QACxD,0CAA0C;QAC1C,sEAAsE;QACtE,EAAE;QACF,wEAAwE;QACxE,iFAAiF;QACjF,wDAAwD;QACxD,GAAG,WAAW;QACd,EAAE;QACF,yBAAyB;QACzB,iFAAiF;QACjF,sEAAsE;QACtE,kFAAkF;QAClF,EAAE;QACF,mBAAmB;QACnB,iFAAiF;QACjF,mFAAmF;QACnF,+EAA+E;QAC/E,oEAAoE;QACpE,8DAA8D;QAC9D,EAAE;QACF,WAAW;QACX,mBAAmB,IAAI,CAAC,cAAc,qBAAqB;QAC3D,EAAE;QACF,SAAS;QACT,GAAG;QACH,iBAAiB;QACjB,OAAO;QACP,4BAA4B;QAC5B,qCAAqC;QACrC,2CAA2C;QAC3C,sCAAsC;QACtC,wCAAwC;QACxC,qEAAqE;QACrE,uDAAuD;QACvD,4DAA4D;QAC5D,OAAO;QACP,KAAK;QACL,GAAG;QACH,KAAK;QACL,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"secondOrderAdversaryPrompt.js","sourceRoot":"","sources":["../../../src/audit/systemic/secondOrderAdversaryPrompt.ts"],"names":[],"mappings":"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"}