Запрос
текст
Добудь факт «Для каждого атома написать новое или изменённое утверждение в форме «дано → когда → тогда». Для каждого затронутого пункта базы, включая отвергнутые, вынести вердикт; построить матрицу состояний и открытые вопросы.» (spec_amendment_impact). Выбирать, когда: База прочитана и атомы выделены.. Нужны: ["base_screen_spec","owner_word_requirements"]
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; каждая запись лежит ровно в одном листе, пересечений нет"]
statement_coverage_verdicts
["Случай 1 «работало только после выкатки, а ядро сказало принято»: утверждения 122 (task-target.json:412), 123 (:413), 124 (:414). По тексту — частично: 123 и 124 требуют выкатку и живую пробу, а исход admitted только по зелёной внешней пробе; но зелёная дверь с 0/0 проверок нигде не запрещена. По коду — частично: proveOutward task.ts:4947–4992, liveDeployPort :7079, liveProbePort :7129, подключены в CLI :7305–7306, вопрос observed :2987–3001; проверки [s123:8ef5acdb] и [s124:ba568455] есть, но только на подставных портах. Итог — частично. Остаток: R1, R2, R3, R4, R5","Случай 2 «клик по карточке перекрыл тултипы»: утверждения 125 (:415), 126 (:416), а также 124 (:414) — проба экрана взаимодействием. По тексту — целиком: 125 прямо называет «hover ребёнка под новым кликом родителя» и требует вопроса владельцу, 126 судит свойство родителя проверками частей. По коду — нет: в task.ts и packages по hover, tooltip, interaction, stopPropagation, statement 125/126 найдено 0; проверок s125 и s126 в statement-checks 0. Итог — частично (есть только текст). Остаток: R1, R6, R7, R8","Случай 3 «клик мигает весь экран»: ни одно утверждение в 0–126 это свойство не называет; соседние — 125 (:415, проверки взаимодействия render+event+assert, но только для уже существующих взаимодействий) и 126 (:416). Утверждение 127 (:417) называет этот спецймен, но оно вне диапазона. По тексту — нет, по коду — нет (тот же пустой grep), проверок 0. Итог — нет. Остаток: R9, R10"]
kernel_statement_drafts
["R1 · случаи 1, 2, 3 · prevent · НОВОЕ 129: ДВЕРЬ, НЕ ВЫПОЛНИВШАЯ НИ ОДНОЙ ПРОВЕРКИ, НЕ ЗЕЛЁНАЯ (runs/01bd9e17:27 «проверки 0/0», :29 check null, :555 outcome admitted; runs/0c28c88c:59 «проверки 0/0, заландено f5ed68b72»; task.ts:4822–4824: при check null значение total по умолчанию равно 0, а green при этом не снимается). Свойство: любой ответ двери с green = true и check.total, равным 0 или отсутствующим, даёт исход цели refused с cause 'door-no-checks'. Специмен: ответ двери green true, check null, changed = TokenVaultView.tsx и PoolReserveSettings.ts; ожидается outcome.kind = 'refused', cause = 'door-no-checks'; наблюдалось 'admitted' (runs/01bd9e17:555). Проверка: блок [s129] в runtime/statement-checks/task/task.statements.test.ts: run() с заглушкой двери green true и check null, затем assert.equal(outcome.cause, 'door-no-checks'). Мутант: убрать отказ при total = 0, блок краснеет. Статус: проверка не запускалась; красный на HEAD только предсказан (в task.ts нет отказа при 0/0).","R2 · случай 1 · prevent · ПРАВКА 124 (ветка [s124] «запрос выкатки несёт sha»): ЗАПРОС ВЫКАТКИ НАЗЫВАЕТ SHA ЛЕНДА (task.ts:7084: POST /deploy/run?trigger=kernel уходит без sha; [s124:ba568455] в task.statements.test.ts:7077–7085 проверяет только подставной порт, а liveDeployPort в нём не вызывается). Свойство: при любом вызове liveDeployPort(config) с sha HTTP-запрос к координатору несёт этот sha в поле sha тела JSON. Специмен: вход sha 'cec8230e7' (ленд runs/01bd9e17:115); ожидается поле sha = 'cec8230e7' в теле запроса; наблюдалось пустое тело. Проверка: ветка блока [s124] поднимает node:http на 127.0.0.1 порт 0 как координатор, который отвечает ok false; вызывается настоящий liveDeployPort с paths.deploy = адрес стаба, затем assert.equal(JSON.parse(body).sha, 'cec8230e7'). Мутант: POST без тела, ветка краснеет. Статус: проверка не запускалась; красный на HEAD только предсказан.","R3 · случай 1 · prevent · ПРАВКА 124 (ветка [s124] «выкачен именно этот sha»): DEPLOYED ТОЛЬКО ДЛЯ ЗАПРОШЕННОГО SHA (task.ts:7113–7115: при latest.status 'done' порт возвращает deployed true и sha = request.sha, не сверяя, что координатор выкатил именно его). Свойство: liveDeployPort возвращает deployed = true, только если sha, который /deploy/status называет выкаченным, совпадает с запрошенным; иначе deployed = false и why «выкачен другой sha». Специмен: запрошен 'cec8230e7', стаб статуса отвечает status 'done' и sha '5bddb3ac7'; ожидается deployed = false; наблюдалось бы deployed = true. Пробел: есть ли поле sha в ответе /deploy/status, не проверено. Проверка: ветка блока [s124], настоящий liveDeployPort против стаба node:http; из-за DEPLOY_POLL_MS = 15000 одна итерация займёт около 15 с. Мутант: убрать сверку sha, ветка краснеет. Статус: проверка не запускалась.","R4 · случай 1 · detect · ПРАВКА 124 (ветка [s124] «проба судит тело примера»): ЗЕЛЁНАЯ ПРОБА СОВПАДАЕТ С ПРИМЕРОМ УТВЕРЖДЕНИЯ (task.ts:7143: green = статус меньше 400, тело не сравнивается; утверждение 124 требует сверять «status and body fields»). Свойство: liveProbePort возвращает green = true, только если JSON-тело ответа содержит каждое поле примера утверждения с тем же значением. Специмен: PATCH /api/pool/priority с accountName = 'acc2', стаб отвечает 200 с priorityAccount = null; ожидается green = false; наблюдалось бы green = true. Проверка: ветка блока [s124], настоящий liveProbePort против стаба node:http на 127.0.0.1. Мутант: вернуть условие «статус меньше 400», ветка краснеет. why_not_prevent: живую пробу можно выполнить только над уже выкаченным сервисом, а предотвращение для случая 1 дают R1 и R5. Статус: проверка не запускалась.","R5 · случай 1 · prevent · ПРАВКА 123 (ветка [s123] «неотвеченное место наблюдения не даёт admitted»): НЕИЗВЕСТНОЕ МЕСТО НАБЛЮДЕНИЯ НЕ ДОПУСКАЕТ ЦЕЛЬ (task.ts:2997–2999: если классификатор observed бросил ошибку или не ответил, observed = null и корень завершается по оракулу кода; proveOutward на :4948 возвращает null, гейт на :6815 оставляет admitted). Свойство: корневая цель с artifact:code, чей текст называет маршрут, URL или экран, при observed = null получает исход partial, а не admitted. Специмен: текст цели с dev.imperiaos.com/platform/admin/token-vault, транспорт бросает ошибку на стадии task-observed; ожидается outcome.kind = 'partial'; наблюдалось бы 'admitted'. Проверка: ветка блока [s123:8ef5acdb] в task.statements.test.ts (рядом с :7043), modelRequest бросает ошибку на стадии 'task-observed'. Мутант: вернуть null при observed = null, ветка краснеет. Статус: проверка не запускалась.","R6 · случай 2 · prevent · ПРАВКА 125 (ветка [s125a] «существующие взаимодействия входят в цель двери»): ВЗАИМОДЕЙСТВИЯ ЭКРАНА ИЗВЛЕКАЮТСЯ ИЗ КОДА (по вердикту grep hover, tooltip и interaction в task.ts дал 0 совпадений; проверок s125 в statement-checks 0). Свойство: для любой цели двери, среди файлов которой есть .tsx или .vue, doorGoalOf добавляет по одному утверждению на каждый существующий атрибут title и на каждый обработчик onClick, onMouseEnter и onKeyDown в форме «элемент: взаимодействие → эффект». Специмен: TokenVaultView.tsx:903, кнопка ⓘ с title = lines.join('\\n') при закрытой панели; ожидается строка утверждений «button ⓘ: hover → title» в goal.statements; наблюдалось 0 таких строк (прогон 85bb85d1). Проверка: блок [s125a] вызывает doorGoalOf на фикстуре tsx с button onClick и title 'info', затем assert.ok(statements.some(s => s.includes('hover → title'))). Мутант: пропустить извлечение, блок краснеет. Статус: проверка не запускалась.","R7 · случай 2 · prevent · ПРАВКА 125 (ветка [s125b] «перекрытие hover ребёнка — вопрос владельцу»): ТЕНЬ НА ВЗАИМОДЕЙСТВИЕ РЕБЁНКА ОСТАНАВЛИВАЕТ ДВЕРЬ ВОПРОСОМ (patch.after прогона 85bb85d1 ставит title = priorityTip на корневой div с role=button, TokenVaultView.tsx:1378; ⓘ снимает свой title при open, :903, и по MDN наследует title предка; ленд 6b9942dcb, runs/6aa2039f:2216, прошёл без вопроса). Свойство: кандидат, который ставит title или onClick на предка элемента, у которого в исходной версии был свой title, получает исход ask с одним вопросом «оставить оба / заменить». Специмен: patch.before и patch.after прогона 85bb85d1; ожидается outcome.kind = 'ask', и вопрос содержит «оставить оба»; наблюдались admitted и ленд. Проверка: блок [s125b], заглушка двери возвращает этот patch. Мутант: отключить поиск конфликта, блок краснеет. Статус: проверка не запускалась.","R8 · случай 2 · prevent · ПРАВКА 126 (ветка [s126] «свойство родителя судят проверки частей»): ДВЕРЬ ЭКРАНА ГОНЯЕТ ПРОВЕРКИ ВСЕХ ЧАСТЕЙ (runs/01bd9e17:27 «проверки 0/0»; :71–78 change-flow без рендера; у дочерних элементов AccountCard свои title на TokenVaultView.tsx:903, 1387, 1421, 1435, 1438, 1440, 1444, 1456). Свойство: изменение экрана зелёное, только если check.total не меньше числа существующих взаимодействий, извлечённых по ветке [s125a]. Специмен: карточка AccountCard, 8 взаимодействий с title; ожидается check.total ≥ 8; наблюдалось 0. Проверка: блок [s126]; на уровне продукта в пару к нему — репродьюсер packages/app/tests/unit/vault-card-tooltip-owner.test.tsx (открыть ⓘ карточки acc1 и убедиться, что подсказка карточки «click to make this account the pool priority» не всплывает). Мутант: засчитывать 0 проверок частей, блок краснеет. Статус: не запускались ни проверка, ни репродьюсер; красный на 6b9942dcb только предсказан.","R9 · случай 3 · prevent · НОВОЕ 130: ПОКАЗАННЫЙ ЭКРАН ПЕРЕЖИВАЕТ ВЗАИМОДЕЙСТВИЕ (на TokenVaultView.tsx:2186 onPriority вызывает invalidateAsyncData('platform:tokens'); DomainData.ts:95–96 делает liveCache.delete; на :527 и :539 чтение бросает промис; Suspense вне transition показывает фоллбек; починка f5ed68b — keepShownFrame на :1524–1535 с вызовом на :1878, runs/0c28c88c:143). Свойство: для каждого обработчика экрана, который сбрасывает кэш уже показанных данных, дверь выводит interaction-проверку: между событием и следующим кадром данных фоллбек границы Suspense отрисован 0 раз. Специмен: клик по карточке acc1 на 6b9942dcb; ожидается 0 отрисовок фоллбека; наблюдалось мигание всего экрана (слово владельца). Проверка: блок [s130]: doorGoalOf на фикстуре tsx с обработчиком, вызывающим invalidateAsyncData, выводит проверку 'shown-frame-survives'; в пару к нему тест продукта рендерит TokenVaultView со стабом ds, кликает по карточке и считает фоллбеки. Мутант: убрать keepShownFrame на :1878, тест краснеет. Пробел: какая граница Suspense показывала фоллбек, не установлено. Статус: проверка не запускалась.","R10 · случай 3 · prevent · НОВОЕ 131: ПОЧИНКА ОШИБКИ РЕЗУЛЬТАТА ДОПУСКАЕТСЯ ТОЛЬКО С РЕПРОДЬЮСЕРОМ, КРАСНЫМ ДО И ЗЕЛЁНЫМ ПОСЛЕ (runs/0c28c88c:59 «проверки 0/0, заландено f5ed68b72»: починку мигания заландили, не прогнав репродьюсер на df15846). Свойство: цель вида «ошибка результата» (утв. 127) получает admitted, только если расписка содержит прогон репродьюсера с red на родительском sha и с green на sha ленда. Специмен: родитель df15846, ленд f5ed68b; ожидается «репродьюсер: red на df15846, green на f5ed68b»; наблюдалась расписка без репродьюсера. Проверка: блок [s131], заглушка двери отдаёт репродьюсер с pass на обеих версиях, затем assert.equal(outcome.cause, 'reproducer-not-red'). Мутант: не проверять прогон до починки, блок краснеет. Статус: проверка не запускалась."]
kernel_statement_draft
ПРАВКА 81
glossary_term_lines
[" | 'attribute'\n | 'fact'\n | 'law'"," // Имя — утв. 67 (task-target.json:357, ATTRIBUTES записи); подъём к родителю — утв. 126 (:416); поправка имён 2026-09-27 ~14:1xZ: «свойство = АТРИБУТ записи».\n attribute: {\n definition:\n 'Признак записи паттерна, по которому строится дерево классификации: производимый ключ output и kind, ключи needs, требования из checks, вид artifact и сегменты пути parent. ' +\n 'Признаки частей поднимаются к родителю метками (утв. 126; в коде ядра этого пока нет).',\n legalIn:\n 'Дерево классификации ядра (решётка «записи × атрибуты», утв. 67) и подъём от частей к родителю (утв. 126). ' +\n 'НЕ факт: атрибут описывает запись и пустоту значением не закрывает. НЕ закон: атрибут с префиксом law: только называет закон, который запись держит; судит закон. ' +\n 'Слово «свойство» из утв. 126 — это же понятие, отдельной статьи у него нет.',\n ...forms(['attribute', 'атрибут', 'atributo'], ['attributes', 'атрибуты', 'atributos'], ['attributes', 'атрибутов', 'atributos']),\n },"," // Имя — утв. 111 (task-target.json:401, A FACT IS A RECORD OF THE ONE DOMAIN TREE).\n fact: {\n definition:\n 'Запись паттерна без посылок и пустот: kind form, output — ключ, bestForm — значение, которое подставляется без вызова модели; владелец записи — mintedBy, место — путь parent в дереве домена. ' +\n 'Значение по ключу закрывает пустоту (посылку) другой записи.',\n legalIn:\n 'Реестр паттернов (утв. 111; отдельный файл runtime/state/facts выведен из обращения), заполнение посылок по ключу (утв. 29, 30) и спуск, который решает, что показать модели. ' +\n 'НЕ атрибут: факт несёт значение, а не описывает запись. НЕ закон: факт ничего не требует и сам не проверяется. Факты — владельца (mintedBy), паттерны — общие.',\n ...forms(['fact', 'факт', 'hecho'], ['facts', 'факты', 'hechos'], ['facts', 'фактов', 'hechos']),\n },"," // Имя — утв. 64 (task-target.json:354, A LAW IS A REQUIREMENT OF THE GOAL); практики узла — утв. 75 (:365); поправка имён 2026-09-27 ~14:1xZ: «ограничение = ЗАКОН».\n law: {\n definition:\n 'Требование цели, по которому судится ответ: объект из текста требования, исполнимой проверки test и источника source (request, owner, domain, observed). ' +\n 'Требования, общие всем записям узла решётки, составляют практики этого узла (утв. 75).',\n legalIn:\n 'Цель ядра (утв. 64), допуск записи и суд ответа; «утверждение» цели ядра (goals.task.statements) — это закон, второго слова нет. Узел у закона и наследование вниз по спуску — задача текущей цели, в коде этого пока нет. ' +\n 'НЕ атрибут: атрибут описывает запись, закон требует и судит над атрибутами. НЕ практика: практика — «как», закон — «что обязано выполняться». НЕ факт: у закона нет значения, есть проверка.',\n ...forms(['law', 'закон', 'ley'], ['laws', 'законы', 'leyes'], ['laws', 'законов', 'leyes']),\n },"]
law_node_classification
["ИТОГ 129 = 95 по узлам + 1 в корне по построению + 26 схлопнуты в корень + 7 дефектов «нет блока проверки»; каждый id 0–128 стоит ровно в одной корзине, множества id сверены","kernel/adapter/record (10): 1,3,6,7,8,21,30†,49,64,73†","kernel/adapter/input (9): 5,10,13,14,15,16,17,52,86","kernel/adapter/transport (2): 18,19","kernel/adapter/descent (10): 26,54,67,98,99,100,101,102,104,105","kernel/adapter/cycle (6): 12,20,22,23,27,112","kernel/adapter/cycle/mint (12): 24,33,35,36,38,50,55,69,70,74†,76,113","kernel/adapter/cycle/mint/research (3): 45,75,116","kernel/adapter/cycle/experience (5): 25,37,40†,60,62","kernel/adapter/composition (2): 94†,117","kernel/adapter/composition/premises (17): 4,29,44,57,61,63,66,71,72†,77,78,83†,90†,97†,106,119,120","kernel/adapter/composition/compose (4): 2,46,93,96","kernel/adapter/executors/door (6): 53,59,85,108,122,123","kernel/adapter/executors/door/deploy (1): 124","kernel/adapter/executors/deliver (3): 81†,82†,89†","kernel/adapter/report (5): 39,41,42,91,92†","kernel/adapter, в корне по построению (1): 51 — один производитель, склейки нет","СХЛОПНУТЫ В КОРЕНЬ, склейки (26): 0,11†,28,31,32,34,43,47,56,65,68†,79,80†,84†,87†,88†,95†,103,107,109,110,111,114,115,118,121","ДЕФЕКТ — нет своего блока проверки (7): 9,48,58,125,126,127,128","ДУБЛИ (канон ← дубли): 79←80; 86←87; 91←92; 49←30; 65←40; 71←72; 76←77, 90, 94; 5←0, 11; 1←0, 11; 3←0, 21; 4←0; 6←0; свойство 9 судится внутри блока s0","ДРЕЙФ ТЕГА — блок с тегом N судит свойство соседнего закона (20): 11,30,40,68,72,73,74,80,81,82,83,84,87,88,89,90,92,94,95,97; собственное свойство законов 11, 30, 40 и 89 не судит ни один блок"]
node_laws_change_patch
["Черновик правки ядра (статус: не применено и не запущено; дверь на этом шаге не запускалась, в рабочее дерево ничего не записано; ленд только через дверь после accepted от стороны, отличной от автора).","БАЗА, опоры перечитаны сейчас: imperiaos main = 0ba0bab522abbd4e64056e21f570bd71553a70c2 (.git/refs/heads/main:1). Это новее 4afbc7a из соседней карты, поэтому номера строк task.ts сдвинулись: место из RCA task.ts:4822–4824 теперь task.ts:4846 (doorReceiptText: total ?? 0) и :4897 (cause = null при green=true). Остальные опоры на 0ba0bab: DoorGoal task.ts:117–128; DoorResult :130–147; conceptPractices :2053; спуск practices по уровням run.classified.path в researchMethod :2140–2167; doorGoalOf :4814–4841; runDoor :4865–4920; ORACLE_RED_CAUSE :744, DOOR_IO_CAUSE :747; glossary.ts: TermId :32–47 (последний член 'codex' :47), GLOSSARY закрывается на :325. door-ts (…/opus-pattern-catalog/door-ts, вне репозитория imperiaos): targetGoals run-target.ts:4220, given :4231, :4234 уже разворачивает объект-закон с полем text, runTarget :4296, обходчик :4463–4464 — совпали с входом. Пробел: sha door-ts не назван (Read/Grep не дают).","ЧИТАТЕЛИ И ФОРМА ЗАПИСИ (первая часть отчёта). Выбран вариант «запись-объект text+parent», а не параллельный goals.task.nodes[i] (второй склад, привязанный к индексу). Поле называется parent, как у записей паттернов и фактов: дерево то же. Читатели goals.task.statements: 1 вход (target.ts:70–71) и 1 переход (main.ts:128–130) — не меняются; нормализатор run-target.ts:4231–4238 — обновлён: читает text как сейчас, поле parent пропускает, наружу отдаёт string[]; обходчик run-target.ts:4463 — обновлён, первым (expand): const goals = targetGoals(TARGET.goals), иначе сырые объекты доходят до repair.ts:889/968/1106, а statementSeeds (repair.ts:776–777) молча их отбрасывает; 12 точек после нормализатора (run-target.ts:1328, 2608, 2684, 3316, 4125, 4279, 4289, 4490; plan.ts:159; repair.ts:889, 968, 1106) — не меняются, получают string[]; передача цели целиком (plan.ts:375/408/414, sharpen.ts:213, repair.ts:511/821/829/1333/1342, judge.ts:636, goal-m.json) — не меняется, получает нормализованную цель; сюита statement-checks — не меняется: 6 мест читают DoorGoal.statements из doorCalls (task.statements.test.ts:4199, 5083, 5084, 5101, 5912, 6605), а не task-target; task-oracle2.sh — 0 совпадений «statements», не меняется; goals.pattern.statements (task-target.json:432) — мигрирует позже. Итого 17 мест: 2 обновлены, 14 не меняются, 1 мигрирует позже.","ПОРЯДОК: (1) expand — door-ts: обходчик :4463 и нормализатор :4231–4238; (2) migrate — task-target.json:289, строка → объект text+parent; (3) contract — строковую форму в нормализаторе не убирать, пока goals.pattern не мигрирован.","СТРОКИ ГЛОССАРИЯ (glossary.ts): в TermId после :47 добавить | 'attribute' | 'fact' | 'law'; перед закрывающей скобкой GLOSSARY на :325 добавить три статьи attribute, fact и law дословно по glossary_term_lines: утв. 67 и 126 → атрибут; утв. 111 → факт; утв. 64 и 75 → закон. Синонима «утверждение» и отдельной статьи «свойство» нет.","УЗЛЫ ЗАКОНОВ (данные миграции task-target.json, parent у закона i): kernel/adapter/record — 1,3,6,7,8,21,30,49,64,73; kernel/adapter/input — 5,10,13,14,15,16,17,52,86; kernel/adapter/transport — 18,19; kernel/adapter/descent — 26,54,67,98,99,100,101,102,104,105; kernel/adapter/cycle — 12,20,22,23,27,112; kernel/adapter/cycle/mint — 24,33,35,36,38,50,55,69,70,74,76,113; kernel/adapter/cycle/mint/research — 45,75,116; kernel/adapter/cycle/experience — 25,37,40,60,62; kernel/adapter/composition — 94,117; kernel/adapter/composition/premises — 4,29,44,57,61,63,66,71,72,77,78,83,90,97,106,119,120; kernel/adapter/composition/compose — 2,46,93,96; kernel/adapter/executors/door — 53,59,85,108,122,123; kernel/adapter/executors/door/deploy — 124; kernel/adapter/executors/deliver — 81,82,89; kernel/adapter/report — 39,41,42,91,92; kernel/adapter — 51 (корень по построению) и 26 склеек 0,11,28,31,32,34,43,47,56,65,68,79,80,84,87,88,95,103,107,109,110,111,114,115,118,121; parent = null и дефект no-check-block, названы в отчёте по имени — 9,48,58,125,126,127,128. Итог 95+1+26+7 = 129. Дубли и дрейф тегов (20 законов) этой правкой не сливаются — одна логическая правка, отдельный шаг.","ЗАКОНЫ РАЗБОРА НА УЗЛАХ: новые записи 129 (R1: дверь без проверок не зелёная, cause door-no-checks), 130 (R9: фоллбек Suspense 0 раз между событием и кадром) и 131 (R10: репродьюсер red на родителе и green на ленде) — parent kernel/adapter/executors/door. Ветки правок: 124 (R2 sha в теле запроса выкатки, R3 deployed только для запрошенного sha, R4 проба сверяет тело) — parent kernel/adapter/executors/door/deploy; 123 (R5 observed=null → partial) и 125/126 (R6 извлечение взаимодействий, R7 ask при перекрытии ребёнка, R8 total ≥ числа взаимодействий) — parent kernel/adapter/executors/door. Расхождение входов: в классификации 125 и 126 стоят в дефектах, а по RCA они на двери; в черновике у них parent двери, а дефект no-check-block остаётся, пока не написаны блоки s125a, s125b и s126. Ответ «почему допустило»: на узле kernel/adapter/executors/door не было закона 129.","ПРАВКА КОДА task.ts: (а) DoorGoal :117–128 — добавить опциональное поле practices?: DoorPractice[], где DoorPractice = law, parent, test? (expand: старые двери поле не читают); (б) вынести цикл уровней из researchMethod :2148–2167 в один помощник pathLaws(run): законы conceptPractices для каждого уровня run.classified.path, class = ключ уровня; researchMethod и runDoor зовут его оба, второго механизма нет; (в) runDoor после doorGoalOf на :4871 — goal.practices = await pathLaws(run), если список не пуст; (г) вердикт: type DoorVerdict = 'pass' | 'fail' | 'not-judged'. doorVerdict(result, practices): green !== true → fail; check отсутствует или total = 0 → not-judged; total < practices.length (закон узла, чей атрибут не поднят) → not-judged; иначе pass. На :4897 тернарник заменяется исчерпывающим switch: pass → cause null; fail → DOOR_IO_CAUSE при io, иначе ORACLE_RED_CAUSE; not-judged → новая константа DOOR_NO_CHECKS_CAUSE = 'door-no-checks' рядом с :747, run.refusal kind refused; default: const unreachable: never = verdict. report.green = verdict === 'pass', плюс report.verdict; (д) doorReceiptText :4847 печатает слово вердикта вместо green/red, и проверки 0/0 больше не читаются как зелёные. door-ts: 2 ханка (:4463, :4231–4238). glossary.ts: 2 ханка. Код без данных миграции — порядка 90 строк.","ПРОВЕРКА (verify): блок [s129] в runtime/statement-checks/task/task.statements.test.ts, заглушки двери: green и total 3 → pass, cause null; green false → fail, oracle-red; green true и check null → not-judged, door-no-checks; 2 закона practices и total 1 → not-judged. Мутант: убрать ветку not-judged, и блок краснеет. На базе 0ba0bab красный только предсказан: сегодня cause = null при green=true, :4897. door-ts: тест, что цель с объектами-законами доходит до repair строками через :4463. tsc --noEmit и тесты гоняет шлюз, а не автор черновика. why — R1 (runs/01bd9e17:27, :29, :555; runs/0c28c88c:59); what — поле parent, три статьи глоссария, practices по пути и трёхзначный вердикт; verify — s129.","ПРОБЕЛЫ: sha door-ts; как вход edit-режима door-ts читает goal.practices, не инвентаризовано — до migrate законы практик дают not-judged, а не зелёный; есть ли sha в ответе /deploy/status (R3), не проверено; какая граница Suspense показывала фоллбек (R9), не установлено.","Статус: не применено и не запущено."]
base_screen_spec
["ВЕРСИЯ БАЗЫ: (а) runtime/site-target.json прочитан 2026-09-27; хеша и коммита нет (runtime вне git, Read/Grep хеш не дают) — ПРОБЕЛ; (б) прогон-предок runtime/runs/60c7c73e-1007-46b0-9a8f-f6434941ac56.json: run.at 2026-09-27T12:18:15.025Z, status done (:3999–4002); outcome.kind admitted, version 7ea0ac4c1d29aeb5 (:615–617); adapter task.ts sha256 ac42e92d… (:18–21); граф 5f5a17b9→28426269 (:2932–2936); taskCompletionVerified=false (:3992). Статус: спека 60c7c73e допущена ядром (admitted), владельцем НЕ принята (parent_task: «код экрана — после accepted спеки»). Спека — это outcome.answer (:618). result.answer (:27) — битая композиция, законы «Текст на русском» и «Спека полная» = false (:36–49), базой не считается","goals.site.purpose (site-target.json:56): «THE PRODUCT SITE SKELETON — an input window and an output window, not a chat (owner's decision 2026-09-25 ~00:3xZ «у нас не чаты будут, а окно вывода и окно ввода»…)»; справа — дерево классификации; без фреймворка (Pico.css v2); ядро достижимо только через порты solve/tree/history","site S0 (:58): renderSite — чистый HTML5; две колонки: слева <section data-kind=\"work\">, в ней сначала ВЫВОД <article data-kind=\"output\">, под ним ВВОД <article data-kind=\"input\">; справа <aside data-kind=\"tree\"> с <pre> дерева ('—' при null); «No <script> anywhere»","site S1 (:59): ВВОД — <form method=\"post\" action=\"/solve\">, textarea name=text «Опиши цель…», кнопка «Выполнить». Скрытое поле run = report.run.id, если отчёт показан, — «so the next submission is read as a correction to that run (the adapter's objection: { run, text })». Без отчёта: кнопка-корень «Помоги мне выполнить цель» и три ФИКСИРОВАННЫХ примера (решение 2026-09-24)","site S2 (:60): ВЫВОД = blocksOf(report) вложенными <article>; при result.kind='ask' — <p data-kind=\"ask\"> с вопросом и <p data-kind=\"control\" data-device>; ошибка — одна строка <p data-kind=\"error\">; пусто — «Здесь появится результат»; history — <nav data-kind=\"history\">, ссылки /run/<id>, новые сверху","site S3 (:61): siteServer — маршруты GET /, POST /solve (text + optional run → objection), GET /tree, GET /run/<id> (карта отчётов в памяти, иначе 404 «нет такого прогона»); тело >64 KiB → 413","site S4 (:62): модуль не импортирует адаптер и не читает файлы ядра; хост site-host.mts связывает порты; образцы 1882c9e7, 5fe8e90b","site S5 (:63): ВЫВОД НАПОЛНЯЕТСЯ ПО ХОДУ (слово 2026-09-25 ~13:0xZ): первый частичный кадр сразу, опрос GET /run/<id>.json раз в 1500 мс, пока status='running', замена фрагментом /run/<id>/output; «never a spinner and never blocks appearing out of nowhere»; дыра = <mark data-kind=\"pending\">ещё нет</mark>; единственный <script> — только при идущем прогоне","site S6 (:64): КОРНЕВОЙ ЭКРАН (ночь 25→26): <h1>Помоги мне выполнить цель</h1> и <ul data-examples> из трёх ПОСЛЕДНИХ завершённых прогонов; «no hints, no tips, no counters». Экран дерева: «Корень: объект · подцель для нового: «Сформулировать цель»». ПРОТИВОРЕЧИЕ С S1 (фиксированные примеры против живых прогонов) не снято, это открытый вопрос 3 в 60c7c73e","site parked (:67): подсказка темы через Jev (POST /suggest, до трёх чипов) — отложено, не отвергнуто","goals.runView.purpose (:71): генеративный UI из структуры отчёта kernel-task-report/v2: один вид объекта = один вид блока, новый вид = новый блок, а не новая страница","runView R0 (:73): порядок blocksOf — Запрос → Классификация (путь «Понятие <id>») → посылки (с подзадачами) → Исход (в т.ч. «вызовов модели») → Результат → письма («### …Письмо» или «ПИСЬМО <N>»), иначе блок «Ответ»","runView R1 (:74): renderRunView — документ Pico, справа <aside data-kind=\"tree\"> с путём классификации сверху вниз; <mark> для missing/refused, <ins> для ok; «No <script> anywhere»","runView R2 (:75): зависит только от отчёта; одна функция renderBlock на все виды блоков","runView R3 (:76): ДЫРЫ КАК ДЫРЫ («пустоту оставить пустой, а заполненное отобразить», 2026-09-25 ~13:1xZ): блоки composition «Состав» и part; статусы «ещё нет / чеканится / ищу метод» (pending), «взял готовое / отчеканил» (ok), «не вышло / снята» (refused); «· идёт» в <title>, data-status на <main>","СПЕКА 60c7c73e, КОРЕНЬ (:618, «ШАГ 2»): R1 «Главный вход — одно поле свободного текста» 11/11 (HAX G7); R2 «Вывод идёт упорядоченно во времени: лента, лог или водопад» 11/11 (Нильсен №4); R3 «Ход работы виден» 9/11 (Нильсен №1); R4 «Человек может исправить или вмешаться» 10/11 (Нильсен №3, HAX G9). Не корень: история сбоку (7/11, гипотеза), источники","СПЕКА 60c7c73e, ВЕТВИ И ДЕРЕВО (:618, «ШАГ 3–4»): В1 чат-ассистент [ChatGPT, Claude, Perplexity, Dust]; В2 автономный агент [Manus, Devin]; В3 в редакторе [Cursor]; В4 платформа сценариев [n8n, LangGraph/LangSmith, Lindy+Relevance — лист на двоих, пробел]; «Никто из 11 не превращает решённую задачу в паттерн автоматически» (по прочитанному)","СПЕКА 60c7c73e, НАШ УЗЕЛ (:618, «ШАГ 5»): «Новая ветвь от корня: объект = цель, разложенная на паттерны; знакомое переиспользуется без модели»; соседи — Dust и LangSmith. НАСЛЕДУЕМ: одно поле (R1); ход виден, но рамкой блоков (R3); исправление как тот же вход, со скрытой привязкой к прогону (R4); раскрытие шага (Devin, Dust); дерево прогона (LangSmith); нумерованные источники (Perplexity); ничего наружу без владельца (Lindy, Relevance); список прошлых прогонов (n8n Executions, Lindy Task view)","ОТВЕРГНУТО С ПРИЧИНАМИ (:618, «Отвергаем»): (1) лента пузырей как главный вывод — слово 2026-09-25 «не чаты», лента прячет форму цели; (2) спиннер или единое «думает…» — «пустоту оставить пустой»; (3) сырой поток рассуждений — вместо него типизированные факты и основание; (4) «живое окно компьютера или браузера (Manus, Devin)» — «Наш продукт работает с фактами и решениями, а не действует в чужом интерфейсе, так что показывать нечего, а обходится такое окно дорого»; (5) слепое «Try again» — повтор даёт тот же паттерн при нуле вызовов модели, вместо него возражение текстом; (6) панель артефакта справа — там дерево, письма идут блоками в выводе; (7) холст, где человек сам тянет узлы (n8n) — паттерны чеканит ядро. Плюс отказы из site-target: чат (:56), фреймворк (:56), <script> на первом экране (:58, :63), подсказки и счётчики на первом экране (:64). Jev-подсказка — отложена (:67), не отвергнута","ТОЛЬКО У НАС (:618): дерево классификации справа (корень «объект», путь подсвечен, «Сформулировать цель»); дыры вместо спиннеров; статус каждой части и «вызовов модели: N» (на повторе 0 — замер владельца); три последних реальных прогона на первом экране; вопрос ровно про недостающую посылку; (не реализовано) mintedBy, цена рождения, число повторов","ИТОГОВАЯ СПЕКА 60c7c73e (:618, «ИТОГ»): Раскладка — две колонки: слева вывод сверху, ввод под ним, справа дерево; «Под вводом — навигация по истории: последние прогоны, новые сверху». Состояния: 1 Пусто, 2 Идёт (кадр сразу, опрос 1,5 с), 3 Вопрос (контрол устройства, ответ в то же поле), 4 Готово (письма, «вызовов модели: N», источники), 5 Ошибка (строка причины, текст в поле сохранён), 6 Повтор («взял готовое», 0 вызовов), 7 Отказ («вне правила», «Сформулировать цель»). После работы — результат, основание (правило, посылки, источники), цена, ссылка на прогон. Действия: возразить в то же поле, раскрыть блок, открыть /run/<id>, копировать письмо («память», не подтверждено), предложение отправки; «Слепого «повторить» нет». Эвристики: Нильсен №3 и №9 — частично, HAX G17 — нет; номера HAX названы по памяти. Открытые вопросы: 1) сообщение во время прогона — возражение или очередь; 2) кнопка «Остановить»; 3) первый экран — последние прогоны или фиксированные примеры","ЦЕПОЧКА ПРОИСХОЖДЕНИЯ ДО КОРНЯ: site-target goals.site (решение 2026-09-24 «чат + дерево» → 2026-09-25 ~00:3xZ «не чаты» → ~13:0xZ/13:1xZ наполнение и дыры → ночь 25→26 корневой экран) → прогон 93d550cc (записи competitor_work_screen_records, :3188, по ссылке из 60c7c73e:966) → факт work_screen_tree из хранилища (60c7c73e:924–960, via store; корень из 2 признаков) → перечеканка дерева в подпрогоне, version af25d0cad6930aeb (:963–966) → итог 60c7c73e admitted 7ea0ac4c1d29aeb5 (:618) → текущая поправка (parent_task, 2026-09-27 ~14:3xZ/~14:5xZ/~15:1xZ). Корень цепочки — goals.site. Решение 2026-09-24 отдельной записью не найдено, известно только из ссылок в :56 и :59 — ПРОБЕЛ","РАСХОЖДЕНИЕ КОРНЕЙ (отмечаю, не выбираю): у факта work_screen_tree (:929) и у перечеканки (:966) корень из 2 признаков («вывод виден», «ход виден»), ветвь РАЗГОВОР и узел «ДЕЛЕГИРОВАННАЯ ЗАДАЧА → новое ребро». У итоговой спеки (:618) корень R1–R4 и ветви В1–В4. «R2 «вывод во времени»» из parent_task есть только в :618, поэтому база поправки — :618","ЧТО ЗАТРАГИВАЕТ ПОПРАВКА (адреса для анализа влияния; это вывод, а не решение): R2 и порядок «вывод во времени» (:618 ШАГ 2); S1 (:59) — скрытое поле run как ветка «возражение» против «показанная запись = факт контекста спуска»; «Под вводом — навигация по истории» (:618) и nav history в S2 (:60) против отдельного окна истории; отказ (4) «живое окно компьютера» (:618) против кадров устройства для действий в браузере; действие «раскрыть блок» и «После работы: основание» (:618) против клика «открыть узел, давший ответ»; состояния 1–7 (:618) — сохраняются","ПРОБЕЛЫ: нет хеша site-target.json; живые экраны 11 продуктов в 60c7c73e не читались (метки «док-выдача»/«обзор»/«память»); номера HAX — по памяти; противоречие S1↔S6 не снято; спека владельцем не принята; источники не менялись (только чтение)"]
parent_task
Спека экрана shadums.com — дополнение к прогону 60c7c73e (дерево рабочих экранов), слово владельца 2026-09-27 ~14:3xZ: «окно вывода не как история, а как состояние разговора / ответ; историю можно глянуть отдельно в другом окне; ответ на любой вопрос через категоризацию, и пользователь сможет настраивать ответы и реакцию на свои вопросы»; и: «пометок никаких не надо — будет доступен в удобном виде просмотр узла, который дал этот ответ, со всеми нюансами». Внеси в спеку экрана (runtime/site-target.json и записи экрана) ровно это, ничего сверх: (1) окно вывода = текущее состояние записи; ввод — один вид ввода, первый он или второй — не важно (слово владельца 2026-09-27 ~14:5xZ: «второй ввод или первый — не важно, и что он делает — тоже пусть решает дерево классификации»): каждый ввод спускается по дереву, и узел решает, что он делает — новая цель, уточнение показанной записи (закрыть пустоту, добавить факт), правка правила узла; показанная запись входит в спуск как факт контекста, а не как ветка «если второй»; никаких пометок «изменено», никакой ленты пузырей; новое (перечеканка и т. п.) вводится только по факту потребности; (2) история — отдельное окно: версии этой записи и прошлые цели, из уже существующих прогонов и версий (второго хранилища нет); (3) любой ввод классифицируется спуском по дереву на узел; ответ — по правилам узла (domain-rule, alreadyJudged, наследование ответов на домен — уже в ядре); (4) «почему так» не рисуется в ответе: клик по ответу открывает узел, который его дал, — правило, посылки и факты, поднятые атрибуты частей, законы узла, версия ядра и записи; там же пользователь правит правило узла, и следующий вопрос того же узла идёт по новому правилу без вызова модели; (5) состояния экрана из 60c7c73e остаются (пусто, идёт, вопрос, готово, ошибка, повтор, отказ). Сверь с корнем дерева конкурентов: R2 «вывод во времени» отвергается сознательно, взамен — версии и узел; назови, что из спеки 60c7c73e этим меняется. Наружу ничего; код экрана — после accepted спеки, через дверь. ДОПОЛНЕНИЕ (слово владельца 2026-09-27 ~14:1xZ по часам BA / ~15:1xZ UTC: «смысл в том, чтобы протестировать нашу систему; на демо я показывал бы подобное, при этом нужно отображать экран, где идут клики»): когда действие идёт в браузере (вход, оплата, клик по чужому сайту), окно вывода показывает ЭКРАН этого действия — живые кадры устройства с отметкой клика и подписью шага, как блок состояния «идёт», а после — кадры по шагам в узле, который дал ответ. Это поправка к спеке 60c7c73e: там «живое окно компьютера (Manus, Devin)» отвергнуто как дорогое — для действий в браузере оно НУЖНО, потому что это и есть доказательство, что система сделала сама; для ресерча и чеканки кода по-прежнему не показывается. Экран — тот же блок вывода, не отдельная панель.
Классификация
вердикт
made:artifact
причина
new: no candidate
известных записей
298
Понятие 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, 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, trace_click_handler_to_cache_invalidation_or_remount_name_suspense_boundary_chain_patch_swr_revalidate_keep_last_frame_with_red_first_test_and_unapplied_status, gate_node_and_owner_screen_decisions_then_compose_traced_layout_input_output_tree_state_machine_empty_running_question_done_repeat_error_refusal_during_after_visibility_action_reversibility_ten_heuristic_review_and_owned_open_questions, read_competitor_work_screens_by_fixed_schema_with_provenance_then_root_branches_edge_labeled_tree_place_own_node_inherit_reject_ours_and_compose_provenance_tagged_screen_spec_with_states, reconstruct_remainder_from_coverage_verdicts_then_per_item_edit_existing_statement_branch_or_mint_next_free_id_with_run_receipt_specimen_code_line_executable_check_mutant_prevent_detect_and_case_link_and_recheck_empty_remainder, reconstruct_remainder_from_coverage_verdicts_then_per_item_edit_existing_statement_branch_or_mint_next_free_id_with_reread_code_line_run_receipt_specimen_wire_level_port_check_mutant_prevent_detect_case_link_and_unrun_status, reroute_plan_item_obstacle_through_single_existing_door_free_path_first_measured_params_ledgered_calls_success_by_target_reply_refusal_by_actor_owner_only_possession_factors_and_named_uncovered_kinds, revise_login_plan_item_federated_identity_once_per_profile_mail_code_correlated_by_sender_and_request_time_captcha_door_only_owner_residual_with_profile_conflict_check_and_unrun_status, walk_run_reports_revision_chain_for_named_plan_item_pick_nearest_predecessor_before_objection_quote_verbatim_with_run_id_line_field_time_and_replaced_lines, read_goal_statement_array_bounds_skip_parked_and_paper_reserved_ids_mint_next_free_one_property_statement_with_verbatim_specimen_run_line_neighbor_style_check_block_mutant_and_unrun_red_status, read_goal_statements_array_count_zero_based_last_index_union_paper_reserved_draft_ids_from_input_and_run_reports_exclude_parked_max_plus_one_crosscheck_line_offset_and_check_tags_mark_snapshot, reread_root_cause_code_line_and_run_receipt_then_find_statement_that_prescribes_the_defect_edit_it_or_mint_next_free_id_with_run_specimen_boundary_class_inputs_exact_oracle_mutant_table_swept_neighbor_checks_and_unrun_status, take_owner_named_or_predicate_matched_run_id_glob_runtime_runs_unique_prefix_grep_primary_answer_field_quote_verbatim_with_path_line_field_duplicate_lines_and_hash_gap, lookup_latest_recorded_render_device_patch_in_run_reports_grade_draft_vs_land_by_head_greps_flag_unconfirmed_owner_device_premises_and_cdp_attach_hang_risk, find_full_text_render_device_patch_record_in_run_reports_separate_from_retellings_regrade_draft_vs_land_by_head_glob_grep_of_new_files_symbols_statement_id_and_check_tag_flag_unconfirmed_owner_device_premises_and_recheck_cdp_attach_upstream_fix_status, gate_render_device_landed_and_owner_login_onboarding_submit_decisions_then_login_once_verify_identity_render_each_target_screen_aria_dom_snapshot_tag_each_property_live_doc_or_not_read_closed_reason_one_record_per_screen, take_product_set_from_parent_run_or_screen_tree_then_owner_named_domains_first_else_vendor_docs_search_one_url_or_route_template_per_screen_flag_desktop_only_unrenderable_and_unverified_paths, read_home_trace_form_then_draft_read_only_cdp_render_tool_with_wall_stops_separate_guarded_login_device_next_free_statement_with_red_check_and_per_target_live_reread_with_source_tags, fix_revision_then_grep_solver_endpoints_and_provider_names_split_implementation_from_mentions_list_every_importer_of_candidate_verdict_supported_refuted_nei_with_path_line_quotes, gate_on_land_receipt_mergedsha_eq_main_then_find_or_start_single_new_run_with_byte_identical_root_text_of_failed_run_verify_adapter_version_return_outcome_and_effect_verbatim_else_not_obtained_with_missing_premise, fix_kernel_runtime_error_via_invariant_statement_red_first_check_patch_at_compute_site_door_land_and_rerun_goal, verify_land_mergedsha_eq_main_then_grep_runs_for_byte_identical_root_text_newer_than_failed_run_on_new_adapter_sha_return_outcome_effect_verbatim_else_not_obtained_naming_missing_run, read_named_run_its_subruns_and_adapter_lines_then_name_missing_part_value_law_occurrence_chain_and_earliest_escape_gate_with_path_line_and_objection_route_with_unrun_counterfactual, reread_named_runs_receipts_and_adapter_lines_derive_addressed_root_causes_then_per_cause_edit_existing_or_paper_statement_branch_else_next_free_one_property_run_specimen_tagged_check_branch_mutant_prevent_detect_name_foreign_door_law_return_mechanismless_cause_to_rca_unrun_status, reread_main_ref_and_reflog_then_match_door_runs_by_changed_files_and_statement_check_tags_grep_head_adapter_and_suite_for_each_law_marker_return_version_files_oracle_receipt_only_if_mergedsha_eq_main_and_f2p_red_to_green_else_not_obtained_naming_missing_door_run_and_unwritten_checks, gate_door_receipt_green_and_mergedsha_eq_main_ref_reflog_tail_then_find_run_with_byte_identical_specimen_text_newer_than_land_on_new_adapter_sha_quote_outcome_kind_and_effect_verbatim_with_before_after_pair_else_not_obtained_naming_missing_door_run_or_remint_run, trace_admitted_substitute_to_occurrence_and_escape_edit_existing_statement_branches_door_patch_and_remint_after_land, fix_snapshot_then_grep_all_access_synonyms_of_record_path_in_repo_and_runtime_trace_each_hit_to_data_source_classify_file_ingress_raw_consumer_normalized_projection_writer_other_field_mention_fold_copies_record_accepted_form_strictness_and_derived_keys_count_and_pick_form_change_by_counts_with_bypass_sweep, read_glossary_ts_shape_and_tests_then_take_term_names_verbatim_from_cited_goal_statements_and_owner_word_write_definition_genus_differentia_legalin_with_neighbor_negation_and_three_forms_three_locales_via_existing_forms_helper_check_label_disjointness_mark_unapplied_unrun, reread_self_fix_run_part_values_via_and_evidence_and_adapter_value_construction_lines_then_per_defect_pair_occurrence_prevent_and_escape_detect_edit_existing_statement_by_offset_line_with_run_line_specimen_tagged_branch_in_existing_block_or_first_branch_mutant_unrun_status_and_return_mechanismless_causes_to_rca, open_named_specimen_run_by_unique_id_prefix_take_product_set_in_source_order_from_input_text_and_records_then_one_line_per_product_work_screen_url_or_route_template_from_run_else_vendor_docs_label_desktop_only_only_with_evidence_else_address_unverified_count_check_and_named_gaps, read_goal_statement_array_bounds_skip_parked_and_paper_reserved_ids_reuse_same_property_prior_draft_number_else_max_plus_one_quote_specimen_run_answer_line_verbatim_neighbor_style_check_block_iff_branches_two_mutants_unrun_red_status, per_case_from_coverage_verdicts_reread_run_receipts_and_head_lines_trace_value_site_missing_property_silent_check_with_path_line_chain_escape_and_unrun_counterfactual, reread_goal_statement_array_bounds_skip_parked_union_paper_reserved_ids_reuse_prior_same_property_draft_number_quote_specimen_run_answer_line_verbatim_one_adapter_boundary_property_beside_neighbor_field_check_block_iff_branches_two_mutants_unrun_status_as_fact_not_code, fix_goal_statement_array_and_suite_snapshot_map_each_statement_to_its_tagged_check_blocks_extract_read_attributes_resolve_producers_in_adapter_exports_and_stages_place_by_lca_flag_no_block_defects_root_collapse_duplicates_and_tag_drift_reconcile_id_sets, reread_specimen_run_part_values_and_adapter_value_site_then_patch_producer_by_neighbor_rule_and_widen_part_settle_gate_to_value_presence_add_tagged_branches_in_existing_blocks_edit_prescribing_statement_texts_sweep_readers_name_out_of_repo_write_gap_unapplied_unrun, reread_head_browser_door_seams_profile_prefix_worker_switch_registry_executor_guard_run_model_trace_then_draft_render_read_only_patch_per_seam_with_adr_negative_consequences_specimen_quote_check_plan_and_unapplied_unrun_status, reread_main_ref_and_reflog_tail_then_find_door_run_newer_than_patch_draft_by_version_and_changed_files_grep_head_for_patch_markers_return_version_files_oracle_landed_sha_only_if_mergedsha_eq_main_else_not_obtained_naming_first_missing_step_and_out_of_repo_files, place_each_rca_draft_on_node_by_lca_of_attributes_its_test_reads_escape_point_form_on_node_x_no_law_y_cast_class_prevent_detect_evidence_backup_barriers_unplaced_reasons_and_unapplied_status, find_root_run_of_parent_door_part_take_its_minted_kernel_code_patch_part_value_and_subrun_version_reverify_base_eq_main_ref_reflog_tail_and_head_anchor_lines_grep_patch_markers_for_draft_vs_applied_list_rejected_candidates_from_other_trees_and_name_out_of_repo_files_and_owner_gaps, gate_door_land_receipt_landed_eq_main_ref_and_reflog_tail_then_grep_runs_for_root_input_text_byte_identical_to_failed_run_newer_than_land_on_new_adapter_sha_quote_outcome_verbatim_else_not_obtained_naming_missing_door_or_remint_run, reread_main_ref_and_reflog_tail_then_find_door_runs_of_this_goal_by_root_text_and_patch_version_quote_result_kind_cause_why_files_checks_accept_landed_only_if_mergedsha_eq_main_attribute_every_land_after_prior_fix_by_mergedsha_never_substitute_foreign_or_prior_lands_else_not_obtained_naming_missing_green_door_run_and_oracle_output, read_self_fix_run_and_main_reflog_trace_each_part_value_vs_evidence_name_occurrence_and_earliest_escape_gate_per_defect_edit_existing_statements_with_tagged_branches_and_mutants_draft_adapter_patch_grade_door_and_rerun_not_obtained_unless_receipts_exist, reread_head_door_goal_and_live_door_reader_sites_then_draft_record_object_law_node_field_with_expand_before_migrate_glossary_termid_entries_path_laws_to_door_practices_three_valued_door_verdict_never_switch_tagged_check_mutants_p2p_fake_door_sweep_out_of_repo_parts_and_unapplied_unrun_status, read_specimen_run_parts_step0_kind_stripped_artifact_premise_via_and_outcome_then_trace_each_failed_or_substituted_part_to_binding_and_fill_lines_split_occurrence_escape_per_independent_branch_with_path_line_confidence_correct_input_misattributions_and_unrun_counterfactual, fix_snapshot_locate_record_in_target_json_then_trace_loader_hops_and_normalizer_grep_dotted_optional_and_computed_goals_m_access_follow_helpers_and_whole_goal_pass_throughs_exclude_same_name_other_entities_other_fields_and_copies_verify_each_line_name_bypasses_and_residual_dynamic_reads, reread_specimen_run_part_premises_via_and_subrun_step0_vs_minted_axes_then_find_owner_statement_whose_text_prescribes_or_permits_each_cause_amend_it_one_property_with_verbatim_run_line_specimen_tagged_branch_in_existing_block_two_mutants_prevent_detect_next_free_only_if_no_owner_and_unrun_status, draft_node_laws_patch_as_unapplied_fact_no_door_reverify_head_anchors_readers_bypass_expand_before_migrate_glossary_termid_path_laws_to_practices_three_valued_door_verdict_never_switch_checks_mutants, sweep_readers_of_flat_statement_list_pick_record_form_extending_existing_reader_name_glossary_attribute_fact_law_bind_each_law_to_lca_of_nodes_raising_attributes_its_check_reads_name_checkless_laws_defects_place_rca_items_as_node_laws_draft_one_field_patch_unapplied, read_site_target_goals_and_named_ancestor_run_outcome_answer_pin_versions_quote_statements_with_line_addresses_trace_provenance_to_root_extract_root_and_rejected_with_reasons_flag_root_divergence_owner_acceptance_status_and_gaps_read_only, split_owner_screen_word_into_verbatim_quote_atoms_one_thought_each_normalize_approx_times_to_utc_intervals_with_owner_iana_zone_bound_by_earliest_run_containing_quote_flag_self_contradictory_z_labels_check_monotonic_order_mark_supersedes_and_analyst_paraphrase_as_non_owner
Понятие c63
признаки
artifact:file, made:artifact
записи
analyze_competitor_features_fit_gap_select_goals, compose_interview_demo_plan_from_frame_bridge_timeline_architecture_qa_prep_and_fallback, trace_scenarios_to_tests_run_full_gates_fail_to_pass_land_and_list_unverified, derive_traced_gwt_scenarios_from_parent_task_numbered_statements_with_open_decisions, derive_traced_gwt_scenarios_set_unset_switch_rollback_invalid_from_owner_numbered_statements_with_assumptions_and_open_questions, derive_traced_gwt_scenarios_for_nullable_single_select_setting_storage_rank_api_ui_with_characterization_baseline_and_open_questions, verify_kernel_against_numbered_criteria_with_three_valued_verdicts_and_evidence_locators_read_only, derive_traced_f2p_gwt_scenarios_with_p2p_repo_regression_baseline_and_open_questions, compose_kernel_self_check_report_from_baseline_run_window_criterion_verdicts_and_outbound_audit, 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, read_competitor_sites_live_axis_matrix_synthesize_conventions_gaps_three_directions_pugh_choose_one_write_ia_verbatim_first_screen_tokens_and_validation_plan, read_competitor_sites_live_into_fixed_schema_records_then_root_branches_tree_place_own_node_errc_and_derive_provenance_tagged_site_spec_with_tokens, reconstruct_remainder_from_coverage_verdicts_then_per_item_edit_existing_statement_branch_or_mint_next_free_id_with_run_receipt_specimen_code_line_executable_check_mutant_prevent_detect_and_case_link_and_recheck_empty_remainder, lookup_latest_recorded_render_device_patch_in_run_reports_grade_draft_vs_land_by_head_greps_flag_unconfirmed_owner_device_premises_and_cdp_attach_hang_risk
base_screen_spec
источник
input
статус
ok
owner_word_requirements
источник
ask
статус
ask
Исход
вид
admitted
починка
{"rounds":1,"first":"проверка «атомов слова владельца нет → вопрос» не сошлась: ждали «ask», наблюдали «act»"}
вызовов модели
8
Результат
вид
ask
не хватает
owner_word_requirements
вопрос
Не хватает: слово владельца о поправке — дословные цитаты с временем
Ответ
текст
spec_amendment_impact = ["ВХОДЫ И СТАТУС. База — base_screen_spec: site-target.json:56–67 и :71–76 (перечитаны сейчас, совпали с базой) и итог спеки 60c7c73e outcome.answer :618. Отдельного факта owner_word_requirements во входе нет: атомы A1–A11 я собрал из дословных цитат parent_task. Пока владелец их не подтвердит (Q13), результат — черновик. Ничего не применено, наружу ничего не ушло, код экрана не тронут.", "АТОМЫ (цитата → атом). A1 «окно вывода не как история, а как состояние разговора / ответ» (2026-09-27 ~14:3xZ) → окно вывода показывает текущее состояние показанной записи. A2 «историю можно глянуть отдельно в другом окне» → история — отдельное окно: версии записи и прошлые цели из уже существующих прогонов, второго хранилища нет. A3 «ответ на любой вопрос через категоризацию» → любой ввод спускается по дереву до узла, ответ строится по правилам узла (domain-rule, alreadyJudged и наследование, по словам задачи, уже в ядре; я этого не проверял). A4 «пользователь сможет настраивать ответы и реакцию на свои вопросы» → правило узла правится в виде узла, следующий ввод того же узла идёт по новому правилу без вызова модели. A5 «пометок никаких не надо» → ни «изменено», ни ленты пузырей. A6 «будет доступен в удобном виде просмотр узла, который дал этот ответ, со всеми нюансами» → клик по ответу открывает вид узла: правило, посылки и факты, поднятые атрибуты частей, законы узла, версия ядра и версия записи. A7 «второй ввод или первый — не важно, и что он делает — тоже пусть решает дерево классификации» (~14:5xZ) → ввод один вид; показанная запись входит в спуск как факт контекста; узел выбирает действие: новая цель, уточнение записи (закрыть пустоту, добавить факт) или правка правила узла. A8 (формулировка задачи, не цитата) → новое, включая перечеканку, вводится только по факту потребности. A9 «нужно отображать экран, где идут клики» (~15:1xZ UTC) → при действии в браузере (вход, оплата, клик по чужому сайту) окно вывода показывает живые кадры устройства с отметкой клика и подписью шага, это блок состояния «идёт». A10 (формулировка задачи) → после прогона кадры по шагам лежат в виде узла; для ресерча и чеканки кода экран не показывается. A11 (формулировка задачи) → экран — тот же блок вывода, не отдельная панель.", "ST-01 MODIFIED (S2 :60; итог :618 «Под вводом — навигация по истории») · A1, A2 · Дано: у записи R версии v1 и v2, показана v2 · Когда: окно вывода отрисовано · Тогда: в окне вывода только блоки v2; навигаций с data-kind=history — 0; блоков v1 — 0. Было: в окне вывода nav history со ссылками на прогоны. Стало: навигации по истории в окне вывода нет.", "ST-02 NEW · A1, A5 · Дано: показана v1 записи R; ввод закрыл пустоту, получена v2 · Когда: окно вывода перерисовано на v2 · Тогда: элементов с текстом «изменено» — 0; отметок сравнения v1 и v2 — 0; блоков-сообщений ленты — 0; v1 рядом с v2 не отрисована.", "ST-03 MODIFIED (S1 :59) · A7 · Дано: показана запись прогона R · Когда: владелец отправляет текст T · Тогда: порт solve получает text = T и факт контекста shown = R; поля objection в вызове нет. Было: скрытое поле run превращало ввод в возражение к прогону (objection из run и text). Стало: то же скрытое поле передаёт показанную запись как факт контекста спуска.", "ST-04 NEW (структура с примерами) · A7 · Дано: состояние экрана из строки примера · Когда: владелец отправляет текст T · Тогда: форма ввода всегда одна — одна textarea name=text и одна кнопка «Выполнить»; ветвей «первый/второй ввод» в коде экрана — 0. Примеры: Пусто → shown нет; Готово с R → shown = R; Вопрос по R → shown = R.", "ST-05 NEW (структура с примерами) · A3, A7 · Дано: показана запись R, спуск ведёт на узел N · Когда: ввод T спустился на N · Тогда: действие в отчёте выбрано правилом N, а следствие совпадает со строкой примера. T закрывает пустоту R → id записи тот же, версия +1, пустота заполнена. T ставит новую цель → новый id записи, R уходит в историю. T правит реакцию («отвечай короче») → новая версия правила N, R не меняется.", "ST-06 NEW · A3 · Дано: у узла N есть правило домена, ввод этого класса уже судился (alreadyJudged) · Когда: приходит ввод этого класса · Тогда: ответ собран по правилу N, вызовов модели — 0. Пробел: я не проверял, что domain-rule и alreadyJudged работают так, как сказано в задаче.", "ST-07 NEW · A6 · Дано: состояние Готово, ответ дал узел N записи R · Когда: владелец кликает по ответу · Тогда: открывается вид узла N из 6 разделов: правило; посылки и факты; поднятые атрибуты частей; законы узла; версия ядра; версия записи. Пустой раздел показан как «—»; окно вывода не меняется. Где открывается вид — Q7.", "ST-08 MODIFIED (итог :618 «После работы — результат, основание, цена, ссылка на прогон»; S2 :60) · A6 · Дано: прогон завершён · Когда: окно вывода отрисовано · Тогда: в выводе блоки ответа (Ответ, Письмо N, вопрос); блоков «Классификация», «посылка», «Исход» — 0. Было: основание и цена в выводе. Стало: они в виде узла. Поле «вызовов модели» ждёт решения Q5.", "ST-09 NEW · A4 · Дано: открыт вид узла N с правилом P · Когда: владелец сохраняет правку P → P′ · Тогда: у записи узла N новая версия с P′, прежняя видна в окне истории; окно вывода не изменилось, пометок — 0. БЛОКИРОВАНО вопросом Q8.", "ST-10 NEW · A4 · Дано: правило N = P′ сохранено · Когда: следующий ввод спустился на N · Тогда: ответ собран по P′, вызовов модели — 0.", "ST-11 NEW · A2 · Дано: у записи R версии v1–v3, есть прошлые цели g1 и g2 · Когда: владелец открывает окно истории · Тогда: у окна истории свой адрес отдельно от окна вывода; в нём версии R и цели g1, g2, новые сверху; окно вывода не изменилось.", "ST-12 NEW · A2 · Дано: в runtime/runs K прогонов с непустым outcome · Когда: окно истории отрисовано · Тогда: пунктов K, каждый ссылается на существующий run id; новых хранилищ и файлов — 0.", "ST-13 NEW · A8 · Дано: для узла ввода есть применимый паттерн · Когда: прогон завершён · Тогда: перечеканок 0 (у всех частей minted = false), новых видов блоков 0.", "ST-14 MODIFIED (итог :618 «Состояния 1–7») (структура с примерами) · задача, пункт 5 · Дано: прогон в исходе из строки · Когда: окно вывода отрисовано · Тогда по строкам. Пусто → «Здесь появится результат». Идёт → первый кадр сразу, дыры mark data-kind=pending, опрос раз в 1500 мс, блок frame при браузерном шаге. Вопрос → абзац data-kind=ask и контролы устройства, ответ в то же поле. Готово → только блоки ответа. Ошибка → одна строка data-kind=error, текст в поле сохранён. Повтор → ответ без перечеканки, 0 вызовов (как показать — Q5). Отказ → «вне правила» и подцель «Сформулировать цель». Было: в Готово основание и цена. Стало: только ответ.", "ST-15 MODIFIED (отказ 4 в :618 «живое окно компьютера (Manus, Devin)») · A9, A11 · Дано: прогон идёт, шаг — действие в браузере (вход, оплата, клик по чужому сайту) · Когда: устройство отдало кадр · Тогда: в окне вывода блок article с data-kind=frame: изображение кадра, отметка клика, подпись шага. Отдельных панелей — 0; колонка дерева не изменилась. Было: живое окно отвергнуто («показывать нечего, а обходится дорого»). Стало: для браузерных действий блок кадра обязателен. Частично блокировано Q11.", "ST-16 NEW · A10 · Дано: завершён прогон с k браузерными шагами · Когда: владелец открыл вид узла · Тогда: в виде узла k кадров в порядке шагов, у каждого подпись и отметка клика; в окне вывода блоков frame — 0. Частично блокировано Q11.", "ST-17 NEW (негативный) · A10 · Дано: прогон идёт, шаг — ресерч или чеканка кода · Когда: шаг выполняется · Тогда: блоков frame — 0 и в выводе, и в узле.", "ST-18 NEW (EARS, нежелательное поведение; выведено из S5 :63 и R3 :76, не цитата) · A9 · Если браузерный шаг идёт, а кадра ещё нет, то на месте кадра блок frame показывает mark data-kind=pending «ещё нет»; спиннера нет.", "ВЕРДИКТЫ site-target. B01 S0 :58, раскладка — сохранён (A11: кадры идут блоком в окне вывода, колонки те же). B02 S1 :59 — изменён (ST-03, ST-04): скрытое поле run теперь передаёт факт контекста, а не превращает ввод в возражение; фиксированные примеры — конфликт→вопрос Q3. B03 S2 :60 — изменён (ST-01, ST-08): nav history убрана из окна вывода, в Готово остаются только блоки ответа. B04 S3 :61 — изменён: POST /solve передаёт shown вместо objection; маршруты окна истории, вида узла и правки правила добавляются по потребности (A8; ST-07, ST-09, ST-11); /tree и страница прогона сохранены, страница прогона открывается из окна истории. B05 S4 :62 — изменён: нужны порты версий, узла и правки правила; запрет импорта адаптера сохранён. B06 S5 :63 — изменён (ST-15, ST-18): в Идёт добавлен блок frame; опрос, дыры и единственный script сохранены; частота кадров — Q10. B07 S6 :64 — конфликт→вопрос Q3 про первый экран; экран дерева сохранён. B08 отложенная Jev-подсказка :67 — остаётся отложенной; противоречит A3 → Q9. B09 назначение runView :71 — сохранён; frame и разделы узла — новые виды блоков. B10 R0 :73 — сохранён: blocksOf не меняется, в Готово сайт берёт из него только блоки ответа. B11 R1 :74 — сохранён: страница прогона открывается из окна истории и вида узла. B12 R2 :75 — сохранён; форма вида узла — Q7. B13 R3 :76 — сохранён; дыра на месте кадра (ST-18).", "ВЕРДИКТЫ 60c7c73e :618, корень и наследование. B14 R1 «одно поле» — сохранён, A7 его усиливает (ST-04). B15 R2 «вывод идёт упорядоченно во времени: лента, лог или водопад» — заменён сознательно на версии в окне истории и вид узла (ST-01, ST-11, ST-07). Сверка с корнем: R2 есть только в корне :618; корень факта work_screen_tree (вывод виден 11/11, ход виден) не нарушен — вывод виден как состояние, ход — в Идёт и в узле. B16 R3 «ход виден» — изменён: пока прогон идёт, ход в выводе (дыры, статусы, кадры), после — в виде узла (ST-14, ST-15, ST-16). B17 R4 «исправить или вмешаться» — изменён: любой ввод, решает спуск, плюс правка правила узла (ST-05, ST-09). B18 наследуемое «исправление как тот же вход, со скрытой привязкой к прогону» — изменён: привязка стала фактом контекста, а не ветвью (ST-03). B19 «раскрытие шага (Devin, Dust)» — заменён кликом по ответу, который открывает узел (ST-07). B20 «дерево прогона (LangSmith)» — изменён: переезжает в вид узла. B21 «нумерованные источники (Perplexity)» — конфликт→вопрос Q6. B22 «ничего наружу без владельца (Lindy, Relevance)» — сохранён; с оплатой и входом важнее — Q2, Q11. B23 «список прошлых прогонов (n8n Executions, Lindy Task view)» — изменён: переезжает в окно истории (ST-11).", "ВЕРДИКТЫ по отвергнутому. B24 (1) лента пузырей — остаётся отвергнутым (A1, A5, ST-02). B25 (2) спиннер — остаётся отвергнутым (ST-18). B26 (3) сырой поток рассуждений — остаётся отвергнутым: основание лежит в узле типизированными разделами. B27 (4) живое окно компьютера (Manus, Devin) — возрождён частично: только для действий в браузере, блоком вывода и кадрами по шагам в узле (ST-15–ST-17). Причину отказа «показывать нечего, а обходится дорого» снимает слово «нужно отображать экран, где идут клики»: экран доказывает, что система сделала всё сама. Для ресерча и чеканки кода — остаётся отвергнутым. B28 (5) слепое Try again — остаётся отвергнутым: повтор — это тот же ввод, решает спуск. B29 (6) панель артефакта справа — остаётся отвергнутым; A11 подтверждает: экран — не отдельная панель. B30 (7) холст, где человек сам тянет узлы (n8n) — остаётся отвергнутым: правка правила в виде узла — не сборка графа (объём правки — Q8). B31 отказы site-target (чат :56, фреймворк :56, script на первом экране :58 и :63, подсказки и счётчики :64) — остаются отвергнутыми.", "ВЕРДИКТЫ «Только у нас» и итог 60c7c73e. B32 дерево справа — сохранён; дыры — сохранён; «статус каждой части и вызовов модели: N» — конфликт→вопрос Q5; три последних прогона на первом экране — конфликт→вопрос Q3; вопрос ровно про посылку — сохранён; mintedBy, цена рождения и число повторов (не реализованы) — изменён: их место в виде узла. B33 раскладка «под вводом — навигация по истории» — удалён, взамен окно истории (ST-01, ST-11). B34 состояния 1–7 — сохранены (ST-14): в Идёт появляются кадры, Готово остаётся без основания, показ Повтора — Q5. B35 «после работы — результат, основание, цена, ссылка на прогон» — изменён: в выводе только результат, остальное в узле (ST-08, ST-07). B36 действия: «возразить в то же поле» — изменён (ST-05); «раскрыть блок» — заменён (ST-07); «открыть прогон» — изменён, теперь из окна истории; «копировать письмо» — сохранён (метка «память», не подтверждено); «предложение отправки» — сохранён; отказ от слепого повтора — сохранён. B37 открытые вопросы 1–3 спеки остаются открытыми (Q1–Q3), влияние Q2 выросло.", "ЧТО МЕНЯЕТСЯ В 60c7c73e: из корня уходит R2 (вместо него версии и узел); меняются R3 и R4; меняются наследования «привязка к прогону», «раскрытие шага», «дерево прогона» и «список прогонов»; уходит навигация по истории под вводом; основание и цена переезжают из вывода в узел; отказ 4 возрождён для браузерных действий. Остальные отказы и состояния 1–7 остаются.", "МАТРИЦА, определения. Состояния окна вывода (7): Пусто, Идёт, Вопрос, Готово, Ошибка, Повтор, Отказ. Браузерный шаг — подсостояние Идёт, не отдельное состояние (A9: «как блок состояния идёт»). События (11): e1 ввод; e2 частичный кадр прогона; e3 кадр устройства; e4 прогон завершён новым результатом; e5 прогон завершён из опыта; e6 прогон завершён вопросом; e7 прогон завершён отказом; e8 ошибка порта; e9 клик по ответу; e10 сохранена правка правила узла; e11 выбор версии или цели в окне истории. Ячеек 77. Обозначения: «→ X» — переход и его утверждение; «—» — недопустимо, отрабатывается как негативный случай; «?» — открытый вопрос. Ввод всегда сначала даёт Идёт, поэтому ошибка возникает только из Идёт. Вид узла и окно истории — отдельные окна, а не состояния окна вывода.", "Пусто: e1 → Идёт, shown нет (ST-04) · e2 — нет прогона · e3 — нет прогона · e4 — · e5 — · e6 — · e7 — · e8 — (исхода без прогона нет) · e9 — ответа нет · e10 — правило правится в виде узла, а без ответа узла нет · e11 ? (Q4).", "Идёт: e1 ? (Q1) · e2 → Идёт, блок заполняется на месте (S5, ST-14) · e3 → Идёт, блок frame обновлён (ST-15, ST-18); на шаге ресерча или чеканки — недопустимо (ST-17) · e4 → Готово (ST-08, ST-02) · e5 → Повтор (ST-13, ST-06) · e6 → Вопрос (ST-14) · e7 → Отказ (ST-14) · e8 → Ошибка (ST-14) · e9 — ответа ещё нет · e10 — показанного ответа нет · e11 ? (Q4).", "Вопрос: e1 → Идёт, shown = запись, узел закрывает пустоту (ST-03, ST-05) · e2 — прогон стоит на вопросе · e3 — · e4 — · e5 — · e6 — · e7 — · e8 — · e9 → Вопрос и вид узла, задавшего вопрос (выведено из ST-07: вопрос — тоже ответ узла) · e10 → Вопрос без изменений на экране, следующий ввод — по новому правилу (ST-09, ST-10) · e11 ? (Q4).", "Готово: e1 → Идёт, shown = R (ST-03, ST-05) · e2 — · e3 — · e4 — · e5 — · e6 — · e7 — · e8 — · e9 → Готово и вид узла (ST-07, ST-16) · e10 → Готово без пометок (ST-09) · e11 ? (Q4).", "Ошибка: e1 → Идёт, сохранённый текст отправлен снова (ST-04) · e2 — · e3 — · e4 — · e5 — · e6 — · e7 — · e8 — · e9 — ответа нет · e10 — · e11 ? (Q4).", "Повтор: e1 → Идёт (ST-05) · e2 — · e3 — · e4 — · e5 — · e6 — · e7 — · e8 — · e9 → Повтор и вид узла с записью «взял готовое» (ST-07) · e10 → Повтор без пометок (ST-09) · e11 ? (Q4).", "Отказ: e1 → Идёт (ST-05) · e2 — · e3 — · e4 — · e5 — · e6 — · e7 — · e8 — · e9 → Отказ и вид узла, где остановился спуск (выведено из ST-07) · e10 → Отказ, следующий ввод этого класса — по новому правилу (ST-10; чья запись — Q8) · e11 ? (Q4).", "ПОКРЫТИЕ МАТРИЦЫ: состояний 7 из 7; допустимых переходов 21, каждый ссылается на утверждение; недопустимых 48, каждый назван как негативный случай; «?» 8 (Идёт×e1 → Q1; столбец e11 → Q4). ST-11 и ST-12 описывают само окно истории, поэтому своих ячеек в матрице окна вывода у них нет; их влияние на вывод — столбец e11, он ждёт Q4. Противоречий нет: каждая пара «состояние, событие» ведёт в одну цель.", "Q1 ВЫСОКОЕ, перенесён из 60c7c73e (вопрос 1). Что делает ввод во время Идёт? (а) спускается с идущей записью как фактом, узел решает (продолжение A7); (б) встаёт в очередь; (в) прерывает прогон. При оплате или входе (A9) прерывание посреди шага опасно. Блокирует ячейку Идёт×e1. Адресат — владелец.", "Q2 ВЫСОКОЕ, перенесён (вопрос 2), влияние выросло из-за A9. Нужна ли кнопка «Остановить» для браузерных действий? (а) да, в блоке frame; (б) нет, остановка через ввод по Q1-а — тогда она зависит от классификации. Ссылки: ST-15, B22.", "Q3 СРЕДНЕЕ, перенесён (вопрос 3). Первый экран — фиксированные примеры (S1 :59) или три последних прогона (S6 :64)? При варианте (б) это тоже история на первом экране: остаётся ли она там при A2? Ссылки: B02, B07, B32.", "Q4 ВЫСОКОЕ, новый. Выбор версии или прошлой цели в окне истории: (а) делает её показанной записью, и следующий ввод спускается уже с ней; (б) только просмотр в окне истории, окно вывода не меняется. Блокирует столбец e11 (7 ячеек). Ссылки: A1, A2, A7, ST-11.", "Q5 СРЕДНЕЕ, новый. «Вызовов модели: N» и «взял готовое» — это пометка (по A5 убрать в узел) или часть ответа (одна строка в выводе как доказательство повтора без вызовов модели)? Ссылки: ST-08, ST-14, B32, B34.", "Q6 СРЕДНЕЕ, новый. Нумерованные источники: сноски в тексте ответа или только в виде узла? Ссылки: A5, A6, B21.", "Q7 СРЕДНЕЕ, новый. Где открывается вид узла: (а) на своём адресе; (б) блоком в окне вывода; (в) окном рядом? R2 :75 требует «новый вид — новый блок, не новая страница», слово владельца — «в удобном виде». Ссылки: ST-07, B12.", "Q8 ВЫСОКОЕ, новый. Правка правила владельцем — это (а) факт владельца (mintedBy = владелец), а общий паттерн не меняется, или (б) новая версия общего паттерна, и тогда нужен допуск с проверками по open_registry_as_spec? И что можно править: форму ответа, законы узла, условие? Блокирует ST-09. Ссылки: A4, B30.", "Q9 НИЗКОЕ, новый. Отложенная Jev-подсказка (:67) выставляет intent, и следующий /solve пропускает классификацию — это противоречит A3. Варианты: чип только подставляет текст; чип — факт-подсказка для спуска. Ссылка: B08.", "Q10 СРЕДНЕЕ, новый. Хватит ли опроса раз в 1500 мс (S5), чтобы было видно, где идут клики, или нужен кадр на каждый клик? Ссылки: ST-15, B06.", "Q11 ВЫСОКОЕ, новый. На кадрах входа и оплаты видны пароль и данные карты. Их маскировать в кадре и в узле, или на чувствительном поле отдавать управление владельцу (так делает Operator)? Частично блокирует ST-15 и ST-16.", "Q12 НИЗКОЕ. Метка времени дополнения «~14:1xZ по часам BA / ~15:1xZ UTC» противоречит себе: при UTC−3 14:1x по BA — это 17:1x UTC. На порядок атомов не влияет: при любой метке A9 идёт после A7.", "Q13 ВЫСОКОЕ. Факта owner_word_requirements нет: атомы A1–A11 собраны мной из parent_task, а A8, A10 и A11 — формулировка задачи, не цитаты владельца. Подтвердите атомы — это блокирует принятие всего результата.", "САМОПРОВЕРКА. Атомов 11, каждый покрыт: A1 — ST-01, 02; A2 — ST-11, 12; A3 — ST-05, 06; A4 — ST-09, 10; A5 — ST-02; A6 — ST-07, 08; A7 — ST-03, 04, 05; A8 — ST-13; A9 — ST-15, 18; A10 — ST-16, 17; A11 — ST-15. Вердиктов 37 (B01–B37), из них по отвергнутому и отложенному 9 (B08, B24–B31). У каждого изменённого и заменённого пункта есть утверждение; удалённый B33 утверждения поведения не имеет, только утверждение об отсутствии (ST-01). Высокое влияние блокирует: ST-09 (Q8), Идёт×e1 (Q1), столбец e11 (Q4), частично ST-15 и ST-16 (Q11), весь результат (Q13)."] Как это собрано. База — base_screen_spec; site-target.json:54–78 перечитан сейчас (Read). Слова владельца взяты дословно из parent_task, отдельного факта owner_word_requirements нет. Что уже работает в ядре (domain-rule, alreadyJudged), я не проверял. Что взято из поиска и как применено: - EARS, шаблон нежелательного поведения «If <trigger>, then the <system name> shall <system response>». По нему написан ST-18; по «While/When» разделены «дано» и «когда». https://alistairmavin.com/ears/ - Таблица состояний × событий: пустые ячейки — такие же требования, как заполненные; покрытие all-transitions включает попытки недопустимых переходов. Отсюда 77 явных ячеек и 48 негативных. https://www.tmap.net/wiki/state-transition-testing/ и https://keploy.io/blog/community/state-transition-testing - Gherkin: одна пара When–Then на сценарий; если меняются только значения — структура с примерами. Отсюда одно событие в каждом «когда» и таблицы примеров в ST-04, ST-05 и ST-14. https://support.smartbear.com/cucumberstudio/docs/tests/best-practices.html и https://automationpanda.com/2018/02/03/are-gherkin-scenarios-with-multiple-when-then-pairs-okay/ - Operator: агент снимает кадры браузера в реальном времени; на CAPTCHA, входе и полях оплаты отдаёт управление человеку; перед заказом просит подтверждение. Это внешний прецедент к возрождению отказа 4 (B27) и основание вопросов Q2 и Q11. https://leanware.co/insights/openai-operator-guide (страницы openai.com вернули 403, их текст я не читал).

Не хватает: слово владельца о поправке — дословные цитаты с временем