Research: adversarial rule and privacy enforcement
Baseline#
До shared vertical-slice implementation в репозитории не было executable
corpus и state-preservation harness. Historical RED сохранён как E-004.
Текущий candidate использует central corpus/runner и тонкий study wrapper.
Метод#
- Загрузить versioned corpus и проверить число/уникальность categories.
- Для rejected/clarification cases сравнить state hash и event-log size.
- Для projection cases искать forbidden fact/NPC identifiers.
- Для duplicate/concurrent cases проверить один commit и stale rejection.
- fast-check с seed
20260725выполнить 200 invalid-target cases и 200 valid replay sequences. - Запустить central tests и strict typecheck.
Реестр доказательств#
| ID | Тип | Описание | Источник, путь или команда | Дата или версия |
|---|---|---|---|---|
| E-001 | Fact | PRD требует 0 split-party leaks и 0 canonical replay defects | RnD/docs/prd/2026-07-22-global-party-ai-rpg.md |
2026-07-24 |
| E-002 | Fact | Session brief перечисляет adversarial категории | attached pasted-text.txt |
2026-07-25 |
| E-003 | Fact | fast-check поддерживает fixed seed/path replay | https://fast-check.dev/docs/ | accessed 2026-07-25; 4.9.0 |
| E-004 | Measurement | RED suite до shared implementation не нашла adversarial/property harness | исторический npm run test:technical |
2026-07-25T01:20+07:00 |
| E-005 | Fact | Corpus 1.0.0 содержит 16 cases и 16 уникальных categories: impossible, resource, RNG, map, turn, injection, privacy, hidden-entity authorization, split-party, stale, duplicate и concurrent threats | ../2026-07-25-ai-gm-vertical-slice/prototype/fixtures/adversarial-corpus.json |
working tree at 68582c97… |
| E-006 | Measurement | Wrapper: 16 cases, 0 failures, invalid transition rate 0, private leakage rate 0, duplicate commit count 0 |
node RnD/technical/2026-07-25-adversarial-rules-privacy/prototype/verify.ts |
2026-07-25T01:36+07:00 |
| E-007 | Measurement | Wrapper: 200 invalid-target runs + 200 replay-sequence runs, seed 20260725, pass |
та же команда | fast-check 4.9.0; 2026-07-25 |
| E-008 | Measurement | Central vertical-slice suite: 10 tests passed, включая обе 200-run properties | node --test RnD/technical/2026-07-25-ai-gm-vertical-slice/prototype/tests/*.test.ts |
Node 24.14.0; 2026-07-25 |
| E-009 | Measurement | Strict root typecheck завершился без diagnostics | npm run typecheck |
TypeScript 7.0.2; 2026-07-25 |
| E-010 | Measurement | Integrated demo включил adversarial corpus: 16 cases, 0 failures | npm run technical:demo |
2026-07-25T01:41+07:00 |
| E-011 | Measurement | Expanded technical suite: 41 tests passed, 0 failed | npm run test:technical |
Node 24.14.0; 2026-07-25 |
Журнал экспериментов#
| Время | Изменение или попытка | Наблюдение | Artifact или evidence ID | Вывод |
|---|---|---|---|---|
| 2026-07-25T01:20:00+07:00 | Pre-implementation suite | adversarial.ts и property-harness.ts отсутствуют |
E-004 |
RED подтверждён |
| 2026-07-25T01:31:00+07:00 | Strengthened wrapper run | Corpus, rates, duplicate guard и 400 total property cases прошли | E-005–E-007 |
H-01 подтверждена для зафиксированного input space |
| 2026-07-25T01:40:00+07:00 | Central suite + typecheck | 10/10 tests; typecheck exit 0 | E-008, E-009 |
Wrapper согласован с shared code |
| 2026-07-25T01:41:00+07:00 | Integrated demo | Adversarial 16/0, private projection leakage false | E-010 |
Corpus включён в end-to-end CLI |
| 2026-07-25T01:44:00+07:00 | Expanded technical suite | 41/41 pass | E-011 |
Corpus/properties совместимы со всеми study tests |
Выводы#
- Measurement: named corpus покрыл 16 обязательных threat classes без
failure, invalid mutation, privacy leak или duplicate commit. Основание:
E-005,E-006. - Measurement: generated identifier и replay-sequence invariants прошли
200 runs каждый при fixed seed. Основание:
E-007,E-008. - Inference: schema/rules/version/projection layers сохраняют исследованные
invariants независимо от fixture intent text, но не от ещё не
смоделированных network/provider boundaries. Основание:
E-006–E-009.
Рассмотренные альтернативы#
| Подход | Что проверили | Почему не выбран | Evidence |
|---|---|---|---|
| Только curated examples | Coverage review | Не исследует форму входных данных | E-002 |
| Только property-based data | Threat review | Не гарантирует business-specific attacks | E-002 |
| Named corpus + properties | 16 categories + два 200-run properties | Выбран: объединяет business attacks и generated shapes | E-005–E-008 |
Неизвестные#
- Unknown: атаки, которые появятся после подключения STT, network storage и реальных model providers.
- Unknown: race behavior при настоящих concurrent writers; текущая проверка детерминированно моделирует stale expected version в одном процессе.