The shared agentic workflow, and the required checks for Go (0.12.1) #15

Merged
ai-reviewer merged 14 commits from claude-code/agentic-workflow into main 2026-10-20 15:01:22 +02:00
Collaborator

Brings the shared agentic workflow of the Werk family into werkdock; see the PR document under docs/prs/.

🤖 Generated with Claude Code

Brings the shared agentic workflow of the Werk family into werkdock; see the PR document under docs/prs/. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
claude-code added 1 commit 2026-10-20 11:41:34 +02:00
WIP: PR document of the shared agentic workflow
werkator build succeeded after 00:10
cf0d49c86d
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
claude-code added 1 commit 2026-10-20 11:41:43 +02:00
The PR document gets its number
werkator build succeeded after 00:01
c73ab760c5
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
claude-code added 1 commit 2026-10-20 11:48:22 +02:00
govulncheck v1.8.0 and go-licenses v2.0.1, pinned and loaded by go run;
tools/vulncheck fails a branch only on the called vulnerabilities it brings.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
claude-code added 1 commit 2026-10-20 11:49:13 +02:00
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
claude-code added 1 commit 2026-10-20 11:52:14 +02:00
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
claude-code added 3 commits 2026-10-20 11:53:55 +02:00
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
claude-code added 1 commit 2026-10-20 11:54:05 +02:00
AGENTS.md: a line within 128 characters
werkator build succeeded after 00:05
89d5d9d307
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
claude-code added 1 commit 2026-10-20 13:14:14 +02:00
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
claude-code added 1 commit 2026-10-20 14:17:51 +02:00
The PR document names werkrevisor PR#126 as prerequisite
werkator build succeeded after 00:05
ai-review/assessment AI findings; a developer approval after checking them unlocks the merge; review requested from mi; merge scheduled for when the checks succeed
ai-review/gate build succeeded after 02:45
7a3f806467
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
claude-code changed title from WIP: The shared agentic workflow to The shared agentic workflow, and the required checks for Go (0.12.1) 2026-10-20 14:18:38 +02:00
Collaborator
🟠 werkrevisor ORANGE for 7a3f806, superseded by the result for 7d81221

🟠 werkrevisor: ORANGE / FINDINGS

Change kind: mixed.

Reasons

  • ORANGE 2 finding(s) that Jev rates as probably real and severe: tools/vulncheck/main.go:102-104, tools/vulncheck/main.go:165-167
  • YELLOW risky paths changed: .werkrevisor.toml (built in), docs/risk-analysis.md (docs/risk-analysis.md), tools/allowed-licenses.txt (tools/allowed-licenses.txt) and 1 more
  • YELLOW risky build changes according to Jev: .werkator.yml (weakens checks 0.10, risk 1.84, security 0.03)
  • YELLOW model reports a security concern: Vulnerability gate bypass: symbol-level govulncheck findings are treated as calls, allowing a branch that introduces a real call to an already-present vulnerable symbol to evade the merge-base comparison.
  • hint writing rules violated in the changed docs: CHANGELOG.md:7: more than one sentence on a line; CHANGELOG.md:10: more than one sentence on a line; CHANGELOG.md:17: more than one sentence on a line
  • hint 1 changed file(s) that neither weaken the checks nor touch security according to Jev
  • hint 3 build change(s) of low risk according to Jev: tools/check-licenses (weakens checks 0.08, risk 0.65, security 0.03), tools/vulncheck/main.go (weakens checks 0.06, risk 0.91, security 0.02), tools/vulncheck/main_test.go (weakens checks 0.04, risk 0.44, security 0.02)
  • hint model recommends changes before merge
  • hint model rates the risk as high (advisory: Jev judged every changed file)

Findings

  1. [high] Findings Rejected at tools/vulncheck/main.go:102-104, ORANGE, as a line comment

  2. [high] Call Misclassification at tools/vulncheck/main.go:165-167, ORANGE, as a line comment

Classifier

8 of 8 units passed all questions (1 PR document(s)).
2 answers ignored because of a confidence below [classifier] min_confidence.

Usage: model `openrouter/minimax/minimax-m3`, LLM done, tokens counted before the call 35655, calls 1, tokens in 34354 / out 17533 (reasoning included in out), duration 146.6 s, cost 0.0313 USD (reported), classifier `jev-1.13.0` calls 8, tokens in 6427, cost 0.0003 USD, finding judge `jev-1.13.0` calls 2, tokens in 2706, cost 0.0001 USD, build file judge `jev-1.13.0` calls 5, tokens in 6539, cost 0.0003 USD, phases: path_judge 0.5 s, classifier 0.5 s, context 0.4 s, model_review 143.9 s, finding_judge 0.2 s, config: defaults + host.
Reviewed head `7a3f80646713a43cb71469223295adf514a214d2` against base `ea30cbe79c10e3ef201e36c8e703ed7a5a0b4641`, werkrevisor 0.54.1.
<!-- werkrevisor:7a3f80646713a43cb71469223295adf514a214d2 --> <!-- werkrevisor-verdict:ORANGE --> <!-- werkrevisor-blocks:5292bfe8f2b1401a1593f3e66c039a83,e19019adf8225fdbb890d942aaba0f5d,571fcd692d3d563ce76788008272f644,06a2ac84422d4df841d510f20a65b11d,704908439a39b68a3a1422be32941672,c750feea3dfbb018208af769a32061e2,d2edf469d296b3deab05248865cfa090,71f8e433ebf8c0bb165c402ba5d121dd,9a834413e9aa429530b37190f8f2f839,f00a1e9faa110558bd1dc5637197b461,26c3f4d84450474f08ee1b71a7e4a574,affe1fe57f591c493a741eee0c3deeda,03c2d4cda5bdd114401704d0012588fb,5aa69ff2ef7018e1a841475190589ed9,22697026260dc34d720e366d94386403,f1330ff097e4b282844900ccd58f053d,caadbf1feedcdca34b4c3aeae156f9aa,9b8240c81e2ff1a0cb403f277c0ddd30,ccbf2fea42e70852758352b98be850e0,fb5567af9a8b54764de66a4931dc1d7f --> <!-- werkrevisor-folded --> <details><summary>🟠 werkrevisor ORANGE for <code>7a3f806</code>, superseded by <a href="http://git.javagil.de/mi/werkdock/pulls/15#issuecomment-6559">the result for <code>7d81221</code></a></summary> ## 🟠 werkrevisor: ORANGE / FINDINGS Change kind: `mixed`. ### Reasons - **ORANGE** 2 finding(s) that Jev rates as probably real and severe: tools/vulncheck/main.go:102-104, tools/vulncheck/main.go:165-167 - **YELLOW** risky paths changed: .werkrevisor.toml (built in), docs/risk-analysis.md (docs/risk-analysis.md), tools/allowed-licenses.txt (tools/allowed-licenses.txt) and 1 more - **YELLOW** risky build changes according to Jev: .werkator.yml (weakens checks 0.10, risk 1.84, security 0.03) - **YELLOW** model reports a security concern: Vulnerability gate bypass: symbol-level `govulncheck` findings are treated as calls, allowing a branch that introduces a real call to an already-present vulnerable symbol to evade the merge-base comparison. - **hint** writing rules violated in the changed docs: CHANGELOG.md:7: more than one sentence on a line; CHANGELOG.md:10: more than one sentence on a line; CHANGELOG.md:17: more than one sentence on a line - **hint** 1 changed file(s) that neither weaken the checks nor touch security according to Jev - **hint** 3 build change(s) of low risk according to Jev: tools/check-licenses (weakens checks 0.08, risk 0.65, security 0.03), tools/vulncheck/main.go (weakens checks 0.06, risk 0.91, security 0.02), tools/vulncheck/main_test.go (weakens checks 0.04, risk 0.44, security 0.02) - **hint** model recommends changes before merge - **hint** model rates the risk as high (advisory: Jev judged every changed file) ### Findings 1. **[high] Findings Rejected** at `tools/vulncheck/main.go:102-104`, ORANGE, as a line comment 2. **[high] Call Misclassification** at `tools/vulncheck/main.go:165-167`, ORANGE, as a line comment ### Classifier 8 of 8 units passed all questions (1 PR document(s)). 2 answers ignored because of a confidence below [classifier] min_confidence. <sub> Usage: model `openrouter/minimax/minimax-m3`, LLM done, tokens counted before the call 35655, calls 1, tokens in 34354 / out 17533 (reasoning included in out), duration 146.6 s, cost 0.0313 USD (reported), classifier `jev-1.13.0` calls 8, tokens in 6427, cost 0.0003 USD, finding judge `jev-1.13.0` calls 2, tokens in 2706, cost 0.0001 USD, build file judge `jev-1.13.0` calls 5, tokens in 6539, cost 0.0003 USD, phases: path_judge 0.5 s, classifier 0.5 s, context 0.4 s, model_review 143.9 s, finding_judge 0.2 s, config: defaults + host.<br> Reviewed head `7a3f80646713a43cb71469223295adf514a214d2` against base `ea30cbe79c10e3ef201e36c8e703ed7a5a0b4641`, werkrevisor 0.54.1. </sub> </details>
ai-reviewer left a comment
Collaborator

werkrevisor: ORANGE / FINDINGS for 7a3f80646713a43cb71469223295adf514a214d2.
The result comment of werkrevisor holds the details.

werkrevisor: ORANGE / FINDINGS for `7a3f80646713a43cb71469223295adf514a214d2`. The result comment of werkrevisor holds the details. <!-- werkrevisor-review:7a3f80646713a43cb71469223295adf514a214d2 -->
@@ -8,3 +7,1 @@
that changes behavior sets the version in `internal/cli/cli.go` (what
`werkdock version` prints) and titles its section here with that version and
the merge date, before it is merged. Nothing on main is ever "unreleased".
A release is a merge to main; there is no separate release step. So each
Collaborator

Writing rule: more than one sentence on a line (werkrevisor writing rule)

Fix the line, or reply why it stays, and resolve this comment.

**Writing rule: more than one sentence on a line** (werkrevisor writing rule) Fix the line, or reply why it stays, and resolve this comment.
Author
Collaborator

Stays: CHANGELOG.md wraps its prose at 72 columns in every section since 0.2.0; one sentence per line in two sections only would break that.
Since 7d81221, the writing rules of .werkrevisor.toml leave out CHANGELOG.md.

Stays: CHANGELOG.md wraps its prose at 72 columns in every section since 0.2.0; one sentence per line in two sections only would break that. Since 7d81221, the writing rules of `.werkrevisor.toml` leave out CHANGELOG.md.
claude-code marked this conversation as resolved
@@ -11,0 +7,4 @@
A release is a merge to main; there is no separate release step. So each
branch sets the version in `internal/cli/cli.go` (what `werkdock version`
prints) and titles its section here with that version and the merge date,
before it is merged. Nothing on main is ever "unreleased". A branch that
Collaborator

Writing rule: more than one sentence on a line (werkrevisor writing rule)

Fix the line, or reply why it stays, and resolve this comment.

**Writing rule: more than one sentence on a line** (werkrevisor writing rule) Fix the line, or reply why it stays, and resolve this comment.
Author
Collaborator

Stays: CHANGELOG.md wraps its prose at 72 columns in every section since 0.2.0; one sentence per line in two sections only would break that.
Since 7d81221, the writing rules of .werkrevisor.toml leave out CHANGELOG.md.

Stays: CHANGELOG.md wraps its prose at 72 columns in every section since 0.2.0; one sentence per line in two sections only would break that. Since 7d81221, the writing rules of `.werkrevisor.toml` leave out CHANGELOG.md.
claude-code marked this conversation as resolved
@@ -11,0 +14,4 @@
Internal: werkdock follows the shared agentic workflow of the Werk
repositories, with reviews by werkrevisor, and its build checks the
licenses and the called vulnerabilities of its dependencies. The CLI is
Collaborator

Writing rule: more than one sentence on a line (werkrevisor writing rule)

Fix the line, or reply why it stays, and resolve this comment.

**Writing rule: more than one sentence on a line** (werkrevisor writing rule) Fix the line, or reply why it stays, and resolve this comment.
Author
Collaborator

Stays: CHANGELOG.md wraps its prose at 72 columns in every section since 0.2.0; one sentence per line in two sections only would break that.
Since 7d81221, the writing rules of .werkrevisor.toml leave out CHANGELOG.md.

Stays: CHANGELOG.md wraps its prose at 72 columns in every section since 0.2.0; one sentence per line in two sections only would break that. Since 7d81221, the writing rules of `.werkrevisor.toml` leave out CHANGELOG.md.
claude-code marked this conversation as resolved
@@ -0,0 +99,4 @@
cmd := exec.Command("go", "run", govulncheck, "-format", "json", "./...")
cmd.Dir = dir
cmd.Stderr = os.Stderr
stdout, err := cmd.Output()
Collaborator

[high] Findings Rejected (werkrevisor)

ORANGE; Jev: real 0.86, severity 3.0 of 3

govulncheck exits nonzero when its report contains vulnerability findings, even in JSON mode, while still producing the JSON stream. scan treats any cmd.Output error as a tool failure and discards that stream before parsing it. Since current main already has called vulnerabilities, even -base aborts at HEAD before baseline filtering, and an excepted vulnerability cannot be suppressed.

**[high] Findings Rejected** (werkrevisor) ORANGE; Jev: real 0.86, severity 3.0 of 3 `govulncheck` exits nonzero when its report contains vulnerability findings, even in JSON mode, while still producing the JSON stream. `scan` treats any `cmd.Output` error as a tool failure and discards that stream before parsing it. Since current `main` already has called vulnerabilities, even `-base` aborts at `HEAD` before baseline filtering, and an excepted vulnerability cannot be suppressed.
Author
Collaborator

Does not hold, no change.
govulncheck v1.8.0, cmd/govulncheck/doc.go, "Exit codes": it "exits successfully if the 'format -json' ... is provided, regardless of the number of detected vulnerabilities".
Measured: on this branch, whose merge base has 7 called vulnerabilities of the standard library of go1.26.8, go run ./tools/vulncheck printed all 7 and failed with its own message, and the CI build dependencies of 275f619 and 7a3f806 parsed the stream and passed with "vulncheck: no called vulnerability".
A nonzero exit of govulncheck therefore means that the scan itself failed, and then the check must fail.

Does not hold, no change. govulncheck v1.8.0, `cmd/govulncheck/doc.go`, "Exit codes": it "exits successfully if the 'format -json' ... is provided, regardless of the number of detected vulnerabilities". Measured: on this branch, whose merge base has 7 called vulnerabilities of the standard library of go1.26.8, `go run ./tools/vulncheck` printed all 7 and failed with its own message, and the CI build `dependencies` of 275f619 and 7a3f806 parsed the stream and passed with "vulncheck: no called vulnerability". A nonzero exit of govulncheck therefore means that the scan itself failed, and then the check must fail.
claude-code marked this conversation as resolved
@@ -0,0 +162,4 @@
if f.FixedVersion != "" {
v.Fixed = f.FixedVersion
}
if len(f.Trace) > 0 && f.Trace[0].Function != "" {
Collaborator

[high] Call Misclassification (werkrevisor)

ORANGE; Jev: real 0.82, severity 2.9 of 3

govulncheck emits symbol-level findings with a function in the first trace frame as well as call-level findings with caller frames. A symbol-only finding does not mean that the function is invoked, but this marks it as called. If the merge base has a symbol-level finding and HEAD adds a real call under the same OSV ID, the baseline comparison skips the newly reachable vulnerability. Add symbol-only test coverage and distinguish call-level findings.

**[high] Call Misclassification** (werkrevisor) ORANGE; Jev: real 0.82, severity 2.9 of 3 `govulncheck` emits symbol-level findings with a function in the first trace frame as well as call-level findings with caller frames. A symbol-only finding does not mean that the function is invoked, but this marks it as called. If the merge base has a symbol-level finding and HEAD adds a real call under the same OSV ID, the baseline comparison skips the newly reachable vulnerability. Add symbol-only test coverage and distinguish call-level findings.
Author
Collaborator

Does not hold, no change.
govulncheck emits module, package and symbol level findings; a symbol level finding, the only one with function in the first frame, is emitted when the code calls a vulnerable symbol (internal/govulncheck/govulncheck.go, type Finding: "Multiple symbol level findings can be emitted when multiple symbols of the same vuln are called").
The scenario, a second call to a vulnerability that the merge base already calls, is intended: the shared workflow fails a PR only on what it brings, "a vulnerability found anew in a dependency of main must not stop unrelated work", and the nightly build vulnerability-data reports it on main.
TestParseMarksOnlyCalledVulnerabilities covers a package level finding without a function.

Does not hold, no change. govulncheck emits module, package and symbol level findings; a symbol level finding, the only one with `function` in the first frame, is emitted when the code calls a vulnerable symbol (`internal/govulncheck/govulncheck.go`, `type Finding`: "Multiple symbol level findings can be emitted when multiple symbols of the same vuln are called"). The scenario, a second call to a vulnerability that the merge base already calls, is intended: the shared workflow fails a PR only on what it brings, "a vulnerability found anew in a dependency of main must not stop unrelated work", and the nightly build `vulnerability-data` reports it on main. `TestParseMarksOnlyCalledVulnerabilities` covers a package level finding without a function.
claude-code marked this conversation as resolved
ai-reviewer scheduled this pull request to auto merge when all checks succeed 2026-10-20 14:21:32 +02:00
ai-reviewer requested review from mi 2026-10-20 14:21:32 +02:00
claude-code added 1 commit 2026-10-20 14:22:36 +02:00
The writing rules leave out CHANGELOG.md, which wraps at 72 columns
werkator build succeeded after 00:06
ai-review/assessment human review required; a human approval unlocks the merge; a human review request is pending; merge already scheduled
ai-review/gate build succeeded after 01:46
7d81221d2d
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Collaborator
🟡 werkrevisor YELLOW for 7d81221, superseded by the result for f170544

🟡 werkrevisor: YELLOW / HUMAN_REVIEW

Change kind: mixed.

Reasons

  • YELLOW risky paths changed: .werkrevisor.toml (built in), docs/risk-analysis.md (docs/risk-analysis.md), tools/allowed-licenses.txt (tools/allowed-licenses.txt) and 1 more
  • YELLOW risky build changes according to Jev: .werkator.yml (weakens checks 0.10, risk 1.79, security 0.03)
  • hint writing rules violated in the changed docs: CHANGELOG.md:7: more than one sentence on a line; CHANGELOG.md:10: more than one sentence on a line; CHANGELOG.md:17: more than one sentence on a line
  • hint 1 changed file(s) that neither weaken the checks nor touch security according to Jev
  • hint 3 build change(s) of low risk according to Jev: tools/check-licenses (weakens checks 0.07, risk 0.62, security 0.02), tools/vulncheck/main.go (weakens checks 0.07, risk 0.97, security 0.02), tools/vulncheck/main_test.go (weakens checks 0.03, risk 0.42, security 0.02)
  • hint 1 finding(s) of low severity or rated minor by Jev: docs/prs/2026-10-20-PR#15-agentic-workflow.md:33
  • hint model recommends merge with caution

Findings

  1. [medium] Documentation Inconsistency at docs/prs/2026-10-20-PR#15-agentic-workflow.md:33

    hint; Jev: real 0.89, severity 1.8 of 3

    The PR document states "docs/agentic-workflow.md is the master copy of werkregie," but the agentic-workflow.md file itself says "werkregie holds the master copy, as doc/agentic-workflow.md." The werkdock file is a copy of the master located in werkregie, not the master itself (notice the differing path: doc/ in werkregie vs. docs/ here). A reader who takes the PR document at face value could believe edits to the werkdock file propagate to other repositories, when in fact each repository keeps its own copy and the master lives in werkregie. The wording contradicts the cross-reference in the agentic-workflow.md and the PR document's own Related Links section, which points to werkregie's doc/agentic-workflow.md as the master.

Classifier

8 of 8 units passed all questions (1 PR document(s)).
2 answers ignored because of a confidence below [classifier] min_confidence.

Usage: model `openrouter/minimax/minimax-m3`, LLM done, tokens counted before the call 35850, calls 1, tokens in 34521 / out 19368 (reasoning included in out), duration 103.6 s, cost 0.0336 USD (reported), classifier `jev-1.13.0` calls 8, tokens in 6449, cost 0.0003 USD, finding judge `jev-1.13.0` calls 1, tokens in 1796, cost 0.0001 USD, build file judge `jev-1.13.0` calls 5, tokens in 6539, cost 0.0003 USD, phases: path_judge 0.5 s, classifier 0.5 s, context 0.3 s, model_review 101.3 s, finding_judge 0.2 s, config: defaults + host.
Reviewed head `7d81221d2d722495443b218457d3e4ec70dfb85c` against base `ea30cbe79c10e3ef201e36c8e703ed7a5a0b4641`, werkrevisor 0.54.1.
<!-- werkrevisor:7d81221d2d722495443b218457d3e4ec70dfb85c --> <!-- werkrevisor-verdict:YELLOW --> <!-- werkrevisor-blocks:5292bfe8f2b1401a1593f3e66c039a83,e19019adf8225fdbb890d942aaba0f5d,571fcd692d3d563ce76788008272f644,06a2ac84422d4df841d510f20a65b11d,f8452ab84f26f08c1f1b3d255a76c2f5,c750feea3dfbb018208af769a32061e2,d2edf469d296b3deab05248865cfa090,71f8e433ebf8c0bb165c402ba5d121dd,9a834413e9aa429530b37190f8f2f839,d009ac62cf686eecf13995b6b07f12ed,26c3f4d84450474f08ee1b71a7e4a574,affe1fe57f591c493a741eee0c3deeda,03c2d4cda5bdd114401704d0012588fb,5aa69ff2ef7018e1a841475190589ed9,22697026260dc34d720e366d94386403,f1330ff097e4b282844900ccd58f053d,caadbf1feedcdca34b4c3aeae156f9aa,9b8240c81e2ff1a0cb403f277c0ddd30,ccbf2fea42e70852758352b98be850e0,fb5567af9a8b54764de66a4931dc1d7f --> <!-- werkrevisor-folded --> <details><summary>🟡 werkrevisor YELLOW for <code>7d81221</code>, superseded by <a href="http://git.javagil.de/mi/werkdock/pulls/15#issuecomment-6561">the result for <code>f170544</code></a></summary> ## 🟡 werkrevisor: YELLOW / HUMAN_REVIEW Change kind: `mixed`. ### Reasons - **YELLOW** risky paths changed: .werkrevisor.toml (built in), docs/risk-analysis.md (docs/risk-analysis.md), tools/allowed-licenses.txt (tools/allowed-licenses.txt) and 1 more - **YELLOW** risky build changes according to Jev: .werkator.yml (weakens checks 0.10, risk 1.79, security 0.03) - **hint** writing rules violated in the changed docs: CHANGELOG.md:7: more than one sentence on a line; CHANGELOG.md:10: more than one sentence on a line; CHANGELOG.md:17: more than one sentence on a line - **hint** 1 changed file(s) that neither weaken the checks nor touch security according to Jev - **hint** 3 build change(s) of low risk according to Jev: tools/check-licenses (weakens checks 0.07, risk 0.62, security 0.02), tools/vulncheck/main.go (weakens checks 0.07, risk 0.97, security 0.02), tools/vulncheck/main_test.go (weakens checks 0.03, risk 0.42, security 0.02) - **hint** 1 finding(s) of low severity or rated minor by Jev: docs/prs/2026-10-20-PR#15-agentic-workflow.md:33 - **hint** model recommends merge with caution ### Findings 1. **[medium] Documentation Inconsistency** at `docs/prs/2026-10-20-PR#15-agentic-workflow.md:33` hint; Jev: real 0.89, severity 1.8 of 3 The PR document states "docs/agentic-workflow.md is the master copy of werkregie," but the agentic-workflow.md file itself says "werkregie holds the master copy, as doc/agentic-workflow.md." The werkdock file is a copy of the master located in werkregie, not the master itself (notice the differing path: `doc/` in werkregie vs. `docs/` here). A reader who takes the PR document at face value could believe edits to the werkdock file propagate to other repositories, when in fact each repository keeps its own copy and the master lives in werkregie. The wording contradicts the cross-reference in the agentic-workflow.md and the PR document's own Related Links section, which points to werkregie's `doc/agentic-workflow.md` as the master. ### Classifier 8 of 8 units passed all questions (1 PR document(s)). 2 answers ignored because of a confidence below [classifier] min_confidence. <sub> Usage: model `openrouter/minimax/minimax-m3`, LLM done, tokens counted before the call 35850, calls 1, tokens in 34521 / out 19368 (reasoning included in out), duration 103.6 s, cost 0.0336 USD (reported), classifier `jev-1.13.0` calls 8, tokens in 6449, cost 0.0003 USD, finding judge `jev-1.13.0` calls 1, tokens in 1796, cost 0.0001 USD, build file judge `jev-1.13.0` calls 5, tokens in 6539, cost 0.0003 USD, phases: path_judge 0.5 s, classifier 0.5 s, context 0.3 s, model_review 101.3 s, finding_judge 0.2 s, config: defaults + host.<br> Reviewed head `7d81221d2d722495443b218457d3e4ec70dfb85c` against base `ea30cbe79c10e3ef201e36c8e703ed7a5a0b4641`, werkrevisor 0.54.1. </sub> </details>
claude-code added 1 commit 2026-10-20 14:25:15 +02:00
The PR document calls the shared workflow a copy of werkregie's master copy
werkator build succeeded after 00:09
ai-review/assessment AI findings; a developer approval after checking them unlocks the merge; a human review request is pending; merge already scheduled
ai-review/gate build succeeded after 05:18
f170544f19
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Collaborator
🟠 werkrevisor ORANGE for f170544, superseded by the result for 5b81e7d

🟠 werkrevisor: ORANGE / FINDINGS

Change kind: mixed.

Reasons

  • ORANGE 1 finding(s) that Jev rates as probably real and severe: tools/vulncheck/main.go:89-90
  • YELLOW risky paths changed: .werkrevisor.toml (built in), docs/risk-analysis.md (docs/risk-analysis.md), tools/allowed-licenses.txt (tools/allowed-licenses.txt) and 1 more
  • YELLOW risky build changes according to Jev: .werkator.yml (weakens checks 0.10, risk 1.84, security 0.03)
  • YELLOW model reports a security concern: Vulnerability gate bypass: verdict suppresses all head findings for an OSV ID whenever any finding for that ID was called at the merge base. A changed Go or dependency version that remains covered by the advisory, or a newly reachable symbol covered by the same advisory, can therefore pass the branch vulnerability check.
  • hint writing rules violated in the changed docs: CHANGELOG.md:7: more than one sentence on a line; CHANGELOG.md:10: more than one sentence on a line; CHANGELOG.md:17: more than one sentence on a line
  • hint 1 changed file(s) that neither weaken the checks nor touch security according to Jev
  • hint 3 build change(s) of low risk according to Jev: tools/check-licenses (weakens checks 0.07, risk 0.62, security 0.02), tools/vulncheck/main.go (weakens checks 0.06, risk 1.02, security 0.02), tools/vulncheck/main_test.go (weakens checks 0.04, risk 0.39, security 0.02)
  • hint 2 finding(s) of low severity or rated minor by Jev: docs/prs/README.md:3-4, docs/prs/2026-10-20-PR#15-agentic-workflow.md:90-91
  • hint model recommends changes before merge
  • hint model rates the risk as high (advisory: Jev judged every changed file)

Findings

  1. [high] Advisory Collision at tools/vulncheck/main.go:89-90, ORANGE, as a line comment

  2. [medium] Conflicting Release Rule at docs/prs/README.md:3-4

    hint; Jev: real 0.60, severity 2.0 of 3

    This guide says every PR must have a document, while docs/agentic-workflow.md explicitly says a pure release PR needs none when the build does not derive its version. werkdock keeps Version manually, so a version-and-changelog-only PR gives agents contradictory instructions, and no automated presence check resolves the conflict. State which rule werkdock uses consistently.

  3. [low] Changelog History at docs/prs/2026-10-20-PR#15-agentic-workflow.md:90-91

    hint

    The Additional Changes section calls this the introduction of CHANGELOG.md, but the file and its earlier release already exist in the base. This PR only changes the policy text and adds the 0.12.1 section, so the snapshot misstates when the changelog process began. Describe it as an update to the existing changelog.

Classifier

8 of 8 units passed all questions (1 PR document(s)).
2 answers ignored because of a confidence below [classifier] min_confidence.

Usage: model `openrouter/minimax/minimax-m3`, LLM done, tokens counted before the call 35860, calls 1, tokens in 34553 / out 40854 (reasoning included in out), duration 315.4 s, cost 0.0594 USD (reported), classifier `jev-1.13.0` calls 8, tokens in 6462, cost 0.0003 USD, finding judge `jev-1.13.0` calls 2, tokens in 2266, cost 0.0001 USD, build file judge `jev-1.13.0` calls 5, tokens in 6539, cost 0.0003 USD, phases: path_judge 0.5 s, classifier 0.5 s, context 0.4 s, model_review 313.1 s, finding_judge 0.3 s, config: defaults + host.
Reviewed head `f170544f1956cc823483d2be14cf92d3492e8b78` against base `ea30cbe79c10e3ef201e36c8e703ed7a5a0b4641`, werkrevisor 0.54.1.
<!-- werkrevisor:f170544f1956cc823483d2be14cf92d3492e8b78 --> <!-- werkrevisor-verdict:ORANGE --> <!-- werkrevisor-blocks:5292bfe8f2b1401a1593f3e66c039a83,e19019adf8225fdbb890d942aaba0f5d,571fcd692d3d563ce76788008272f644,06a2ac84422d4df841d510f20a65b11d,f8452ab84f26f08c1f1b3d255a76c2f5,c750feea3dfbb018208af769a32061e2,d2edf469d296b3deab05248865cfa090,71f8e433ebf8c0bb165c402ba5d121dd,9a834413e9aa429530b37190f8f2f839,eb0cc6e00857a36d85b06936199e8324,26c3f4d84450474f08ee1b71a7e4a574,affe1fe57f591c493a741eee0c3deeda,03c2d4cda5bdd114401704d0012588fb,5aa69ff2ef7018e1a841475190589ed9,22697026260dc34d720e366d94386403,f1330ff097e4b282844900ccd58f053d,caadbf1feedcdca34b4c3aeae156f9aa,9b8240c81e2ff1a0cb403f277c0ddd30,ccbf2fea42e70852758352b98be850e0,fb5567af9a8b54764de66a4931dc1d7f --> <!-- werkrevisor-folded --> <details><summary>🟠 werkrevisor ORANGE for <code>f170544</code>, superseded by <a href="http://git.javagil.de/mi/werkdock/pulls/15#issuecomment-6582">the result for <code>5b81e7d</code></a></summary> ## 🟠 werkrevisor: ORANGE / FINDINGS Change kind: `mixed`. ### Reasons - **ORANGE** 1 finding(s) that Jev rates as probably real and severe: tools/vulncheck/main.go:89-90 - **YELLOW** risky paths changed: .werkrevisor.toml (built in), docs/risk-analysis.md (docs/risk-analysis.md), tools/allowed-licenses.txt (tools/allowed-licenses.txt) and 1 more - **YELLOW** risky build changes according to Jev: .werkator.yml (weakens checks 0.10, risk 1.84, security 0.03) - **YELLOW** model reports a security concern: Vulnerability gate bypass: `verdict` suppresses all head findings for an OSV ID whenever any finding for that ID was called at the merge base. A changed Go or dependency version that remains covered by the advisory, or a newly reachable symbol covered by the same advisory, can therefore pass the branch vulnerability check. - **hint** writing rules violated in the changed docs: CHANGELOG.md:7: more than one sentence on a line; CHANGELOG.md:10: more than one sentence on a line; CHANGELOG.md:17: more than one sentence on a line - **hint** 1 changed file(s) that neither weaken the checks nor touch security according to Jev - **hint** 3 build change(s) of low risk according to Jev: tools/check-licenses (weakens checks 0.07, risk 0.62, security 0.02), tools/vulncheck/main.go (weakens checks 0.06, risk 1.02, security 0.02), tools/vulncheck/main_test.go (weakens checks 0.04, risk 0.39, security 0.02) - **hint** 2 finding(s) of low severity or rated minor by Jev: docs/prs/README.md:3-4, docs/prs/2026-10-20-PR#15-agentic-workflow.md:90-91 - **hint** model recommends changes before merge - **hint** model rates the risk as high (advisory: Jev judged every changed file) ### Findings 1. **[high] Advisory Collision** at `tools/vulncheck/main.go:89-90`, ORANGE, as a line comment 2. **[medium] Conflicting Release Rule** at `docs/prs/README.md:3-4` hint; Jev: real 0.60, severity 2.0 of 3 This guide says every PR must have a document, while `docs/agentic-workflow.md` explicitly says a pure release PR needs none when the build does not derive its version. `werkdock` keeps `Version` manually, so a version-and-changelog-only PR gives agents contradictory instructions, and no automated presence check resolves the conflict. State which rule werkdock uses consistently. 3. **[low] Changelog History** at `docs/prs/2026-10-20-PR#15-agentic-workflow.md:90-91` hint The `Additional Changes` section calls this the introduction of `CHANGELOG.md`, but the file and its earlier release already exist in the base. This PR only changes the policy text and adds the 0.12.1 section, so the snapshot misstates when the changelog process began. Describe it as an update to the existing changelog. ### Classifier 8 of 8 units passed all questions (1 PR document(s)). 2 answers ignored because of a confidence below [classifier] min_confidence. <sub> Usage: model `openrouter/minimax/minimax-m3`, LLM done, tokens counted before the call 35860, calls 1, tokens in 34553 / out 40854 (reasoning included in out), duration 315.4 s, cost 0.0594 USD (reported), classifier `jev-1.13.0` calls 8, tokens in 6462, cost 0.0003 USD, finding judge `jev-1.13.0` calls 2, tokens in 2266, cost 0.0001 USD, build file judge `jev-1.13.0` calls 5, tokens in 6539, cost 0.0003 USD, phases: path_judge 0.5 s, classifier 0.5 s, context 0.4 s, model_review 313.1 s, finding_judge 0.3 s, config: defaults + host.<br> Reviewed head `f170544f1956cc823483d2be14cf92d3492e8b78` against base `ea30cbe79c10e3ef201e36c8e703ed7a5a0b4641`, werkrevisor 0.54.1. </sub> </details>
ai-reviewer left a comment
Collaborator

werkrevisor: ORANGE / FINDINGS for f170544f1956cc823483d2be14cf92d3492e8b78.
The result comment of werkrevisor holds the details.

werkrevisor: ORANGE / FINDINGS for `f170544f1956cc823483d2be14cf92d3492e8b78`. The result comment of werkrevisor holds the details. <!-- werkrevisor-review:f170544f1956cc823483d2be14cf92d3492e8b78 -->
@@ -0,0 +86,4 @@
if !v.Called || exceptions[id] != "" {
continue
}
if baseline != nil && baseline[id].Called {
Collaborator

[high] Advisory Collision (werkrevisor)

ORANGE; Jev: real 0.85, severity 3.0 of 3

parse collapses every symbol-level finding for one OSV ID into a single Called flag, and verdict skips the ID whenever that flag is true in the baseline. If the merge base already calls one affected symbol and the branch newly calls another under the same advisory, or updates Go or a dependency to another affected version, the head finding is treated as pre-existing and the branch passes. Preserve the module, version, package, and function identity when comparing findings, and add a same-ID collision test.

**[high] Advisory Collision** (werkrevisor) ORANGE; Jev: real 0.85, severity 3.0 of 3 `parse` collapses every symbol-level finding for one OSV ID into a single `Called` flag, and `verdict` skips the ID whenever that flag is true in the baseline. If the merge base already calls one affected symbol and the branch newly calls another under the same advisory, or updates Go or a dependency to another affected version, the head finding is treated as pre-existing and the branch passes. Preserve the module, version, package, and function identity when comparing findings, and add a same-ID collision test.
Author
Collaborator

Fixed in 5b81e7d: a call is now module@version package.function; with -base, a branch fails on each call that the merge base lacks, so another symbol of the same advisory or another affected version fails. New test TestVerdictWithBaselineFailsOnAnotherCallOfTheSameAdvisory covers both cases.

Fixed in `5b81e7d`: a call is now module@version package.function; with -base, a branch fails on each call that the merge base lacks, so another symbol of the same advisory or another affected version fails. New test TestVerdictWithBaselineFailsOnAnotherCallOfTheSameAdvisory covers both cases.
claude-code marked this conversation as resolved
claude-code added 1 commit 2026-10-20 14:32:18 +02:00
vulncheck compares calls, not advisories: another symbol or affected version of a known advisory fails a branch
werkator build succeeded after 00:08
ai-review/assessment human review required; a human approval unlocks the merge; a human review request is pending; merge already scheduled
ai-review/gate build succeeded after 03:46
5b81e7d02b
Found by werkrevisor; the PR README names the pure release PR without a document.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Collaborator

🟡 werkrevisor: YELLOW / HUMAN_REVIEW

Change kind: mixed.

Reasons

  • YELLOW risky paths changed: .werkrevisor.toml (built in), docs/risk-analysis.md (docs/risk-analysis.md), tools/allowed-licenses.txt (tools/allowed-licenses.txt) and 1 more
  • YELLOW risky build changes according to Jev: .werkator.yml (weakens checks 0.15, risk 1.78, security 0.03)
  • hint writing rules violated in the changed docs: CHANGELOG.md:7: more than one sentence on a line; CHANGELOG.md:10: more than one sentence on a line; CHANGELOG.md:17: more than one sentence on a line
  • hint 1 changed file(s) that neither weaken the checks nor touch security according to Jev
  • hint 3 build change(s) of low risk according to Jev: tools/check-licenses (weakens checks 0.08, risk 0.58, security 0.03), tools/vulncheck/main.go (weakens checks 0.07, risk 0.94, security 0.02), tools/vulncheck/main_test.go (weakens checks 0.03, risk 0.51, security 0.03)

Classifier

8 of 8 units passed all questions (1 PR document(s)).
2 answers ignored because of a confidence below [classifier] min_confidence.

Usage: model `openrouter/minimax/minimax-m3`, LLM done, tokens counted before the call 37141, calls 1, tokens in 35737 / out 34275 (reasoning included in out), duration 223.1 s, cost 0.0518 USD (reported), classifier `jev-1.13.0` calls 8, tokens in 6494, cost 0.0003 USD, build file judge `jev-1.13.0` calls 5, tokens in 7054, cost 0.0003 USD, phases: path_judge 0.4 s, classifier 0.5 s, context 0.4 s, model_review 221.2 s, config: defaults + host.
Reviewed head `5b81e7d02b1efe251c0639fd86997b9739d69637` against base `ea30cbe79c10e3ef201e36c8e703ed7a5a0b4641`, werkrevisor 0.54.1.
<!-- werkrevisor:5b81e7d02b1efe251c0639fd86997b9739d69637 --> <!-- werkrevisor-verdict:YELLOW --> <!-- werkrevisor-blocks:5292bfe8f2b1401a1593f3e66c039a83,e19019adf8225fdbb890d942aaba0f5d,571fcd692d3d563ce76788008272f644,06a2ac84422d4df841d510f20a65b11d,f8452ab84f26f08c1f1b3d255a76c2f5,c750feea3dfbb018208af769a32061e2,d2edf469d296b3deab05248865cfa090,71f8e433ebf8c0bb165c402ba5d121dd,9a834413e9aa429530b37190f8f2f839,bf2c0b075e6c39cb8b921f1ba15e707f,f46e68391e76e64033311c4b292610fa,affe1fe57f591c493a741eee0c3deeda,03c2d4cda5bdd114401704d0012588fb,5aa69ff2ef7018e1a841475190589ed9,22697026260dc34d720e366d94386403,f1330ff097e4b282844900ccd58f053d,caadbf1feedcdca34b4c3aeae156f9aa,ecd5947465efd77d1e32598580e9d95b,881b4047ff59da098e837fede1c986bd,fb5567af9a8b54764de66a4931dc1d7f --> ## 🟡 werkrevisor: YELLOW / HUMAN_REVIEW Change kind: `mixed`. ### Reasons - **YELLOW** risky paths changed: .werkrevisor.toml (built in), docs/risk-analysis.md (docs/risk-analysis.md), tools/allowed-licenses.txt (tools/allowed-licenses.txt) and 1 more - **YELLOW** risky build changes according to Jev: .werkator.yml (weakens checks 0.15, risk 1.78, security 0.03) - **hint** writing rules violated in the changed docs: CHANGELOG.md:7: more than one sentence on a line; CHANGELOG.md:10: more than one sentence on a line; CHANGELOG.md:17: more than one sentence on a line - **hint** 1 changed file(s) that neither weaken the checks nor touch security according to Jev - **hint** 3 build change(s) of low risk according to Jev: tools/check-licenses (weakens checks 0.08, risk 0.58, security 0.03), tools/vulncheck/main.go (weakens checks 0.07, risk 0.94, security 0.02), tools/vulncheck/main_test.go (weakens checks 0.03, risk 0.51, security 0.03) ### Classifier 8 of 8 units passed all questions (1 PR document(s)). 2 answers ignored because of a confidence below [classifier] min_confidence. <sub> Usage: model `openrouter/minimax/minimax-m3`, LLM done, tokens counted before the call 37141, calls 1, tokens in 35737 / out 34275 (reasoning included in out), duration 223.1 s, cost 0.0518 USD (reported), classifier `jev-1.13.0` calls 8, tokens in 6494, cost 0.0003 USD, build file judge `jev-1.13.0` calls 5, tokens in 7054, cost 0.0003 USD, phases: path_judge 0.4 s, classifier 0.5 s, context 0.4 s, model_review 221.2 s, config: defaults + host.<br> Reviewed head `5b81e7d02b1efe251c0639fd86997b9739d69637` against base `ea30cbe79c10e3ef201e36c8e703ed7a5a0b4641`, werkrevisor 0.54.1. </sub>
mi approved these changes 2026-10-20 15:01:21 +02:00
ai-reviewer merged commit c30be8b441 into main 2026-10-20 15:01:22 +02:00
ai-reviewer deleted branch claude-code/agentic-workflow 2026-10-20 15:01:22 +02:00
Sign in to join this conversation.
No Reviewers
No labels
3 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: mi/werkdock#15