Skip to content

feat(owner): M5 — скоуп власника (фрактальна власність)#6

Merged
vitaliytv merged 3 commits into
mainfrom
claude/m5-owner-scope
Jul 16, 2026
Merged

feat(owner): M5 — скоуп власника (фрактальна власність)#6
vitaliytv merged 3 commits into
mainfrom
claude/m5-owner-scope

Conversation

@vitaliytv

Copy link
Copy Markdown
Member

Перший імплементаційний етап спеки 260714-cognitive-delegation (M5 — скоуп): «мій скоуп» — деривація з owner:-розмітки autonomy.yml, не налаштування.

Що зроблено

  • Ідентичність = handle (як assignee в h.md, PII поза git): tauri-команди get_identity/set_identity, зберігання в локальному конфігу застосунку; merge-запис конфігу більше не затирає сусідні ключі.
  • owner:/since: — зарезервовані метаключі autonomy.yml: валідація (Rust) і парсер (JS) приймають їх поряд із класами дій; власник і конверт автономії живуть в одному поліс-файлі.
  • scan_owners — розмітка воркспейсу одним проходом ФС.
  • Scope-деривація (owner/src/scope.js): mine / boundary (межа контракту — делегований вузол, чий батько мій) / foreign (чужа кухня, не вантажиться) / orphaned («нічия земля», видно всім).
  • Фільтри: черга рішень і особисті задачі — мій скоуп (+ orphaned з бейджем); дельта — мій скоуп + переходи станів межових вузлів.
  • Fail-closed гейт власності на write-діях (approve_plan, reject_plan, mark_done, draft_plan, write_autonomy): у розміченому лісі діє лише effective owner вузла; «нічия земля» не блокується.
  • UI: крок «Хто ти» в онбордингу (вибір із handles, знайдених у лісі), ідентичність у тулбарі, бейдж «нічия земля».
  • Headless-паритет: tools whoami/set_identity/scan_owners у каталозі.

Back-compat

Ліс без жодного owner: — нерозмічений: поведінка точно як сьогодні (single-owner виродження), без міграції.

Критерій готовності M5

Два власники над одним репо бачать різні черги — покрито тестом «той самий ліс очима іншого власника» (scope.test.js) і скоуп-кейсами decisions.test.js.

Тести

  • JS: 135 passed (нові scope.test.js + скоуп-кейси decisions.test.js, оновлений tool.test.js)
  • Rust: 10 passed (check_scope, scan_owners, зарезервовані ключі, конфіг)
  • Дельта-лінт чистий (лишаються преіснуючі tauri/updater+tooling, які веде окремий mt fix-вузол)

🤖 Generated with Claude Code

vitaliytv and others added 3 commits July 15, 2026 16:56
Ідентичність-handle і scope-деривація з owner:-розмітки autonomy.yml:

- Rust: get_identity/set_identity (локальний конфіг, PII поза git;
  merge-запис конфігу не затирає інші ключі), scan_owners (один прохід
  ФС), зарезервовані метаключі owner/since у validate_autonomy,
  fail-closed гейт власності (check_scope) на write-командах
  spawn_approve/spawn_reject/human_done/draft_plan/write_autonomy;
  нерозмічений ліс — поведінка як раніше, «нічия земля» не блокується
- JS: scope.js (effectiveOwnerOf/deriveScope: mine/boundary/foreign/
  orphaned), фільтр черги рішень і особистих задач (decisions.js),
  дельти (use-forest.js: foreign-рядки відсікаються, межі контрактів
  лишаються); parseAutonomy ігнорує зарезервовані ключі
- Tools: whoami/set_identity/scan_owners у каталозі (headless-паритет)
- UI: крок «Хто ти» в онбордингу (вибір із handles лісу + вільне
  введення), ідентичність у тулбарі, бейдж «нічия земля» на картці
- Тести: scope.test.js + скоуп-кейси decisions, Rust check_scope/
  scan_owners; 135 JS + 10 Rust зелені

Критерій M5: два власники над одним репо бачать різні черги; ліс без
owner:-розмітки працює як сьогодні.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
# Conflicts:
#	owner/src-tauri/src/docs/lib.md
@vitaliytv vitaliytv merged commit 2715fd7 into main Jul 16, 2026
6 checks passed
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