Skip to content

fix(core): validate transforms without emit - #1625

Merged
samchon merged 2 commits into
masterfrom
fix/core-transform-no-emit-diagnostics
Aug 22, 2026
Merged

fix(core): validate transforms without emit#1625
samchon merged 2 commits into
masterfrom
fix/core-transform-no-emit-diagnostics

Conversation

@samchon

@samchon samchon commented Aug 22, 2026

Copy link
Copy Markdown
Owner

Intent

Make ttsc --noEmit, configured noEmit, and the native check command surface the same typia/core/SDK contributor diagnostics as an emitting nestia build, while ensuring failed builds cannot leave runnable untransformed output.

Closes #1624.

Scope

  • reload a private emit-enabled program after the original no-emit program passes TypeScript diagnostics, then run the complete composed transform pipeline with every output discarded;
  • route check through the same no-emit build path so the two commands cannot diverge;
  • buffer declarations, JavaScript, maps, and build metadata until emit and transform diagnostics are clean;
  • pin LLM-only tuple return diagnostics for TypedRoute across check, explicit --noEmit, configured noEmit, and normal failed emit paths;
  • assert the real ttsc CLI reports the detailed nestia.core.TypedRoute diagnostic and publishes no failed output;
  • update typia, @typia/interface, and @typia/utils to 14.0.2 so nestia consumes the upstream runtime guidance release.

@nestia/sdk needs no separate execution change: its compiler already propagates the core host's nonzero status and stderr. No package version fields are changed; release versioning remains maintainer-owned.

Local verification

  • go test ./... -run 'TestBuild(NoEmitReportsLlmRouteDiagnostic|TransformDiagnosticPublishesNoArtifacts|NoEmitPreservesAnalysisOnlyOptions)$' -count=1 -v
  • pnpm --filter ./tests/test-transform-options start
  • pnpm format
  • git diff --cached --check

The full pnpm --filter @nestia/core test:go run was intentionally stopped before completion at maintainer direction; the complete repository matrix is deferred to GitHub Actions.

@socket-security

socket-security Bot commented Aug 22, 2026

Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Addednpm/​@​typia/​interface@​14.0.21001008396100
Addednpm/​@​typia/​utils@​14.0.21001009696100
Addednpm/​typia@​14.0.210010010096100

View full report

@samchon samchon left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Self-Review round 1 — finding fixed

Reviewed immutable commit a4339e8c3ea36ca53854c6bfa1eff311ddb3a750 across the complete pull-request diff and the compiler-driver, SDK consumer, platform, recovery, packaging, documentation, and CI consequence surfaces.

One sound concurrency defect survived verification: TypeScript-Go's declaration emitter queues source files in parallel, while the new deferred-output callback appended to the shared emitted and pending slices without synchronization. A declaration build could therefore race or lose a buffered artifact. Commit cdd8d09af8aabee9320e632da2bcd44336658b31 serializes those callback writes.

Because the review produced a change, this round is not the final clean gate. A fresh whole-surface round is running against cdd8d09af8aabee9320e632da2bcd44336658b31 while its replacement CI matrix executes.

@samchon samchon left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Self-Review round 2 — clean

Reviewed immutable commit cdd8d09af8aabee9320e632da2bcd44336658b31 from scratch across the complete base-to-head diff and its compiler-driver, typia/core/SDK composition, declaration/JavaScript/map/build-info/manifest publication, no-emit and failure recovery, concurrency, Windows/POSIX, Express/Fastify, generated SDK/Swagger/e2e, packaging, documentation, migration, and CI consequences.

No further sound improvement survived verification. The round confirmed:

  • check, explicit --noEmit, and configured noEmit run the complete composed transform and publish no artifacts;
  • LLM-incompatible TypedRoute return types report the exact nestia.core.TypedRoute compile diagnostic instead of deferring to runtime NoTransformConfigurationError;
  • failed emitting builds publish no declarations, JavaScript, maps, build info, or manifest;
  • the SDK contributor shares the core host and SDK callers preserve the host's nonzero status and stderr, so no separate SDK execution patch is required;
  • buffered declaration callbacks are serialized before the final clean-only flush;
  • typia, @typia/interface, and @typia/utils resolve consistently to 14.0.2.

GitHub Actions completed all 21 pull-request checks successfully, including go, sdk, transform-options, e2e, Ubuntu build, both format jobs, and both Ubuntu/Windows benchmark-system jobs. No verification remains skipped beyond the already disclosed interrupted local full-Go run, whose complete matrix was delegated to and passed in CI.

@samchon
samchon merged commit bf83925 into master Aug 22, 2026
21 checks passed
@samchon
samchon deleted the fix/core-transform-no-emit-diagnostics branch August 22, 2026 16:53
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.

@nestia/core noEmit skips transform diagnostics and failed builds publish output

1 participant