Skip to content

feat(v1): add pilot module and generation flow - #232

Merged
Yakwilik merged 46 commits into
v1.0from
feature/v1.0-pilot
Oct 3, 2026
Merged

Yakwilik merged 46 commits into
v1.0from
feature/v1.0-pilot

Conversation

@Yakwilik

Copy link
Copy Markdown
Member

No description provided.

Edgar Sipki and others added 30 commits August 8, 2026 12:32
The config examples the MCP server serves named api.easyp.tech, which has no
DNS record at all, and put protoc-gen-go under a "protobuf" group that does not
exist — the catalogue calls it protocolbuffers. Both are wrong in a way that
only shows up when someone runs the example, and these examples are read by
agents, so a wrong one propagates into code before anyone tries it.

They now name plugins.beta.easyp.tech and groups that exist; each version cited
is one the registry actually carries.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
service v0.14.0 renamed its gRPC surface — package api.generator.v1 became
easyp.generator.v1 and ServiceAPI became GeneratorAPI — and moved the contract
into its own module. This client kept dialling the old name, so every remote:
plugin against a v0.14.0+ server, plugins.beta.easyp.tech included, failed with
Unimplemented. Nobody noticed while the public stand lagged on v0.13.0; it moved
to v1.0.0 this week and the gap showed.

Depends on github.com/easyp-tech/service/api v1.0.0 directly now, and no longer
on the service module at all. Verified against the stand: a remote generate
produces output where the same call answered Unimplemented before.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
go.mod has required go 1.26.6 since the toolchain bump, and the release image
was still built on golang:1.25-alpine with GOTOOLCHAIN=local — so `go mod
download` inside the image refused the module outright. No release had been cut
since the bump, which is why nothing noticed until v0.17.0.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Both workflows pinned Go 1.24 while go.mod has required 1.26.6 since the
toolchain bump. The release job would have failed at setup-go before goreleaser
ran, and the test job has been failing the same way — go.mod is the one place
the requirement is stated, so the workflows read it from there.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
gotestsum 1.11.0 and mockery v2.41.0 both pull golang.org/x/tools at a version
whose tokeninternal fails to compile on Go 1.26, so `task init` died before a
single test ran. This was masked while CI pinned Go 1.24 by literal; reading the
version from go.mod exposed it.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
#227 added the field to the config and hand-edited both schema artifacts,
but the generator that the golden test and schema:check compare against
never learned it. The artifacts were right; the model was behind.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Adapt GeneratorAPI and its tests to service/api v1.0.0; retain the pilot YAML validator and v1 architecture. Wire FILE breaking checks through v1 policy, runtime, generated schemas and MCP. Carry over main build/CI toolchain updates and provide a live-verified remote plugin example.

Validate with go test -race -count=1 ./..., go vet, both CLI builds, go mod verify, schema regeneration, and live protoc-gen-go v1.36.11 generation.
Add mutually exclusive descriptor_set_out_dir exports per project/module. Compile and validate all graphs and destinations before running plugins; preserve consumer options and use immutable prepared graphs. Explain descriptor conflicts with source and version context, avoid thin-root targets, and prevent output collisions including directory symlink aliases.

Verified with 879 passing tests/subtests under -race, go vet, schema:check, both CLI builds, and all 69 v1 tests/subtests in easyp-test. The new regression reproduces premature plugin execution on the previous binary.
…view

Use stable rule deduplication; reject unsupported lint names across runtime, schema and MCP with located diagnostics. Remove the unimplemented cycle rule from the catalog and replace its panic with an error. Resolve absolute replacements consistently. Let explicit --against override policy without promoting its default. Preserve legacy deps and Git-input transitives through MVS.

Verified with 930 tests/subtests under -race, go vet, module verification, schema:check, both CLI builds, and all 76 v1 tests/subtests in easyp-test. All five defect regressions fail on the previous binary; the relative replacement control remains green.
Address X-14, X-16, R-20, X-24 and X-26. Apply Go prefixes without implicit language defaults. Compare independently scoped modules with revision-local snapshots, locks and effective policies; retain target paths, FILE checking and baseline-only files. Exclude vendor before policy discovery. Reject changed locked semantic-version identities while preserving normal updates and lock-first downloads. Remove obsolete docs publication from the CLI repository.

Verified with 956 tests/subtests under -race, all 94 v1 easyp-test checks with -race and explicit source/binary paths, go vet, go mod verify, schema:check and both CLI builds. All 18 added regression tests/subtests fail against the pre-fix source/binary.
Address X-19/X-22, X-15, X-23, X-18 and X-25. Bound context discovery; make recursive generation opt-in and project selection repeatable. Restore per-plugin with_imports and stage outputs with Go-package collision checks. Resolve compatible tag/SHA/versionless requirements deterministically. Apply scoped lint directives without global state. Reuse locked Git commit objects with verified shallow-fetch fallback.

Verified with 970 tests/subtests under -race, 104 v1 easyp-test checks, both CLI builds, go vet, go mod verify and schema:check. Import generation is checked by compiling the generated multi-module Go project. Reproducible cold/warm Git benchmarks retain identical locks.
Add preview-first v0 migration with conservative source equivalence, immutable historical pins, verified legacy hashes, backups and ordinary-failure rollback. Convert native repository configs and add a deterministic self-test to CI. Implement source-relative policy exclusions and unstable package filtering. Tighten manifest parsing, preserve hash comments during edits, respect import-root identities, fix baseline refs/ignore scope and literal plugin argv. Reject advertised-but-unimplemented future settings in schema and align MCP.

Verified with 1349 tests/subtests under -race, all 136 v1 easyp-test checks, both CLI builds, go vet, module verification, schema:check and native example smoke. Migration round trips, old pins and hash-domain conversion are exercised against local Git fixtures. Shared policy delivery and local-replace lock semantics remain explicitly out of scope.
Automatically guide terminal invocations without --module; preserve existing flag-only usage and permit explicit --interactive=false. Separate default-no dependency/cache and application permissions, display verified candidates, refuse redirected interactive consent, and recheck reviewed input state. Preserve migration integrity, backups and no-plugin semantics.

Verified with 1392 EasyP tests/subtests under -race, 151 v1 regression checks including 15 new PTY checks, both CLI builds, go vet, module/schema verification and native example. EN/RU documentation passes types and production build.
Validate reachable import closures and fail ls-files on reported errors. Promote existing indirect requirements. Derive strict managed schemas from actual handlers, enforce policy/runtime parity without double expansion. Bound init prompts to terminal IO, preserve declared origin identities, improve CLI diagnostics and batch lint by effective context. Align existing agent instructions.

1598 unit tests/subtests and 176 external v1 checks passed with -race. Both builds, vet, module/schema/native-example checks and six EN/RU documentation pages verified. X-20 and registry mapping remain separate.
Repair root-scoped Task targets, mock owners and local-only Docker helpers. Add offline tooling regression to CI and align existing skills with the CLI. Improve cache/revision diagnostics and cancellation without repinning. Resolve actual lint findings and pin current APK packages.

Verified 1604 EasyP tests/subtests and 181 v1 checks with race detection; both builds, vet, schema/native example, full Go and Dockerfile lint, optional generated mocks, and APK package installation on arm64/amd64. X-20 remains unchanged.
Require /vN identities for native v2+ modules, keep v0/v1 unsuffixed, and treat major lines as independent module identities. Verify nested-module tag mapping and published legacy +incompatible provenance across fetch, cache, frozen graphs, migration, replacements, and resolution without rewriting protobuf imports.
Read Buf v1beta1/v1/v2 deps, including selected v1 workspace modules, and stop dependency adaptation with structured BSR metadata instead of silently dropping it. Keep BSR-to-Git mapping out of scope and preserve native protobuf.mod precedence.
@Yakwilik
Yakwilik merged commit 81b2f64 into v1.0 Oct 3, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants