Skip to content

Commit fe539c6

Browse files
committed
chore: update handoff for v1.7.3 — format parity, AX audit, session complete
1 parent 08995e6 commit fe539c6

1 file changed

Lines changed: 95 additions & 65 deletions

File tree

Plans/handoff.md

Lines changed: 95 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,51 @@
11
# Handoff — main
22

3-
**Date:** 2026-04-09
3+
**Date:** 2026-04-10
44
**Branch:** main
5-
**Last commit:** 95d2656 chore: release v1.7.0
5+
**Last commit:** 08995e6 fix: AX format parity — single-file warning uses actual serialized size
66

77
---
88

99
## Session Summary
1010

11-
This session was fully AX-driven across two releases. Starting from v1.5.3, the session produced v1.6.0 (AX constitution, `uninstall-mapper`, real HTTP behavior tests) and v1.7.0 (AX enforcement made rigorous: `depth` default flipped to `"signatures"`, `get_diagnostics` oversize warning, 13 AX ratchet tests, `enrichError` for agent-actionable OS errors). Two audit rounds and one DevTeam Engineer+Reviewer loop ensured every AX principle is now enforced at schema, runtime, and test levels.
11+
Two-day session (Apr 9–10) fully AX-driven across four releases. Starting from v1.5.3, the session produced v1.6.0 and v1.7.x (v1.7.0 through v1.7.3). The arc: build the AX constitution → audit against it → fix every gap found → ship.
12+
13+
**v1.6.0** (parallel worktree agents):
14+
- `docs/AX.md` — AX constitution (goal, budgets, 5 principles, tool schema standards, error message standard, CI enforcement, extension checklist)
15+
- `vslsp uninstall-mapper <lang>` — CLI install/uninstall symmetry
16+
- `tests/http.test.ts` rewrite — 4 brittle string matches → 16 real HTTP behavior tests
17+
18+
**v1.7.0** (AX audit round 1 + round 2 + DevTeam fix loop):
19+
- `depth` default flipped `"full"``"signatures"` (AX-safe default)
20+
- `withDiagnosticsAxWarning()` — warns when `get_diagnostics` unfiltered > 50KB
21+
- `enrichError()` — ENOENT/EACCES → agent-actionable guidance in all tools
22+
- 13 AX ratchet tests (A1-A6, A3b, A4b, B1-B5, A5+) locked in CI
23+
- All tool schema descriptions updated with budget numbers and AX implications
24+
- `file_filter` 0-match runtime warning added
25+
26+
**v1.7.1**`vslsp --version` flag (CLI DX gap closed)
27+
28+
**v1.7.2**`toTextFormat()` + `toYamlFormat()` client-side serializers; `depth`/`file_filter`/`max_files` now apply to text and yaml formats (previously forced JSON)
29+
30+
**CodeAudit fixes** (between v1.7.2 and v1.7.3):
31+
- `yamlStr()` always quotes (matches mapper binary output)
32+
- `walkText()` hoisted out of loop (anti-pattern fix)
33+
- `format` param description updated (no longer claims "ignored when filters set")
34+
35+
**v1.7.3** — AX format parity: single-file oversized warning now uses actual serialized size for text/yaml, not JSON proxy (no false-positive warnings for text/yaml that fit the budget)
1236

1337
---
1438

1539
## Current State
1640

17-
### Committed Work (this session)
41+
### Committed Work (since v1.5.3)
1842

1943
```
44+
08995e6 fix: AX format parity — single-file warning uses actual serialized size
45+
e4050f5 fix: CodeAudit corrections to toTextFormat/toYamlFormat serializers
46+
a5e9547 fix: depth and file_filter now apply to text and yaml formats
47+
4285cbd feat: add --version flag; release v1.7.1
48+
d725249 chore: update handoff for v1.7.0 release
2049
95d2656 chore: release v1.7.0
2150
bc2c70a test: strengthen B5 — unconditional size assert ensures warning path always executes
2251
0296bea test: AX ratchet tests B5/A3b/A4b/A5+; fix F3 enrichError, F4 single-file msg, F6 param descriptions
@@ -31,25 +60,28 @@ d00a1ca feat: add vslsp uninstall-mapper command
3160

3261
### Uncommitted Changes
3362

34-
None. Working tree clean. Only `.claude/` (untracked worktree metadata) appears in `git status`.
63+
None. Working tree clean.
3564

3665
### Build & Test Status
3766

38-
- TypeScript type check: **clean** (`bun run tsc --noEmit`)
39-
- Unit tests: **49 pass, 0 fail**
40-
- E2E tests: 70+ pass including 13 AX ratchet tests
41-
- Released: **v1.7.0** — tagged and pushed, CI triggered
67+
- TypeScript: **clean** (`bun run tsc --noEmit`)
68+
- Unit tests: **49 pass, 0 fail** (http ×16, types ×10, store ×8, mapper ×6, typescript ×5, rust ×4)
69+
- E2E tests: **35 pass, 1 skip, 0 fail** (skip = RustMapper not installed)
70+
- Installed version: **v1.7.0** (upgrade with `install.sh --yes` once v1.7.3 CI builds)
71+
72+
### Format Output Reference
73+
74+
All three formats use the same `src/core/types.ts` source, `depth:"signatures"`:
75+
76+
**JSON** — machine-parseable, all fields present, AX-filtered. ~8KB for this file at signatures depth.
4277

43-
### Worktree / Parallel Agent State
78+
**Text**`[Type] signature :lineNumber // docstring`. Lowest token cost. Good for quick scan.
4479

45-
Two stale worktrees remain from this session's parallel W1/W2 agents — both fully merged into main:
80+
**YAML** — signatures always double-quoted (safe for `:` and `"` in type signatures). Medium token cost. Readable with nesting.
4681

47-
| Worktree | Branch | Last commit | Status |
48-
|----------|--------|-------------|--------|
49-
| `.claude/worktrees/agent-a53e50a8` | `worktree-agent-a53e50a8` | `e261cf3` docs: AX constitution | ✅ Merged — safe to prune |
50-
| `.claude/worktrees/agent-add47742` | `worktree-agent-add47742` | `d00a1ca` feat: uninstall-mapper | ✅ Merged — safe to prune |
82+
### Worktree State
5183

52-
Prune with: `git worktree prune`
84+
Two stale worktrees from v1.6.0 parallel agents — both merged. Prune with: `git worktree prune`
5385

5486
---
5587

@@ -59,64 +91,62 @@ Prune with: `git worktree prune`
5991

6092
| Need | Status | Notes |
6193
|------|--------|-------|
62-
| Get all compilation errors, scoped to errors only | ✅ Working | `get_diagnostics(severity:"error", limit:20)` → < 10KB |
94+
| Get all compilation errors, scoped | ✅ Working | `get_diagnostics(severity:"error", limit:20)` → < 10KB |
6395
| Understand codebase structure without reading files | ✅ Working | `get_code_structure(depth:"signatures")` default; AX budget enforced |
64-
| Dry-run compile check before writing to disk (C#) | ✅ Working | `verify_changes` with daemon; `reverted: true` confirmed |
65-
| Responses never exceed context window budget | ✅ Working | Auto-truncation at 200KB with agent-actionable warning |
96+
| Dry-run compile check before writing (C#) | ✅ Working | `verify_changes` with daemon; `reverted: true` |
97+
| Responses never exceed context window budget | ✅ Working | Auto-truncation at 200KB + warnings in all formats |
6698
| Warning when response would be too large | ✅ Working | `get_code_structure` truncates + warns; `get_diagnostics` warns at 50KB |
67-
| Install / uninstall mappers per language | ✅ Working | `vslsp install-mapper` + `vslsp uninstall-mapper` (new this session) |
68-
| AX contracts locked in CI — regressions caught | ✅ Working | 13 ratchet tests: A1-A6, A3b, A4b, B1-B5 (dual-bound: upper + lower) |
69-
| AX philosophy documented and queryable | ✅ Working | `docs/AX.md` — constitution, budgets, principles, extension checklist |
99+
| Install / uninstall mappers | ✅ Working | `vslsp install-mapper` + `vslsp uninstall-mapper` |
100+
| AX contracts locked in CI | ✅ Working | 13 ratchet tests (A1-A6, A3b, A4b, B1-B5) |
101+
| AX philosophy documented | ✅ Working | `docs/AX.md` constitution |
102+
| All output formats AX-equivalent | ✅ Working | JSON/text/yaml all filtered, all warn, all AX-safe (v1.7.3) |
103+
| Version self-reporting | ✅ Working | `vslsp --version` (v1.7.1+) |
70104

71-
**Overall:****Complete** — all AX goals met, 13 ratchet tests in CI, two audit rounds converged to clean, v1.7.0 released.
105+
**Overall:****Complete** — all AX goals met across all formats, 13 ratchet tests in CI, three audit rounds converged to clean, v1.7.3 released.
72106

73-
**Critical next step:** No critical items. Optional: Go mapper (pattern established), or `verify_changes` for Rust/TypeScript (requires persistent `cargo check`/`tsc` processes).
107+
**Critical next step:** No critical items. Install v1.7.3 once CI builds: `curl -fsSL https://raw.githubusercontent.com/DennisDyallo/vslsp/main/install.sh | bash -s -- --yes`
74108

75109
---
76110

77-
## What's Next (Prioritized)
111+
## What's Next (Optional / Future)
78112

79-
### Optional / Future
80-
81-
1. **Go mapper** — Pattern established: add `GoMapper` to registry, CI matrix, `install.sh`. Carried forward since v1.5.3.
82-
83-
2. **Rust/TypeScript daemon**`verify_changes` dry-run is C#-only. Would require persistent `cargo check`/`tsc` processes.
84-
85-
3. **AX truncation for `get_diagnostics`** — Currently warns only at 50KB (no truncation). Could add hard cap at e.g. 100KB for parity with `get_code_structure`. Low priority — warning already fires.
86-
87-
4. **Update `Plans/federated-coalescing-lampson.md`** — Status header should reference v1.7.0.
88-
89-
5. **Prune stale worktrees**`git worktree prune` to clean up agent-a53e50a8 and agent-add47742.
113+
1. **Go mapper** — Pattern established. `GoMapper` + registry + CI matrix + `install.sh`. Carried forward since v1.5.3.
114+
2. **Rust/TypeScript daemon**`verify_changes` dry-run is C#-only. Requires persistent `cargo check`/`tsc` processes.
115+
3. **Multi-file AX truncation calibrated per format** — Currently uses JSON size as proxy (conservative, always safe). Could be calibrated to actual format size for fewer unnecessary truncations.
116+
4. **`vslsp install-mapper rust` 404 investigation** — CI may not be cross-compiling Rust mapper for patch releases. Check `.github/workflows/release.yml` build matrix.
117+
5. **Prune stale worktrees**`git worktree prune`
90118

91119
---
92120

93121
## Blockers & Known Issues
94122

95-
None.
123+
- **RustMapper 404**`vslsp install-mapper rust` fails with 404 on v1.7.x patch releases. Likely CI doesn't build Rust mapper on every patch. Workaround: use v1.7.0 binary for Rust mapper, or check release assets.
124+
- **Installed binary is v1.7.0** — upgrade with `install.sh --yes` once v1.7.3 CI releases.
125+
- **1 E2E test skipped** — RustMapper not installed. `vslsp install-mapper rust` to fix (once 404 resolved).
96126

97-
**Known intentional keeps:**
98-
- `store.clear()` and `didClose()` — valid API surface, not dead code
99-
- Single-file oversize warns but doesn't truncate — `depth:"full"` is opt-in, warning guides agent to use `"signatures"`
100-
- `withDiagnosticsAxWarning` warns only (no truncation) — preserves full diagnostic semantics intentionally
101-
- **RustMapper binary removed** during smoke test this session — reinstall: `vslsp install-mapper rust`
127+
**Intentional keeps:**
128+
- Single-file oversize warns but doesn't truncate — `depth:"full"` is opt-in
129+
- Multi-file AX truncation uses JSON size as proxy — conservative but always safe
130+
- `withDiagnosticsAxWarning` warns only (no truncation) — preserves full diagnostic semantics
102131

103132
---
104133

105134
## Key File References
106135

107136
| File | Purpose |
108137
|------|---------|
109-
| `docs/AX.md` | AX constitution — canonical agent experience philosophy |
110-
| `mcp.ts:99,107` | `AX_BUDGET_BYTES` (200KB) and `AX_DIAG_WARN_BYTES` (50KB) |
111-
| `mcp.ts:102-187` | `filterCodeStructure()` — depth/glob/max_files + auto-truncation |
112-
| `mcp.ts:218-239` | `withDiagnosticsAxWarning()` — diagnostics oversize warning |
113-
| `mcp.ts:284-294` | `enrichError()` — ENOENT/EACCES → agent-actionable guidance |
114-
| `mcp.ts:464` | `depth` default `"signatures"` (was `"full"` before this session) |
115-
| `tests/e2e/mcp-server.test.ts:339-381` | B5 — `withDiagnosticsAxWarning` ratchet (unconditional) |
116-
| `tests/e2e/mcp-server.test.ts:631-644` | A3b — `file_filter` 0-match warning ratchet |
117-
| `tests/e2e/mcp-server.test.ts:659-671` | A4b — `max_files: 0` schema conformance |
118-
| `tests/http.test.ts` | 16 real HTTP behavior tests (all 8 routes) |
119-
| `vslsp.ts` | CLI — `install-mapper` + `uninstall-mapper` |
138+
| `docs/AX.md` | AX constitution |
139+
| `mcp.ts:99,108` | `AX_BUDGET_BYTES` (200KB), `AX_DIAG_WARN_BYTES` (50KB) |
140+
| `mcp.ts:110-188` | `filterCodeStructure()` — all filtering + AX truncation |
141+
| `mcp.ts:190-210` | `toTextFormat()` — JSON → text serializer |
142+
| `mcp.ts:212-256` | `toYamlFormat()` — JSON → YAML serializer (always-quoted strings) |
143+
| `mcp.ts:219-240` | `withDiagnosticsAxWarning()` — diagnostics oversize warning |
144+
| `mcp.ts:285-295` | `enrichError()` — ENOENT/EACCES → agent-actionable guidance |
145+
| `mcp.ts:464` | `depth` default `"signatures"` |
146+
| `mcp.ts:587-614` | Handler — serialize to format, single-file AX check on actual size |
147+
| `tests/e2e/mcp-server.test.ts` | 13 AX ratchet tests (A1-A6, A3b, A4b, B1-B5) |
148+
| `tests/http.test.ts` | 16 real HTTP behavior tests |
149+
| `vslsp.ts` | CLI — `install-mapper`, `uninstall-mapper`, `--version` |
120150

121151
---
122152

@@ -125,27 +155,27 @@ None.
125155
```bash
126156
cd /Users/Dennis.Dyall/Code/other/vslsp
127157

128-
# Verify state
129158
git log --oneline -5
130159
git status
131-
bun run tsc --noEmit # clean
160+
bun run tsc --noEmit
132161
bun test tests/http.test.ts tests/diagnostics/store.test.ts tests/core/types.test.ts \
133162
tests/code-mapping/mapper.test.ts tests/diagnostics/rust.test.ts \
134163
tests/diagnostics/typescript.test.ts --timeout 30000
164+
bun test tests/e2e/mcp-server.test.ts --timeout 120000
135165

136-
# Current version: v1.7.0 (released this session)
166+
# Current release: v1.7.3
137167
# AX constitution: docs/AX.md
138168
# 13 AX ratchet tests in CI
169+
# All formats (json/text/yaml) AX-equivalent since v1.7.3
139170

140-
# RustMapper was removed during smoke testing — reinstall if needed:
141-
vslsp install-mapper rust
142-
143-
# Clean up stale session worktrees:
144-
git worktree prune
171+
# Install latest (once v1.7.3 CI builds):
172+
curl -fsSL https://raw.githubusercontent.com/DennisDyallo/vslsp/main/install.sh | bash -s -- --yes
173+
vslsp --version # → 1.7.3
145174

146-
# To run a code audit:
147-
# invoke /CodeAudit
175+
# Reinstall Rust mapper (404 on patch releases — use v1.7.0 asset directly):
176+
# gh release download v1.7.0 --pattern "RustMapper-darwin-arm64" -D ~/.local/share/vslsp/rust-mapper/
177+
# chmod +x ~/.local/share/vslsp/rust-mapper/RustMapper
148178

149-
# Integration test (validates all 8 tools against 3 real codebases):
150-
# invoke /vslsp-integration skill
179+
# Prune stale session worktrees:
180+
git worktree prune
151181
```

0 commit comments

Comments
 (0)