Skip to content

fix(owner): pin mt-core/llm-cascade rev, remove stray nested owner workspace - #26

Merged
vitaliytv merged 1 commit into
mainfrom
claude/loving-jepsen-23562a
Jul 27, 2026
Merged

fix(owner): pin mt-core/llm-cascade rev, remove stray nested owner workspace#26
vitaliytv merged 1 commit into
mainfrom
claude/loving-jepsen-23562a

Conversation

@vitaliytv

Copy link
Copy Markdown
Member

Summary

release-owner.yml has failed on the "Build and upload DMG" step on every owner release since owner@0.16.0 (last working release: owner@0.15.0), with:

error: failed to get `mt-core` as a dependency of package `owner v0.1.0 (.../owner/src-tauri)`
failed to load source for dependency `mt-core`
unable to update https://github.com/nitra/mt.git
could not find `Cargo.toml` in `/Users/runner/.cargo/git/checkouts/mt-2ebc8b02ac64519d/3097c91`

Root cause is a workspace-resolution regression, not just a stale pin:

  1. Commit 1efb2bd (2026-07-21) consolidated the repo into a single root Cargo workspace and deleted owner/Cargo.toml, which used to declare its own nested [workspace].
  2. PR feat(owner): integrate cascading LLM access #17 (67e3744, landed right before owner@0.16.0) re-created owner/Cargo.toml with a [workspace] block. Cargo resolves against the nearest ancestor [workspace], so owner/src-tauri / owner/owner-llm silently started resolving in this orphaned nested workspace instead of the root one — with no committed lockfile for it.
  3. Both mt-core (git dep from nitra/mt) and llm-cascade (git dep from nitra/7n-rules) had no rev pinned in Cargo.toml. With no lockfile to anchor them, Cargo re-resolved both to their upstream HEAD on every fresh CI runner. nitra/mt's HEAD has since drifted structurally, so resolution now fails identically on every run.

Changes

  • Deleted owner/Cargo.toml (the stray nested workspace) — restores the single-root-workspace invariant from 1efb2bd. owner/src-tauri and owner/owner-llm are already listed as members in the root Cargo.toml, so nothing else needed to change.
  • Pinned mt-core to rev = "03050b869db4828b351defe639b6d09a1c963b4c" in app/src-tauri/Cargo.toml and owner/src-tauri/Cargo.toml.
  • Pinned llm-cascade to rev = "c47c5248ecb45cd076dbc2558e3c2d04f010ddfe" in owner/owner-llm/Cargo.toml. Matches the existing house convention (see the comment above the tauri-plugin-agent pin in app/src-tauri/Cargo.toml).
  • Added required .changes/ entries for app and owner.

Verification

  • Reproduced the exact CI error locally with a clean CARGO_HOME before the fix.
  • After the fix: cargo metadata and cargo check --workspace both succeed from a clean CARGO_HOME (simulating a cold CI runner), with no stray owner/target/ or owner/Cargo.lock reappearing.

Test plan

  • CI green on this PR (rust lint / build jobs)
  • After merge, manually trigger release-owner.yml via workflow_dispatch on an existing owner@X.Y.Z tag (or wait for the next release) to confirm the DMG actually builds and uploads
  • Confirm the owner-latest updater channel picks up a release newer than owner-v0.15.0

🤖 Generated with Claude Code

…rkspace

release-owner.yml падав на кожному owner-релізі з owner@0.16.0: PR #17
(67e3744) повернув owner/Cargo.toml зі своїм [workspace], видаленим ще в
1efb2bd — Cargo відтоді резолвив owner/src-tauri й owner/owner-llm у
незафіксований вкладений воркспейс замість кореневого. Без Cargo.lock там
git-залежності mt-core/llm-cascade (без rev) щоразу тягнули живий HEAD
nitra/mt і nitra/7n-rules — а структура nitra/mt відтоді розійшлась,
тому cargo не міг знайти Cargo.toml за очікуваним шляхом.

- видалено owner/Cargo.toml (вкладений workspace)
- pin rev на mt-core (app/src-tauri, owner/src-tauri) і llm-cascade
  (owner/owner-llm) — той самий канон, що вже в tauri-plugin-agent
- перевірено cargo check --workspace з чистим CARGO_HOME (як на CI-раннері)

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@vitaliytv
vitaliytv merged commit bc97605 into main Jul 27, 2026
2 of 7 checks passed
vitaliytv added a commit that referenced this pull request Jul 29, 2026
…28)

Чотири CI-перевірки падали на PR #26 незалежно від mt-core фіксу:

- eslint/knip: knip.json ігнорував .pi/extensions/n-cursor-adr/** — тека
  давно перейменована на n-rules-adr, плюс rtk.ts ніколи не був у ignore;
  @7n/rules-ci-github/-lang-js/-lang-rust помилково вважались unused
  devDependencies (насправді підключаються плагінами @7n/rules, не імпортом).
- lint-ga / lint-js / lint-text: on.pull_request.paths був відсутній або
  неповний у трьох workflow — push.paths фільтрував тригер, а pull_request
  ганяв лінт на кожен PR незалежно від зачеплених файлів (і одразу падав на
  policy-deny drift-перевірці на невідповідність канону).
- text: .cspell.json бракувало кількох легітимних українських слів
  (мейнтейнера, недовірений, стрімоване, доставки, залежнісного) — частина
  з'явилась у щойно перегенерованих доках; oxfmt/eslint/stylelint дрейф у
  PullRequestsDialog.vue/TaskGraph.vue (сумісний формат для всіх трьох
  лінтерів одночасно).
- k8s: k8s/teleport/ingress.yaml насправді містив NetworkPolicy (не Ingress)
  під невірною назвою файлу — мандатор-перевірка не бачила її для
  StatefulSet teleport. Перейменовано на networkpolicy.yaml + додано
  intra-replica ingress/egress правила зі stateful-set-канону.

Поза скоупом (свідомо відкладено, обговорено з користувачем):
- kubescape виявляє ~17 контролів security posture по всьому k8s/ дереву
  (RBAC, securityContext, naked pods, missing NetworkPolicy для naked Pod
  у dev-pod/) — не квапливий CI-фікс, потребує функціональних рішень поза
  скоупом цієї задачі.
- doc-files: ще ~19 файлів (app/src/*.js, owner/src/*.js) мають застарілі
  доки не повʼязані з цим PR — залишено як є.

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
@vitaliytv
vitaliytv deleted the claude/loving-jepsen-23562a branch July 31, 2026 04:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant