Work ID: work-ea424433
Gate: INTEGRATED
Date: 2026-04-06
PR: #29
Full post-mortem: docs/postmortems/work-ea424433-vscode-lsp-rewrite.md
-
Clean architecture pivot: Rewrote from shell-exec stub (spawned
diffguard check --staged, parsed JSON) to proper LSP client usingvscode-languageclientv9. The new approach gives real-time diagnostics without manual command invocation. -
Simpler, more capable code: New
extension.jsis 60 lines vs ~69 lines old code, but gains real-time diagnostics, config synchronization, and proper error handling for missing server binary. -
Good configuration surface: Added 5 settings (
serverPath,configPath,noDefaultRules,maxFindings,forceLanguage) and 3 commands (explainRule,reloadConfig,showRuleUrl). Clean separation of concerns. -
Full conveyor lifecycle: Successfully completed all 6 gates (FRAMED → VERIFIED → DESIGNED → PROVEN → HARDENED → INTEGRATED) with ~15 agents.
-
Plan review caught 5 real risks: The VERIFIED gate's plan-reviewer identified missing LICENSE, undefined binary discovery, initOptions casing mismatch, missing deactivate disposal, and TypeScript deferral. These would have caused real bugs.
-
Tests remain green: 164+ workspace test assertions passing. VSIX package built successfully.
-
node_modules committed to git: The commit included ~15,000 files because
node_modules/was not excluded. Required 2 cleanup commits. This is a pipeline-level guard — the conveyor needs a pre-commit hook that rejects binary artifacts. -
Committed to main instead of branch: Code-builder went to main instead of the feature branch. Branch protection blocked the cleanup push. PR #29 carries the fix but git history is messy.
-
Artifact naming mismatch: Agents produced
plan_reviewandvision_commentbut gates expectedplan_review_commentandvision_alignment_comment. Templates must specify exact artifact type names. -
DESIGN.md mis-scoped: The design doc is a project philosophy doc, not an implementation design for the VS Code extension. The task_list.md carried the execution load.
-
No conveyor state persistence:
.conveyor/directory wasn't initialized.gates.py frictionand automated gate advancement couldn't run.
- Templates must specify exact artifact type names the gate checker expects
- Branch routing must be in dispatch instructions, not agent discretion
- Pre-commit hygiene (no binary artifacts) is a pipeline concern
- Plan review is the highest-signal gate — invest in detailed review templates
- Structural tests beat runtime tests for extension artifacts
- Design doc scope should match work type (implementation, not philosophy)
- Git hygiene: Ensure
.gitignoreexists before runningnpm install. Make this a pipeline check, not an agent instruction. - Branch routing:
dispatch.pymust specify the target branch explicitly. - Artifact naming: Templates must include exact artifact type names.
- Conveyor state: Initialize
.conveyor/before starting work. - Design scoping: adr-spec-agent should receive work-type-specific guidance for what the design doc should cover.