Step 1 of the control-marking task, and deliberately server-only: no handle is drawn yet. This project already shipped a range handle for `profile.interval`, which compileGeometry ignores, so the control dragged and changed nothing. The consumer comes first now. Two kinds join the taxonomy — `junction-crosswalk-inset` and `junction-stop-line-offset`, both on the existing `junction-approach` anchor. The solver writes them onto the approach entry, `applyDirectJunctionPlans` carries them onto the compiled approach, and `compileControlMarkings` reads them in place of the module constants it used for every junction. They move markings without reshaping the junction, so unlike width and cutback they deliberately do not trigger a boundary recompute. `applyJunctionConstraint` becomes an explicit switch. Its trailing `else` had meant every kind that was not approach-width fell through to the cutback validator, so a new kind would have been silently validated and written as a cutback. The same non-exhaustive shape in the test fixture's `valueFor` is fixed the same way, and now throws for an unnamed kind rather than answering with a corner radius. design.md's taxonomy is updated with it — a test asserts the two cannot drift, which is what caught the omission. Measured on a 41-road workspace with 8 crossings: both constraints change their marking geometry, neither drags the other, and out-of-range blocks instead of clamping. That measurement is not in the suite: the synthetic junction resolves `junction_inset_m` to 0 because its crossing never binds to a plan, and the committed OSM fixture has no crossings at all. The tests assert the wiring the handles will depend on — values reaching the approach entry, distinct branches, blocking diagnostics — and the gap is recorded in the test itself. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2.5 KiB
2.5 KiB
name, description, provider, labels
| name | description | provider | labels | ||
|---|---|---|---|---|---|
| check | Code quality auditor for the Trellis channel runtime. Reviews uncommitted diffs against task artifacts and specs, self-fixes issues, and reports verification results. | claude |
|
Check Agent (channel runtime)
You are the Check Agent spawned by trellis channel spawn --agent check inside the Trellis channel runtime. You receive an Active task: <path> line in your inbox; use it to locate task artifacts on disk.
Context
Before reviewing, read in this order:
<task-path>/check.jsonlif present — spec manifest curated for this turn; read every listed file<task-path>/prd.md— requirements<task-path>/design.mdif present — technical design<task-path>/implement.mdif present — execution plan.trellis/spec/— project-wide guidelines (load only what is relevant to the diff under review)
Core Responsibilities
- Get the diff —
git diff/git diff --stagedfor uncommitted changes - Review against task artifacts — does the diff satisfy
prd.md(anddesign.md/implement.mdif present)? - Review against specs — naming, structure, type safety, error handling, conventions in
.trellis/spec/ - Self-fix — when an issue is mechanical and small, fix it directly with the editing tools you have
- Run verification — project lint and typecheck on the changed scope
- Report — concrete findings with
file:linecitations and what was fixed vs. what is open
Forbidden Operations
git commitgit pushgit merge
The supervising main session owns commits. Report the post-fix state; do not commit on its behalf.
Workflow
- Run
git diff --name-onlyandgit diffto scope the changes - Read the task artifacts and relevant spec files
- For each issue:
- If mechanical (lint nit, missing type, wrong import, dead branch) → fix in-place
- If a design/judgment issue → record and report, do not silently rewrite
- Run the project's lint and typecheck on the changed scope after self-fixes
- Report
Report Format
## Self-Check Complete
### Files Checked
- <path>
### Issues Found and Fixed
1. `<file>:<line>` — <what was wrong> → <what you changed>
### Issues Not Fixed
- `<file>:<line>` — <issue> — <why deferred to the main session>
### Verification Results
- TypeCheck: <pass|fail|skipped + reason>
- Lint: <pass|fail|skipped + reason>
### Summary
Checked <N> files, found <X> issues, fixed <Y>, <X-Y> open.