@xn-intenton-z2a/agentic-lib 7.4.40 → 7.4.42
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/.github/agents/agent-report.md +100 -0
- package/.github/workflows/agentic-lib-bot.yml +37 -15
- package/.github/workflows/agentic-lib-flow.yml +296 -9
- package/.github/workflows/agentic-lib-init.yml +29 -7
- package/.github/workflows/agentic-lib-report.yml +248 -0
- package/.github/workflows/agentic-lib-schedule.yml +34 -16
- package/.github/workflows/agentic-lib-test.yml +18 -2
- package/.github/workflows/agentic-lib-update.yml +17 -1
- package/.github/workflows/agentic-lib-workflow.yml +74 -79
- package/bin/agentic-lib.js +7 -1
- package/package.json +1 -1
- package/src/actions/agentic-step/action.yml +11 -1
- package/src/actions/agentic-step/index.js +5 -2
- package/src/actions/agentic-step/tasks/report.js +690 -0
- package/src/seeds/zero-package.json +1 -1
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Generate enriched benchmark reports by analysing mechanically gathered pipeline data
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
You are a benchmark analyst for an autonomous coding pipeline. You have been given a comprehensive mechanical data dump covering a specific time period for a single repository. Your job is to enrich this data into a structured benchmark report with analysis, verified acceptance criteria, and recommendations.
|
|
6
|
+
|
|
7
|
+
## Available Tools
|
|
8
|
+
|
|
9
|
+
- `read_file` — Read any file in the repository. Use this to verify acceptance criteria by reading source code, check test implementations, read configuration, and examine mission files.
|
|
10
|
+
- `list_files` — Browse the repository directory structure to discover additional source files, test files, and feature documents.
|
|
11
|
+
- `list_issues` / `get_issue` — Query open and closed issues to understand what work was done, trace issues to features and code changes, and identify issue churn.
|
|
12
|
+
- `list_prs` — Query pull requests (open, closed, merged) to trace code changes back to issues and understand the transformation pipeline.
|
|
13
|
+
- `git_diff` / `git_status` — View the current state of the working tree.
|
|
14
|
+
- `report_analysis` — **Required.** Call this exactly once to record your enriched analysis. Pass a JSON object with all required fields.
|
|
15
|
+
|
|
16
|
+
> **Use tools aggressively.** The mechanical data gives you the overview — your job is to dig deeper. Read source code to verify acceptance criteria. Read issues and PRs to understand the narrative of what happened. Read commits to trace changes. Don't just trust issue titles — read the bodies and the actual code.
|
|
17
|
+
|
|
18
|
+
## Context Provided (Mechanical Data)
|
|
19
|
+
|
|
20
|
+
The task handler has already gathered and included in the prompt:
|
|
21
|
+
|
|
22
|
+
- **MISSION.md** — full mission text with extracted acceptance criteria
|
|
23
|
+
- **agentic-lib.toml** — full configuration snapshot (model, profile, budget, paths, tuning)
|
|
24
|
+
- **agentic-lib-state.toml** — full persistent state snapshot (counters, budget, status flags)
|
|
25
|
+
- **Workflow runs** — all runs in the period with name, conclusion, timing, duration, and URLs
|
|
26
|
+
- **Pull requests** — merged and open PRs with branch, title, additions/deletions, file count
|
|
27
|
+
- **Commits** — all commits with SHA, message, author, timestamp
|
|
28
|
+
- **Issues** — open and recently closed issues with labels, title, body excerpts
|
|
29
|
+
- **Source code** — full contents of all source files (src/lib/*.js), not just line counts
|
|
30
|
+
- **Test files** — full contents of all test files, not just filenames
|
|
31
|
+
- **Agent log excerpts** — narrative excerpts from the most recent agent log files
|
|
32
|
+
- **Website HTML** — text summary of the GitHub Pages website content
|
|
33
|
+
- **Screenshot** — whether SCREENSHOT_INDEX.png was captured (available as artifact)
|
|
34
|
+
- **README.md** — repository README content
|
|
35
|
+
- **Mission status** — whether MISSION_COMPLETE.md or MISSION_FAILED.md exist, with contents
|
|
36
|
+
|
|
37
|
+
## Your Task
|
|
38
|
+
|
|
39
|
+
### 1. Verify Acceptance Criteria (CRITICAL)
|
|
40
|
+
|
|
41
|
+
For each criterion extracted from MISSION.md:
|
|
42
|
+
- Use `read_file` to check source code for evidence of implementation
|
|
43
|
+
- Use `list_issues` / `get_issue` to find related issues that addressed it
|
|
44
|
+
- Mark each criterion as **PASS**, **FAIL**, or **NOT TESTED** with specific evidence (file path, line number, function name, or issue number)
|
|
45
|
+
- Don't trust issue titles — verify in the actual code
|
|
46
|
+
|
|
47
|
+
### 2. Build Iteration Narrative
|
|
48
|
+
|
|
49
|
+
For each workflow run in the period:
|
|
50
|
+
- Was it an init run, a supervisor run, or a manual dispatch?
|
|
51
|
+
- Did it produce a transform? (Check: was a PR merged in the same time window?)
|
|
52
|
+
- What did the supervisor/director decide? (Check agent logs)
|
|
53
|
+
- Map runs to PRs to commits to understand the transformation chain
|
|
54
|
+
|
|
55
|
+
Write this as the `iteration_narrative` field — a clear prose timeline of what happened.
|
|
56
|
+
|
|
57
|
+
### 3. Assess Code Quality
|
|
58
|
+
|
|
59
|
+
Read the source code included in the mechanical data:
|
|
60
|
+
- Is the implementation correct and complete?
|
|
61
|
+
- Are the tests meaningful (testing real behaviour) or trivial (testing existence)?
|
|
62
|
+
- Are there TODO comments or incomplete implementations?
|
|
63
|
+
- Does the code structure match what the mission asked for?
|
|
64
|
+
|
|
65
|
+
### 4. Identify Findings
|
|
66
|
+
|
|
67
|
+
Each finding should be categorised as:
|
|
68
|
+
- **POSITIVE** — something that worked well
|
|
69
|
+
- **CONCERN** — something that needs attention
|
|
70
|
+
- **REGRESSION** — something that got worse compared to expected behaviour
|
|
71
|
+
|
|
72
|
+
Every finding must cite evidence (file path, issue number, commit SHA, or workflow run ID).
|
|
73
|
+
|
|
74
|
+
### 5. Produce Scenario Summary
|
|
75
|
+
|
|
76
|
+
Fill in the `scenario_summary` object:
|
|
77
|
+
- `total_iterations`: total workflow runs
|
|
78
|
+
- `transforms`: how many produced merged PRs with code changes
|
|
79
|
+
- `convergence_iteration`: which iteration reached mission-complete (0 if not)
|
|
80
|
+
- `final_source_lines`: line count of main source file
|
|
81
|
+
- `final_test_count`: number of test files
|
|
82
|
+
- `acceptance_pass_count`: e.g. "7/8 PASS"
|
|
83
|
+
- `total_tokens`: from state file counters
|
|
84
|
+
|
|
85
|
+
### 6. Make Recommendations
|
|
86
|
+
|
|
87
|
+
Actionable next steps for improving the pipeline, the mission, or the code. Be specific.
|
|
88
|
+
|
|
89
|
+
### 7. Call `report_analysis`
|
|
90
|
+
|
|
91
|
+
Record your complete analysis as a structured JSON object. This is mandatory — the report cannot be enriched without it.
|
|
92
|
+
|
|
93
|
+
## Report Quality Standards
|
|
94
|
+
|
|
95
|
+
- Every claim must cite evidence
|
|
96
|
+
- Acceptance criteria assessment must read the actual source code
|
|
97
|
+
- Compare state file counters with observed workflow runs for consistency
|
|
98
|
+
- Note any discrepancies between what the pipeline reports and what actually happened
|
|
99
|
+
- Be honest about failures — a clear failure report is more valuable than a vague success report
|
|
100
|
+
- Include the iteration narrative as prose, not just a table
|
|
@@ -84,27 +84,49 @@ env:
|
|
|
84
84
|
jobs:
|
|
85
85
|
params:
|
|
86
86
|
runs-on: ubuntu-latest
|
|
87
|
+
outputs:
|
|
88
|
+
model: ${{ steps.resolve.outputs.model }}
|
|
89
|
+
dry-run: ${{ steps.resolve.outputs.dry-run }}
|
|
90
|
+
discussion-url: ${{ steps.resolve.outputs.discussion-url }}
|
|
91
|
+
message: ${{ steps.resolve.outputs.message }}
|
|
87
92
|
steps:
|
|
88
93
|
- uses: actions/checkout@v6
|
|
89
94
|
with:
|
|
90
95
|
ref: ${{ inputs.ref || github.ref }}
|
|
91
96
|
sparse-checkout: ${{ env.configPath }}
|
|
92
97
|
sparse-checkout-cone-mode: false
|
|
93
|
-
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
98
|
+
- id: resolve
|
|
99
|
+
uses: actions/github-script@v8
|
|
100
|
+
with:
|
|
101
|
+
script: |
|
|
102
|
+
const fs = require('fs');
|
|
103
|
+
const configPath = '${{ env.configPath }}';
|
|
104
|
+
let toml = '';
|
|
105
|
+
if (fs.existsSync(configPath)) toml = fs.readFileSync(configPath, 'utf8');
|
|
106
|
+
const readToml = (key) => {
|
|
107
|
+
const m = toml.match(new RegExp(`^\\s*${key}\\s*=\\s*"([^"]*)"`, 'm'));
|
|
108
|
+
return m ? m[1] : '';
|
|
109
|
+
};
|
|
110
|
+
const resolve = (name, input, configKey, defaultValue) => {
|
|
111
|
+
let value = input || '';
|
|
112
|
+
let source = 'input';
|
|
113
|
+
if (!value && configKey) {
|
|
114
|
+
value = readToml(configKey);
|
|
115
|
+
source = value ? 'config' : '';
|
|
116
|
+
}
|
|
117
|
+
if (!value) {
|
|
118
|
+
value = defaultValue;
|
|
119
|
+
source = 'default';
|
|
120
|
+
}
|
|
121
|
+
const configVal = configKey ? readToml(configKey) : 'N/A';
|
|
122
|
+
core.info(`param ${name}: input='${input}' config='${configVal}' default='${defaultValue}' → '${value}' (source: ${source})`);
|
|
123
|
+
core.setOutput(name, value);
|
|
124
|
+
return value;
|
|
125
|
+
};
|
|
126
|
+
resolve('model', '${{ inputs.model }}', 'model', 'gpt-5-mini');
|
|
127
|
+
resolve('dry-run', '${{ inputs.dry-run }}', null, 'true');
|
|
128
|
+
resolve('discussion-url', '${{ inputs.discussion-url }}', null, '');
|
|
129
|
+
resolve('message', '${{ inputs.message }}', null, '');
|
|
108
130
|
|
|
109
131
|
respond:
|
|
110
132
|
needs: params
|
|
@@ -11,6 +11,64 @@ name: agentic-lib-flow
|
|
|
11
11
|
run-name: "agentic-lib-flow [${{ github.ref_name }}] ${{ inputs.mission-seed }} (${{ inputs.workflow-runs }} runs)"
|
|
12
12
|
|
|
13
13
|
on:
|
|
14
|
+
workflow_call:
|
|
15
|
+
inputs:
|
|
16
|
+
mode:
|
|
17
|
+
type: string
|
|
18
|
+
required: false
|
|
19
|
+
default: "purge"
|
|
20
|
+
mission-seed:
|
|
21
|
+
type: string
|
|
22
|
+
required: false
|
|
23
|
+
default: "7-kyu-understand-fizz-buzz"
|
|
24
|
+
model:
|
|
25
|
+
type: string
|
|
26
|
+
required: false
|
|
27
|
+
default: "gpt-5-mini"
|
|
28
|
+
profile:
|
|
29
|
+
type: string
|
|
30
|
+
required: false
|
|
31
|
+
default: "max"
|
|
32
|
+
workflow-runs:
|
|
33
|
+
type: string
|
|
34
|
+
required: false
|
|
35
|
+
default: "4"
|
|
36
|
+
schedule:
|
|
37
|
+
type: string
|
|
38
|
+
required: false
|
|
39
|
+
default: "off"
|
|
40
|
+
dry-run:
|
|
41
|
+
type: string
|
|
42
|
+
required: false
|
|
43
|
+
default: "false"
|
|
44
|
+
message:
|
|
45
|
+
type: string
|
|
46
|
+
required: false
|
|
47
|
+
default: ""
|
|
48
|
+
config-path:
|
|
49
|
+
type: string
|
|
50
|
+
required: false
|
|
51
|
+
default: ""
|
|
52
|
+
skipMaintain:
|
|
53
|
+
type: string
|
|
54
|
+
required: false
|
|
55
|
+
default: "false"
|
|
56
|
+
mission-text:
|
|
57
|
+
type: string
|
|
58
|
+
required: false
|
|
59
|
+
default: ""
|
|
60
|
+
create-seed-issues:
|
|
61
|
+
type: string
|
|
62
|
+
required: false
|
|
63
|
+
default: "false"
|
|
64
|
+
skip-tests:
|
|
65
|
+
type: string
|
|
66
|
+
required: false
|
|
67
|
+
default: "true"
|
|
68
|
+
generate-report:
|
|
69
|
+
type: string
|
|
70
|
+
required: false
|
|
71
|
+
default: "false"
|
|
14
72
|
workflow_dispatch:
|
|
15
73
|
inputs:
|
|
16
74
|
mode:
|
|
@@ -88,29 +146,120 @@ on:
|
|
|
88
146
|
- "weekly"
|
|
89
147
|
- "daily"
|
|
90
148
|
- "hourly"
|
|
149
|
+
dry-run:
|
|
150
|
+
description: "Skip all push/PR/merge operations"
|
|
151
|
+
type: boolean
|
|
152
|
+
required: false
|
|
153
|
+
default: false
|
|
154
|
+
message:
|
|
155
|
+
description: "Context message for supervisor/bot"
|
|
156
|
+
type: string
|
|
157
|
+
required: false
|
|
158
|
+
default: ""
|
|
159
|
+
config-path:
|
|
160
|
+
description: "Config file path (default: agentic-lib.toml)"
|
|
161
|
+
type: string
|
|
162
|
+
required: false
|
|
163
|
+
default: ""
|
|
164
|
+
generate-report:
|
|
165
|
+
description: "Generate enriched benchmark report after flow"
|
|
166
|
+
type: boolean
|
|
167
|
+
required: false
|
|
168
|
+
default: false
|
|
91
169
|
|
|
92
170
|
permissions: write-all
|
|
93
171
|
|
|
94
172
|
jobs:
|
|
173
|
+
# ── Params: normalise all inputs ─────────────────────────────────
|
|
174
|
+
params:
|
|
175
|
+
runs-on: ubuntu-latest
|
|
176
|
+
outputs:
|
|
177
|
+
mode: ${{ steps.resolve.outputs.mode }}
|
|
178
|
+
mission-seed: ${{ steps.resolve.outputs.mission-seed }}
|
|
179
|
+
mission-text: ${{ steps.resolve.outputs.mission-text }}
|
|
180
|
+
model: ${{ steps.resolve.outputs.model }}
|
|
181
|
+
profile: ${{ steps.resolve.outputs.profile }}
|
|
182
|
+
workflow-runs: ${{ steps.resolve.outputs.workflow-runs }}
|
|
183
|
+
schedule: ${{ steps.resolve.outputs.schedule }}
|
|
184
|
+
dry-run: ${{ steps.resolve.outputs.dry-run }}
|
|
185
|
+
message: ${{ steps.resolve.outputs.message }}
|
|
186
|
+
config-path: ${{ steps.resolve.outputs.config-path }}
|
|
187
|
+
skipMaintain: ${{ steps.resolve.outputs.skipMaintain }}
|
|
188
|
+
create-seed-issues: ${{ steps.resolve.outputs.create-seed-issues }}
|
|
189
|
+
skip-tests: ${{ steps.resolve.outputs.skip-tests }}
|
|
190
|
+
generate-report: ${{ steps.resolve.outputs.generate-report }}
|
|
191
|
+
steps:
|
|
192
|
+
- uses: actions/checkout@v6
|
|
193
|
+
with:
|
|
194
|
+
sparse-checkout: agentic-lib.toml
|
|
195
|
+
sparse-checkout-cone-mode: false
|
|
196
|
+
- id: resolve
|
|
197
|
+
uses: actions/github-script@v8
|
|
198
|
+
with:
|
|
199
|
+
script: |
|
|
200
|
+
const fs = require('fs');
|
|
201
|
+
const configPath = 'agentic-lib.toml';
|
|
202
|
+
let toml = '';
|
|
203
|
+
if (fs.existsSync(configPath)) toml = fs.readFileSync(configPath, 'utf8');
|
|
204
|
+
const readToml = (key) => {
|
|
205
|
+
const m = toml.match(new RegExp(`^\\s*${key}\\s*=\\s*"([^"]*)"`, 'm'));
|
|
206
|
+
return m ? m[1] : '';
|
|
207
|
+
};
|
|
208
|
+
const resolve = (name, input, configKey, defaultValue) => {
|
|
209
|
+
let value = input || '';
|
|
210
|
+
let source = 'input';
|
|
211
|
+
if (!value && configKey) {
|
|
212
|
+
value = readToml(configKey);
|
|
213
|
+
source = value ? 'config' : '';
|
|
214
|
+
}
|
|
215
|
+
if (!value) {
|
|
216
|
+
value = defaultValue;
|
|
217
|
+
source = 'default';
|
|
218
|
+
}
|
|
219
|
+
const configVal = configKey ? readToml(configKey) : 'N/A';
|
|
220
|
+
core.info(`param ${name}: input='${input}' config='${configVal}' default='${defaultValue}' → '${value}' (source: ${source})`);
|
|
221
|
+
core.setOutput(name, value);
|
|
222
|
+
return value;
|
|
223
|
+
};
|
|
224
|
+
resolve('mode', '${{ inputs.mode }}', null, 'purge');
|
|
225
|
+
resolve('mission-seed', '${{ inputs.mission-seed }}', null, '7-kyu-understand-fizz-buzz');
|
|
226
|
+
resolve('mission-text', '${{ inputs.mission-text }}', null, '');
|
|
227
|
+
resolve('model', '${{ inputs.model }}', 'model', 'gpt-5-mini');
|
|
228
|
+
resolve('profile', '${{ inputs.profile }}', 'profile', 'max');
|
|
229
|
+
resolve('workflow-runs', '${{ inputs.workflow-runs }}', null, '4');
|
|
230
|
+
resolve('schedule', '${{ inputs.schedule }}', null, 'off');
|
|
231
|
+
resolve('dry-run', '${{ inputs.dry-run }}', null, 'false');
|
|
232
|
+
resolve('message', '${{ inputs.message }}', null, '');
|
|
233
|
+
resolve('config-path', '${{ inputs.config-path }}', null, 'agentic-lib.toml');
|
|
234
|
+
resolve('skipMaintain', '${{ inputs.skipMaintain }}', null, 'false');
|
|
235
|
+
resolve('create-seed-issues', '${{ inputs.create-seed-issues }}', null, 'false');
|
|
236
|
+
resolve('skip-tests', '${{ inputs.skip-tests }}', null, 'true');
|
|
237
|
+
resolve('generate-report', '${{ inputs.generate-report }}', null, 'false');
|
|
238
|
+
|
|
95
239
|
# ── Phase 0: Update agentic-lib package ────────────────────────────
|
|
96
240
|
update:
|
|
97
|
-
|
|
241
|
+
needs: [params]
|
|
242
|
+
if: needs.params.outputs.mode != 'skip'
|
|
98
243
|
uses: ./.github/workflows/agentic-lib-update.yml
|
|
99
244
|
with:
|
|
100
|
-
skip-tests:
|
|
245
|
+
skip-tests: ${{ needs.params.outputs.skip-tests }}
|
|
246
|
+
dry-run: ${{ needs.params.outputs.dry-run }}
|
|
101
247
|
secrets: inherit
|
|
102
248
|
|
|
103
249
|
# ── Phase 0b: Init (purge/reseed/update) ───────────────────────────
|
|
104
250
|
init:
|
|
105
|
-
needs: [update]
|
|
106
|
-
if: always() &&
|
|
251
|
+
needs: [params, update]
|
|
252
|
+
if: always() && needs.params.outputs.mode != 'skip' && (needs.update.result == 'success' || needs.update.result == 'skipped')
|
|
107
253
|
uses: ./.github/workflows/agentic-lib-init.yml
|
|
108
254
|
with:
|
|
109
|
-
mode: ${{
|
|
110
|
-
mission-seed: ${{
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
255
|
+
mode: ${{ needs.params.outputs.mode }}
|
|
256
|
+
mission-seed: ${{ needs.params.outputs.mission-seed }}
|
|
257
|
+
mission-text: ${{ needs.params.outputs.mission-text }}
|
|
258
|
+
model: ${{ needs.params.outputs.model }}
|
|
259
|
+
profile: ${{ needs.params.outputs.profile }}
|
|
260
|
+
schedule: ${{ needs.params.outputs.schedule }}
|
|
261
|
+
dry-run: ${{ needs.params.outputs.dry-run }}
|
|
262
|
+
create-seed-issues: ${{ needs.params.outputs.create-seed-issues }}
|
|
114
263
|
secrets: inherit
|
|
115
264
|
|
|
116
265
|
# ── Round 1: test + bot + up to 4 workflow runs ────────────────────
|
|
@@ -124,6 +273,9 @@ jobs:
|
|
|
124
273
|
needs: [test-1]
|
|
125
274
|
if: always() && needs.test-1.result == 'success'
|
|
126
275
|
uses: ./.github/workflows/agentic-lib-bot.yml
|
|
276
|
+
with:
|
|
277
|
+
model: ${{ inputs.model }}
|
|
278
|
+
message: ${{ inputs.message }}
|
|
127
279
|
secrets: inherit
|
|
128
280
|
|
|
129
281
|
check-1:
|
|
@@ -150,6 +302,13 @@ jobs:
|
|
|
150
302
|
needs: [check-1]
|
|
151
303
|
if: always() && needs.check-1.result == 'success' && needs.check-1.outputs.mission-over != 'true' && inputs.workflow-runs >= 1
|
|
152
304
|
uses: ./.github/workflows/agentic-lib-workflow.yml
|
|
305
|
+
with:
|
|
306
|
+
model: ${{ inputs.model }}
|
|
307
|
+
profile: ${{ inputs.profile }}
|
|
308
|
+
dry-run: ${{ inputs.dry-run || 'false' }}
|
|
309
|
+
skipMaintain: ${{ inputs.skipMaintain || 'false' }}
|
|
310
|
+
config-path: ${{ inputs.config-path }}
|
|
311
|
+
message: ${{ inputs.message }}
|
|
153
312
|
secrets: inherit
|
|
154
313
|
|
|
155
314
|
check-2:
|
|
@@ -175,6 +334,13 @@ jobs:
|
|
|
175
334
|
needs: [check-2]
|
|
176
335
|
if: always() && needs.check-2.result == 'success' && needs.check-2.outputs.mission-over != 'true' && inputs.workflow-runs >= 2
|
|
177
336
|
uses: ./.github/workflows/agentic-lib-workflow.yml
|
|
337
|
+
with:
|
|
338
|
+
model: ${{ inputs.model }}
|
|
339
|
+
profile: ${{ inputs.profile }}
|
|
340
|
+
dry-run: ${{ inputs.dry-run || 'false' }}
|
|
341
|
+
skipMaintain: ${{ inputs.skipMaintain || 'false' }}
|
|
342
|
+
config-path: ${{ inputs.config-path }}
|
|
343
|
+
message: ${{ inputs.message }}
|
|
178
344
|
secrets: inherit
|
|
179
345
|
|
|
180
346
|
check-3:
|
|
@@ -200,6 +366,13 @@ jobs:
|
|
|
200
366
|
needs: [check-3]
|
|
201
367
|
if: always() && needs.check-3.result == 'success' && needs.check-3.outputs.mission-over != 'true' && inputs.workflow-runs >= 3
|
|
202
368
|
uses: ./.github/workflows/agentic-lib-workflow.yml
|
|
369
|
+
with:
|
|
370
|
+
model: ${{ inputs.model }}
|
|
371
|
+
profile: ${{ inputs.profile }}
|
|
372
|
+
dry-run: ${{ inputs.dry-run || 'false' }}
|
|
373
|
+
skipMaintain: ${{ inputs.skipMaintain || 'false' }}
|
|
374
|
+
config-path: ${{ inputs.config-path }}
|
|
375
|
+
message: ${{ inputs.message }}
|
|
203
376
|
secrets: inherit
|
|
204
377
|
|
|
205
378
|
check-4:
|
|
@@ -225,6 +398,13 @@ jobs:
|
|
|
225
398
|
needs: [check-4]
|
|
226
399
|
if: always() && needs.check-4.result == 'success' && needs.check-4.outputs.mission-over != 'true' && inputs.workflow-runs >= 4
|
|
227
400
|
uses: ./.github/workflows/agentic-lib-workflow.yml
|
|
401
|
+
with:
|
|
402
|
+
model: ${{ inputs.model }}
|
|
403
|
+
profile: ${{ inputs.profile }}
|
|
404
|
+
dry-run: ${{ inputs.dry-run || 'false' }}
|
|
405
|
+
skipMaintain: ${{ inputs.skipMaintain || 'false' }}
|
|
406
|
+
config-path: ${{ inputs.config-path }}
|
|
407
|
+
message: ${{ inputs.message }}
|
|
228
408
|
secrets: inherit
|
|
229
409
|
|
|
230
410
|
# ── Round 2: test + bot + up to 4 more workflow runs ───────────────
|
|
@@ -238,6 +418,9 @@ jobs:
|
|
|
238
418
|
needs: [test-2]
|
|
239
419
|
if: always() && needs.test-2.result == 'success'
|
|
240
420
|
uses: ./.github/workflows/agentic-lib-bot.yml
|
|
421
|
+
with:
|
|
422
|
+
model: ${{ inputs.model }}
|
|
423
|
+
message: ${{ inputs.message }}
|
|
241
424
|
secrets: inherit
|
|
242
425
|
|
|
243
426
|
check-5:
|
|
@@ -263,6 +446,13 @@ jobs:
|
|
|
263
446
|
needs: [check-5]
|
|
264
447
|
if: always() && needs.check-5.result == 'success' && needs.check-5.outputs.mission-over != 'true' && inputs.workflow-runs >= 5
|
|
265
448
|
uses: ./.github/workflows/agentic-lib-workflow.yml
|
|
449
|
+
with:
|
|
450
|
+
model: ${{ inputs.model }}
|
|
451
|
+
profile: ${{ inputs.profile }}
|
|
452
|
+
dry-run: ${{ inputs.dry-run || 'false' }}
|
|
453
|
+
skipMaintain: ${{ inputs.skipMaintain || 'false' }}
|
|
454
|
+
config-path: ${{ inputs.config-path }}
|
|
455
|
+
message: ${{ inputs.message }}
|
|
266
456
|
secrets: inherit
|
|
267
457
|
|
|
268
458
|
check-6:
|
|
@@ -288,6 +478,13 @@ jobs:
|
|
|
288
478
|
needs: [check-6]
|
|
289
479
|
if: always() && needs.check-6.result == 'success' && needs.check-6.outputs.mission-over != 'true' && inputs.workflow-runs >= 6
|
|
290
480
|
uses: ./.github/workflows/agentic-lib-workflow.yml
|
|
481
|
+
with:
|
|
482
|
+
model: ${{ inputs.model }}
|
|
483
|
+
profile: ${{ inputs.profile }}
|
|
484
|
+
dry-run: ${{ inputs.dry-run || 'false' }}
|
|
485
|
+
skipMaintain: ${{ inputs.skipMaintain || 'false' }}
|
|
486
|
+
config-path: ${{ inputs.config-path }}
|
|
487
|
+
message: ${{ inputs.message }}
|
|
291
488
|
secrets: inherit
|
|
292
489
|
|
|
293
490
|
check-7:
|
|
@@ -313,6 +510,13 @@ jobs:
|
|
|
313
510
|
needs: [check-7]
|
|
314
511
|
if: always() && needs.check-7.result == 'success' && needs.check-7.outputs.mission-over != 'true' && inputs.workflow-runs >= 7
|
|
315
512
|
uses: ./.github/workflows/agentic-lib-workflow.yml
|
|
513
|
+
with:
|
|
514
|
+
model: ${{ inputs.model }}
|
|
515
|
+
profile: ${{ inputs.profile }}
|
|
516
|
+
dry-run: ${{ inputs.dry-run || 'false' }}
|
|
517
|
+
skipMaintain: ${{ inputs.skipMaintain || 'false' }}
|
|
518
|
+
config-path: ${{ inputs.config-path }}
|
|
519
|
+
message: ${{ inputs.message }}
|
|
316
520
|
secrets: inherit
|
|
317
521
|
|
|
318
522
|
check-8:
|
|
@@ -338,6 +542,13 @@ jobs:
|
|
|
338
542
|
needs: [check-8]
|
|
339
543
|
if: always() && needs.check-8.result == 'success' && needs.check-8.outputs.mission-over != 'true' && inputs.workflow-runs >= 8
|
|
340
544
|
uses: ./.github/workflows/agentic-lib-workflow.yml
|
|
545
|
+
with:
|
|
546
|
+
model: ${{ inputs.model }}
|
|
547
|
+
profile: ${{ inputs.profile }}
|
|
548
|
+
dry-run: ${{ inputs.dry-run || 'false' }}
|
|
549
|
+
skipMaintain: ${{ inputs.skipMaintain || 'false' }}
|
|
550
|
+
config-path: ${{ inputs.config-path }}
|
|
551
|
+
message: ${{ inputs.message }}
|
|
341
552
|
secrets: inherit
|
|
342
553
|
|
|
343
554
|
# ── Round 3: test + bot + up to 4 more workflow runs ───────────────
|
|
@@ -351,6 +562,9 @@ jobs:
|
|
|
351
562
|
needs: [test-3]
|
|
352
563
|
if: always() && needs.test-3.result == 'success'
|
|
353
564
|
uses: ./.github/workflows/agentic-lib-bot.yml
|
|
565
|
+
with:
|
|
566
|
+
model: ${{ inputs.model }}
|
|
567
|
+
message: ${{ inputs.message }}
|
|
354
568
|
secrets: inherit
|
|
355
569
|
|
|
356
570
|
check-9:
|
|
@@ -376,6 +590,13 @@ jobs:
|
|
|
376
590
|
needs: [check-9]
|
|
377
591
|
if: always() && needs.check-9.result == 'success' && needs.check-9.outputs.mission-over != 'true' && inputs.workflow-runs >= 9
|
|
378
592
|
uses: ./.github/workflows/agentic-lib-workflow.yml
|
|
593
|
+
with:
|
|
594
|
+
model: ${{ inputs.model }}
|
|
595
|
+
profile: ${{ inputs.profile }}
|
|
596
|
+
dry-run: ${{ inputs.dry-run || 'false' }}
|
|
597
|
+
skipMaintain: ${{ inputs.skipMaintain || 'false' }}
|
|
598
|
+
config-path: ${{ inputs.config-path }}
|
|
599
|
+
message: ${{ inputs.message }}
|
|
379
600
|
secrets: inherit
|
|
380
601
|
|
|
381
602
|
check-10:
|
|
@@ -401,6 +622,13 @@ jobs:
|
|
|
401
622
|
needs: [check-10]
|
|
402
623
|
if: always() && needs.check-10.result == 'success' && needs.check-10.outputs.mission-over != 'true' && inputs.workflow-runs >= 10
|
|
403
624
|
uses: ./.github/workflows/agentic-lib-workflow.yml
|
|
625
|
+
with:
|
|
626
|
+
model: ${{ inputs.model }}
|
|
627
|
+
profile: ${{ inputs.profile }}
|
|
628
|
+
dry-run: ${{ inputs.dry-run || 'false' }}
|
|
629
|
+
skipMaintain: ${{ inputs.skipMaintain || 'false' }}
|
|
630
|
+
config-path: ${{ inputs.config-path }}
|
|
631
|
+
message: ${{ inputs.message }}
|
|
404
632
|
secrets: inherit
|
|
405
633
|
|
|
406
634
|
check-11:
|
|
@@ -426,6 +654,13 @@ jobs:
|
|
|
426
654
|
needs: [check-11]
|
|
427
655
|
if: always() && needs.check-11.result == 'success' && needs.check-11.outputs.mission-over != 'true' && inputs.workflow-runs >= 11
|
|
428
656
|
uses: ./.github/workflows/agentic-lib-workflow.yml
|
|
657
|
+
with:
|
|
658
|
+
model: ${{ inputs.model }}
|
|
659
|
+
profile: ${{ inputs.profile }}
|
|
660
|
+
dry-run: ${{ inputs.dry-run || 'false' }}
|
|
661
|
+
skipMaintain: ${{ inputs.skipMaintain || 'false' }}
|
|
662
|
+
config-path: ${{ inputs.config-path }}
|
|
663
|
+
message: ${{ inputs.message }}
|
|
429
664
|
secrets: inherit
|
|
430
665
|
|
|
431
666
|
check-12:
|
|
@@ -451,6 +686,13 @@ jobs:
|
|
|
451
686
|
needs: [check-12]
|
|
452
687
|
if: always() && needs.check-12.result == 'success' && needs.check-12.outputs.mission-over != 'true' && inputs.workflow-runs >= 12
|
|
453
688
|
uses: ./.github/workflows/agentic-lib-workflow.yml
|
|
689
|
+
with:
|
|
690
|
+
model: ${{ inputs.model }}
|
|
691
|
+
profile: ${{ inputs.profile }}
|
|
692
|
+
dry-run: ${{ inputs.dry-run || 'false' }}
|
|
693
|
+
skipMaintain: ${{ inputs.skipMaintain || 'false' }}
|
|
694
|
+
config-path: ${{ inputs.config-path }}
|
|
695
|
+
message: ${{ inputs.message }}
|
|
454
696
|
secrets: inherit
|
|
455
697
|
|
|
456
698
|
# ── Round 4: test + bot + up to 4 more workflow runs ───────────────
|
|
@@ -464,6 +706,9 @@ jobs:
|
|
|
464
706
|
needs: [test-4]
|
|
465
707
|
if: always() && needs.test-4.result == 'success'
|
|
466
708
|
uses: ./.github/workflows/agentic-lib-bot.yml
|
|
709
|
+
with:
|
|
710
|
+
model: ${{ inputs.model }}
|
|
711
|
+
message: ${{ inputs.message }}
|
|
467
712
|
secrets: inherit
|
|
468
713
|
|
|
469
714
|
check-13:
|
|
@@ -489,6 +734,13 @@ jobs:
|
|
|
489
734
|
needs: [check-13]
|
|
490
735
|
if: always() && needs.check-13.result == 'success' && needs.check-13.outputs.mission-over != 'true' && inputs.workflow-runs >= 13
|
|
491
736
|
uses: ./.github/workflows/agentic-lib-workflow.yml
|
|
737
|
+
with:
|
|
738
|
+
model: ${{ inputs.model }}
|
|
739
|
+
profile: ${{ inputs.profile }}
|
|
740
|
+
dry-run: ${{ inputs.dry-run || 'false' }}
|
|
741
|
+
skipMaintain: ${{ inputs.skipMaintain || 'false' }}
|
|
742
|
+
config-path: ${{ inputs.config-path }}
|
|
743
|
+
message: ${{ inputs.message }}
|
|
492
744
|
secrets: inherit
|
|
493
745
|
|
|
494
746
|
check-14:
|
|
@@ -514,6 +766,13 @@ jobs:
|
|
|
514
766
|
needs: [check-14]
|
|
515
767
|
if: always() && needs.check-14.result == 'success' && needs.check-14.outputs.mission-over != 'true' && inputs.workflow-runs >= 14
|
|
516
768
|
uses: ./.github/workflows/agentic-lib-workflow.yml
|
|
769
|
+
with:
|
|
770
|
+
model: ${{ inputs.model }}
|
|
771
|
+
profile: ${{ inputs.profile }}
|
|
772
|
+
dry-run: ${{ inputs.dry-run || 'false' }}
|
|
773
|
+
skipMaintain: ${{ inputs.skipMaintain || 'false' }}
|
|
774
|
+
config-path: ${{ inputs.config-path }}
|
|
775
|
+
message: ${{ inputs.message }}
|
|
517
776
|
secrets: inherit
|
|
518
777
|
|
|
519
778
|
check-15:
|
|
@@ -539,6 +798,13 @@ jobs:
|
|
|
539
798
|
needs: [check-15]
|
|
540
799
|
if: always() && needs.check-15.result == 'success' && needs.check-15.outputs.mission-over != 'true' && inputs.workflow-runs >= 15
|
|
541
800
|
uses: ./.github/workflows/agentic-lib-workflow.yml
|
|
801
|
+
with:
|
|
802
|
+
model: ${{ inputs.model }}
|
|
803
|
+
profile: ${{ inputs.profile }}
|
|
804
|
+
dry-run: ${{ inputs.dry-run || 'false' }}
|
|
805
|
+
skipMaintain: ${{ inputs.skipMaintain || 'false' }}
|
|
806
|
+
config-path: ${{ inputs.config-path }}
|
|
807
|
+
message: ${{ inputs.message }}
|
|
542
808
|
secrets: inherit
|
|
543
809
|
|
|
544
810
|
check-16:
|
|
@@ -564,6 +830,13 @@ jobs:
|
|
|
564
830
|
needs: [check-16]
|
|
565
831
|
if: always() && needs.check-16.result == 'success' && needs.check-16.outputs.mission-over != 'true' && inputs.workflow-runs >= 16
|
|
566
832
|
uses: ./.github/workflows/agentic-lib-workflow.yml
|
|
833
|
+
with:
|
|
834
|
+
model: ${{ inputs.model }}
|
|
835
|
+
profile: ${{ inputs.profile }}
|
|
836
|
+
dry-run: ${{ inputs.dry-run || 'false' }}
|
|
837
|
+
skipMaintain: ${{ inputs.skipMaintain || 'false' }}
|
|
838
|
+
config-path: ${{ inputs.config-path }}
|
|
839
|
+
message: ${{ inputs.message }}
|
|
567
840
|
secrets: inherit
|
|
568
841
|
|
|
569
842
|
# ── Final: test + bot (always runs) ────────────────────────────────
|
|
@@ -577,6 +850,9 @@ jobs:
|
|
|
577
850
|
needs: [test-final]
|
|
578
851
|
if: always() && needs.test-final.result == 'success'
|
|
579
852
|
uses: ./.github/workflows/agentic-lib-bot.yml
|
|
853
|
+
with:
|
|
854
|
+
model: ${{ inputs.model }}
|
|
855
|
+
message: ${{ inputs.message }}
|
|
580
856
|
secrets: inherit
|
|
581
857
|
|
|
582
858
|
# ── Verify: MISSION_COMPLETE.md must exist ─────────────────────────
|
|
@@ -737,3 +1013,14 @@ jobs:
|
|
|
737
1013
|
with:
|
|
738
1014
|
name: benchmark-report
|
|
739
1015
|
path: BENCHMARK_REPORT_FLOW_*.md
|
|
1016
|
+
|
|
1017
|
+
# ── Enriched benchmark report (opt-in) ──────────────────────────
|
|
1018
|
+
enriched-report:
|
|
1019
|
+
needs: [params, generate-report]
|
|
1020
|
+
if: always() && needs.params.outputs.generate-report == 'true'
|
|
1021
|
+
uses: ./.github/workflows/agentic-lib-report.yml
|
|
1022
|
+
with:
|
|
1023
|
+
model: ${{ inputs.model }}
|
|
1024
|
+
config-path: ${{ inputs.config-path }}
|
|
1025
|
+
dry-run: ${{ inputs.dry-run || 'false' }}
|
|
1026
|
+
secrets: inherit
|