@suluk/stubgen — turn a NEEDS-CONTRACT gap (a tester pre-wrote a scenario the contract can't back yet) into
honestly-provisional backend STUBS the maintainer then writes pragmatically.
Two halves, per C040-P3:
• the CONTRACT half is GENERIC — a @suluk/hono RouteContract literal (method/path/name inferred from the intent;
request Zod inferred from the gap's Examples columns; responses a placeholder), every inference tagged
// TODO: tighten — the inferred Zod is LOSSY by construction and the maintainer owns the final schema (never
laundered as authoritative).
• the HANDLER half goes through a HandlerTarget ADAPTER SEAM (mirroring @suluk/deploy's DeployProvider / the C034
runtime seam), because the handler idiom is app-specific. The first adapter is honoEffectTarget (the toolfactory
Effect + run() + RouteError shape); honoTarget is a framework-generic fallback.
Zero-dependency + pure (source-text out): @suluk/core never imports this; this imports nothing.
@suluk/stubgen— turn a NEEDS-CONTRACT gap (a tester pre-wrote a scenario the contract can't back yet) into honestly-provisional backend STUBS the maintainer then writes pragmatically.Two halves, per C040-P3: • the CONTRACT half is GENERIC — a shape);
@suluk/honoRouteContract literal (method/path/name inferred from the intent; request Zod inferred from the gap's Examples columns; responses a placeholder), every inference tagged// TODO: tighten— the inferred Zod is LOSSY by construction and the maintainer owns the final schema (never laundered as authoritative). • the HANDLER half goes through aHandlerTargetADAPTER SEAM (mirroring @suluk/deploy's DeployProvider / the C034 runtime seam), because the handler idiom is app-specific. The first adapter ishonoEffectTarget(the toolfactory Effect + run() + RouteErrorhonoTargetis a framework-generic fallback.Zero-dependency + pure (source-text out): @suluk/core never imports this; this imports nothing.