Commit Graph

1846 Commits

Author SHA1 Message Date
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