Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

refactor(upgrade): full Effect-native rewrite of the upgrade train

オープン
#561 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

評価

難易度
5/5
見積もり時間
1週間以上
初心者へのやさしさ
25/100
issue の種類
リファクタリング
明瞭さ
おおむね明確
活発さ
活発
技術スタック
typescript

調査の方向性

Start by locating upgradeTemplate and the syncTemplate release scoped path, then read the PlatformManifestService and ResolutionSessionService seams and the orchestrator's Effect.timeoutOrElse patterns. Run the targeted upgrade and CLI error suites plus pnpm run lint:effect; done means the paths use Effect with typed errors and service fakes, all checks pass, and the platform upgrade e2e confirms unchanged behavior.

索引モデルが issue の本文から書いたものです。

説明

Summary

Second half of the seam-pattern decision (the PlatformManifestService seam lands first): rewrite the upgrade train itself as Effect-native pipelines.

PR-level context: PlatformManifestService (the seam) wraps the platform-release-manifest cluster while the core stays plain async functions — the repo's "module is the implementation, the tag is the seam" shape (FastKVRegistryService, DeployTrainService precedents). This ticket rewrites the orchestration layer.

Scope

  • upgradeTemplate phases → Effect.gen pipelines: read-source / diff / preflight / package-apply / re-exec boundary / migration phases become effects with typed errors (a discriminated UpgradePhaseError replacing string-error UpgradeResult shapes where callers need them).
  • Typed error channel — PublishTrainError-style: handlers map failures to the wire shape mechanically instead of string matching.
  • Effect-lint parity — the cluster passes pnpm run lint:effect (floating effects, tag Self mismatches) under the type-aware oxlint preset.
  • Service-in-context throughout — upgradeTemplate consumes PlatformManifestService + ResolutionSessionService via yield* instead of direct plain-function imports.
  • Timeouts / interruption — the spawn-heavy phases (pnpm install, bos types gen, the re-exec boundary) get fiber-based timeouts instead of ad-hoc exit-code checks, matching the orchestrator's Effect.timeoutOrElse patterns.

Non-goals

  • No behavior change: the upgrade plot, pin semantics, drift alarms, and output shapes stay byte-identical (the platform-upgrade e2e is the guard).
  • Plain function exports stay as the pure core — a rewrite of the orchestration layer, not a deletion of the seams.

Acceptance

  • upgradeTemplate (and syncTemplate's release-scoped path) are Effect-native with typed errors.
  • Targeted suites (upgrade-migration, upgrade-template-sync-gating, upgrade-catalog-drift, cli-error-format) pass with service fakes, no vi.mock on the scaffold modules.
  • pnpm run lint:effect reports zero findings for the cluster.
主要言語
TypeScript
スター
5
フォーク
3
平均マージ
10時間 38分
マージ済み PR(30日)
119

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

NEARBuilders/everything-dev のほかの issue

NEARBuilders/everything-dev の issue をすべて見る

似ている issue

TypeScript の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。