Запрос
текст
Добудь факт «Раскладка (ввод / вывод / дерево), состояния (пусто, идёт, вопрос, готово, ошибка, повтор, отказ), что видно во время работы и после, действия над результатом — с происхождением у каждого пункта; проверка по эвристикам и открытые вопросы» (work_screen_spec_body). Выбирать, когда: Свой узел выведен. Нужны: ["own_work_screen_node","own_screen_decisions"]
owner
{"id":"egor"}
company_name
Shadums
company_oneliner
ядро решений: согласует цель, раскладывает задачу на паттерны; знакомые паттерны переиспользуются быстро через Jev и алгоритмы без вызова большой модели, незнакомое дорешивает LLM и сохраняется паттерном с условием, когда он снова нужен
edge_jev
Jev — быстрая модель TypeSafe AI, в раннем доступе с 15 сентября 2026; TypeSafe заявляет на своих workflow-тестах ускорение 193.6x и снижение стоимости 444.6x относительно сравниваемых LLM (цифры производителя, верхняя граница; собственных замеров Shadums нет — Shadums их себе не приписывает)
edge_window
новый выпуск Jev — окно быстро выйти на рынок; занять его первыми — стремление, не подтверждённый факт
edge_quality
ожидаемый эффект декомпозиции — меньше ошибок и галлюцинаций, потому что знакомое не генерируется заново, а переиспользуется проверенным; измеренного подтверждения пока нет
edge_speed
скорость, лёгкость, адаптивность: каждая решённая задача делает следующую похожую быстрее и дешевле
traction
ядро проходит цикл «задача → паттерн → повторное использование без модели»; три цели в одном графе; код ядра проходит круг код → цель → код (165/165 тестов); выручки нет
team_credential
Егор, основатель; год не пишет код руками — построил платформу агентов, которая делает это за него
round_details
ранний раунд; сумма и условия открыты; сильная дистрибуция важнее цены
deck_link
демо будет готово к понедельнику 28 сентября 2026, ссылку пришлю после
call_slots
неделя 28 сентября — 2 октября, онлайн, 20 минут
sender_signature
Егор, основатель Shadums, shadums.com
proof_roundtrip
код ядра (4 модуля, 54 функции) прошёл круг «код → одна цель → код»: 165/165 тестов, 0 ошибок типов; ранее одна функция decide — 112/112 проверок поведения
proof_reuse
одно правило, полученное от модели, применено к 70 вхождениям в 45 функциях; 2450 из 2875 конструкций собраны обратно за 26.8 с без моделей; повтор того же входа — ноль вызовов модели
proof_portable
переносимость ядра проверена на двух доменах; повторная обработка и восстановление после прерывания протестированы локально
positioning
цель должна переживать разговор с ИИ: система удерживает цель, выполняет, проверяет результат и сохраняет найденный способ как исполняемый опыт; решения объяснимы — видно основание, правило можно поменять
ask_format
15–20-минутный показ демо; персонализация под тезис/портфель адресата обязательна; просьба о личных $4k к 20 октября НЕ актуальна и в письмо не идёт
vision_shared_brain
проект — развивающийся общий мозг: каждый решённый способ (паттерн) сохраняется как исполняемый опыт, и повтор стоит ноль вызовов модели; ценность создаёт тот, кто исследовал, а потребляет тот, кто переиспользует
economy_pay_for_research
платить за время, потраченное на исследование, когда этой работой потом пользуются другие: у записи паттерна есть кто её родил (mintedBy) и цена рождения (вызовы модели, веб-вызовы, время из расписок), у каждого повтора — факт применения без модели; разница между ценой рождения и ценой повтора измерима в реестре
open_registry_as_spec
реестр паттернов открыт на чтение как исполняемая спека платформы (назначение, посылки, форма, законы, источники, цена и число повторов); это стимулирует изучать платформу: чужая запись, взятая из реестра, приносит автору отметку и повтор без модели; запись — только через допуск с проверками
karate_labs_meeting
Созвон с Karate Labs: 28 сентября 2026, 12:30 UTC (09:30 Буэнос-Айрес, 13:30 UK, 18:00 Индия), Google Meet https://meet.google.com/xjv-scuu-sju. Участники с их стороны: Kapil Bakshi (CEO, сооснователь), Peter Thomas (CTO, сооснователь, автор фреймворка Karate), Pier-Jean. Повод: моё прямое письмо основателю «Engineer who works through coding agents» (05.09.2026); Кэпил ответил 11.09 «How are you placed week of 21 Sep?», созвон был назначен на 25.09 и перенесён ими на 28.09 (принято 23.09). Формат: знакомство с основателями, роль инженера не опубликована — уточнить в разговоре.
owner_timezone
America/Argentina/Buenos_Aires, UTC−3, без летнего времени
company_jurisdiction
юридического лица нет — компания ещё не зарегистрирована (слово владельца 2026-09-25 ~17:2xZ: «компании нет никакой»)
neighbor_setting_code
["revision: HEAD = ref: refs/heads/main (.git/HEAD:1); main = 4afbc7a78f291e928cf80125f0c0d3f199e31fbc (.git/refs/heads/main:1), read now (observed)","drift from prior map 5bddb3ac7d50659d4b7f458f84612508fa91deba: 1 commit, .git/logs/refs/heads/main:7390 — 5bddb3ac7d50659d4b7f458f84612508fa91deba to 4afbc7a78f291e928cf80125f0c0d3f199e31fbc (fast-forward from the prior map's SHA, observed); files changed: UNKNOWN (packed objects, no git diff with Read/Grep only). Inferred, not verified: .git/COMMIT_EDITMSG:1-7 describes a bridge-watcher change (_bridge-hand-watch, cdp-sweep; tsc over shared and dev-platform), which would be outside token-vault and app. Because of that, every anchor below was re-read at 4afbc7a and all matched the prior map's lines","neighbor choice: pool reserve floors (poolReserve and poolBackgroundReserve, PoolReserveSettings) — like the target priorityAccount, it is a property of the whole pool, not of one account; it is live (loaded at boot, PATCHed without a restart); it lives in the same doc-service row vault_settings/pool-reserve; it is read by dispatch and by health; it has a screen control. The neighbor is not the target: grep priorityAccount in packages returns 0","port (found, observed): packages/token-vault/src/ports/IPoolReserveStore.ts:23-32 — interface IPoolReserveStore (load, save); :13-18 StoredPoolReserves (partial: interactive, background, updatedAt, updatedBy); :21 PoolReservePatch","storage (found, observed): packages/token-vault/src/infrastructure/DocServicePoolReserveStore.ts:26 — class DocServicePoolReserveStore implements IPoolReserveStore; :7-8 DB imperiaos, COLLECTION vault_settings; :15 DOC_ID = pool-reserve; :50-51 $set under upsert with returnDocument after; :68-77 function pick keeps only its own finite fields (a new field must be added here or it gets dropped)","overlay (found, observed): packages/token-vault/src/domain/policy.ts:82 let storedReserves: StoredSettingsOverlay; :85 interface StoredSettingsOverlay; :91 setStoredPoolReserves; :96 getStoredPoolReserves; :101 __clearStoredPoolReservesForTest; :179 poolReserveSetting; :184 poolReserveFraction","use-case (found, observed): packages/token-vault/src/application/PoolReserveSettings.ts:47 class PoolReserveSettings; :58-71 load (non-fatal, log.error at :66); :74-82 current returns PoolReserveView; :89-117 update: validate, then store.save at :107, then apply at :111; :119-131 apply writes the overlay and checks it back at :127-130; :24 PoolReserveRejected","wiring (found, observed): packages/token-vault/src/server.ts:12-13 imports DocServicePoolReserveStore and PoolReserveSettings; :214 new PoolReserveSettings(new DocServicePoolReserveStore(STORAGE_URL)); :215 await poolReserve.load(); :256-257 registerRoutes receives poolReserve; packages/token-vault/src/routes.ts:43 optional slot poolReserve?: PoolReserveSettings","routes (found, observed): packages/token-vault/src/routes.ts:157-163 GET /api/pool/reserve (503 'pool reserve settings not wired' at :159, otherwise ok:true plus current() at :162); :165-189 PATCH /api/pool/reserve (update at :174; PoolReserveRejected gives 400, anything else gives 500 at :184; log.error at :186)","reads/health (found, observed): routes.ts:218-226 GET /api/tokens/health spreads checkHealth.execute(); packages/token-vault/src/application/CheckHealth.ts:60-61 read poolReserveSetting() and poolBackgroundReserveSetting(); :91-94 poolReserve, poolBackgroundReserve, poolReserveSource, poolReserveLimits; packages/token-vault/src/domain/types.ts:221 HealthSummary, :280 poolReserve, :282 poolBackgroundReserve, :289 poolReserveSource, :291 poolReserveLimits; list routes.ts:192-215 GET /api/tokens, selection.rank at :208; dispatch reads the floor at packages/token-vault/src/application/GetBestToken.ts:464 poolReserveFraction(), with the 'pool reserve breached' refusal at :485-486, before ranking","shared helper and ALL callers (found, observed; grep -w rankTokens in packages returns 4 call sites plus the definition and imports): definition packages/token-vault/src/domain/selectionChain.ts:211 rankTokens(candidates, now); callers: GetBestToken.ts:362 (inside private rank at :361, which is called at :496 primary, :499 fallback and :534 last resort, where the filter is isAdministrativelyActive and not isProviderWindowFull rather than canServeRequest); CheckHealth.ts:52 bestAvailable; SwitchActiveToken.ts:105 switch to next; routes.ts:201 list rank. The imports at GetBestToken.ts:12, CheckHealth.ts:10, SwitchActiveToken.ts:6 and routes.ts:17 are not calls","tests (found, observed): packages/token-vault/src/__tests__/pool-reserve-settings.test.ts:49 fakeStore(initial: StoredPoolReserves); :113 READ; :147 WRITE; :197 'survives the restart'; :207 APPLY; packages/token-vault/src/__tests__/pool-reserve.test.ts:170 describe poolReserveFraction; :325 'GetBestToken — the floor reads WHO is asking'; route-test pattern for another route: packages/token-vault/src/__tests__/patch-metadata-route.test.ts:88 registerRoutes(app, makeStubUseCases(repo)); screen: packages/app/tests/unit/vault-account-list.test.ts:2 imports vaultGroups and vaultOrder only","proxy (found, observed): packages/app/app/api/tokens/route.ts:26 GET, fetchVault /api/tokens at :28 and /api/tokens/health at :29; :40 POST only, no PATCH export; :73-91 action pool-reserve sends a PATCH to VAULT_URL/api/pool/reserve at :75, returns 503 'Token vault unreachable' when there is no response (:89), and otherwise passes the vault's status through (:91)","screen (found, observed): packages/app/views/platform/TokenVaultView.tsx:134 health keys poolBackgroundReserve, poolReserveSource, poolReserveLimits, poolForecast; :1332 function AccountCard(token, spend, now, doAction, actionLoading); :1338 isActive = status active; :1339 rank = token.selection.rank or null; :1361 card root div with a green frame when isActive and no onClick; :1434 activate button doAction('switch'); :1544 list.map renders AccountCard; :2036 doAction; :2055 reserveError; :2075-2090 onReserveCommit does fetch('/api/tokens?action=pool-reserve') at :2082, calls setReserveError on failure at :2087 and invalidateAsyncData('platform:tokens') on success at :2088","ABSENT (grep at HEAD 4afbc7a): 'priorityAccount|api/pool/priority|pool-priority|PoolPriority' in packages, excluding node_modules — 0; 'api/pool/reserve|rankTokens' in packages/token-vault/src/__tests__ — 0 (no route test for the reserve, no direct rankTokens test); 'AccountCard|pool-reserve' in packages/app/tests — 0; PATCH export in packages/app/app/api/tokens/route.ts — 0 (only GET at :26 and POST at :40)","divergences (outside the layer model): packages/token-vault/src/application/SwitchActiveToken.ts:105 and CheckHealth.ts:52 order tokens with rankTokens directly, not through GetBestToken.rank, so a priority applied only in GetBestToken.rank at :361 would not reach switch-to-next, health bestAvailable or the list rank at routes.ts:201 (inference); GetBestToken.ts:534 last resort calls the same rank on tokens that cannot serve, so the priority must be gated on canServeRequest inside rank or kept out of that tier (inference, matches S2-14); pick in DocServicePoolReserveStore.ts:68-77 and PoolReservePatch at IPoolReserveStore.ts:21 accept numbers only, so a string or null priorityAccount in the same document needs its own field handling (inference)"]
acceptance_scenarios
["@stmt-1 @set [S1-01] Дано: priorityAccount пула = null, в пуле аккаунты acc1 и acc2. Когда: владелец записывает приоритет пула accountName = «acc2». Тогда: ответ ok:true, priorityAccount = «acc2»; повторное чтение приоритета возвращает «acc2».","@stmt-1 @set [S1-02] Дано: priorityAccount = «acc2» (самопереход). Когда: владелец записывает приоритет accountName = «acc2». Тогда: ok:true, priorityAccount = «acc2», ошибки нет; повторное чтение возвращает «acc2».","@stmt-1 @unset [S1-03] Дано: priorityAccount = «acc2». Когда: владелец записывает приоритет accountName = null. Тогда: ok:true, priorityAccount = null; повторное чтение возвращает null.","@stmt-1 @unset [S1-04] Дано: priorityAccount = null (повторное снятие, no-op). Когда: владелец записывает приоритет accountName = null. Тогда: ok:true, priorityAccount = null, ошибки нет; повторное чтение возвращает null.","@stmt-1 @toggle [S1-05] Дано: priorityAccount = «acc1». Когда: владелец записывает приоритет accountName = «acc2». Тогда: ok:true, priorityAccount = «acc2»; повторное чтение возвращает «acc2»; у пула одно значение, acc1 больше не приоритет.","@stmt-1 @toggle @sequence [S1-06] Дано: priorityAccount = null. Когда: владелец записывает accountName = «acc1», и затем записывает accountName = null. Тогда: итоговое чтение возвращает null, ровно исходное состояние.","@stmt-1 @sequence @negative [S1-07] Дано: priorityAccount = null. Когда: владелец записывает accountName = null, и затем записывает accountName = «acc1» (порядок S1-06 переставлен). Тогда: итоговое чтение возвращает «acc1», а не null.","@stmt-1 @negative [S1-08] Дано: priorityAccount = «acc1». Когда: владелец отправляет запись приоритета без ключа accountName. Тогда: отказ, код 400, ok:false, причина в поле error; save хранилища не вызывался; чтение возвращает «acc1».","@stmt-1 @negative [S1-09] Дано: priorityAccount = null. Когда: владелец записывает приоритет accountName = 42. Тогда: отказ, код 400, ok:false; save хранилища не вызывался; чтение возвращает null.","@stmt-1 @dependency-down [S1-10] Дано: priorityAccount = «acc1»; хранилище настроек отвечает error на save. Когда: владелец записывает приоритет accountName = «acc2». Тогда: отказ, код 500, ok:false, запись ошибки в журнале; чтение возвращает «acc1»; выдача продолжает ставить acc1 первым (порядок: проверка, хранилище, память).","@stmt-1 @dependency-down [S1-11] Дано: хранилище настроек unavailable на load. Когда: волт стартует. Тогда: старт не падает, в журнале ошибка загрузки; чтение приоритета возвращает null; выдача идёт без приоритета.","@stmt-1 @dependency-down [S1-12] Дано: волт собран без объекта настроек пула. Когда: владелец читает приоритет пула. Тогда: отказ, код 503, ok:false, текст «not wired» (как у маршрутов резерва).","@stmt-1 @happy [S1-13] Дано: priorityAccount = «acc2» записан в хранилище. Когда: процесс волта перезапускается с тем же хранилищем. Тогда: чтение приоритета возвращает «acc2» (образец: тест резерва «survives the restart»).","@stmt-1 @happy [S1-14] Дано: в общем документе хранилища фоновый резерв 0.08, priorityAccount = null. Когда: владелец записывает приоритет accountName = «acc2». Тогда: чтение резерва даёт background 0.08; чтение приоритета даёт «acc2».","@stmt-1 @happy [S1-15] Дано: priorityAccount = «acc2», фоновый резерв 0.05. Когда: владелец записывает резерв background = 0.08. Тогда: чтение резерва даёт background 0.08; чтение приоритета по-прежнему «acc2».","@stmt-1 @characterization [S1-16] Текущее поведение. Дано: в хранилище документ резерва в сегодняшнем виде, без поля priorityAccount, с interactive 0.05 и background 0.08. Когда: волт загружает настройки. Тогда: чтение резерва отдаёт interactive 0.05 и background 0.08, как до правки; чтение приоритета отдаёт null.","@stmt-2 @set @happy @tier-primary [S2-01] Дано: acc1 util7d 0.30, acc2 util7d 0.80, оба primary и способны обслужить запрос; при null выдаётся acc1; priorityAccount = «acc2». Когда: интерактивный вызов выдачи токена. Тогда: выдан accountName = «acc2».","@stmt-2 @happy @tier-primary [S2-02] Дано: acc1 util7d 0.30, acc2 util7d 0.50, acc3 util7d 0.80, все способны обслужить; priorityAccount = «acc3». Когда: вызов выдачи. Тогда: первый кандидат acc3; взаимный порядок acc1 и acc2 после него совпадает с порядком при null.","@stmt-2 @unset @tier-primary [S2-03] Дано: acc1 util7d 0.30, acc2 util7d 0.80; приоритет acc2 снят, priorityAccount = null. Когда: вызов выдачи. Тогда: выдан acc1; порядок кандидатов совпадает с порядком без функции.","@stmt-2 @toggle @tier-primary [S2-04] Дано: acc1 util7d 0.30, acc2 util7d 0.80; приоритет переключён с acc1 на acc2, priorityAccount = «acc2». Когда: вызов выдачи. Тогда: выдан acc2, acc1 стоит вторым.","@stmt-2 @negative @tier-primary [S2-05] Дано: acc1 util7d 0.30, acc2 util7d 1.00 (мёртв), priorityAccount = «acc2». Когда: интерактивный вызов выдачи. Тогда: выдан acc1; порядок кандидатов совпадает с порядком при null.","@stmt-2 @negative @tier-primary [S2-06] Структура с примерами. Дано: порог недели 1.00 (VAULT_TURN_HEADROOM_7D = 0), acc1 util7d 0.30, priorityAccount = «acc2». Когда: вызов выдачи при util7d acc2 из строки примеров. Тогда: примеры (одна строка — одно нарушение): 0.99 выдан acc2; 1.00 выдан acc1; 1.01 выдан acc1.","@stmt-2 @negative @tier-primary [S2-07] Дано: priorityAccount = «acc2», статус acc2 = disabled, acc1 жив. Когда: вызов выдачи. Тогда: выдан acc1, порядок как при null.","@stmt-2 @negative @tier-primary [S2-08] Дано: priorityAccount = «acc9», в пуле только acc1 и acc2. Когда: вызов выдачи. Тогда: выдан тот же аккаунт и в том же порядке, что при null; ошибки нет.","@stmt-2 @negative [S2-09] Дано: priorityAccount = «acc2», acc2 жив, acc1 жив. Когда: вызов выдачи с исключением acc2. Тогда: выдан acc1; acc2 не выдан (приоритет упорядочивает только выживших после жёстких фильтров).","@stmt-2 @negative [S2-10] Дано: priorityAccount = «acc2», оба живы. Когда: вызов выдачи с привязкой к acc1. Тогда: выдан acc1.","@stmt-2 @negative [S2-11] Дано: priorityAccount = «acc2», лучший остаток недели 0.03 при интерактивном полу 0.05. Когда: интерактивный вызов выдачи. Тогда: отказ с текстом «pool reserve breached», токен не выдан.","@stmt-2 @negative @tier-fallback [S2-12] Дано: acc1 роль primary, жив; acc3 роль fallback, жив; priorityAccount = «acc3». Когда: вызов выдачи. Тогда: выдан acc1 (роль сильнее приоритета: fallback не соревнуется с живым primary).","@stmt-2 @happy @tier-fallback [S2-13] Дано: primary acc1 и acc2 с util7d 1.00; fallback acc3 util7d 0.30 и acc4 util7d 0.60, оба живы; priorityAccount = «acc4». Когда: вызов выдачи. Тогда: выдан acc4.","@stmt-2 @negative @tier-last-resort [S2-14] Дано: порог недели 0.80 (VAULT_TURN_HEADROOM_7D = 0.20), acc1 util7d 0.85, acc2 util7d 0.90, ни один не способен обслужить, окно провайдера не выбрано, fallback нет, requireUsable не задан; priorityAccount = «acc2». Когда: вызов выдачи. Тогда: выдан тот же аккаунт и порядок кандидатов тот же, что при null в этой конфигурации; acc2 не поднят приоритетом.","@stmt-2 @happy @tier-model-aware [S2-15] Дано: model-aware включён, запрошенная модель не капнута ни на acc1, ни на acc2; acc1 util7d 0.30, acc2 util7d 0.80; priorityAccount = «acc2». Когда: вызов выдачи с этой моделью. Тогда: выдан acc2.","@stmt-2 @negative @tier-model-aware [S2-16] Дано: model-aware включён, запрошенная модель капнута на acc2 и не капнута на acc1; priorityAccount = «acc2». Когда: вызов выдачи с этой моделью. Тогда: выдан acc1.","@stmt-2 @sequence @set [S2-17] Дано: экземпляр выдачи создан при priorityAccount = null, acc1 util7d 0.30, acc2 util7d 0.80. Когда: владелец записывает приоритет «acc2», и затем тот же экземпляр выполняет вызов выдачи. Тогда: выдан acc2, без перезапуска (образец: тест резерва APPLY).","@stmt-2 @sequence @negative [S2-18] Дано: экземпляр выдачи создан при priorityAccount = null, acc1 util7d 0.30, acc2 util7d 0.80. Когда: тот же экземпляр выполняет вызов выдачи, и затем владелец записывает приоритет «acc2» (порядок S2-17 переставлен). Тогда: этот вызов выдал acc1.","@stmt-2 @dependency-down [S2-19] Дано: хранилище настроек unavailable на load при старте; acc1 util7d 0.30, acc2 util7d 0.80. Когда: вызов выдачи. Тогда: выдан acc1, порядок как при null, отказа выдачи нет.","@stmt-2 @characterization [S2-20] Текущее поведение. Дано: priorityAccount = null. Когда: полный прогон существующих тестов выдачи (привязка, исключение, фолбэк, модельные капы, резерв). Тогда: 0 упавших; выбор и порядок совпадают со снимком, записанным на ревизии 5bddb3a до правки.","@stmt-3 @set @happy [S3-01] Дано: priorityAccount = «acc2». Когда: экран читает сводку здоровья волта. Тогда: ok:true и priorityAccount = «acc2».","@stmt-3 @set @happy [S3-02] Дано: priorityAccount = «acc2». Когда: экран читает список токенов. Тогда: ok:true и priorityAccount = «acc2».","@stmt-3 @unset [S3-03] Дано: priorityAccount только что снят в null. Когда: экран читает сводку здоровья. Тогда: ключ priorityAccount присутствует со значением null.","@stmt-3 @unset [S3-04] Дано: priorityAccount только что снят в null. Когда: экран читает список токенов. Тогда: ключ priorityAccount присутствует со значением null.","@stmt-3 @toggle [S3-05] Дано: приоритет переключён с acc1 на acc2. Когда: экран читает сводку здоровья. Тогда: priorityAccount = «acc2».","@stmt-3 @negative [S3-06] Дано: priorityAccount = «acc2», acc2 util7d 1.00. Когда: экран читает список токенов. Тогда: priorityAccount = «acc2», а selection.rank у acc2 = null (исчерпанный не имеет места в выдаче).","@stmt-3 @dependency-down [S3-07] Дано: хранилище настроек unavailable на load при старте. Когда: экран читает сводку здоровья. Тогда: ok:true, priorityAccount = null; поля poolReserve, poolBackgroundReserve, poolReserveSource, poolReserveLimits присутствуют.","@stmt-3 @characterization [S3-08] Текущее поведение. Дано: priorityAccount = null, сохранён interactive резерв 0.05. Когда: экран читает сводку здоровья и список токенов. Тогда: poolReserve = 0.05; poolBackgroundReserve, poolReserveSource, poolReserveLimits и selection.rank каждого токена совпадают со снимком до правки; новое только поле priorityAccount.","@stmt-4 @set [S4-01] Дано: приоритета нет, карточки acc1 и acc2 в группе с недельной квотой. Когда: владелец выбирает карточку acc1. Тогда: уходит запись priority = «acc1»; подсвечена только acc1; после обновления данных экрана подсветка у acc1.","@stmt-4 @unset [S4-02] Дано: подсвечена acc1. Когда: владелец снова выбирает карточку acc1. Тогда: уходит запись priority = null; подсвеченных карточек 0; после обновления данных тоже 0.","@stmt-4 @toggle [S4-03] Дано: подсвечена acc1. Когда: владелец выбирает карточку acc2. Тогда: уходит запись priority = «acc2»; подсвечена только acc2; подсвеченных карточек ровно 1.","@stmt-4 @toggle @sequence [S4-04] Дано: приоритета нет, карточки acc1 и acc2. Когда: владелец выбирает acc1, и затем снова выбирает acc1. Тогда: записи ушли в порядке «acc1», null; подсвеченных карточек 0, ровно исходное состояние.","@stmt-4 @negative [S4-05] Дано: подсвечена acc1. Когда: владелец нажимает кнопку «активировать» внутри карточки acc2. Тогда: уходит действие switch; запись приоритета не уходит; подсветка остаётся у acc1.","@stmt-4 @dependency-down [S4-06] Дано: подсвечена acc1; волт отвечает на запись приоритета отказом с кодом 503. Когда: владелец выбирает карточку acc2. Тогда: подсветка остаётся у acc1; на экране текст отказа (образец: прокси резерва передаёт статус отказа экрану).","@stmt-4 @dependency-down [S4-07] Дано: прокси экрана получает reachable = false и health = null. Когда: экран обновляет данные. Тогда: подсвеченных приоритетом карточек 0.","@stmt-4 @characterization [S4-08] Текущее поведение. Дано: priorityAccount = null. Когда: экран отрисовывает карточки. Тогда: рамка и порядок карточек совпадают со снимком до правки; зелёная рамка только у карточки со статусом active.","@stmt-4 @happy [S4-09] Дано: карточки acc1, acc2, acc3; priorityAccount = «acc3». Когда: экран отрисовывает карточки. Тогда: подсвечена ровно 1 карточка — acc3.","@stmt-4 @sequence [S4-10] Дано: приоритета нет, карточки acc1 и acc2. Когда: владелец выбирает acc1, затем acc2, затем acc2. Тогда: записи ушли в порядке «acc1», «acc2», null; после третьего выбора подсвеченных карточек 0.","@stmt-4 @sequence @negative [S4-11] Дано: приоритета нет, карточки acc1 и acc2. Когда: владелец выбирает acc2, затем acc2, затем acc1 (порядок S4-10 переставлен). Тогда: записи ушли в порядке «acc2», null, «acc1»; подсвечена только acc1.","@stmt-5 @happy [S5-01] Дано: набор из двух аккаунтов, priorityAccount = «acc2». Когда: прогон тестов пакета token-vault. Тогда: зелёные тесты «жив — первый» и «мёртв (util7d 1.00) — порядок как без приоритета».","@stmt-5 @negative [S5-02] Дано: мутант, в котором rank ставит приоритет первым без проверки способности обслужить. Когда: прогон тестов пакета token-vault. Тогда: тест «мёртв (util7d 1.00) — порядок как без приоритета» красный.","@stmt-5 @negative @tier-last-resort [S5-03] Дано: мутант, в котором приоритет поднимается и в ярусе last resort. Когда: прогон тестов пакета token-vault. Тогда: тест сценария S2-14 красный.","@stmt-5 @happy [S5-04] Дано: волт с поддельным хранилищем в памяти. Когда: прогон тестов маршрутов. Тогда: зелёные set, unset, switch с повторным чтением после каждой записи и отказ с кодом 400 на пустое тело.","@stmt-5 @negative [S5-05] Дано: мутант маршрута, вызывающий save хранилища до проверки тела. Когда: прогон тестов маршрутов. Тогда: тест «запись не выполнялась» для тела без accountName красный.","@stmt-5 @dependency-down [S5-06] Дано: поддельное хранилище в памяти бросает error на save, реальная сеть не используется. Когда: прогон тестов маршрутов. Тогда: зелёный тест: отказ с кодом 500 и повторное чтение возвращает прежнее значение «acc1».","@stmt-5 @sequence [S5-07] Дано: приоритета нет, карточки acc1 и acc2. Когда: проверка экрана выбирает acc1, затем acc2, затем acc2. Тогда: проверка зелёная: записи ушли в порядке «acc1», «acc2», null, подсвеченных карточек 0.","@stmt-5 @sequence @negative [S5-08] Дано: экран-мутант, который на повторный выбор шлёт priority = «acc2» вместо null. Когда: проверка экрана выбирает acc1, затем acc2, затем acc2. Тогда: проверка красная — после третьего выбора acc2 осталась подсвеченной.","@stmt-5 @characterization [S5-09] Текущее поведение. Дано: набор тестов token-vault и app на ревизии 5bddb3a (включая vault-account-list.test.ts). Когда: прогон до и после правки. Тогда: 0 упавших прежних тестов; число прежних тестов не уменьшилось."]
reproducer_test
packages/app/tests/unit/vault-card-tooltip-owner.test.tsx: F2P — открываем ⓘ-панель карточки acc1. Панель видна, но над кнопкой ⓘ всплывает подсказка всей карточки «click to make this account the pool priority — served first while it has headroom». Ожидается, что подсказки нет. Красный предсказан, не запущен
work_screen_tree
["ЦЕЛЬ (мета-характеристика): дерево рабочих экранов (не лендингов), на которых человек ставит задачу и видит, как она делается; нужно, чтобы найти в нём узел экрана shadums.com (ввод, вывод, дерево классификации цели)","КОРЕНЬ (N=11: ChatGPT, Claude, Manus, Devin, Cursor, Lindy, Dust, n8n, LangGraph Studio/LangSmith, Relevance AI, Perplexity): (1) вывод результата виден на рабочем экране, 11/11 = 1.00; причина по принципу: человек отдаёт работу, чтобы получить результат, и принять его или возразить может только тогда, когда видит его там же, где поставил задачу · (2) ход работы виден, 10/11 = 0.91 в широком прочтении (включая статус «Thinking»); в узком прочтении (только пошаговый след) 9/11 = 0.82; причина по принципу: работа, отданная другому исполнителю, скрыта от человека, и без видимого хода он не может ни проверить результат, ни вмешаться вовремя. Решение по нормализации: в корень идёт широкое прочтение; узкое тоже ≥ 0.8, поэтому состав корня от этого выбора не меняется. Какой 1 сайт не показывает ход работы, в записях не названо (пробел)","НЕ В КОРНЕ: «вывод в ленте разговора или треда» 6/11 = 0.55 (отсутствие, различие ветвей); «вывод на холсте или в графе» 3/11 = 0.27 (отсутствие); «вывод в файлах кода» 2/11 = 0.18 (отсутствие); место поля ввода, вложения и голос, панель истории, источники и цитаты, действия над результатом, показ ошибки и ожидания, поведение при повторе задачи — в записях не заполнены, это пробел [—], а не отсутствие. Их нельзя ни отклонить, ни использовать для деления. Отклонённых признаков с долей ≥ 0.8 нет","КОРЕНЬ → ребро «вывод: где показан = холст или граф сценария» (внешняя причина: сегмент и бизнес-модель — продают сборку повторяемой автоматизации, а не ответ на разовый запрос) → ПЛАТФОРМА СЦЕНАРИЕВ [n8n, LangGraph Studio/LangSmith, Lindy], лист из 3; остановка: в записях нет следующего документированного свойства с внешней причиной различия","КОРЕНЬ → ребро «вывод: где показан = файлы кода в IDE или редакторе» (внешняя причина: платформа и сегмент — результат для разработчика это изменение репозитория) → КОД В СРЕДЕ [Devin, Cursor]","КОД В СРЕДЕ → ребро «среда: где запущена = боковая панель редактора пользователя (Cmd+I)» (внешняя причина: канал — работает внутри локального редактора владельца) → ИНСТРУМЕНТ В РЕДАКТОРЕ [Cursor], лист из 1 (меньше 2 записей)","КОД В СРЕДЕ → ребро «среда: где запущена = сессия агента в веб-приложении app.devin.ai» (внешняя причина: канал и бизнес-модель — облачная песочница агента, работа отдаётся целиком) → АГЕНТ-РАЗРАБОТЧИК [Devin], лист из 1 (меньше 2 записей)","КОРЕНЬ → ребро «вывод: где показан = лента разговора или треда задачи» (внешняя причина: сегмент — широкий круг работников умственного труда, привычный канал — переписка) → РАЗГОВОР [ChatGPT, Claude, Dust, Perplexity, Manus, Relevance AI]","РАЗГОВОР → ребро «вывод: единица = задача (разговор задачи, статусы, шаринг задачи)» (внешняя причина: бизнес-модель — продают делегирование автономной работы, а не ответ) → ДЕЛЕГИРОВАННАЯ ЗАДАЧА [Manus, Relevance AI]","ДЕЛЕГИРОВАННАЯ ЗАДАЧА → ребро «ход работы: где показан = живая среда агента (браузер, VS Code), управление можно перехватить» (внешняя причина: платформа — агент работает в своём компьютере или браузере) → [Manus], лист из 1 (меньше 2 записей)","ДЕЛЕГИРОВАННАЯ ЗАДАЧА → ребро «ход работы: где показан = шаги и запуски инструментов в треде, одобрение вызова инструмента» (внешняя причина: сегмент и регуляция — корпоративная «рабочая сила» агентов, где действия требуют надзора человека) → ОЧЕРЕДЬ ЗАДАЧ АГЕНТА [Relevance AI], лист из 1 (меньше 2 записей)","РАЗГОВОР → ребро «вывод: единица = ответ-сообщение в разговоре» (внешняя причина: бизнес-модель — ассистент «вопрос → ответ») → ЧАТ-АССИСТЕНТ [ChatGPT, Claude, Dust, Perplexity], лист из 4; остановка: следующий возможный делитель (например, источники и цитаты у Perplexity) в записях не заполнен, это пробел, поэтому делить нельзя","КОНВЕРГЕНЦИЯ (convergent=true, для объединения ветвей не используется): «живая среда агента, управление можно перехватить» независимо возникла у Manus (ветвь РАЗГОВОР) и у Devin (ветвь КОД В СРЕДЕ, по документации Devin: IDE с перехватом управления); чат-ввод поверх холста (n8n — чат агента; Lindy — «Ask Agent Builder») независимо повторяет поле ввода ветви РАЗГОВОР","ПРОВЕРКА РАЗБИЕНИЯ: листы 3 (ПЛАТФОРМА СЦЕНАРИЕВ) + 1 (Cursor) + 1 (Devin) + 1 (Manus) + 1 (Relevance AI) + 4 (ЧАТ-АССИСТЕНТ) = 11 = N; каждая запись лежит ровно в одном листе, пересечений нет"]
parent_task
Построй дерево ЭКРАНОВ РАБОТЫ конкурентов — не их лендингов — и выведи из него экран shadums.com (слово владельца 2026-09-27 ~12:5xZ: «мы должны были рассматривать чисто экран чата у конкурентов»; наш сайт — это сам продукт: окно ввода, окно вывода, дерево классификации цели). Предмет — экран, на котором человек ставит задачу и видит, как она делается: ChatGPT (chatgpt.com), Claude (claude.ai), Manus (manus.im — рабочее пространство), Devin (app.devin.ai), Cursor (панель чата/агента в редакторе), Lindy (экран агента), Dust (экран ассистента), n8n (холст + чат агента), LangGraph Studio / LangSmith (экран трасс агента), Relevance AI (экран агента), Perplexity (perplexity.ai) как эталон окна ответа. Многие экраны за логином: читай, что доступно без входа — публичные страницы продукта, документацию с описанием экрана, страницы помощи, снимки экрана и описания демо; для каждого сайта скажи честно, что прочитано живьём, что по документации, что не прочитано. Шаг 1 — записи с одним набором свойств: где поле ввода (низ / центр / верх), что в нём (плейсхолдер, подсказки, вложения, голос), где и как показан вывод (поток текста / блоки / артефакт-панель справа / холст), виден ли ход работы (шаги, вызовы инструментов, план, статусы, «думает…»), есть ли боковая панель истории, есть ли панель плана или дерева задачи, источники и цитаты, действия над результатом (копировать, править, повторить, возразить), как показана ошибка и ожидание, что происходит при повторе похожей задачи. Шаг 2 — общее (корень): свойства, одинаковые почти у всех, и почему это ожидание пользователя. Шаг 3 — различия по ветвям и причина каждой (чат-ассистент / автономный агент / инструмент в редакторе / платформа сценариев). Шаг 4 — дерево экранов от корня к листьям с именем свойства на ребре. Шаг 5 — наш узел: что наследуем и почему, что отвергаем и почему, что есть только у нас (дерево классификации цели как рабочая панель, дыры «ещё нет» вместо спиннеров, «взял готовое / отчеканил» и ноль вызовов модели на повторе, живые последние прогоны как примеры). Итог — спека нашего экрана: раскладка (ввод / вывод / дерево), состояния (пусто, идёт, вопрос, готово, ошибка), что показано во время работы и после, действия над результатом (включая возражение как то же поле), с происхождением каждого свойства (корень / ветвь и сайт / наше). Наружу ничего.
Классификация
вердикт
none
причина
new: no candidate
известных записей
255
Понятие c0
признаки
—
записи
jobs:letter:ats-form, jobs:letter:cold-founder, jobs:letter:money-system, jobs:letter:agent-tooling, jobs:letter:follow-up, jobs:letter:third-touch, compute_arithmetic, find_investor_fund_match, fix_code_defect_until_oracle_passes, build_goal_achievement_plan, find_goal_first_step, build_goal_milestones, build_goal_monitoring, find_goal_obstacle_plans, produce_code_patch, build_meeting_call_brief, find_meeting_local_time, find_role_requirements, find_meeting_likely_questions, find_org_profile, find_org_recent_news, find_owner_timezone, find_meeting_questions_to_ask, find_investor_decision_partner_name, find_investor_contact_channel, find_investor_opener, find_investor_thesis_fit, find_investor_signal_url, find_investor_signal, find_investor_thesis_source_url, find_company_oneliner_en, find_investor_thesis_quote, find_investor_thesis_bridge, find_counterparty_profile, build_investor_outreach_pack_for_named_fund, find_product_fit_usecase_goals, find_research_date, find_research_limits, find_excluded_usecases_by_hard_criteria, find_excluded_usecases, find_analog_usecase_catalog, build_inbox_digest_with_reply_drafts, find_customer_prospects_with_contacts, find_prospect_selection_criteria, find_prospect_gaps_and_assumptions, write_cold_email_with_org_news_hook, find_email_subject_from_org_news, find_org_news_bridge_en, find_org_news_decision_maker_name, find_org_recent_news_source_url, compare_vendors_and_recommend_one, find_research_unverified_gaps, find_recommendation_rationale, find_unverified_gaps_and_assumptions, find_options_reviews_summary, build_weighted_decision_matrix, build_weighted_decision_matrix_with_sensitivity, build_weighted_decision_matrix_with_robustness, find_options_tco_table, find_recommended_option, find_reproducer_test, find_investor_criteria, find_investor_shortlist, write_investor_first_emails_by_thesis, find_investors_and_draft_first_emails, run_oracle_before_fix_and_save_red_output, find_defect_root_cause_by_pass_fail_diff, rerun_oracle_after_patch_compare_to_baseline, find_investor_email_addressee_partner_name, find_investors_then_write_first_emails_per_partner, find_competitor_feature_catalog, find_analysis_date_cutoff, build_feature_fit_gap_table, find_rejected_features_with_reasons, select_features_by_kano_confidence_effort_as_goals, analyze_competitor_features_fit_gap_select_goals, select_features_by_declared_formula_as_goals_with_acceptance, select_fit_gap_features_by_rice_pert_as_goals_with_acceptance, select_features_by_rice_pert_as_goals_with_acceptance, select_fit_gap_features_by_value_confidence_pert_as_goals, select_features_by_rice_pert_formula_as_goals, select_fit_gap_features_by_rice_as_goals_with_acceptance, select_features_by_rice_as_goals_with_acceptance, select_features_by_value_confidence_effort_as_goals, select_features_by_formula_as_goals_with_acceptance, select_features_by_rice_capacity_as_goals_with_acceptance, select_fit_gap_features_by_rice_records_as_goals, fix_kernel_door_defect_until_oracle_green, rerun_oracle_after_patch_and_diff_per_case, write_minimal_kernel_patch_from_statements_until_oracle_green, extract_gap_core_from_review_item, write_measurable_acceptance_criterion_from_gap_core, design_missing_record_interfaces_from_gap_and_criterion, derive_executable_module_assertions_from_interfaces_and_acceptance, derive_red_green_readiness_scenario_from_done_criterion, implement_review_feature_as_records_with_readiness_test, write_gwt_acceptance_criteria_list_from_gap_core, design_prov_provenance_schema_and_migrate_text_records, find_competitor_feature_user_facing_reference, rewrite_done_criterion_into_red_given_when_then_scenarios, find_kernel_exit_points_sink_inventory, find_mail_inbound_producer_status_in_registry, write_secret_never_in_model_invariant_from_gap, find_webhook_door_contract, write_minimal_kernel_patch_from_interfaces_and_scenarios_until_green, write_gwt_acceptance_criteria_for_inbound_channel_with_abuse_cases, write_red_canary_sink_acceptance_test_before_patch, run_readiness_scenarios_and_cite_journal_seq_with_unverified, find_secret_typed_fact_keys_from_type_registry, write_gwt_acceptance_criteria_for_review_feature_with_e2e_done, write_gwt_acceptance_criteria_for_owner_fact_memory_view_find_forget, write_gwt_acceptance_criteria_for_review_feature_with_done_as_e2e, design_record_ops_list_inspect_forget_put_with_tombstone_journal, write_e2e_gwt_acceptance_criteria_for_review_feature_from_gap_core, write_3_5_gwt_acceptance_criteria_with_end_to_end_done_from_feature_task, design_record_store_interfaces_with_tombstone_and_journal, derive_record_store_interfaces_with_tombstone_and_journal, find_steps_that_must_run_without_model_call, design_list_inspect_forget_put_with_tombstone_and_journal, rewrite_gap_core_and_done_criterion_into_given_when_then_readiness_scenarios, write_gwt_acceptance_criteria_for_review_feature_with_done_e2e, design_mail_forward_to_task_records_with_readiness_test, write_minimal_kernel_patch_records_from_gap_core_and_gwt_scenarios, draft_minimal_feature_records_patch_from_gap_core_and_scenarios, draft_minimal_kernel_records_patch_from_gap_core_and_readiness_scenarios, write_minimal_schedule_tick_records_patch_from_gap_and_scenarios, write_recurring_goal_and_schedule_list_records_patch_in_kernel_repo, write_recurring_goal_schedule_tick_kernel_patch_as_records, write_schedule_tick_recurring_goal_records_patch_with_occurrence_id, write_recurring_goal_schedule_records_patch_with_misfire_policy, write_feature_records_kernel_patch_from_gap_and_scenarios, propose_kernel_patch_records_from_gap_core_and_readiness_scenarios, write_feature_records_patch_from_gap_and_scenarios_with_idempotent_tick, implement_recurring_schedule_goal_records_with_replay_acceptance, write_secret_handle_redaction_and_gate_substitution_kernel_patch_with_canary_test, report_test_and_regression_rerun_verified_vs_unverified, formulate_scoped_never_invariant_from_gap_with_refutation, identify_executed_kernel_patch_by_commit_patch_id_and_dirty_flag, implement_trigger_feature_from_review_item_as_records_with_replay_journal_acceptance, run_oracle_on_full_bench_before_patch_and_verify_target_red_reason, find_unreconciled_composition_acceptance_point_in_allowed_files, write_substitution_composition_patch_with_grounding_gate_naming_law, rerun_full_bench_oracle_after_patch_diff_per_check_vs_baseline_with_flaky_and_input_variants, identify_applied_kernel_patch_by_sha_patch_id_dirty_and_confirm_build_exit_code, patch_kernel_composition_to_assemble_only_from_part_values_until_oracle_green, write_closed_selection_policy_laws_and_decision_table_from_intent_and_incidents, find_counterparty_product_quote_and_bridge_to_demo_thesis, compose_c4_context_container_and_2_4_adr_decisions_with_honest_status, build_meeting_frame_utc_local_smart, inventory_live_decision_points_by_code_config_and_ledger_crosscheck, write_one_executable_pass_fail_unknown_check_per_law_over_source_facts, map_each_law_to_single_pap_pdp_and_role_tagged_enforcement_points, derive_timeboxed_demo_timeline_from_meeting_frame_with_live_share_and_reserve_flags, build_reverse_dated_prep_checklist_from_meeting_anchor_with_freeze_backup_and_rehearsal, find_verbatim_counterparty_product_quote_matching_demo_thesis_with_url, build_demo_qa_bank_bluf_from_owner_proofs_with_counterparty_bridge_and_honest_gaps, compose_interview_demo_plan_from_frame_bridge_timeline_architecture_qa_prep_and_fallback, decompose_numbered_feature_statements_into_traced_gwt_scenarios_with_boundary_forbidden_and_open_questions, write_bottom_up_feature_patch_storage_logic_api_ui_by_neighbor_analog_with_red_first_tests, trace_scenarios_to_tests_run_full_gates_fail_to_pass_land_and_list_unverified, retrieve_verbatim_prior_step_patch_with_full_base_sha_and_apply_check, derive_fail_to_pass_scenarios_from_patch_requirement_plus_pass_to_pass_regression_from_owner_proofs, implement_repo_feature_from_numbered_statements_via_edit_door_and_change_flow, derive_traced_gwt_scenarios_from_parent_task_numbered_statements_with_open_decisions, decompose_owner_numbered_feature_statements_into_traced_gwt_set_unset_switch_rollback_invalid_characterization_with_open_questions, derive_traced_gwt_scenarios_set_unset_switch_rollback_invalid_from_owner_numbered_statements_with_assumptions_and_open_questions, decompose_owner_toggle_setting_statements_into_traced_gwt_set_unset_switch_invalid_rollback_characterization_ui_sequence_with_questions, write_bottom_up_storage_domain_api_toggle_ui_patch_with_red_first_tests_traced_to_scenarios_by_neighbor_setting, draft_bottom_up_single_choice_toggle_setting_patch_storage_rank_api_ui_with_stub_first_red_tests_and_owner_questions, draft_bottom_up_single_choice_setting_patch_storage_logic_api_ui_with_red_first_tests_and_owner_decisions, draft_bottom_up_single_choice_setting_patch_storage_rank_api_toggle_ui_red_first_with_open_decisions, draft_bottom_up_nullable_single_pick_setting_patch_storage_rank_api_toggle_ui_with_red_first_tests, draft_bottom_up_single_choice_setting_patch_storage_rank_api_ui_with_stub_first_red_tests_and_characterization_guard, draft_layered_storage_logic_api_ui_patch_with_assert_red_first_tests_per_statement_and_flagged_assumptions, draft_bottom_up_single_select_priority_patch_storage_rank_api_toggle_card_ui_with_red_first_tests_and_outline_clicks, draft_bottom_up_single_select_priority_toggle_patch_storage_rank_api_aria_pressed_ui_with_red_first_tests_by_neighbor, draft_bottom_up_single_choice_toggle_patch_storage_rank_api_ui_with_red_first_tests_by_neighbor_setting, draft_layered_storage_logic_api_ui_patch_with_red_first_tests_traced_to_statements_and_open_owner_decisions, draft_bottom_up_storage_logic_api_ui_patch_with_stub_then_red_assert_tests_traced_to_statements_and_scenarios, draft_bottom_up_storage_logic_api_ui_patch_with_red_first_tests_per_statement_and_open_decisions, draft_bottom_up_storage_rank_api_ui_priority_toggle_patch_with_stub_first_red_tests_and_open_owner_decisions, draft_bottom_up_setting_storage_rank_api_toggle_ui_patch_with_assertion_red_stubs_traced_to_statements_and_open_decisions, write_bottom_up_storage_logic_api_ui_patch_with_red_first_tests_traced_to_statements_and_scenarios, draft_bottom_up_storage_logic_api_ui_patch_red_first_traced_to_parent_statements_with_open_decisions, read_neighbor_setting_storage_route_test_via_code_door_with_path_line_quotes, measure_kernel_baseline_head_sha_file_digests_dirty_utc_and_preregistered_run_selection, audit_every_outbound_channel_log_over_run_window_with_coverage_positive_control_and_weakest_link_verdict, derive_utc_run_window_from_observed_start_end_receipts_with_bounded_clock_skew_margin, map_each_kernel_exit_point_to_witness_log_by_code_and_real_record_with_no_witness_flag, derive_traced_gwt_scenarios_for_nullable_single_select_setting_storage_rank_api_ui_with_characterization_baseline_and_open_questions, decompose_owner_numbered_criteria_into_atoms_read_run_door_registry_code_evidence_and_verdict_pass_fail_nei_with_address, verify_kernel_against_numbered_criteria_with_three_valued_verdicts_and_evidence_locators_read_only, draft_bottom_up_single_select_priority_toggle_patch_storage_rank_api_aria_pressed_ui_with_stub_first_red_tests_and_owner_decisions, check_every_outbound_channel_log_over_utc_run_window_with_liveness_positive_control_and_three_valued_verdict, draft_bottom_up_single_choice_setting_patch_storage_rank_api_aria_pressed_ui_red_first_with_characterization_guard_and_owner_decisions, draft_bottom_up_single_choice_setting_patch_storage_rank_api_toggle_ui_red_first_resolved_from_statements, draft_bottom_up_baseline_storage_logic_api_ui_patch_with_assertion_red_first_tests_per_statement_and_owner_open_decisions, draft_bottom_up_storage_rank_api_ui_priority_toggle_patch_with_stub_first_red_tests_and_stated_defaults, draft_bottom_up_storage_logic_api_ui_patch_with_stub_then_red_assert_tests_traced_to_statements_and_open_decisions, draft_bottom_up_storage_rank_api_toggle_ui_patch_red_first_by_neighbor_setting_with_open_decisions_and_unverified_gaps, draft_bottom_up_setting_storage_rank_api_aria_pressed_toggle_ui_patch_with_assertion_red_first_tests_by_neighbor_and_owner_decisions, draft_bottom_up_storage_rank_api_aria_pressed_ui_patch_with_assert_red_tests_per_statement_characterization_guard_and_owner_defaults, draft_bottom_up_storage_logic_api_ui_patch_with_assert_red_tests_characterization_guards_and_server_confirmed_toggle_ui, read_neighbor_setting_all_layers_with_path_line_quotes_wiring_rank_callsites_tests_absent_and_revision, derive_traced_f2p_gwt_scenarios_with_p2p_repo_regression_baseline_and_open_questions, read_neighbor_setting_port_store_overlay_usecase_wiring_routes_health_rank_callsites_tests_proxy_ui_with_path_line_quotes_gaps_and_revision, derive_traced_gwt_scenarios_per_parent_statement_with_set_unset_switch_unavailable_neighbor_grounded_and_open_questions, read_door_receipts_main_ref_and_repo_tree_to_attest_red_green_full_suite_land_or_mark_not_obtained, derive_utc_run_window_from_run_at_reflog_oracle_journal_with_anchor_owner_zone_skew_margin_and_boundary_events, compose_kernel_self_check_report_from_baseline_run_window_criterion_verdicts_and_outbound_audit, draft_bottom_up_setting_patch_by_neighbor_storage_rank_api_server_confirmed_toggle_ui_with_assert_red_tests_traced_to_scenarios, derive_utc_run_window_min_run_at_max_receipt_at_over_selected_run_ids_with_line_evidence_and_open_end_flag, derive_tight_utc_run_window_from_run_at_reflog_door_journal_excluding_own_attempts_with_open_edge_and_margin_variant, derive_utc_run_window_from_earliest_anchor_run_at_reflog_oracle_journal_with_owner_zone_night_frame_and_open_right_edge, derive_utc_run_window_from_run_at_reflog_door_verdicts_anchored_on_parent_task_night_in_owner_zone_with_skew_margin_self_runs_flagged, derive_tight_utc_run_window_from_run_at_reflog_oracle_journal_by_owner_local_night_anchor_with_open_edge_flag, derive_utc_run_window_from_run_at_session_gap_anchored_on_named_runs_with_open_right_bound, reverify_neighbor_setting_layer_map_at_current_ref_with_corrections_all_rank_helper_callers_and_absence_greps, draft_rebased_neighbor_grounded_bottom_up_setting_domain_storage_usecase_api_toggle_ui_patch_with_scenario_tagged_assert_red_stubs_bisectable_commit_series_and_unapplied_status, read_code_door_run_receipts_and_main_reflog_to_attest_red_green_full_suite_land_per_claim_or_mark_not_obtained, draft_neighbor_grounded_bottom_up_storage_rule_api_ui_patch_with_scenario_tagged_tests_stub_red_reasons_commit_series_and_unapplied_status, draft_neighbor_grounded_bottom_up_setting_storage_rule_usecase_api_proxy_ui_patch_with_scenario_tagged_red_first_tests_commit_order_open_decisions_and_unapplied_status, draft_neighbor_grounded_bottom_up_setting_patch_with_scenario_tagged_red_first_tests_and_unapplied_status, draft_neighbor_grounded_bottom_up_setting_patch_anchor_edits_single_rank_seam_scenario_tagged_assert_red_tests_and_unapplied_status, draft_neighbor_grounded_bottom_up_setting_storage_rule_api_proxy_ui_patch_with_scenario_tagged_tests_commit_series_red_expectations_defaults_and_unapplied_status, draft_neighbor_grounded_bottom_up_storage_rule_api_ui_patch_with_scenario_tagged_red_first_tests_derived_decisions_and_unapplied_status, draft_bottom_up_storage_rule_api_ui_patch_stub_red_green_per_scenario_with_characterization_guards_open_decisions_and_unapplied_status, draft_neighbor_grounded_bottom_up_storage_rule_api_ui_patch_with_scenario_tagged_assertion_red_tests_and_unapplied_status, draft_neighbor_grounded_bottom_up_storage_usecase_rank_api_ui_patch_with_scenario_tagged_red_first_tests_guard_split_and_unapplied_status, draft_neighbor_grounded_bottom_up_storage_rule_usecase_rank_seam_api_proxy_ui_patch_with_scenario_tagged_red_first_tests_and_unapplied_status, draft_neighbor_grounded_bottom_up_setting_patch_single_dispatch_rank_seam_scenario_traced_assert_red_tests_and_unapplied_status, draft_rebased_neighbor_grounded_bottom_up_store_rank_api_toggle_ui_patch_with_scenario_tagged_assert_red_tests_traceability_and_unapplied_status, draft_rebased_neighbor_grounded_bottom_up_storage_domain_rank_api_proxy_ui_patch_with_scenario_tagged_assert_red_tests_stub_red_step_guards_mutant_checks_and_unapplied_status, draft_reverified_neighbor_grounded_bottom_up_setting_patch_store_usecase_single_rank_seam_api_confirmed_toggle_ui_with_scenario_tagged_assert_red_tests_mutation_check_and_unapplied_status, draft_rebased_bottom_up_setting_patch_overlay_carry_single_rank_seam_api_server_confirmed_toggle_ui_with_scenario_tagged_assert_red_tests_and_unapplied_status, draft_rebased_neighbor_grounded_bottom_up_setting_storage_rule_usecase_api_proxy_toggle_ui_patch_with_scenario_tagged_assert_red_tests_and_unapplied_status, draft_neighbor_grounded_bottom_up_setting_patch_storage_rank_api_toggle_ui_with_scenario_tagged_tests_red_stub_table_and_unapplied_status, draft_rebased_neighbor_grounded_bottom_up_setting_patch_single_rank_seam_scenario_tagged_red_first_tests_mutant_guards_and_unapplied_status, draft_reverified_bottom_up_storage_rule_api_ui_patch_with_stub_red_tests_per_scenario_tag_server_confirmed_toggle_mutants_and_unapplied_status, read_neighbor_setting_all_layers_at_current_main_head_with_drift_note_all_rank_helper_callers_and_absence_grep, derive_tagged_traced_gwt_scenarios_per_parent_statement_with_state_transitions_all_rank_tiers_unavailable_characterization_click_sequence_and_open_questions, read_main_ref_and_reflog_tail_count_goal_statement_arrays_pick_latest_t_run_with_result_verdict_and_times_read_only, draft_reverified_bottom_up_commit_series_by_neighbor_map_with_scenario_tagged_tests_it_fails_stubs_manual_diff_mutants_and_unapplied_status, inventory_kernel_exit_points_from_code_then_query_run_files_and_git_reflogs_over_run_window_with_three_valued_verdict_and_named_uncovered_channels, read_door_state_run_effect_applied_changeflow_and_main_ref_to_grade_each_statement_red_green_suite_land_or_not_obtained, compose_neighbor_map_tagged_scenarios_bottom_up_patch_red_first_and_door_receipts_status_per_statement, reverify_prior_neighbor_setting_anchor_map_at_current_main_ref_with_reflog_drift_all_shared_helper_callers_and_absence_greps, draft_head_reverified_bottom_up_commit_series_by_neighbor_map_with_scenario_tagged_stub_red_tests_manual_mutant_journal_and_unapplied_status, grade_each_goal_statement_from_door_effect_check_patch_after_changeflow_author_check_land_and_main_ref_or_not_obtained, compose_head_reverified_neighbor_map_tagged_scenarios_bottom_up_red_first_patch_and_door_receipt_status_per_statement, reread_main_ref_and_reflog_tail_count_drift_from_prior_map_sha_reverify_every_layer_anchor_all_shared_helper_callers_and_absence_greps_read_only, take_given_scenarios_verbatim_or_derive_tagged_gwt_per_statement_by_neighbor_map_then_trace_matrix_na_reasons_form_deviations_and_open_questions, draft_head_reverified_single_seam_bottom_up_commit_series_with_refactor_split_title_tagged_red_first_tests_manual_mutant_journal_equivalence_notes_and_unapplied_status, read_door_effect_changeflow_author_check_land_and_main_ref_reflog_then_grade_each_statement_monotonic_patch_f2p_applied_landed_or_not_obtained_with_code_gap_flags, compose_head_reverified_neighbor_map_scenarios_bottom_up_patch_and_per_statement_door_receipt_status, read_main_ref_reflog_tail_and_door_land_receipts_then_reresolve_every_layer_anchor_by_symbol_flip_absence_greps_to_present_per_layer_and_flag_live_tree_edits_read_only, grep_feature_vocabulary_all_cases_then_layer_hits_by_neighbor_chain_trace_callers_and_name_unreached_server_non_durable_untested_defects_with_path_line_and_empty_query_evidence_read_only, take_input_gwt_scenarios_verbatim_else_derive_stmt_tagged_gwt_from_parent_statements_by_neighbor_map_with_bidirectional_trace_and_open_questions, reverify_head_then_split_inventory_into_present_gap_defect_rows_and_draft_bottom_up_atomic_commits_with_scenario_tagged_f2p_red_on_base_p2p_guards_mutants_rollback_and_unapplied_status, reread_main_ref_and_reflog_tail_then_grep_feature_vocabulary_per_layer_classify_present_unwired_absent_broken_unknown_by_callers_and_data_path_map_rows_to_scenario_tags_with_orphans_and_counts_read_only, match_door_run_by_patch_version_then_ladder_green_author_check_land_mergedsha_eq_main_ref_and_reflog_line_then_grep_tree_per_statement_with_not_obtained_subitems, reverify_head_inventory_in_tree_partial_feature_find_defects_then_gap_only_bottom_up_patch_with_scenario_tests_and_per_statement_door_status, collect_or_verify_named_analogs_tiered_direct_adjacent_with_own_domain_homepage_and_product_page_urls, live_read_each_competitor_home_and_product_page_fill_fixed_axes_row_with_url_date_status_mark_unavailable_and_derive_take_notours_against_own_positioning, read_live_homepage_and_one_product_page_per_input_url_fill_fixed_codebook_record_with_typed_not_read_reasons_and_provenance, read_symptom_screen_and_commit_range_then_quote_new_lines_name_suppression_mechanism_chain_refute_alternatives_and_flag_static_or_unattributed, derive_competitor_frame_from_own_oneliner_search_mechanism_and_category_live_open_own_domain_home_and_product_pages_tier_direct_adjacent_exclude_pivoted_suppliers_papers, split_filled_competitor_site_matrix_into_conventions_by_preset_threshold_mechanism_techniques_verified_gaps_and_notours_with_counts_and_discards, read_old_vs_new_component_tree_find_new_ancestor_title_or_handler_then_write_jsdom_test_asserting_effective_nearest_title_per_hovered_element_with_p2p_own_title_guard_and_unrun_red_status, partial_revert_mechanism_lines_on_same_element_restore_old_beside_new_add_keyboard_parity_and_f2p_p2p_interaction_tests_unapplied_status, read_live_head_card_and_children_titles_name_nearest_ancestor_title_mechanism_write_jsdom_f2p_popover_tip_null_p2p_own_title_guard_state_seam_and_unrun_red_as_fact_not_door, diverge_three_axis_distinct_site_directions_one_phrase_essence_first_screen_blocks_url_borrowings_constraint_id_rationale_and_risk_from_synthesis_and_owner_decisions, read_live_home_and_product_page_per_competitor_url_fill_one_codebook_with_own_mechanism_axis_verbatim_quotes_typed_not_read_and_coverage_counts, grep_door_run_patch_before_after_for_suspect_lines_match_land_mergedsha_to_main_reflog_reread_head_lines_name_inherited_suppression_mechanism_refute_alternatives_flag_static, screen_directions_by_owner_must_constraints_then_prefixed_weighted_want_matrix_breakeven_sensitivity_recommend_one_and_graft_best_of_rejected_with_rescore_and_risks, build_object_by_feature_matrix_from_site_records_iceberg_root_at_0_8_of_all_with_reasons_and_exceptions_then_monothetic_split_by_externally_caused_non_root_property_until_single_site_leaves, diverge_three_axis_distinct_site_directions_from_competitor_readings_with_style_tiles_first_screen_blocks_borrowings_constraint_fit_and_risks, read_head_card_titles_then_find_first_receipt_whose_before_lacks_and_after_has_ancestor_title_match_mergedsha_to_reflog_name_nearest_ancestor_title_chain_counterfactual_and_unrun_bisect_command, write_package_suite_interaction_tests_old_new_old_with_effect_method_body_exact_count_child_actions_zero_effect_strict_fetch_and_unrun_red_green_mutant_procedure, describe_own_site_by_same_codebook_find_deepest_edge_path_attachment_adr_inherit_reject_per_branch_verify_notours_against_matrix_and_status_quo_errc_all_four_and_divergent_value_curve, gate_inputs_then_write_traced_spec_ia_verbatim_first_screen_dtcg_tokens_eight_state_matrix_per_analog_diff_thresholded_test_plan_owned_open_questions, inventory_screen_suite_and_change_acceptance_scenarios_classify_each_by_trigger_executed_and_violated_property_asserted_name_missing_check_kind_by_fixed_taxonomy_and_unrun_counterfactual, fix_root_and_criteria_from_own_oneliner_then_multichannel_search_mechanism_and_job_dedupe_by_domain_exclude_papers_pivoted_unverified_branch_by_competition_type_with_reasons_leaves_with_quote_evidence_saturation_stop_and_dated_flow, reread_main_ref_and_land_receipts_then_grep_package_suite_for_screen_imports_list_describe_it_with_path_line_split_kept_added_removed_by_land_shape_and_classify_check_kind_pure_fn_vs_rendered_interaction, take_recorded_direction_choice_verbatim_from_run_reports_with_status_else_screen_score_graft_then_crosswalk_newer_direction_sets_and_ask_owner_accept, read_competitor_sites_live_axis_matrix_synthesize_conventions_gaps_three_directions_pugh_choose_one_write_ia_verbatim_first_screen_tokens_and_validation_plan, grep_land_receipts_patch_before_lacks_after_has_suspect_line_match_mergedsha_to_main_reflog_reread_head_name_mechanism_chain_refute_alternatives_and_unrun_bisect_counterfactual, gate_inputs_then_compose_traced_site_spec_verbatim_first_screen_linear_blocks_4px_grid_two_role_font_pair_paired_color_roles_with_computed_wcag_contrast_state_matrix_reduced_motion_branches_and_render_roundtrip_plan, take_recorded_own_site_node_verbatim_from_run_reports_with_address_recheck_each_premise_against_current_input_flag_inherited_owner_decisions_and_gaps, read_competitor_sites_live_into_fixed_schema_records_then_root_branches_tree_place_own_node_errc_and_derive_provenance_tagged_site_spec_with_tokens, reread_head_then_move_inherited_ancestor_title_to_childless_leaf_keep_click_intent_verbatim_diff_new_jsdom_f2p_p2p_test_and_scoped_door_goal, trace_click_handler_through_cache_invalidation_or_remount_or_navigation_to_nearest_suspense_or_loading_branch_with_path_line_name_one_mechanism_check_transition_and_external_store_semantics_refute_alternatives_and_unrun_counterfactual, reread_head_locate_ancestor_title_introduced_by_land_move_it_to_childless_leaf_keep_intent_text_verbatim_export_seam_add_jsdom_nearest_title_f2p_p2p_test_reject_symptom_site_empty_title_and_mark_unapplied_unrun, read_vendor_docs_help_and_live_screens_per_product_fill_fixed_ten_property_work_screen_record_with_provenance_tag_url_read_status_and_explicit_not_found, trace_named_flash_cause_to_update_source_then_pick_one_mechanism_swr_keep_value_if_external_store_else_transition_else_stable_key_patch_cause_line_only_with_f2p_no_throw_test_characterization_guard_and_unapplied_status, reread_head_find_ancestor_title_added_by_named_land_move_it_verbatim_to_childless_leaf_export_test_seam_jsdom_nearest_title_f2p_visibility_and_owner_asserts_p2p_own_title_guard_reject_empty_title_symptom_fix_mark_unapplied_unrun, per_observed_case_read_run_receipts_door_patch_before_after_land_mergedsha_vs_main_reflog_reread_head_lines_name_kernel_statement_gate_binding_and_product_line_mechanism_with_is_isnot_contrast_and_unrun_status, reread_head_move_inherited_ancestor_title_verbatim_to_childless_leaf_export_seam_jsdom_nearest_title_f2p_p2p_mark_unapplied_unrun, reuse_same_day_run_records_by_address_then_recheck_weakest_fields_by_vendor_docs_search_fill_fixed_ten_property_schema_with_provenance_tags_url_live_read_status_and_explicit_not_found, per_case_inventory_door_check_and_receipt_changeflow_test_files_typecheck_probes_and_skipped_gates_from_land_runs_matched_by_mergedsha_then_classify_by_ordered_tree_self_report_no_check_other_env_weak_oracle_no_regression_with_unrun_counterfactual, reread_head_move_ancestor_title_added_by_named_land_verbatim_to_childless_leaf_export_seam_jsdom_nearest_title_f2p_visibility_owner_p2p_own_title_reject_empty_title_mark_unapplied_unrun, normalize_fixed_schema_work_screen_records_gap_is_not_absence_root_at_0_8_with_principle_reason_and_rejected_list_then_monothetic_split_by_one_documented_property_with_external_reason_stop_on_gaps_mark_convergence_and_partition_check, read_goal_statements_in_range_and_adapter_code_then_per_case_trace_topic_statements_decompose_obligations_grep_implementing_lines_and_tagged_checks_split_cause_a_defect_b_oracle_verdict_text_and_code_separately_with_explicit_remainder, read_live_fix_and_existing_tests_state_f2p_helper_test_with_base_semantics_stub_red_procedure_add_jsdom_suspense_wiring_test_killing_call_site_revert_mutant_and_unrun_status, walk_fixed_work_screen_tree_edges_with_own_values_open_new_edge_with_external_reason_name_closest_leaf_inherit_root_and_path_with_node_site_mark_convergent_borrowings_reject_with_positioning_reason_and_substitute_notours_1_3_keller_gap_is_not_absence_partition_check
Понятие c496
признаки
artifact:ui, domain:acceptance-scenarios, domain:engineering, domain:requirements, made:artifact, many:true
записи
decompose_owner_toggle_setting_statements_into_traced_gwt_set_unset_switch_invalid_rollback_characterization_ui_sequence_with_questions
own_work_screen_node
источник
model-first-cycle
статус
ok
Добудь факт «узел своего рабочего экрана в дереве экранов конкурентов (путь, наследуем / отвергаем / только у нас)» (own_work_screen_node)
исход
admitted
ответ
own_work_screen_node = КОРЕНЬ → РАЗГОВОР → ДЕЛЕГИРОВАННАЯ ЗАДАЧА → новое ребро «ход работы: где показан = дерево цели из паттернов (узел = паттерн с условием, отметка «взял готовое / отчеканил», дыра = недостающий факт)» → лист SHADUMS [Shadums]; ближайший лист-аналог — ОЧЕРЕДЬ ЗАДАЧ АГЕНТА [Relevan
own_screen_decisions
источник
ask
статус
ask
positioning
источник
input
статус
ok
proof_reuse
источник
input
статус
ok
Исход
вид
admitted
вызовов модели
8
Результат
вид
ask
не хватает
own_screen_decisions
вопрос
Не хватает: решения владельца о своём экране: зоны, состояния, что считает только своим, возражение
Ответ
текст
work_screen_spec_body = ["СТАТУС: это предложение, а не готовый результат. Во входе нет own_work_screen_node и own_screen_decisions. Узел взят из отчёта прогона runtime/runs/bc3e5e1c-2ea2-4df2-9240-fe280cf81e19.json:78: там исход ask, не хватало own_screen_decisions, и узел записан только как предложение. Решения владельца взяты дословно из шага 5 и из «Итога» в parent_task.", "ЛЕГЕНДА ПРОИСХОЖДЕНИЯ: [К] — корень work_screen_tree; [Р] — ветка РАЗГОВОР (ChatGPT, Claude, Dust, Perplexity, Manus, Relevance AI); [Д] — ДЕЛЕГИРОВАННАЯ ЗАДАЧА (Manus, Relevance AI); [С] — конвергентное заимствование формы графа (n8n, LangGraph Studio, Lindy); [У] — узел из прогона bc3e5e1c; [В] — слово владельца в parent_task; [Э1…Э10] — эвристики Нильсена; [NN/g-время], [NN/g-ошибки], [HAX], [PAIR], [Stately] — источники ниже; [моё] — мой вывод.", "L1 ПОЛЕ ВВОДА. Поле одно: в него вводят цель, ответ на вопрос и возражение [Р][В: «возражение как то же поле»]. Где оно стоит (низ, центр или верх), не решено: в записях конкурентов здесь пробел, см. Q4.", "L2 ОКНО ВЫВОДА. Это тред одной цели. Сюда приходят результат, вопрос, отказ и ошибка [К 11/11: результат виден там же, где поставлена задача][Д: единица — задача][У: допущение «тред цели», см. Q3].", "L3 ДЕРЕВО ЦЕЛИ. Рабочая панель рядом с выводом, видна во время работы и после неё [В: «дерево классификации цели как рабочая панель»][У: новое ребро]. Каждый узел — паттерн с условием и основанием. У узла стоит отметка «взял готовое» или «отчеканил» и число вызовов модели [В]. Недостающий факт показан дырой «ещё нет: <факт>» [В]. Форма графа — конвергенция [С], но граф строит ядро, а не человек [У]. Как L2 и L3 расположены друг относительно друга и сворачивается ли дерево, не решено [моё], см. Q4.", "S0 ПУСТО. Поле ввода в фокусе, вывод пуст. В дереве — живые последние прогоны как примеры: цель → паттерны → «взял готовое / отчеканил» [В][Э6]. Действия: ввести цель; открыть пример (только чтение). Переход: отправить цель → S1.", "S1 ИДЁТ. Дерево растёт по мере раскладки. Каждый узел проходит путь «ищу паттерн» → «взял готовое · 0 вызовов модели» или «отчеканил · N вызовов модели». Вместо спиннера показаны дыры «ещё нет: <факт>» [В][К 10/11: ход работы виден][Э1]. Виден счётчик «решено k из n узлов» и прошедшее время: при ожидании больше 10 с нужен индикатор доли готовности, а не зацикленный [NN/g-время]. Есть кнопка «остановить» [Э3]. Переходы: не хватает факта владельца → S2; все узлы закрыты → S3 (при похожей цели → S3r); вход не подходит ни под одно правило → S5; сбой → S4; остановить → S0, текст цели сохраняется (что ещё остаётся после остановки — Q5).", "S2 ВОПРОС. В выводе один вопрос — ровно о недостающем факте, по метке посылки, с пояснением, зачем он нужен. В дереве подсвечена эта дыра, решённые узлы остаются видны [В][У: точка вмешательства человека, конвергенция с Relevance AI][HAX: при неясной цели уточнять]. Поле ввода принимает ответ. Действия: ответить → S1; остановить → S0. Как быть, если дыр несколько, — Q8.", "S3 ГОТОВО. В выводе результат, под ним основание: какие паттерны применены, их условия, источники с URL и итог «взял готовое X · отчеканил Y · вызовов модели Z · время T» [К 11/11][У: отличия 1–2][PAIR: объяснимость]. Дерево остаётся, все узлы закрыты. Действия: копировать; возразить тем же полем → S1 с уточнением; открыть узел; новая цель → S0.", "S3r ПОВТОР (вариант S3 для похожей цели). Шаги те же, но узлы помечены «взял готовое · 0 вызовов модели». Видна разница с прошлым прогоном по времени и числу вызовов модели [В: «ноль вызовов модели на повторе»][У: отличие 2; proof_reuse: повтор того же входа — ноль вызовов модели]. Как пользователю определить, что задача «похожая», — Q11.", "S4 ОШИБКА — это сбой исполнения (модель, сеть, ядро), а не решение системы. В выводе: что случилось, простыми словами; на каком узле; что сделать (повторить с этого узла или изменить цель). Вину берёт на себя система, коды ошибок в основной текст не идут [NN/g-ошибки][Э9]. Решённые узлы сохраняются, упавший узел помечен. Действия: повторить с узла → S1; изменить цель → S0.", "S5 ОТКАЗ — это решение системы, а не сбой: цель не подходит ни под одно правило или вне области. В выводе: какое условие не совпало и что можно сделать (переформулировать, дать факт). Отказ не выдаётся за ошибку [HAX: при сомнении сужать область][Э9][моё: различие S4 и S5]. Действия: переформулировать → S1; новая цель → S0.", "СВЯЗНОСТЬ АВТОМАТА. Состояния: S0, S1, S2, S3, S3r, S4, S5. Из каждого есть выход; из S1 и S2 — остановка; тупиков нет; S0 достижимо отовсюду [Stately: конечный набор состояний и переходов]. Частичного состояния нет: в S4 и после остановки решённые узлы сохраняются, это и есть частичный результат [моё].", "ВО ВРЕМЯ РАБОТЫ видно: растущее дерево; отметка у каждого узла; дыры «ещё нет»; счётчик k из n; время; кнопка «остановить»; вопрос о единственном недостающем факте [В][Э1][NN/g-время]. ПОСЛЕ РАБОТЫ видно: результат; основание по узлам; источники; итог «взял готовое / отчеканил / вызовы модели / время»; следующий шаг (возразить, новая цель) [К][У][PAIR].", "ДЕЙСТВИЯ (предусловие → обратимость): A1 отправить цель (S0) → обратимо, можно остановить. A2 ответить на вопрос (S2) → обратимо, можно возразить потом. A3 остановить (S1, S2) → обратимо, можно запустить снова. A4 копировать (S3) → обратимо. A5 возразить тем же полем (S3) → запускает S1. Если возражение меняет сохранённое правило для будущих задач, сначала показывается правило «до / после» и спрашивается подтверждение [Э5][HAX: удобная правка][positioning: «правило можно поменять»]; откат — Q6. A6 открыть узел (S1, S3) → только чтение: основание, условие, источник, цена. A7 повторить с узла (S4) → обратимо. A8 открыть пример прогона (S0) → только чтение. ОТВЕРГНУТО: шаринг треда (решения владельца нет [У], Q7); перехват управления живой средой (Manus, Devin [У]).", "ПРОВЕРКА ПО ЭВРИСТИКАМ (серьёзность 0–4, оценки мои, не измерены). Э1 статус системы — соблюдена: дерево, дыры, счётчик; 0. Э2 язык пользователя — риск: «паттерн», «отчеканил», «посылка» — внутренние слова; 2; Q10. Э3 контроль и свобода — частично: остановка есть, отката изменённого правила нет; 3; Q6. Э4 единообразие — частично: поле по конвенции ветки РАЗГОВОР, позиция не определена; 1; Q4. Э5 предотвращение ошибок — соблюдена, если A5 подтверждается; вопрос только о недостающем факте; 1. Э6 узнавание вместо припоминания — соблюдена: примеры в S0, дыра называет факт; 0. Э7 гибкость и скорость — соблюдена: повтор без модели; 0. Э8 минимализм — риск: три зоны сразу; 2; сворачивание дерева — Q4. Э9 восстановление после ошибок — соблюдена в тексте S4 и S5, формулировки нужно проверить; 1. Э10 справка — частично: справки нет, основание узла частично её заменяет; 1.", "ОТКРЫТЫЕ ВОПРОСЫ (кто закрывает). Q1 подтвердить own_screen_decisions, взятые из parent_task — владелец. Q2 подтвердить own_work_screen_node: у прогона bc3e5e1c исход ask — владелец. Q3 вывод — тред цели или одиночная панель — владелец. Q4 где поле ввода, с какой стороны дерево, сворачивается ли оно — владелец (в записях конкурентов пробел). Q5 что остаётся после «остановить» — владелец. Q6 где действует возражение (только эта цель или правило навсегда) и как его откатить — владелец. Q7 шаринг цели или треда — владелец. Q8 если дыр несколько — один вопрос или список — владелец. Q9 долгая работа: идёт ли она, пока человек отошёл, и как к ней вернуться — владелец. Q10 слова интерфейса вместо «отчеканил» и «паттерн» — владелец плюс проверка на людях. Q11 как определять «похожую задачу» для S3r — ядро."] Что входило. Входы из context: work_screen_tree, parent_task, positioning, proof_reuse. Решения владельца по экрану взяты дословно из parent_task: раскладка ввод / вывод / дерево; состояния пусто, идёт, вопрос, готово, ошибка (повтор и отказ добавлены по тексту запроса); дерево цели как рабочая панель; дыры «ещё нет» вместо спиннеров; «взял готовое / отчеканил» и ноль вызовов модели на повторе; живые последние прогоны как примеры; возражение тем же полем. Чего нет. Во входе нет двух нужных фактов: own_work_screen_node и own_screen_decisions. Узел взят из отчёта прогона runtime/runs/bc3e5e1c-2ea2-4df2-9240-fe280cf81e19.json, и там это тоже только предложение с исходом ask. Поэтому всё выше — черновик, пока владелец его не подтвердит. Что не проверено. Спецификация на людях не проверялась. Оценки серьёзности по эвристикам — мои. Источники (все получены поиском в этой сессии): - NN/g, Visibility of System Status (эвристика №1) — https://www.nngroup.com/articles/visibility-system-status/ - NN/g, Response Time Limits (0.1 / 1 / 10 с) — https://www.nngroup.com/articles/response-times-3-important-limits/ - NN/g, Progress Indicators (зацикленный индикатор на 2–9 с, доля готовности от 10 с) — https://www.nngroup.com/articles/progress-indicators/ - NN/g, Error-Message Guidelines (понятный язык, точная причина, путь исправления, без обвинения пользователя) — https://www.nngroup.com/articles/error-message-guidelines/ - NN/g, Heuristic Evaluation Workbook (10 эвристик) — https://media.nngroup.com/media/articles/attachments/Heuristic_Evaluation_Workbook_-_Nielsen_Norman_Group.pdf - Microsoft HAX, Guidelines for Human-AI Interaction (удобная правка, при сомнении сужать область или уточнять) — https://www.microsoft.com/en-us/haxtoolkit/ai-guidelines/ - Google PAIR, Explainability + Trust — https://pair.withgoogle.com/chapter/explainability-trust/ ; Feedback + Control — https://pair.withgoogle.com/chapter/feedback-controls/ - Stately, State Machines (конечные состояния и переходы) — https://stately.ai/docs/states

Не хватает: решения владельца о своём экране: зоны, состояния, что считает только своим, возражение