Skip to content

fix(lsp): restore direct file writes for create_class when UNITY_CLI_LSP_MODE=off #531

Closed

Description

@akiojin

分類:バグ修正(互換性の回復)。

背景

PR #493(v0.19.0 に同梱)で create_class が C# LSP の書き込みパス(create_csharp_file と同じ local_lsp_write)を通るようになった。その結果、UNITY_CLI_LSP_MODE=off では "requires LSP" エラーで失敗し、ファイルを書かなくなった(v0.18.1 までは直接書き込んでいた)。CHANGELOG v0.19.0 の Breaking changes に記載済み。

オーナー判断(2026-10-24): 「LSP off では直接書き込みに戻して」。

変更内容

  • src/tooling/local_tools.rs の local_create_class: UNITY_CLI_LSP_MODE=off のときは LSP を経由せず、テンプレートを直接ファイルに書き込む(v0.18.1 と同じ挙動)。auto / required / 未設定では現在の LSP 経路のまま。
  • 対象は create_class のみ。他の LSP 書き込みツール(local_lsp_write 経由のもの)の LSP off 時エラーは変えない。

受け入れ基準

  • AC-1: UNITY_CLI_LSP_MODE=off で create_class が .cs ファイルを作成し、success / path / content を返す。既存ファイルがあれば従来どおり "File already exists" で失敗する
  • AC-2: auto / required / 未設定では LSP 書き込みパスを使い続ける(既存の LSP 結果フィールドを維持)
  • AC-3: テスト create_class_requires_lsp_and_does_not_write_directly を新しい挙動(LSP off で直接書き込み)を検証するテストに置き換える。ScriptableObject の using UnityEngine 付与(fix(lsp): add using UnityEngine to ScriptableObject classes created by create_class #500)は LSP off でも維持する
  • AC-4: CHANGELOG の Unreleased に「create_class は LSP off で直接書き込みに戻した」と記載し、README の UNITY_CLI_LSP_MODE の説明と矛盾がないこと
  • AC-5: cargo fmt --check、cargo clippy --all-targets -- -D warnings、cargo test が成功し、develop 向け PR の required checks が green

Notes

  • PM default ruling (override available): 修正は create_class のみに限定。他ツールは v0.18.1 以前も LSP 必須だったため変更しない。

Activity

  1. akiojin commented on Oct 24, 2026

    @akiojin
    OwnerAuthor
    {
      "claim_id": "gwt-auto-improve:c0c943af-8d4d-4584-81aa-736490dcc2f5",
      "owner": "ccs-win-125:AkioJinsenji秦泉寺章夫:33400",
      "issue_number": 531,
      "status": "released",
      "heartbeat_at": "2026-10-24T11:37:40Z",
      "expires_at": "2026-10-24T12:07:40Z",
      "launched_work_id": "work/issue-531"
    }

    Managed by gwt Issue Monitor.

  2. akiojin commented on Oct 24, 2026

    @akiojin
    OwnerAuthor
    {
      "claim_id": "gwt-auto-improve:5ebba6b6-91ac-41aa-96f6-86cec96bb2e8",
      "owner": "ccs-win-125:AkioJinsenji秦泉寺章夫:33400",
      "issue_number": 531,
      "status": "released",
      "heartbeat_at": "2026-10-24T11:40:58Z",
      "expires_at": "2026-10-24T12:10:58Z",
      "launched_work_id": "work/issue-531"
    }

    Managed by gwt Issue Monitor.

  3. akiojin commented on Oct 24, 2026

    @akiojin
    OwnerAuthor
    {
      "claim_id": "gwt-auto-improve:07f1d0bd-1f0f-4888-9f65-3fdd57cacb4b",
      "owner": "ccs-win-125:AkioJinsenji秦泉寺章夫:33400",
      "issue_number": 531,
      "status": "released",
      "heartbeat_at": "2026-10-24T11:46:11Z",
      "expires_at": "2026-10-24T12:16:11Z",
      "launched_work_id": "work/issue-531"
    }

    Managed by gwt Issue Monitor.

  4. akiojin commented on Oct 24, 2026

    @akiojin
    OwnerAuthor
    {
      "claim_id": "gwt-auto-improve:fa172529-09d3-4715-a2de-e56c39cfe546",
      "owner": "ccs-win-125:AkioJinsenji秦泉寺章夫:33400",
      "issue_number": 531,
      "status": "released",
      "heartbeat_at": "2026-10-24T11:52:46Z",
      "expires_at": "2026-10-24T12:22:46Z",
      "launched_work_id": "work/issue-531"
    }

    Managed by gwt Issue Monitor.

  5. akiojin commented on Oct 24, 2026

    @akiojin
    OwnerAuthor
    {
      "claim_id": "gwt-auto-improve:bc9608f4-e61e-4c3c-98a9-3e18dee9481e",
      "owner": "ccs-win-125:AkioJinsenji秦泉寺章夫:23192",
      "issue_number": 531,
      "status": "released",
      "heartbeat_at": "2026-10-24T13:09:10Z",
      "expires_at": "2026-10-24T13:39:10Z",
      "launched_work_id": "work/issue-531"
    }

    Managed by gwt Issue Monitor.

  6. akiojin commented on Oct 24, 2026

    @akiojin
    OwnerAuthor
    {
      "claim_id": "gwt-auto-improve:1c39d006-92c1-45fd-a912-bb0d810a9ea1",
      "owner": "ccs-win-125:AkioJinsenji秦泉寺章夫:23192",
      "issue_number": 531,
      "status": "active",
      "heartbeat_at": "2026-10-24T18:17:55Z",
      "expires_at": "2026-10-24T18:47:55Z",
      "launched_work_id": "work/issue-531"
    }

    Managed by gwt Issue Monitor.

  7. akiojin commented on Oct 24, 2026

    @akiojin
    OwnerAuthor

    ミヤビ・ホンダ(Codex)が担当を開始。

  8. akiojin commented on Oct 24, 2026

    @akiojin
    OwnerAuthor

    ミヤビ・ホンダ が対応し、PR #532 を作成(Codex)。

  9. akiojin commented on Oct 24, 2026

    @akiojin
    OwnerAuthor

    PR #532 (merged 2026-10-24T19:08:31Z) で全 AC を確認しました。AC-1: LSP off で直接書き込み・既存ファイル拒否テスト維持。AC-2: auto/required/未設定で LSP パス継続(統合テスト)。AC-3: テスト置換 + ScriptableObject の using UnityEngine 維持テスト追加。AC-4: CHANGELOG Unreleased と README を更新。AC-5: required checks green で auto-merge。クローズします。

  10. akiojin commented on Oct 24, 2026

    @akiojin
    OwnerAuthor

    ミヤビ・ホンダによる Issue #531 の配信確認です。

    • PR fix(lsp): restore create_class writes when lsp is off #532: fix(lsp): restore create_class writes when lsp is off #532 — 2026-10-24T19:08:31Z に develop へ MERGED。
    • fetch 後の origin/develop は 0404bbc0b1b7ccb893ccdead8402069ebcc9df31。検証済み HEAD 1d03ecb2a1349677bb26dbcc9015919104504501 を祖先として含み、実装・テスト・README・CHANGELOG の4ファイルが HEAD と一致することを確認しました。
    • 原因: create_class がモードに関係なく local_lsp_write(create_csharp_file) を呼び、off で requires LSP となっていました。
    • 修正: src/tooling/local_tools.rs:951 の off 分岐だけ直接保存に戻し、他モードと他の書き込みツールを維持。tests/csharp_post_write.rs と回帰テスト、README、CHANGELOG を更新しました。
    • 検証: canonical verify.run PASS (vrr-9a98d0c910544163b0f1741291ae631d)。整形・stable clippy・全ターゲットRustテスト・skills lint・.NET 846件・README lintの全6コマンドが成功。Rust単体575件と統合テストが成功し、Unixでも auto / required / 未設定の3モードで LSP 結果フィールドと保存内容を確認しました。
    • CI: 最新 HEAD で19成功・2対象外・失敗0。required checks は全件 green、未解決レビューなし。
    • AC-1〜5: develop に配信済みの実装と上記証跡に照合してすべて達成。Issue 本文のチェックを更新しました。
    • 残作業: この Issue の実装・develop 配信範囲はなし。PR の Closes fix(lsp): restore direct file writes for create_class when UNITY_CLI_LSP_MODE=off #531 は次回 main リリース時のクローズ対象として維持します。

    User Verification Result: n/a (autonomous)
    Agent Visual Check: n/a (no UI surface)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions