feat(rendered-views): add the status report and triage board views - #6012
Conversation
harness-ops:morning-brief builds a collapsible, filterable status report page and work-items:triage builds a triage board page grouped by state, blocker and label. Both go through lib/view-builder.mjs and lib/view-runtime.js: a checked-in template plus the tracker text as escaped JSON data, never model-written markup or script. The rendered-views `medium` cascade key picks terminal, file or artifact; the printed brief and the attention table stay the record. Registers generated copies of the builder, runtime and escape helper in the two plugins, and bumps harness-ops to 3.3.0 and work-items to 0.46.0. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…rt-and-triage-board-views # Conflicts: # plugins/harness-ops/.claude-plugin/plugin.json # plugins/harness-ops/CHANGELOG.md # plugins/work-items/.claude-plugin/plugin.json # plugins/work-items/CHANGELOG.md
…rt-and-triage-board-views # Conflicts: # plugins/harness-ops/CHANGELOG.md
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 082b0de424
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Claude finished @kyle-sexton's task in 4m 22s —— View job Security review (
|
|
Claude finished @kyle-sexton's task in 4m 35s —— View job Code review complete
This repo runs a dedicated security lane ( Findings (posted inline)
Both were independently verified (the convention doc, the canonical implementation it should match, and Scope checked, no issues found
|
|
claude-security-review has reviewed this pull request through 44d9d86; a later push is reviewed from there. |
|
claude-review has reviewed this pull request through 44d9d86; a later push is reviewed from there. |
…ortability gate Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Claude finished @kyle-sexton's task in 1m 15s —— View job Security review (
|
|
Claude finished @kyle-sexton's task in 2m 7s —— View job Code review complete
Skip gate hit: this lane's prior review of this content still applies. The diff at the current Per One correctness finding from this lane's prior pass on
No new findings surfaced on top of what's already on this PR's review thread. |
…and stop the brief page when the brief fails Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Claude finished @kyle-sexton's task in 3m 33s —— View job Code review complete
Scope: full PR diff against Finding (posted inline)
Checked, no other issues found
|
|
Claude finished @kyle-sexton's task in 1m 15s —— View job Security review (
|
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Claude finished @kyle-sexton's task in 1m 9s —— View job Code review complete
Skip gate hit: this lane's prior review of this content still applies. I diffed the last That's the only change touching this PR's file set, and it's noise pulled in by the two This lane's own prior review already covered this content in full (correctness pass at One previously-reported finding from this lane remains open on the thread (not re-posted, since
|
|
Claude finished @kyle-sexton's task in 1m 1s —— View job Security review (
|
…ief page eval Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…rt-and-triage-board-views
|
Claude finished @kyle-sexton's task in 44s —— View job Security review (
|
|
Claude finished @kyle-sexton's task in 57s —— View job Code review complete
Scope: incremental, per the lane header — this lane last reviewed Finding resolved, no new findingsThis change is the fix for this lane's own previously-reported finding: eval case 8 ( The new wording — "runs scripts/morning-brief.sh once into a file and builds nothing if it exits non-zero, otherwise prints the brief verbatim from that file, then builds the page" — matches the current Checked and unaffected by this edit:
No open findings on this incremental diff. |
Co-authored-by: ksextonmelodic <ksextonmelodic@gmail.com>
…rt-and-triage-board-views # Conflicts: # plugins/harness-ops/CHANGELOG.md # plugins/work-items/.claude-plugin/plugin.json # plugins/work-items/CHANGELOG.md Co-authored-by: ksextonmelodic <ksextonmelodic@gmail.com>
Closes #5865
Summary
Adds the two views from the comprehension program (#5835, C5), both built only with
lib/view-builder.mjsandlib/view-runtime.js:harness-ops:morning-briefbuilds a page from the brief's own text. Each== Section ==is a collapsible block and one filter box matches any line.work-items:triagebuilds a board for the attention view, grouped by state, blocker and label, each section collapsible with its own filter box.The printed brief and the attention table stay the record; the page is a view of them (rendered-views convention, "markdown is the record").
Fix
templates/brief.html,templates/board.html) and a small builder script (scripts/build-brief-view.mjs,scripts/build-board.mjs) that callsbuildViewwith the interactive profile. Issue and PR text is K2: it reaches the page only as the escaped JSON data block, never as markup or script. The skills tell the model not to hand-write or edit the page.mediumcascade key (terminal,file,artifact;autoand unset mean a local file in an interactive session and no page in a lane or CI run).artifactpublishes the built file with the Artifact tool and falls back to a file with a stated reason. The steps live incontext/view.mdandcontext/board.md, each referenced from a short SKILL.md section.scripts/shared-copies.txtregisters generated copies ofview-builder.mjs,view-runtime.js(both plugins) andhtml-escape.mjs(work-items);sync-shared-copies.shgenerated them. harness-ops is bumped to 3.3.0 and work-items to 0.46.0, each with a CHANGELOG entry.Limits, by choice: the runtime has no re-group or re-sort control, so the board renders the three groupings as sections and keeps the table's oldest-first order inside a group; the filter box matches row text, which carries the label, state and blocker. I left
view-runtime.jsalone because changing it changes every page's hash.Verification
plugins/work-items/tests/triage-board.test.sh: grouping, the interactive profile, a hostile corpus (script tags, event handlers,javascript:URL, SVG script,</script>breakout, slot syntax) in titles, labels, state, kind and repo, exit codes, and a headless Chrome load fromfile://that reads the rendered DOM back. Passes.plugins/harness-ops/skills/morning-brief/morning-brief-view.test.sh: runs the realmorning-brief.shon fixtures with hostile titles, builds the page, checks it passes the profile, and loads it in headless Chrome. Passes. The existingmorning-brief.test.shstill passes (143 cases).lib/view-builder.test.sh,sync-shared-copies.sh --checkand--check-bump origin/main,check-changelog-parity.sh,validate-plugin-contracts.mjs,check-declared-prerequisites.mjs, markdownlint, typos and shellcheck pass.check-changed-skills.shreports 0 errors for both skills.check-script-contract.test.shfails 2 cases here becausehtmlhintis not installed in this worktree (npm cinot run); it is unrelated to this change.Related
morning-briefis one of its named candidate owners).🤖 Generated with Claude Code