Skip to content

fix(platform): enforce strict path and version resolution #37

Description

@zeegin

Migrated from alkoleft/v8-runner-rust pr #37.
Original author: korolevpavel; created: 2026-07-21T23:23:41Z; last upstream update: 2026-07-26T23:48:02Z.
GitHub shows the migration account as the new author; this block preserves actual attribution.
Upstream historical base: master at d612e2d07e0702c6c829f3981d083022611f6373; head: korolevpavel:fix/platform-strict-hint at abc5c79097829d71c34a42ba0e8c3d8e359e1572. Active migrated PRs compare that exact head with the current IngvarConsulting/v8-runner-rust:master.
Upstream merged: 2026-07-26T23:48:02Z; merge commit: 0ae245c75bf8dd4d1f92cded6d243b9d7635bdc2.


Closes upstream #28.

What changed

  • adds opt-in tools.platform.strict with fail-closed explicit path resolution
  • validates exact four-component and prefix platform versions
  • pins 1cv8, 1cv8c, and ibcmd to one canonical installation root in strict mode
  • exposes typed path/version/source/installation-root metadata in launch JSON and MCP responses
  • keeps legacy fallback behavior unchanged when strict mode is disabled
  • supports primary strict: true with a machine-local path supplied by the local overlay
  • hardens symlink containment, cache revalidation, Windows drive-relative PATH roots, and Windows case-insensitive executable/layout matching
  • updates configuration schemas, README, and the repo-local agent skill

Verification

  • locator: 38 passed
  • utilities: 5 passed
  • config/schema: 160 passed
  • launch unit: 7 passed
  • MCP service: 36 passed
  • CLI, MCP stdio, and MCP HTTP launch metadata integration tests passed
  • schema artifact freshness passed
  • cargo fmt --all -- --check, cargo check --all-targets, and git diff --check passed
  • independent whole-branch reviewer, tester, and Rust expert reviews are clean

Platform note

Windows-specific regressions cover cross-drive drive-relative PATH handling and case-insensitive executable/BIN/1CEDT identity. The local Homebrew Rust toolchain has no Windows standard-library target, so those cfg-gated tests require Windows CI/runtime confirmation.

Two pre-existing unrelated warnings remain in tool_extension.rs and process.rs.

Summary by CodeRabbit

  • Новые возможности

    • Добавлен параметр tools.platform.strict для fail-closed резолва платформенных утилит без fallback-логики.
    • Команда launch теперь возвращает расширенные платформенные сведения: канонический путь, версия (или null), источник обнаружения и корень установки.
  • Исправления

    • Нормализуются и корректно разрешаются относительные пути tools.platform.path.
    • В строгом режиме неподходящие версии/неизвестные версии/недостающие утилиты приводят к ошибке.
  • Документация

    • Обновлены конфигурационные материалы, JSON-схемы и описание контракта результата launch.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    upstream-migratedMigrated from the historical upstream trackerupstream-pr-archiveClosed or merged upstream pull request preserved as an archive

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions