@@ -38,6 +38,30 @@ export const createProjectAcceptedBody = (draft: CreateProjectRequestDraft): Cre
3838 ...optionalProjectResourceFields ( draft )
3939} )
4040
41+ // CHANGE: Publish the async project creation boundary with an explicit Effect signature.
42+ // WHY: exported web API helpers must expose typed success, error, and requirement channels.
43+ // QUOTE(ТЗ): "исправь"
44+ // REF: PR#431 CodeRabbit review 4535473023
45+ // SOURCE: n/a
46+ // FORMAT THEOREM: forall draft d: accepted(d) -> Effect<CreateProjectAcceptedResponse, string, never>.
47+ // PURITY: SHELL
48+ // EFFECT: Effect<CreateProjectAcceptedResponse, string, never>
49+ // INVARIANT: only HTTP 202 is accepted as the asynchronous creation success branch.
50+ // COMPLEXITY: O(1)/O(1), excluding HTTP transport.
51+ /**
52+ * Starts asynchronous project creation through the typed OpenAPI client.
53+ *
54+ * @param draft - Validated project creation draft plus optional resource limits.
55+ * @returns Effect that resolves to the accepted async creation response.
56+ *
57+ * @pure false - performs HTTP IO when the returned Effect is executed.
58+ * @effect Effect<CreateProjectAcceptedResponse, string, never>
59+ * @invariant HTTP 202 returns the accepted response; HTTP 201 is rejected as a sync branch mismatch.
60+ * @precondition draft fields were validated by the UI create flow.
61+ * @postcondition downstream callers observe only accepted async responses or string-rendered failures.
62+ * @complexity O(1)/O(1), excluding HTTP transport and response body size.
63+ * @throws Never - failures are represented in the Effect error channel.
64+ */
4165export const startCreateProject = (
4266 draft : CreateProjectRequestDraft
4367) : Effect . Effect < CreateProjectAcceptedResponse , string > =>
0 commit comments