The home page lists running, queued and failed builds, and its tiles are smaller (v1.43.0) #160

Merged
ai-reviewer merged 5 commits from home-build-panel into main 2026-10-14 14:16:17 +02:00
Collaborator

See docs/prs/2026-10-14-PR#160-home-builds-panel.md

🤖 Generated with Claude Code

See docs/prs/2026-10-14-PR#160-home-builds-panel.md 🤖 Generated with [Claude Code](https://claude.com/claude-code)
claude-code added 1 commit 2026-10-14 11:47:51 +02:00
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
claude-code added 1 commit 2026-10-14 12:01:57 +02:00
The home page lists running, queued and failed builds, and its tiles are smaller (v1.43.0)
ai-review/codex Codex review: a human approval of the head unlocks the merge
werkator build succeeded after 02:40
ai-review/assessment human review required; a human approval unlocks the merge; review requested from mi; merge scheduled for when the checks succeed
ai-review/gate build succeeded after 03:56
76ce39ce37
A Builds panel above the Repositories shows the running builds, then the
queued ones, then the failures of the last week that no build of the same
name answers or runs again, at most five, served by GET /api/activity.
Every page is up to 1440 px wide and the home tiles at least 180 px, so
five fit in one row on a desktop screen.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
claude-code changed title from WIP: The home page lists running, queued and failed builds, and its tiles are smaller to The home page lists running, queued and failed builds, and its tiles are smaller (v1.43.0) 2026-10-14 12:05:15 +02:00
Collaborator
🟡 werkrevisor YELLOW for 76ce39c, superseded by the result for bd3323c

🟡 werkrevisor: YELLOW / HUMAN_REVIEW

Change kind: mixed.

Reasons

  • YELLOW spec: docs/prs/2026-10-14-PR#160-home-builds-panel.md Scenario#160.03 more_than_one_aspect (0.67 > yellow_above = 0.6)
  • YELLOW spec: docs/prs/2026-10-14-PR#160-home-builds-panel.md Scenario#160.05 more_than_one_aspect (0.80 > yellow_above = 0.6)
  • YELLOW spec: docs/prs/2026-10-14-PR#160-home-builds-panel.md Scenario#160.06 more_than_one_aspect (0.71 > yellow_above = 0.6)
  • hint writing rules violated in the changed docs: .claude/skills/architecture/SKILL.md:56: more than one sentence on a line; .claude/skills/architecture/SKILL.md:56: line longer than 400 characters (1958)
  • hint 16 changed file(s) that neither weaken the checks, touch security nor show a risk category of jvm-spring-backend according to Jev
  • hint 1 build change(s) of low risk according to Jev: build.gradle.kts (weakens checks 0.03, risk 0.00, security 0.01)
  • hint 2 changed files were given to the AI as excerpt of the selected lines and 5 lines around each changed line, not in full (each larger than [review] max_full_file_chars = 80000): src/main/resources/static/werkator.js, src/main/resources/templates/releases.html
  • hint 1 changed file was given to the AI as excerpt of the selected lines and 5 lines around each changed line, not in full (all full files together would exceed [review] max_full_files_chars = 160000): src/test/kotlin/de/hoennig/werkator/server/UiPageRestTest.kt
  • hint 6 changed files were given to the AI only as diff, not in full, so it could not check them against the rest of their file (all full files together would exceed [review] max_full_files_chars = 160000, and no excerpt fits the limits either): src/main/resources/templates/home.html, src/test/kotlin/de/hoennig/werkator/server/BuildActivityUnitTest.kt, src/test/kotlin/de/hoennig/werkator/server/PermanentBranchRoutesRestTest.kt and 3 more (advisory: Jev judged every changed file)

Classifier

Unit Question Problem Confidence Verdict
docs/prs/2026-10-14-PR#160-home-builds-panel.md Scenario#160.03 more_than_one_aspect 0.67 – YELLOW
docs/prs/2026-10-14-PR#160-home-builds-panel.md Scenario#160.05 more_than_one_aspect 0.80 – YELLOW
docs/prs/2026-10-14-PR#160-home-builds-panel.md Scenario#160.06 more_than_one_aspect 0.71 – YELLOW

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

Usage: model `openrouter/minimax/minimax-m3`, LLM done, tokens counted before the call 83594, calls 1, tokens in 80277 / out 18949 (reasoning included in out), duration 228.7 s, cost 0.0468 USD (reported), classifier `jev-1.13.0` calls 11, tokens in 10053, cost 0.0004 USD, excerpt selection `openrouter/openai/gpt-6-luna` calls 9, tokens in 104258 / out 2115, cost 0.0141 USD (reported), build file judge `jev-1.13.0` calls 17, tokens in 30354, cost 0.0013 USD, phases: path_judge 1.1 s, classifier 0.8 s, context 47.7 s, model_review 178.5 s, config: defaults + host + repository (.werkrevisor.toml at main 15b1251).
Reviewed head `76ce39ce37c831c1e4e40fbab730a46fcad188c2` against base `15b125126912d7c2124c222b8ecd8a839c12aa5d`, werkrevisor 0.41.2.
<!-- werkrevisor:76ce39ce37c831c1e4e40fbab730a46fcad188c2 --> <!-- werkrevisor-verdict:YELLOW --> <!-- werkrevisor-blocks:964bbb247f5dca652674eca1afcc093c,2e5483faa8a02db874a07cae06ead28c,9ccdedaf34428a034c59d38e45ac370c,4f255434d4bce1663b753f80e0700cb2,0f3281f08a9c11f21483462e0ebb51ce,8ecdd77d0b403e2f2b52b39c29ac5328,969a182268213048ce5457cb20a4498f,35a9c5de8012fe1d875b05f86b47fccb,bf5be3568fe069ac550950cb3e5f08ae,ac56a54b358196208981ae1c0bcd62d6,7c0d932203f687f0e48eda7bc4301796,930f45a3ea02bbb555e6054dec2dcdfe,42b4ecb0d61b2e0c9f3c2963bafd1177,821a983ea7b162ddff1804629bc566ba,65c4240f8dcd2e2d1ca53147d408f3a9,f5114f4f983f91bfd3cd6974bfb62d8e,1f28011399dfcec817bd13d149912887,98bb5cbfdf4106c702b590b5a742169c,f9cfe5c4e38138cc70b83c19152d20b7,381f2e9ba6d7c0d31a95e93a369e416b,9dd853e3993ab420287221f2cd762286,70d00eff3e81fed613da79b4831cf91e,cb9385babd1fb5c82df3550113c2a78f,373af575f677b00e26783d81838a0b41,ff7dcfe8da9a6ce6c47af7484829cae8,4116a77d086bf32029e93f257879239b,b80c0f3cbc729c7ecbe90836795fd067,251209d9757da38e585317e53428d286,0aff342ae7ec392df3eae3405ed23c1c,5ebb8eeb24592a659c26761ca3889aa8,cc712151d2fa0d2cef1f01b4bfb91cc1,e6cc35586d202faaacfe5891d2af76df,7b44fa136173176710f16d74efca1121,1bb79d3bf02571500d48e595054cf5f2,e80816c82e9a2eeeecbe21d15c0f798c,568dcd2a5ac5a2ea166f84d5d3882488,c332b3341f3eff8a0859574e0dcabb1c,e2ea1a146c1dc93f081cc9cf7c44cf54,2f09c4638b6d8007184e665393505977,ad5a451939446e8d5b8fb699669b09d0,552426f91324f1fc2d82bb6778fbbbbc,549f0649ccb0d7d0dbede42e64b96b3c,1d4022786014e23be1f514424bf5f3aa,6c9db70308086c6824b4a46a4f39cac8,abfdeda0fd89bfc7965a7541315374d1,e78802366e4dc4f259e0d542ea6c84e6,b2740f42697a747801a7441107bbaf7d,bf1d781c20c482a0a4b9bf3286ea27af,39a026626e3367ea2ea392ac5915cf71,a599217ea3ef4fb4fb15d192a138e1ca,97e39b6daebdf07967ebdd5a7df05dd7 --> <!-- werkrevisor-folded --> <details><summary>🟡 werkrevisor YELLOW for <code>76ce39c</code>, superseded by <a href="http://git.javagil.de/mi/werkator/pulls/160#issuecomment-5359">the result for <code>bd3323c</code></a></summary> ## 🟡 werkrevisor: YELLOW / HUMAN_REVIEW Change kind: `mixed`. ### Reasons - **YELLOW** spec: docs/prs/2026-10-14-PR#160-home-builds-panel.md Scenario#160.03 more_than_one_aspect (0.67 > yellow_above = 0.6) - **YELLOW** spec: docs/prs/2026-10-14-PR#160-home-builds-panel.md Scenario#160.05 more_than_one_aspect (0.80 > yellow_above = 0.6) - **YELLOW** spec: docs/prs/2026-10-14-PR#160-home-builds-panel.md Scenario#160.06 more_than_one_aspect (0.71 > yellow_above = 0.6) - **hint** writing rules violated in the changed docs: .claude/skills/architecture/SKILL.md:56: more than one sentence on a line; .claude/skills/architecture/SKILL.md:56: line longer than 400 characters (1958) - **hint** 16 changed file(s) that neither weaken the checks, touch security nor show a risk category of jvm-spring-backend according to Jev - **hint** 1 build change(s) of low risk according to Jev: build.gradle.kts (weakens checks 0.03, risk 0.00, security 0.01) - **hint** 2 changed files were given to the AI as excerpt of the selected lines and 5 lines around each changed line, not in full (each larger than [review] max_full_file_chars = 80000): src/main/resources/static/werkator.js, src/main/resources/templates/releases.html - **hint** 1 changed file was given to the AI as excerpt of the selected lines and 5 lines around each changed line, not in full (all full files together would exceed [review] max_full_files_chars = 160000): src/test/kotlin/de/hoennig/werkator/server/UiPageRestTest.kt - **hint** 6 changed files were given to the AI only as diff, not in full, so it could not check them against the rest of their file (all full files together would exceed [review] max_full_files_chars = 160000, and no excerpt fits the limits either): src/main/resources/templates/home.html, src/test/kotlin/de/hoennig/werkator/server/BuildActivityUnitTest.kt, src/test/kotlin/de/hoennig/werkator/server/PermanentBranchRoutesRestTest.kt and 3 more (advisory: Jev judged every changed file) ### Classifier | Unit | Question | Problem | Confidence | Verdict | |---|---|---|---|---| | docs/prs/2026-10-14-PR#160-home-builds-panel.md Scenario#160.03 | more_than_one_aspect | 0.67 | – | YELLOW | | docs/prs/2026-10-14-PR#160-home-builds-panel.md Scenario#160.05 | more_than_one_aspect | 0.80 | – | YELLOW | | docs/prs/2026-10-14-PR#160-home-builds-panel.md Scenario#160.06 | more_than_one_aspect | 0.71 | – | YELLOW | 8 of 11 units passed all questions (1 PR document(s)). 3 answers ignored because of a confidence below [classifier] min_confidence. <sub> Usage: model `openrouter/minimax/minimax-m3`, LLM done, tokens counted before the call 83594, calls 1, tokens in 80277 / out 18949 (reasoning included in out), duration 228.7 s, cost 0.0468 USD (reported), classifier `jev-1.13.0` calls 11, tokens in 10053, cost 0.0004 USD, excerpt selection `openrouter/openai/gpt-6-luna` calls 9, tokens in 104258 / out 2115, cost 0.0141 USD (reported), build file judge `jev-1.13.0` calls 17, tokens in 30354, cost 0.0013 USD, phases: path_judge 1.1 s, classifier 0.8 s, context 47.7 s, model_review 178.5 s, config: defaults + host + repository (.werkrevisor.toml at main 15b1251).<br> Reviewed head `76ce39ce37c831c1e4e40fbab730a46fcad188c2` against base `15b125126912d7c2124c222b8ecd8a839c12aa5d`, werkrevisor 0.41.2. </sub> </details>
ai-reviewer left a comment
Collaborator

werkrevisor: YELLOW / HUMAN_REVIEW for 76ce39ce37c831c1e4e40fbab730a46fcad188c2.
The result comment of werkrevisor holds the details.

werkrevisor: YELLOW / HUMAN_REVIEW for `76ce39ce37c831c1e4e40fbab730a46fcad188c2`. The result comment of werkrevisor holds the details. <!-- werkrevisor-review:76ce39ce37c831c1e4e40fbab730a46fcad188c2 -->
@@ -54,3 +54,3 @@
What makes several repositories one UI (ADR 0009) is the Repositories page and the repository line (RFC 0001), not a switcher: `RepoOverviews` derives one `RepoOverviewDto` per served repository — the newest build per `latestPerName`, running and pending counts, the failed latest builds of the last seven days (`RECENT_FAILURE_WINDOW`), the watcher's per-repository problem in the banner's words — sorted newest build first, never-built last; `GET /api/repos` serves the list, `/repos` renders it (redirecting to the home page with one served repository), and `UiController.baseModel` puts the `RepoLineView` (the current repository plus the conspicuous ones, and the link to the rest) on every repository page. `werkator.js` re-renders both from the endpoint on the table interval; `UiFormats.repoStatusLine`/`count` and the script's `repoStatusLine`/`countText`, and `RepoLineView.chipOf`/`renderRepoChip`, must produce the same texts. Fragment names are deliberately not element names — Thymeleaf resolves `fragments :: nav` to the first `<nav>` element before the fragment of that name. Statuses are a dot and a Mono word (`.status::before`, outlined for pending, pulsing for running), so `status status-<name>` stays the only markup. Icons are stroke glyphs as CSS masks (`.icon.icon-<name>`, `--icon` data URIs appended at the end of `werkator.css`) colored by `currentColor`; `werkator.js` builds them with `icon(name)`/`iconLink(...)`, the templates write the `<span class="icon icon-…">` by hand — no emoji anywhere. IBM Plex Sans and Mono are bundled as WOFF2 under `static/fonts/` (latin subset, six faces) and declared by `@font-face` in the stylesheet: nothing is loaded from a third party.
The home page (`/`, RFC 0003) is the instance's entrance, served with one repository as well as with twelve: a 288 px system rail left — the verdict, one row per gauge of the system page and four smaller tiles, each a link into `/system` — and the repository mosaic right, one card per repository in the Repositories page's own order (newest activity first, so attention is a tint and never a new position) with the bar strip of its last twelve builds, height for duration and colour for outcome. `HomeViews.kt` derives all of it from `GET /api/repos` (the strip is `RepoOverviewDto.recentBuilds`) and `GET /api/system`; only the sparklines are drawn client-side, by the system page's own `drawSpark` from `GET /api/system/history`. The page does not use `viewHead` — no tabs, no `h1`, no repository line — but it carries the watcher banner, and the footer sits outside its two-column grid so it spans both. `HomeBarView.strip`/`barStrip`, `HomeCardView.toneOf`/`cardTone` and `HomeTexts`/`homeMeta` are twins like every other pair.
The home page (`/`, RFC 0003) is the instance's entrance, served with one repository as well as with twelve: a 288 px system rail left — the verdict, one row per gauge of the system page and four smaller tiles, each a link into `/system` — and the repository mosaic right, one card per repository in the Repositories page's own order (newest activity first, so attention is a tint and never a new position) with the bar strip of its last twelve builds, height for duration and colour for outcome. `HomeViews.kt` derives all of it from `GET /api/repos` (the strip is `RepoOverviewDto.recentBuilds`) and `GET /api/system`; only the sparklines are drawn client-side, by the system page's own `drawSpark` from `GET /api/system/history`. Above the mosaic stands the Builds panel (PR#160): across all repositories the running builds (longest running first), then the queued ones (longest waiting first), then the failures — failed or timed out, not outdated (PR#156), started within `RECENT_FAILURE_WINDOW`, of a name that is not running or queued again — newest first, at most `BuildActivity.LIMIT` (5). `BuildActivity` derives them on read from each repository's history and redacts a private repository's like `RepoOverviews`; `GET /api/activity` serves them, and a tile leads to the Current Builds view while the build runs or waits, to the build page once it failed. `HomeBuildView.toneOf`/`buildTone` and the tile markup of `home.html`/`renderHomeBuild` are twins; a tile carries the ticker's data attributes, so its time counts on between polls. Five tiles fit one row on a desktop screen because every page is up to 1440 px wide and a tile at least 180 px. The page does not use `viewHead` — no tabs, no `h1`, no repository line — but it carries the watcher banner, and the footer sits outside its two-column grid so it spans both. `HomeBarView.strip`/`barStrip`, `HomeCardView.toneOf`/`cardTone` and `HomeTexts`/`homeMeta` are twins like every other pair.
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.
Collaborator

Writing rule: line longer than 400 characters (1958) (werkrevisor writing rule)

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

**Writing rule: line longer than 400 characters (1958)** (werkrevisor writing rule) Fix the line, or reply why it stays, and resolve this comment.
Author
Collaborator

Fixed: the Builds panel's paragraph stands apart from the long line now, one sentence per line; line 56 is unchanged against main again.

Fixed: the Builds panel's paragraph stands apart from the long line now, one sentence per line; line 56 is unchanged against main again.
Author
Collaborator

Fixed: the Builds panel's paragraph stands apart from the long line now, one sentence per line; line 56 is unchanged against main again.

Fixed: the Builds panel's paragraph stands apart from the long line now, one sentence per line; line 56 is unchanged against main again.
claude-code marked this conversation as resolved
ai-reviewer scheduled this pull request to auto merge when all checks succeed 2026-10-14 12:13:56 +02:00
ai-reviewer requested review from mi 2026-10-14 12:13:56 +02:00
Collaborator
⚠️ werkrevisor ERROR for ?, superseded by the result for bd3323c

Codex review: critical

The change adds a public activity endpoint and authorization-dependent redaction of private-repository content. A mistake at this boundary could expose repository names, branches, commits, or pull requests, so human review is required.

No findings.

The merge waits for the status ai-review/codex: every line comment resolved, and the approval of a human for a critical PR or for a finding that is only here.

Model `gpt-6-astra`, effort high, tokens in 430059 (cached 351488) / out 1659, 65.7 s, 14 commands; reviewed head `76ce39ce37c831c1e4e40fbab730a46fcad188c2`.
<!-- werkrevisor-codex:76ce39ce37c831c1e4e40fbab730a46fcad188c2 --> <!-- werkrevisor-codex-critical:true --> <!-- werkrevisor-codex-unattached:0 --> <!-- werkrevisor-codex --> <!-- werkrevisor-folded --> <details><summary>⚠️ werkrevisor ERROR for <code>?</code>, superseded by <a href="http://git.javagil.de/mi/werkator/pulls/160#issuecomment-5359">the result for <code>bd3323c</code></a></summary> ## Codex review: critical The change adds a public activity endpoint and authorization-dependent redaction of private-repository content. A mistake at this boundary could expose repository names, branches, commits, or pull requests, so human review is required. No findings. The merge waits for the status `ai-review/codex`: every line comment resolved, and the approval of a human for a critical PR or for a finding that is only here. <sub> Model `gpt-6-astra`, effort high, tokens in 430059 (cached 351488) / out 1659, 65.7 s, 14 commands; reviewed head `76ce39ce37c831c1e4e40fbab730a46fcad188c2`. </sub> </details>
claude-code added 1 commit 2026-10-14 12:21:29 +02:00
One aspect per scenario, the skill's sentences on lines of their own, no empty link on a private card
ai-review/codex waiting for the Codex review
werkator build succeeded after 02:29
ai-review/assessment human review required; a human approval unlocks the merge; no human review requested; merge conflict with main: the author rebases the branch onto main and pushes
ai-review/gate build succeeded after 05:59
bd3323c740
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Collaborator
🟡 werkrevisor YELLOW for bd3323c, superseded by the result for cb53076

🟡 werkrevisor: YELLOW / HUMAN_REVIEW

Gate: no human review requested; merge conflict with main: the author rebases the branch onto main and pushes.

Change kind: mixed.

Reasons

  • YELLOW PR too large for an AI-only approval: 818 changed lines (docs and mechanical files not counted) exceed [size] max_changed_lines = 800; please review it yourself
  • hint 16 changed file(s) that neither weaken the checks, touch security nor show a risk category of jvm-spring-backend according to Jev
  • hint 1 build change(s) of low risk according to Jev: build.gradle.kts (weakens checks 0.03, risk 0.00, security 0.01)
  • hint 2 changed files were given to the AI as excerpt of the selected lines and 5 lines around each changed line, not in full (each larger than [review] max_full_file_chars = 80000): src/main/resources/static/werkator.js, src/main/resources/templates/releases.html
  • hint 2 changed files were given to the AI as excerpt of the selected lines and 5 lines around each changed line, not in full (all full files together would exceed [review] max_full_files_chars = 160000): src/test/kotlin/de/hoennig/werkator/server/PermanentBranchRoutesRestTest.kt, src/test/kotlin/de/hoennig/werkator/server/UiPageRestTest.kt
  • hint 5 changed files were given to the AI only as diff, not in full, so it could not check them against the rest of their file (all full files together would exceed [review] max_full_files_chars = 160000, and no excerpt fits the limits either): src/main/resources/templates/home.html, src/test/kotlin/de/hoennig/werkator/server/BuildActivityUnitTest.kt, src/test/kotlin/de/hoennig/werkator/server/ReposApiControllerRestTest.kt and 2 more (advisory: Jev judged every changed file)
  • hint 1 finding(s) of low severity or rated minor by Jev: src/test/kotlin/de/hoennig/werkator/server/BuildActivityUnitTest.kt:120-186

Findings

  1. [low] Swapped scenario labels at src/test/kotlin/de/hoennig/werkator/server/BuildActivityUnitTest.kt:120-186, hint, as a line comment

Classifier

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

Usage: model `openrouter/minimax/minimax-m3`, LLM done, tokens counted before the call 83769, calls 1, tokens in 80446 / out 21819 (reasoning included in out), duration 348.7 s, cost 0.0503 USD (reported), classifier `jev-1.13.0` calls 19, tokens in 17631, cost 0.0007 USD, finding judge `none` calls 0, tokens in 0, cost 0.0000 USD, excerpt selection `openrouter/openai/gpt-6-luna` calls 9, tokens in 105267 / out 2336, cost 0.0098 USD (reported), build file judge `jev-1.13.0` calls 17, tokens in 31459, cost 0.0013 USD, phases: path_judge 1.1 s, classifier 1.1 s, context 52.3 s, model_review 293.3 s, finding_judge 0.0 s, config: defaults + host + repository (.werkrevisor.toml at main d17f9bd).
Reviewed head `bd3323c740d74dbe1be3d181e9779927e5f9448c` against base `d17f9bd16056c064a4f17ba8ee1f4c49ba87656d`, werkrevisor 0.41.2.
<!-- werkrevisor:bd3323c740d74dbe1be3d181e9779927e5f9448c --> <!-- werkrevisor-verdict:YELLOW --> <!-- werkrevisor-blocks:588535d9895b8474a4cd7a45db7cba38,2e5483faa8a02db874a07cae06ead28c,a21d5be563b49e1213a26ce7e7467320,4f255434d4bce1663b753f80e0700cb2,0f3281f08a9c11f21483462e0ebb51ce,8ecdd77d0b403e2f2b52b39c29ac5328,969a182268213048ce5457cb20a4498f,35a9c5de8012fe1d875b05f86b47fccb,bf5be3568fe069ac550950cb3e5f08ae,ac56a54b358196208981ae1c0bcd62d6,7c0d932203f687f0e48eda7bc4301796,930f45a3ea02bbb555e6054dec2dcdfe,42b4ecb0d61b2e0c9f3c2963bafd1177,821a983ea7b162ddff1804629bc566ba,65c4240f8dcd2e2d1ca53147d408f3a9,f5114f4f983f91bfd3cd6974bfb62d8e,1f28011399dfcec817bd13d149912887,98bb5cbfdf4106c702b590b5a742169c,f9cfe5c4e38138cc70b83c19152d20b7,381f2e9ba6d7c0d31a95e93a369e416b,9dd853e3993ab420287221f2cd762286,70d00eff3e81fed613da79b4831cf91e,cb9385babd1fb5c82df3550113c2a78f,373af575f677b00e26783d81838a0b41,ff7dcfe8da9a6ce6c47af7484829cae8,4116a77d086bf32029e93f257879239b,b80c0f3cbc729c7ecbe90836795fd067,251209d9757da38e585317e53428d286,0aff342ae7ec392df3eae3405ed23c1c,5ebb8eeb24592a659c26761ca3889aa8,cc712151d2fa0d2cef1f01b4bfb91cc1,e6cc35586d202faaacfe5891d2af76df,7b44fa136173176710f16d74efca1121,1bb79d3bf02571500d48e595054cf5f2,e80816c82e9a2eeeecbe21d15c0f798c,568dcd2a5ac5a2ea166f84d5d3882488,c332b3341f3eff8a0859574e0dcabb1c,8d937f1303d780d7a6661c31dc2d1bf2,35ae09e6234912d7e5d557bfb18b1225,6f670208ea806f06a93aa5c66e0caac1,552426f91324f1fc2d82bb6778fbbbbc,549f0649ccb0d7d0dbede42e64b96b3c,1d4022786014e23be1f514424bf5f3aa,8e515ee5d6b57fc02724b2e1792609c9,abfdeda0fd89bfc7965a7541315374d1,e78802366e4dc4f259e0d542ea6c84e6,c963d967c3f65370843cf1a764c4888e,35e5e85326ddfd04b598ba3d7a86b152,bf1d781c20c482a0a4b9bf3286ea27af,39a026626e3367ea2ea392ac5915cf71,a599217ea3ef4fb4fb15d192a138e1ca,2c5d9b899dacecc6d557de2b509c5464 --> <!-- werkrevisor-folded --> <details><summary>🟡 werkrevisor YELLOW for <code>bd3323c</code>, superseded by <a href="http://git.javagil.de/mi/werkator/pulls/160#issuecomment-5367">the result for <code>cb53076</code></a></summary> ## 🟡 werkrevisor: YELLOW / HUMAN_REVIEW Gate: no human review requested; merge conflict with main: the author rebases the branch onto main and pushes. Change kind: `mixed`. ### Reasons - **YELLOW** PR too large for an AI-only approval: 818 changed lines (docs and mechanical files not counted) exceed [size] max_changed_lines = 800; please review it yourself - **hint** 16 changed file(s) that neither weaken the checks, touch security nor show a risk category of jvm-spring-backend according to Jev - **hint** 1 build change(s) of low risk according to Jev: build.gradle.kts (weakens checks 0.03, risk 0.00, security 0.01) - **hint** 2 changed files were given to the AI as excerpt of the selected lines and 5 lines around each changed line, not in full (each larger than [review] max_full_file_chars = 80000): src/main/resources/static/werkator.js, src/main/resources/templates/releases.html - **hint** 2 changed files were given to the AI as excerpt of the selected lines and 5 lines around each changed line, not in full (all full files together would exceed [review] max_full_files_chars = 160000): src/test/kotlin/de/hoennig/werkator/server/PermanentBranchRoutesRestTest.kt, src/test/kotlin/de/hoennig/werkator/server/UiPageRestTest.kt - **hint** 5 changed files were given to the AI only as diff, not in full, so it could not check them against the rest of their file (all full files together would exceed [review] max_full_files_chars = 160000, and no excerpt fits the limits either): src/main/resources/templates/home.html, src/test/kotlin/de/hoennig/werkator/server/BuildActivityUnitTest.kt, src/test/kotlin/de/hoennig/werkator/server/ReposApiControllerRestTest.kt and 2 more (advisory: Jev judged every changed file) - **hint** 1 finding(s) of low severity or rated minor by Jev: src/test/kotlin/de/hoennig/werkator/server/BuildActivityUnitTest.kt:120-186 ### Findings 1. **[low] Swapped scenario labels** at `src/test/kotlin/de/hoennig/werkator/server/BuildActivityUnitTest.kt:120-186`, hint, as a line comment ### Classifier 19 of 19 units passed all questions (1 PR document(s)). 1 answer ignored because of a confidence below [classifier] min_confidence. <sub> Usage: model `openrouter/minimax/minimax-m3`, LLM done, tokens counted before the call 83769, calls 1, tokens in 80446 / out 21819 (reasoning included in out), duration 348.7 s, cost 0.0503 USD (reported), classifier `jev-1.13.0` calls 19, tokens in 17631, cost 0.0007 USD, finding judge `none` calls 0, tokens in 0, cost 0.0000 USD, excerpt selection `openrouter/openai/gpt-6-luna` calls 9, tokens in 105267 / out 2336, cost 0.0098 USD (reported), build file judge `jev-1.13.0` calls 17, tokens in 31459, cost 0.0013 USD, phases: path_judge 1.1 s, classifier 1.1 s, context 52.3 s, model_review 293.3 s, finding_judge 0.0 s, config: defaults + host + repository (.werkrevisor.toml at main d17f9bd).<br> Reviewed head `bd3323c740d74dbe1be3d181e9779927e5f9448c` against base `d17f9bd16056c064a4f17ba8ee1f4c49ba87656d`, werkrevisor 0.41.2. </sub> </details>
ai-reviewer left a comment
Collaborator

werkrevisor: YELLOW / HUMAN_REVIEW for bd3323c740d74dbe1be3d181e9779927e5f9448c.
The result comment of werkrevisor holds the details.

werkrevisor: YELLOW / HUMAN_REVIEW for `bd3323c740d74dbe1be3d181e9779927e5f9448c`. The result comment of werkrevisor holds the details. <!-- werkrevisor-review:bd3323c740d74dbe1be3d181e9779927e5f9448c -->
@@ -0,0 +117,4 @@
activity(repo).all(now).map { it.build.artifactKey } shouldBe listOf("feature/again-30")
}
test("a failure older than seven days has no tile (Scenario#160.06)") {
Collaborator

[low] Swapped scenario labels (werkrevisor)

hint

The PR document defines Scenario#160.04 as "A failure older than seven days has no tile!" and Scenario#160.06 as "A visitor sees a private repository's build counted and timed, but not named!". In BuildActivityUnitTest.kt the suffixes on those two tests are swapped: the seven-day-window test name ends with "(Scenario#160.06)" and the private-repository test name ends with "(Scenario#160.04)". The other verifying tests (ReposApiControllerRestTest, UiHomeRestTest) carry the correct Scenario#160.06 suffix. The behaviour the tests verify is correct; the only defect is the inconsistent scenario-number labelling, which contradicts the PR document.

**[low] Swapped scenario labels** (werkrevisor) hint The PR document defines Scenario#160.04 as "A failure older than seven days has no tile!" and Scenario#160.06 as "A visitor sees a private repository's build counted and timed, but not named!". In BuildActivityUnitTest.kt the suffixes on those two tests are swapped: the seven-day-window test name ends with "(Scenario#160.06)" and the private-repository test name ends with "(Scenario#160.04)". The other verifying tests (ReposApiControllerRestTest, UiHomeRestTest) carry the correct Scenario#160.06 suffix. The behaviour the tests verify is correct; the only defect is the inconsistent scenario-number labelling, which contradicts the PR document.
Author
Collaborator

Fixed: the seven-day test names Scenario#160.04, the private-repository test Scenario#160.06.

Fixed: the seven-day test names Scenario#160.04, the private-repository test Scenario#160.06.
claude-code marked this conversation as resolved
claude-code added 2 commits 2026-10-14 12:29:56 +02:00
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Merge main into home-build-panel
ai-review/codex Codex review passed
werkator build succeeded after 03:20
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 04:03
cb53076758
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Collaborator

🟡 werkrevisor: YELLOW / HUMAN_REVIEW

Change kind: mixed.

Reasons

  • YELLOW PR too large for an AI-only approval: 818 changed lines (docs and mechanical files not counted) exceed [size] max_changed_lines = 800; please review it yourself
  • hint 16 changed file(s) that neither weaken the checks, touch security nor show a risk category of jvm-spring-backend according to Jev
  • hint 1 build change(s) of low risk according to Jev: build.gradle.kts (weakens checks 0.03, risk 0.00, security 0.01)
  • hint 2 changed files were given to the AI as excerpt of the selected lines and 5 lines around each changed line, not in full (each larger than [review] max_full_file_chars = 80000): src/main/resources/static/werkator.js, src/main/resources/templates/releases.html
  • hint 2 changed files were given to the AI as excerpt of the selected lines and 5 lines around each changed line, not in full (all full files together would exceed [review] max_full_files_chars = 160000): src/test/kotlin/de/hoennig/werkator/server/PermanentBranchRoutesRestTest.kt, src/test/kotlin/de/hoennig/werkator/server/UiPageRestTest.kt
  • hint 5 changed files were given to the AI only as diff, not in full, so it could not check them against the rest of their file (all full files together would exceed [review] max_full_files_chars = 160000, and no excerpt fits the limits either): src/main/resources/templates/home.html, src/test/kotlin/de/hoennig/werkator/server/BuildActivityUnitTest.kt, src/test/kotlin/de/hoennig/werkator/server/ReposApiControllerRestTest.kt and 2 more (advisory: Jev judged every changed file)

Classifier

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

Usage: model `openrouter/minimax/minimax-m3`, LLM done, tokens counted before the call 83588, calls 1, tokens in 80284 / out 12229 (reasoning included in out), duration 233.5 s, cost 0.0387 USD (reported), classifier `jev-1.13.0` calls 19, tokens in 17631, cost 0.0007 USD, excerpt selection `openrouter/openai/gpt-6-luna` calls 9, tokens in 105363 / out 2309, cost 0.0064 USD (reported), build file judge `jev-1.13.0` calls 17, tokens in 31458, cost 0.0013 USD, phases: path_judge 1.2 s, classifier 1.1 s, context 49.3 s, model_review 181.2 s, config: defaults + host + repository (.werkrevisor.toml at main d17f9bd).
Reviewed head `cb53076758d0a3410c4e8ff521126e5827a243ab` against base `d17f9bd16056c064a4f17ba8ee1f4c49ba87656d`, werkrevisor 0.41.2.
<!-- werkrevisor:cb53076758d0a3410c4e8ff521126e5827a243ab --> <!-- werkrevisor-verdict:YELLOW --> <!-- werkrevisor-blocks:588535d9895b8474a4cd7a45db7cba38,94ca5f9c5ed0a34e5df3ade5d5ee0460,a21d5be563b49e1213a26ce7e7467320,4f255434d4bce1663b753f80e0700cb2,0f3281f08a9c11f21483462e0ebb51ce,8ecdd77d0b403e2f2b52b39c29ac5328,969a182268213048ce5457cb20a4498f,35a9c5de8012fe1d875b05f86b47fccb,bf5be3568fe069ac550950cb3e5f08ae,ac56a54b358196208981ae1c0bcd62d6,7c0d932203f687f0e48eda7bc4301796,930f45a3ea02bbb555e6054dec2dcdfe,42b4ecb0d61b2e0c9f3c2963bafd1177,821a983ea7b162ddff1804629bc566ba,65c4240f8dcd2e2d1ca53147d408f3a9,f5114f4f983f91bfd3cd6974bfb62d8e,1f28011399dfcec817bd13d149912887,98bb5cbfdf4106c702b590b5a742169c,f9cfe5c4e38138cc70b83c19152d20b7,381f2e9ba6d7c0d31a95e93a369e416b,9dd853e3993ab420287221f2cd762286,70d00eff3e81fed613da79b4831cf91e,cb9385babd1fb5c82df3550113c2a78f,373af575f677b00e26783d81838a0b41,ff7dcfe8da9a6ce6c47af7484829cae8,4116a77d086bf32029e93f257879239b,b80c0f3cbc729c7ecbe90836795fd067,251209d9757da38e585317e53428d286,0aff342ae7ec392df3eae3405ed23c1c,5ebb8eeb24592a659c26761ca3889aa8,cc712151d2fa0d2cef1f01b4bfb91cc1,e6cc35586d202faaacfe5891d2af76df,7b44fa136173176710f16d74efca1121,1bb79d3bf02571500d48e595054cf5f2,e80816c82e9a2eeeecbe21d15c0f798c,568dcd2a5ac5a2ea166f84d5d3882488,c332b3341f3eff8a0859574e0dcabb1c,8d937f1303d780d7a6661c31dc2d1bf2,35ae09e6234912d7e5d557bfb18b1225,b33278069591dc776511e50d6c9bd5a1,552426f91324f1fc2d82bb6778fbbbbc,549f0649ccb0d7d0dbede42e64b96b3c,1d4022786014e23be1f514424bf5f3aa,8e515ee5d6b57fc02724b2e1792609c9,abfdeda0fd89bfc7965a7541315374d1,e78802366e4dc4f259e0d542ea6c84e6,c963d967c3f65370843cf1a764c4888e,35e5e85326ddfd04b598ba3d7a86b152,bf1d781c20c482a0a4b9bf3286ea27af,39a026626e3367ea2ea392ac5915cf71,a599217ea3ef4fb4fb15d192a138e1ca,2c5d9b899dacecc6d557de2b509c5464 --> ## 🟡 werkrevisor: YELLOW / HUMAN_REVIEW Change kind: `mixed`. ### Reasons - **YELLOW** PR too large for an AI-only approval: 818 changed lines (docs and mechanical files not counted) exceed [size] max_changed_lines = 800; please review it yourself - **hint** 16 changed file(s) that neither weaken the checks, touch security nor show a risk category of jvm-spring-backend according to Jev - **hint** 1 build change(s) of low risk according to Jev: build.gradle.kts (weakens checks 0.03, risk 0.00, security 0.01) - **hint** 2 changed files were given to the AI as excerpt of the selected lines and 5 lines around each changed line, not in full (each larger than [review] max_full_file_chars = 80000): src/main/resources/static/werkator.js, src/main/resources/templates/releases.html - **hint** 2 changed files were given to the AI as excerpt of the selected lines and 5 lines around each changed line, not in full (all full files together would exceed [review] max_full_files_chars = 160000): src/test/kotlin/de/hoennig/werkator/server/PermanentBranchRoutesRestTest.kt, src/test/kotlin/de/hoennig/werkator/server/UiPageRestTest.kt - **hint** 5 changed files were given to the AI only as diff, not in full, so it could not check them against the rest of their file (all full files together would exceed [review] max_full_files_chars = 160000, and no excerpt fits the limits either): src/main/resources/templates/home.html, src/test/kotlin/de/hoennig/werkator/server/BuildActivityUnitTest.kt, src/test/kotlin/de/hoennig/werkator/server/ReposApiControllerRestTest.kt and 2 more (advisory: Jev judged every changed file) ### Classifier 19 of 19 units passed all questions (1 PR document(s)). 1 answer ignored because of a confidence below [classifier] min_confidence. <sub> Usage: model `openrouter/minimax/minimax-m3`, LLM done, tokens counted before the call 83588, calls 1, tokens in 80284 / out 12229 (reasoning included in out), duration 233.5 s, cost 0.0387 USD (reported), classifier `jev-1.13.0` calls 19, tokens in 17631, cost 0.0007 USD, excerpt selection `openrouter/openai/gpt-6-luna` calls 9, tokens in 105363 / out 2309, cost 0.0064 USD (reported), build file judge `jev-1.13.0` calls 17, tokens in 31458, cost 0.0013 USD, phases: path_judge 1.2 s, classifier 1.1 s, context 49.3 s, model_review 181.2 s, config: defaults + host + repository (.werkrevisor.toml at main d17f9bd).<br> Reviewed head `cb53076758d0a3410c4e8ff521126e5827a243ab` against base `d17f9bd16056c064a4f17ba8ee1f4c49ba87656d`, werkrevisor 0.41.2. </sub>
mi approved these changes 2026-10-14 12:37:13 +02:00
Dismissed
Collaborator

Codex review: critical

The change adds a public activity endpoint and extends control-token-dependent redaction of private repository content. A mistake at this authorization boundary could expose private repository names, branches or commits, so human review is required.

No findings.

The merge waits for the status ai-review/codex: every line comment resolved, and the approval of a human for a critical PR or for a finding that is only here.

Model `gpt-6-astra`, effort high, tokens in 315363 (cached 272640) / out 1358, 54.3 s, 9 commands; reviewed head `cb53076758d0a3410c4e8ff521126e5827a243ab`.
<!-- werkrevisor-codex:cb53076758d0a3410c4e8ff521126e5827a243ab --> <!-- werkrevisor-codex-critical:true --> <!-- werkrevisor-codex-unattached:0 --> <!-- werkrevisor-codex --> ## Codex review: critical The change adds a public activity endpoint and extends control-token-dependent redaction of private repository content. A mistake at this authorization boundary could expose private repository names, branches or commits, so human review is required. No findings. The merge waits for the status `ai-review/codex`: every line comment resolved, and the approval of a human for a critical PR or for a finding that is only here. <sub> Model `gpt-6-astra`, effort high, tokens in 315363 (cached 272640) / out 1358, 54.3 s, 9 commands; reviewed head `cb53076758d0a3410c4e8ff521126e5827a243ab`. </sub>
mi approved these changes 2026-10-14 14:14:09 +02:00
ai-reviewer merged commit f76fc59fef into main 2026-10-14 14:16:17 +02:00
ai-reviewer deleted branch home-build-panel 2026-10-14 14:16:17 +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/werkator#160