Matt Van Horn
994ea3d285
chore(main): release 4.31.0 ( #4250 )
v4.31.0
2026-08-18 14:05:07 -07:00
spiky02plateau
625e876ef8
feat(skills): cut retro always-loaded context by 93% ( #3776 )
...
* feat(skills): split retro skill into CE router and phases
Unstack #3776 from the printing-press phase rewrite. Recut
printing-press-retro against current main, keep the #4179 P1/P2
filing bar, and make SKILL.md a thin always-loaded spine with
phases/01-09 plus role-named run-resolution.
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* fix(cli): use strings.Builder in retro phase-chain test
Replace loop string concatenation that go-lint/modernize flags.
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
---------
Co-authored-by: Cursor Agent <cursoragent@cursor.com >
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
2026-08-18 20:26:34 +00:00
Trevin Chow
47bf39b452
fix(cli): prune single-tenant mirrors; do not mark truncated walks complete. ( #4247 )
...
* fix(cli): prune single-tenant mirrors; do not mark truncated walks complete
Single-tenant prints had empty flat reconcile maps, so --full never
deleted and --no-prune documented a default prune the binary could not
do. Classify eligible no-tenant-scope resources as flat_global and prune
the whole table after a complete walk.
A full page with no followable cursor is an unprovable end: leave
complete=false so enabling prune cannot turn silent truncation into
data loss. Bare-array ?after= derivation and named sticky-cursor
exceptions stay out of scope.
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* fix(cli): gate flat_global on any tenant scope column
Mixed prints that carry a TenantScopeColumn but no reconcilable
tenant-flat resource were classified as single-tenant, so unscoped
siblings got ReconcileAll. Require zero tenant columns before
flat_global. Drop the issue number from the generated-run comment
and lead ReconcileAll with the completeness safety rule.
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* fix(cli): treat dependent tenant columns as mixed prints
flat_global scanned only SyncableResources, so a TenantScopeColumn on
a parameterized child still classified unscoped flat siblings as
whole-table. Derive the mixed-print bit from any spec endpoint
annotation instead.
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
---------
Co-authored-by: Cursor Agent <cursoragent@cursor.com >
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
2026-08-18 19:37:50 +00:00
Trevin Chow
3ab775be01
fix(cli): wrap mutation bodies under spec resource root. ( #4246 )
...
Derive the wrap key from a single-key object request-body schema so Rails-style APIs persist writes. Flat schemas, stdin JSON, and top-level id fields stay unchanged.
Co-authored-by: Cursor Agent <cursoragent@cursor.com >
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
2026-08-18 18:38:26 +00:00
Trevin Chow
de5bd88432
fix(cli): skip MCP tools for sub-resource parent groups ( #4245 )
...
Treat pp:parent-group like pp:api-resource in cobratree classify() so
help-only sub-resource parents are commandGroup, not runnable MCP tools.
Closes #4240 .
Co-authored-by: Cursor Agent <cursoragent@cursor.com >
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
2026-08-18 18:37:54 +00:00
Matt Van Horn
5d86945b11
chore(main): release 4.30.3 ( #4110 )
v4.30.3
2026-08-17 00:09:59 -07:00
Trevin Chow
f58e51b9a8
docs(cli): teach agents goldens and record-id contract ( #4222 )
...
* docs(cli): teach agents goldens and record-id contract
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* docs(cli): qualify URL-shaped record-id fallbacks
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
---------
Co-authored-by: Cursor Agent <cursoragent@cursor.com >
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
2026-08-17 05:06:19 +00:00
Trevin Chow
808a986642
fix(cli): clamp MCP code-orch search limit before slice. Closes #3742 . ( #4223 )
...
* fix(cli): clamp MCP code-orch search limit before slice
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* test(cli): modernize code-orch limit regression loop
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* docs(cli): document MCP code-orch search limit cap
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
---------
Co-authored-by: Cursor Agent <cursoragent@cursor.com >
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
2026-08-17 01:59:44 +00:00
Trevin Chow
9bac8609f2
fix(cli): stop storing nested objects as sync rows ( #4226 )
...
Co-authored-by: Cursor Agent <cursoragent@cursor.com >
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
2026-08-17 01:36:05 +00:00
Trevin Chow
813619660c
fix(cli): surface success-path CLI stderr to MCP clients ( #4225 )
...
Co-authored-by: Cursor Agent <cursoragent@cursor.com >
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
2026-08-17 01:35:07 +00:00
Trevin Chow
813788f45d
fix(cli): parse SQLite CURRENT_TIMESTAMP in ParseStoredTime ( #4224 )
...
Co-authored-by: Cursor Agent <cursoragent@cursor.com >
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
2026-08-17 01:27:01 +00:00
Trevin Chow
20d505805c
fix(cli): block MCP filesystem destination flags ( #4212 )
...
* fix(cli): block MCP filesystem destination flags
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* test(cli): update MCP destination flag goldens
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* fix(cli): clarify MCP destination flag guard
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
---------
Co-authored-by: Cursor Agent <cursoragent@cursor.com >
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
2026-08-16 22:04:00 +00:00
Trevin Chow
a6eb3950b0
fix(cli): stop name-keying records when a real identifier exists ( #4215 )
...
* fix(cli): stop name-keying records
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* test(cli): allow generated path helper in dogfood
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* test(cli): update path helper goldens
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* fix(cli): scope url identifier fallbacks
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* test(cli): update scoped url id goldens
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
---------
Co-authored-by: Cursor Agent <cursoragent@cursor.com >
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
2026-08-16 22:00:32 +00:00
Trevin Chow
2b69deb5d2
fix(cli): sanitize insights similar FTS queries ( #4213 )
...
* fix(cli): sanitize insights similar FTS queries
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* test(cli): update FTS sanitizer goldens
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
---------
Co-authored-by: Cursor Agent <cursoragent@cursor.com >
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
2026-08-16 21:25:10 +00:00
Trevin Chow
1e8fe3934f
fix(cli): repair credential load refusal and merge state ( #4205 )
...
* fix(cli): report credential perms refusal as refused
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* fix(cli): preserve credential status loaded flag
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* test(cli): relax oauth refresh doctor assertion
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* fix(cli): avoid unused refusal flag for no-auth status
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* test(cli): update credential refusal goldens
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* fix(cli): merge partial oauth credentials from sidecar
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* test(cli): update oauth credential merge goldens
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* fix(cli): allow fallback after empty sidecar refusal
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* fix(cli): apply credential refusal follow-up test content
* test(cli): cover empty sidecar fallback
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* test(cli): update empty sidecar fallback goldens
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* fix(cli): refuse malformed sidecar credentials
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* test(cli): update malformed sidecar golden
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
---------
Co-authored-by: Cursor Agent <cursoragent@cursor.com >
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
2026-08-16 20:47:27 +00:00
Trevin Chow
c5bc30e442
fix(cli): scope the default store path to the credential ( #4204 )
...
* fix(cli): scope default db path by credential
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* test(cli): cover credential-scoped store paths
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* test(cli): update credential-scoped store goldens
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* fix(cli): include sibling credentials in store scope
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* fix(cli): include composed cookie in store scope
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* fix(cli): scope composed cookie credentials
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
---------
Co-authored-by: Cursor Agent <cursoragent@cursor.com >
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
2026-08-16 20:35:55 +00:00
Trevin Chow
6a54174c5e
fix(cli): validate composed-auth login --chrome sessions ( #4207 )
...
* fix(cli): reject expired JWT at composed-auth import
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* fix(cli): validate composed chrome cookies correctly
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* test(cli): modernize composed auth jwt fixture
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
---------
Co-authored-by: Cursor Agent <cursoragent@cursor.com >
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
2026-08-16 20:05:25 +00:00
Trevin Chow
151526547a
fix(cli): bound workflow archive and keep the store crash-safe ( #4206 )
...
* fix(cli): bound workflow archive and keep store crash-safe
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* test(cli): scope workflow archive crash-safety proof
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* fix(cli): reject negative workflow archive bounds
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* fix(cli): hard-fail substack archive timeout
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
---------
Co-authored-by: Cursor Agent <cursoragent@cursor.com >
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
2026-08-16 20:01:38 +00:00
Trevin Chow
a5400a4627
fix(skills): refuse physical side effects under every harness ( #4203 )
...
* fix(skills): refuse physical side effects under every harness
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* fix(cli): allow harness refusal helper in dead-code checks
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* test(cli): update harness helper goldens
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
---------
Co-authored-by: Cursor Agent <cursoragent@cursor.com >
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
2026-08-16 19:38:31 +00:00
Trevin Chow
6dc0ceed57
fix(cli): align auth set-token references with command surface ( #4198 )
...
* fix(cli): align auth set-token references with command surface
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* test(cli): cover auth credential command surface
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* test(cli): update auth command surface goldens
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
---------
Co-authored-by: Cursor Agent <cursoragent@cursor.com >
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
2026-08-16 02:35:36 +00:00
Trevin Chow
ca3a6dd33e
fix(cli): treat unclassified dogfood commands as mutating ( #4193 )
...
* fix(cli): treat unclassified dogfood commands as mutating
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* test(cli): cover unclassified dogfood command safety
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* test(cli): annotate live dogfood read fixtures
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* fix(cli): preserve dogfood preflight skip reasons
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* test(cli): mark dogfood fixture reads explicitly
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* test(cli): update dogfood runtime matrix golden
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* fix(cli): classify sync as live dogfood mutating
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* fix(cli): skip sync live dogfood without dry-run
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* test(cli): assert sync dry-run skip avoids execution
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* test(cli): allow explicit dogfood pre-sync hydration
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
---------
Co-authored-by: Cursor Agent <cursoragent@cursor.com >
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
2026-08-16 02:09:04 +00:00
Trevin Chow
5568e7116f
fix(cli): preserve .git on lock promote in-place ( #4194 )
...
* fix(cli): preserve git metadata on in-place promote
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* fix(cli): keep in-place promote failures recoverable
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
---------
Co-authored-by: Cursor Agent <cursoragent@cursor.com >
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
2026-08-16 00:49:48 +00:00
Trevin Chow
142617fb4a
fix(cli): bind MCP HTTP to loopback by default ( #4192 )
...
* fix(cli): bind MCP HTTP to loopback by default
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* test(cli): update MCP HTTP bind goldens
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* docs(skills): update MCP HTTP bind guidance
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
---------
Co-authored-by: Cursor Agent <cursoragent@cursor.com >
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
2026-08-16 00:41:23 +00:00
Trevin Chow
bd6c65e6e8
fix(cli): disable sqlite mmap to stop SIGBUS store corruption ( #4191 )
...
* fix(cli): disable sqlite mmap in generated stores
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* test(cli): update store mmap golden fixtures
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* docs(cli): update sqlite dsn solution example
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
---------
Co-authored-by: Cursor Agent <cursoragent@cursor.com >
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
2026-08-16 00:30:51 +00:00
Trevin Chow
801de21345
fix(cli): fail sync integrity and hydration aliasing ( #4185 )
...
* fix(cli): fail sync integrity-loss outcomes
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* test(cli): cover sync integrity regressions
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* fix(cli): refine sync list detection boundaries
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* test(cli): update sync integrity goldens
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* fix(cli): keep scalar hydration targets resource-specific
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* test(cli): show generated hydration map on failure
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* test(cli): avoid hydration map alignment assumptions
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* fix(cli): reject declared sync failures before storage
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* test(cli): update declared failure sync goldens
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* fix(cli): cover status error sync envelopes
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* test(cli): update sync upsert comment goldens
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
---------
Co-authored-by: Cursor Agent <cursoragent@cursor.com >
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
2026-08-15 23:17:26 +00:00
Trevin Chow
7389a2f47c
fix(cli): collapse html error bodies ( #4183 )
...
* fix(cli): collapse html error bodies
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* refactor(cli): simplify html error collapse
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* test(cli): update html error client goldens
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* fix(cli): harden html error collapse
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* test(cli): refresh hardened html client goldens
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* fix(cli): scan html titles linearly
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* test(cli): refresh linear html client goldens
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* fix(cli): strip unicode html controls
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* test(cli): refresh unicode html client goldens
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* fix(cli): cap html error scanning
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* test(cli): keep html block test within cap
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* test(cli): refresh capped html client goldens
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
---------
Co-authored-by: Cursor Agent <cursoragent@cursor.com >
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
2026-08-15 22:44:17 +00:00
Trevin Chow
d49c457592
fix(cli): encode path params as single segments ( #4184 )
...
* fix(cli): encode path params as single segments
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* test(cli): update path param golden output
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
---------
Co-authored-by: Cursor Agent <cursoragent@cursor.com >
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
2026-08-15 21:19:12 +00:00
Trevin Chow
e20b65e053
fix(cli): decouple agent mode from yes ( #4182 )
...
* fix(cli): decouple agent mode from yes
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* test(cli): update agent mode goldens
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
---------
Co-authored-by: Cursor Agent <cursoragent@cursor.com >
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
2026-08-15 21:10:11 +00:00
Trevin Chow
37a0208c7c
docs(skills): tighten retro issue filing bar ( #4179 )
...
* docs(skills): tighten retro issue filing bar
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* docs(skills): align issue taxonomy with retro priorities
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
---------
Co-authored-by: Cursor Agent <cursoragent@cursor.com >
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
2026-08-15 20:03:37 +00:00
Trevin Chow
023beb3526
fix(cli): correct novel scaffold safety hints ( #4172 )
...
* fix(cli): correct novel scaffold safety hints
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* fix(cli): harden novel scaffold read-only classifier
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* fix(cli): default ambiguous novel reads to unsafe
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
---------
Co-authored-by: Cursor Agent <cursoragent@cursor.com >
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
2026-08-15 18:14:32 +00:00
Trevin Chow
4b3569f6b4
fix(cli): preserve standalone force regen files ( #4174 )
...
* fix(cli): preserve standalone force regen files
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* fix(cli): merge force snapshots before validation
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* fix(cli): run full validation after force merge
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
---------
Co-authored-by: Cursor Agent <cursoragent@cursor.com >
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
2026-08-15 18:07:53 +00:00
Trevin Chow
c63890ca86
fix(cli): guard shipcheck live mutations ( #4173 )
...
* fix(cli): guard shipcheck live mutations
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* test(cli): cover live mutation guards
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
* fix(cli): emit boolean happy args with equals
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
---------
Co-authored-by: Cursor Agent <cursoragent@cursor.com >
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
2026-08-15 17:48:35 +00:00
Trevin Chow
9d274a9153
fix(cli): allow ungated MCP tenant gate ( #4171 )
...
Co-authored-by: Cursor Agent <cursoragent@cursor.com >
Co-authored-by: Trevin Chow <tmchow@users.noreply.github.com >
2026-08-15 17:22:48 +00:00
Trevin Chow
8b2c361e37
fix(cli): preserve mcp-sync intent parity and reject version skew ( #4146 )
...
* fix(cli): preserve mcp-sync intent parity and reject version skew
* fix(cli): refresh explicit MCP intents during sync
Preserve recipe-derived intent handlers while regenerating explicit intent registrations from the archived spec. Fail closed when intent sources cannot be inspected, and keep recipe-only round trips byte-stable.
Refs #4134
2026-08-14 01:18:01 +00:00
Trevin Chow
f8b50c9390
fix(cli): bump Go floor to 1.26.6 ( #4155 )
2026-08-14 00:46:17 +00:00
Trevin Chow
5e77ac1b17
fix(cli): preserve zero-valued integer query params ( #4143 )
2026-08-13 22:28:23 +00:00
Trevin Chow
ee01a6e665
fix(cli): harden generated SQLite concurrency ( #4138 )
...
* fix(cli): harden generated SQLite concurrency
* fix(cli): re-harden generated SQLite sidecars during writes
* fix(cli): precreate generated cache journals privately
2026-08-13 21:19:20 +00:00
Trevin Chow
a529a81f14
fix(cli): register novel framework commands and manifest entries ( #4139 )
...
* fix(cli): register novel framework commands and manifest entries
* fix(cli): propagate publish manifest sync errors
* fix(cli): reject missing tools manifest
* fix(cli): handle missing tools manifests in low-level flows
2026-08-13 21:06:13 +00:00
Trevin Chow
a6923ceb25
fix(cli): wire stdin fixtures through verification ( #4136 )
...
* fix(cli): wire stdin fixtures through verification
* fix(cli): preserve stdin verification inputs
* fix(cli): honor disabled stdin flags
2026-08-13 19:18:24 +00:00
Trevin Chow
d74ddbfa96
fix(cli): preserve compact and select projection payloads ( #4135 )
...
* fix(cli): preserve compact and select projection payloads
* fix(cli): remove redundant compact projection comment
* fix(cli): refresh projection golden fixtures
2026-08-13 18:52:04 +00:00
Trevin Chow
eae5b3d70b
fix(cli): route generated error output and preserve no-op semantics ( #4121 )
...
* fix(cli): harden generated error classification
* fix(cli): preserve generated no-op exit semantics
* fix(cli): propagate no-op writer failures
* fix(cli): propagate prose no-op write failures
2026-08-13 03:39:36 +00:00
Trevin Chow
781a1c77c8
fix(cli): speed up generated Windows shellout tests ( #4119 )
...
* fix(cli): speed up generated Windows shellout tests
* test(cli): execute generated shellout regression
2026-08-13 03:07:10 +00:00
Trevin Chow
31f2436e4b
fix(cli): accept object release ledger changes ( #4118 )
2026-08-13 02:56:09 +00:00
Trevin Chow
fd69e7f013
fix(cli): preserve generated pagination contracts ( #4115 )
...
* fix(cli): preserve generated pagination contracts
* fix(cli): harden repeated-page sync warnings
* fix(cli): preserve advancing pagination cursors
* fix(cli): preserve pagination stop contracts
2026-08-13 01:48:49 +00:00
Trevin Chow
1a5f6cac71
fix(cli): preserve OAuth bearer auth headers ( #4112 )
...
* fix(cli): preserve OAuth bearer auth headers
* fix(cli): address PR review feedback (#4112 )
* fix(cli): fail closed on mixed bearer security
* fix(cli): scope bearer auth fix to AccessToken
2026-08-13 01:30:20 +00:00
Trevin Chow
91fb730a7e
fix(cli): handle auth-none generation metadata ( #4113 )
...
* fix(cli): handle auth-none generation metadata
* fix(cli): handle whitespace-only auth in generated credential tests
* fix(cli): handle case-insensitive no-auth generation
2026-08-13 00:34:28 +00:00
Daniel Martinez Morales
deb0b070f7
fix(windows): generated CLIs could neither build nor test on Windows ( #4106 )
...
* fix(windows): generated CLIs could neither build nor test on Windows
Two independent Windows-only defects, both found generating a real CLI for a
no-auth local API (ComfyUI) on Windows with Go 1.26.5.
1. BUILD BREAK for every no-auth spec.
internal/platform/perms_windows.go is emitted unconditionally (singleFiles
map) and calls cliutil.VerifyCredsPerms. That helper lives in
cliutil/creds_perms_windows.go, which renderOptionalSupportFiles emits only
under shouldEmitAuth(). So any spec with auth.type: none produced:
internal\platform\perms_windows.go:24:20: undefined: cliutil.VerifyCredsPerms
and the generated module did not compile at all.
Fixed in the template rather than by emitting the creds helpers
unconditionally, because TestGenerate_NoCredsPermsForNonAuthSpec pins the
auth-gating deliberately -- and platform/perms_*.go cannot simply be gated
either, since platform/profile.go calls verifyPrivatePerms for the client
profile and the cache fingerprint key, neither of which is auth-related.
The Windows template now branches: delegate to cliutil when auth exists,
and compile a documented no-op when it does not. A no-auth CLI persists no
secret, and this check is advisory on Windows even when present.
2. TEST FAILURE on Windows regardless of auth.
TestPlatformMigrationAdoptsOnlyVerifiedTenantDatabase asserted
backupInfo.Mode().Perm() == 0o600 on the recoverable backup. NTFS carries no
POSIX mode bits, os.Chmod is a no-op there, and Go reports a writable file as
0666 -- so the assertion failed for a backup written correctly. The generated
perms_windows.go documents this exact fact in its own header comment.
Existence and recoverability are still asserted on every platform; only the
mode check is now skipped on Windows, using the runtime.GOOS guard already
established in cliutil_credentials_perms_test.go.tmpl.
Verified: go test ./internal/generator/ -run 'CredsPerms|PlatformPerms' passes
(both the no-auth pin and the auth-case assertion still hold), and a full
generate --validate of a no-auth spec now passes every gate: go mod tidy,
go test ./..., govulncheck, go vet, go build, runnable binary, --help, version,
doctor.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
* fix(cli): tighten Windows no-auth generation proof
---------
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com >
Co-authored-by: Trevin Chow <trevin@trevinchow.com >
2026-08-12 23:34:23 +00:00
Trevin Chow
1a1a65f1c9
fix(cli): scope browser credentials by host ( #4107 )
...
* fix(cli): scope browser credentials by host
* fix(cli): scope browser credentials by host
* fix(cli): keep override cookies in memory
* fix(cli): close generated query auth redirect block
* test(cli): relax ChromeProfile config assertion
2026-08-12 23:03:21 +00:00
Matt Van Horn
128f67631e
chore(main): release 4.30.2 ( #4009 )
v4.30.2
2026-08-11 13:44:27 -07:00
Som Samantray
9be6a750fb
fix(cli): validate go.mod module path and surface Greptile gate contract ( #4049 )
...
* fix(cli): validate go.mod module path and surface Greptile gate contract
Post-PR failure loops from the exa publish (#4048 ) showed three gaps:
local publish validate passed while the library CI rejected the packaged
module path; the Greptile gate contract sat unreachable at the skill
tail; and spec_path pointed at a source basename absent from the
packaged tree.
- publish: add a module-path check that is authoritative on the staged
tree in the package flow (post-rewrite, both with and without
--module-path) and warn-only in standalone validate on pre-rewrite
source trees
- publish package: fail with a clear message when the staged module
path is not library-canonical
- climanifest: repoint spec_path at the shipped archived spec when one
exists; keep the source basename when nothing ships
- browser-sniff: derive the config path from the slug, not the raw
--name value, so README/config match the runtime path
- skills: move the Greptile gate contract before Step 4 with the
corrected thread-resolution framing (score is a confidence signal,
greptile_feedback.py helper, timeout recovery); document --module-path
as required for --dest; document hollow-coverage prerequisites,
pp:happy-args positional grammar (label=value; bare values ignored),
MCP HTTP transport security default, and phase5 marker
invalidation/sync
* style(cli): use strings.Lines and CutPrefix in module-path check
Satisfy golangci-lint modernize rules (SplitSeq + CutPrefix) flagged on
the new checkModulePath implementation.
* fix(cli): call cleanup on module-path rejection; repoint spec_path by format
Address Greptile review findings:
- publish: the staged-tree module-path rejection now calls
cleanupOnFailure() so an invalid module path does not leave partial
package state (incomplete target or displaced destination).
- climanifest: spec_path repoints via the source extension-derived
archive name (spec.json/spec.yaml) instead of a directory search,
because WriteManifestForGenerate runs before the archive write in the
generate flow — the previous lookup found nothing at manifest time.
- comments: trim helper comments to rationale only per repo style.
* fix(cli): use selected archive filename for manifest provenance
---------
Co-authored-by: Trevin Chow <trevin@trevinchow.com >
2026-08-11 20:13:11 +00:00