Implementation Notes: Issue 181 Lint Feedback Adoption
Implementation Notes: Issue 181 Lint Feedback Adoption
Summary
Automated implementation is complete on team/stefan/fix/ultracite-lint-config.
Deviations From Plan
No disposable Codex App fixture was created and same-turn /hooks delivery was
not observed. Manual trust and observation remain an explicit gate.
Sanity Checks
| Check | Result | Evidence |
|---|---|---|
| Scaffold/config | Pass | Hierarchy: 2 tests, 17 expectations; public config: 3 tests, 37 expectations. |
| Edited-file and provider feedback | Pass | 16 tests, 47 expectations; safe fix, JSON diagnostics, clean silence, native output, bounded retries. |
| Candidate preview | Pass | Runtime/update: 20 tests, 37 expectations; full scan; 256 MiB Node capture ceiling; overflow/null-status fails before JSON parsing; Effect lifecycle measured at ~45s. |
| Toolchain | Pass | Frozen install and exact version readback; lint-only Effect patch succeeds. |
| Quality | Pass | CLI type-check, syntax, changed-file Oxlint/Oxfmt, wiki sync/content, and diff checks pass. |
Skill Application Evidence
| Task | Skill | Status | Evidence |
|---|---|---|---|
| T1 | codebase-design | applied | Compiler owns lint policy and compatibility. |
| T1 | effect | applied | Exact compatible tuple and lint-only patch verified. |
| T1 | quality-types | applied | Supported asset state is explicit and incompatible tuples fail closed. |
| T1 | tdd | applied | Public scaffold RED was recovered before GREEN. |
| T1 | turborepo | applied | Workspace tasks own lint/format; root owns toolchain and patch lifecycle. |
| T2 | codebase-design | applied | One normalized runner seam owns transforms and diagnostics. |
| T2 | tdd | applied | Real-process safe-fix, diagnostic, failure, and retry tests pass. |
| T3 | codebase-design | applied | Provider envelopes remain thin over normalized results. |
| T3 | tdd | applied | Provider response RED/GREEN fixtures pass for all four adapters. |
| T4 | codebase-design | applied | Candidate execution stays behind one injected process seam. |
| T4 | effect | applied | Typed failures and finalizer cleanup are preserved. |
| T4 | quality-types | applied | Findings and operational failures remain distinct. |
| T4 | tdd | applied | Update warning, blocking, exact-tree, and cleanup slices pass. |
| T5 | writing-for-agents | applied | Commands, provider channels, trust boundary, and exclusions are documented. |
Architecture Conformance Evidence
lint catalog -> scaffold compiler -> generated config/scripts/receipts
edited-file runner -> normalized result -> provider and update consumers| Wave | Verdict | Evidence |
|---|---|---|
| A1 | Pass | RAC-001 and RAC-002 automated evidence is green. |
| A2 | Automated pass; manual gate outstanding | RAC-003 and RAC-004 automated evidence is green; Codex App observation remains unverified. |
| A3 | Automated pass; manual gate outstanding | Runbook and routed wiki agree; the manual App check remains. |
UI/Visual Evidence
N/A. No UI surface changed.
Runtime Validation Evidence
| Task | Observed result | Cleanup | Status |
|---|---|---|---|
| T1 | Exact tuple, Effect patch, structured diagnostic, and explicit @typescript-eslint/utils@8.22.0 dependency for the Effect JS plugin pass. | Research fixture removed. | Met |
| T2 | File-only fix, JSON diagnostics, clean silence, failures, and retry exhaustion pass. | Marked fixture removed. | Met |
| T3 | Process witness and four provider fixtures pass; Codex App /hooks was not observed. | No App fixture was created. | Automated met; manual gate outstanding |
| T4 | Full candidate scan runs without changed-path skipping. Node capture has a 256 MiB ceiling; overflow or null status fails operationally before JSON parsing. Findings warn; operational failures block; live tree remains unchanged. Effect lifecycle measured ~45s. | Candidate cleanup tests pass. | Met |
Behavior Verification Evidence
| Criteria | Status | Evidence |
|---|---|---|
| AC-001–AC-008 | Met | T1/T2 focused suites and tuple readback. |
| AC-009–AC-015 | Automated pass; manual gate outstanding | Provider, preview, cleanup, command, and exclusion evidence passes; App trust/same-turn observation remains manual. |
Acceptance Criteria Status
| Criterion | Status | Evidence |
|---|---|---|
| RAC-001 | Met | Scaffold/config suite and exact tuple pass. |
| RAC-002 | Met | Edited-file runner suite passes. |
| RAC-003 | Automated pass; manual gate outstanding | Provider fixtures pass; Codex App trust/same-turn delivery is unverified. |
| RAC-004 | Met | Candidate preview and update publication-gate suites pass. |
| RAC-005 | Met | Runbook and routed projection pass. |
Manual Review Checklist
| Area | Check | Expected result |
|---|---|---|
| Codex App | Trust the changed hook in /hooks, edit a managed file, inspect PostToolUse, then make a clean edit. | Actionable block, then silence. This remains outstanding. |
| Ultracite | Run bounded check, doctor, fix, and fix --codex commands. | Explicit targets; fix --codex is separate and never automatic. |
| Update | Exercise findings and operational-failure preview cases. | Findings warn; operational failures stop publication. |
Pre-existing Issues
Full lint remains historical debt: apps/cli reports 4,320 diagnostics across
155 files and wiki reports 497 diagnostics across 22 files. Formatter checks
also retain three unchanged CLI files and eight unchanged wiki files. Focused
Issue 181 paths are clean.
Out-of-Scope
Historical bulk cleanup, upstream AI prompts/rules/skills, generated upstream hooks, release publication, and backlog/provider mutation.
Steering
Manual Codex App trust and same-turn /hooks observation remain a
platform-owned follow-up. Automated evidence does not claim that observation.
Remaining Work
Complete the manual Codex App trust and same-turn observation gate.