Skip to content

Цикл жизни артефакта · теория

Lifecycle · от draft до terminal

Артефакт - не статичный документ, который пишется один раз и забывается. Он эволюционирует: draft становится validated planом, активное решение через год заменяется лучшим, бенчмарк устаревает и требует пересмотра. Без управления жизненным циклом - зомби-документы, устаревшие спеки, которым никто не доверяет, но никто не удаляет. Lifecycle даёт каждому артефакту явный статус и явные правила перехода - так что вы всегда знаете: это current? validated? replaced? нужно ли ему ещё доверять?

01 · 5 states
Что значит статус
draft · active · stale · superseded · deprecated
02 · 6 transitions
Какая команда - какой переход
activate · supersede · deprecate · renew · reopen · stale (auto)
03 · stale
Забытое состояние
самое опасное · требует решения, не молчания

01 · Пять состояний · что означает каждое

Концепция 01 · аналогия паспорта с визой

Каждый артефакт всегда находится в одном из пяти состояний

Паспорт сам по себе - это draft: документ есть, но без визы пересечь границу нельзя. Активная виза - это active. Виза с истёкшим сроком - stale: не invalid, но требует переоформления. Аннулированная виза - superseded или deprecated в зависимости от причины: заменили на новую (supersede) или просто закрыли страну для въезда (deprecate).

Система журналирования фиксирует это явно - у каждого артефакта в frontmatter поле status: строго одно из пяти значений. Никаких «не помним», никаких «вроде закрыли».

● draft
Work in progress
active (через validate)
● active
Validated, in use
superseded
deprecated
stale
● stale
valid_until истёк
active (renew)
deprecated (reopen)
● superseded
Заменён новым
terminal · no exit
● deprecated
Больше не релевантен
terminal · no exit
State machine · 5 состояний + 6 переходов
draft work in progress active validated, in use stale valid_until истёк superseded TERMINAL deprecated TERMINAL activate supersede deprecate stale (auto) renew reopen
транзишн, требующий действия транзишн в терминальное состояние auto-transition (по TTL)
Terminal - буквально terminal

Из superseded и deprecated нет выхода. Это не «временно убрали, потом вернём» - это точка истории. Если решение нужно вернуть (например, выбирали JWT → переходили на sessions → опять нужен JWT) - создаётся новый артефакт ADR-003, который supersede'ит ADR-002. Старый ADR-001 остаётся superseded - это сохраняет реальный timeline решений.

02 · Шесть переходов · какой когда

Концепция 02 · decision tree переходов

Не «как переименовать» - а «какой transition отражает реальность»

Каждый переход - это семантическое утверждение, а не просто смена строки в frontmatter. Выбор не «как мне удобнее назвать», а «что на самом деле произошло с решением».

decision tree · какой transition применять
activate Артефакт готов, validated, можно строить от него draft → active «зелёный свет» - план одобрен и пошёл в работу
supersede Появился лучший вариант, который заменяет старый active → superseded PRD-001 (basic JWT) → PRD-002 (OAuth2 federation)
deprecate Артефакт больше не релевантен совсем active → deprecated Фича отменена, модуль удалён, контекст изменился
renew Stale-артефакт всё ещё валиден после re-evaluation stale → active ADR про LanceDB через год - пересмотрели, всё ещё лучший выбор
reopen Stale-артефакт нужно переосмыслить заново stale → deprecated + new draft Старый deprecated, новый draft создаётся с lineage
(auto) valid_until истёк - артефакт автоматически становится stale active → stale Не команда, а сигнал: пора пересмотреть
Шпаргалка · когда какой переход // Проверить готовность перед активацией review PRD-001 Review PASSED -- ready to activate // Активировать: draft → active activate PRD-001 Validation gate passes MUST rules // Заменить: active → superseded, PRD-002 становится преемником supersede PRD-001 --by PRD-002 Creates link: PRD-002 supersedes PRD-001 // Устаревить: больше не релевантен deprecate PRD-001 --reason "No longer needed" // Продлить stale: пересмотрели, всё ещё актуален renew PRD-001 --reason "Re-validated" --until 2026-12-31 // Открыть пересмотр: старое устаревает, новый draft создаётся reopen PRD-001 --reason "Needs major revision" PRD-001 deprecated, new draft created (PRD-NNN)
Validation gates по типу артефакта

PRD, RFC, ADR, Epic, Spec требуют проверки перед активацией - 30+ правил на тип артефакта (MUST-секции, отсутствие implementation leakage, information density, measurability, traceability). Note и Problem могут активироваться без validation gate - они быстрые captures, и формальные правила здесь только мешали бы фиксировать сигнал.

03 · Stale · самое опасное состояние

Концепция 03 · забытое состояние

Stale не значит «неверно». Stale значит «никто не проверил, что всё ещё верно»

Большинство команд игнорируют stale - и это самая опасная ошибка. Когда дата valid_until у артефакта истекает, он автоматически становится stale. Это не «он сломался» - это сигнал, что контекст мог измениться, а решение зафиксировано на старых данных.

⚡ типичный пример

Вы создали ADR полгода назад: выбрали LanceDB, потому что у него тогда был лучший Rust SDK. Поставили valid_until: 180 дней. Сейчас он stale. Может быть, LanceDB всё ещё лучший вариант - а может быть, появился более зрелый конкурент. Статус stale заставляет вас явно переоценить, вместо тихого допущения «оно ещё работает».

Без stale-состояния это решение продолжало бы быть active, R_eff его evidence считался бы по 6-месячному бенчмарку, и вы бы спокойно жили в иллюзии «всё проверено и работает». Через год команда упирается в проблему, начинает гадать «почему мы выбрали LanceDB», и выясняется, что evidence давно нерелевантен.

01 · сейчас
active · fresh
valid_until ещё в будущем. R_eff считается по evidence как обычно.
02 · истечение
active → stale (auto)
valid_until прошёл. Артефакт переходит в stale без вашего действия. Оценка evidence → 0.1.
03 · выбор
renew или reopen
Пересмотр обязателен. renew - всё ещё лучший выбор. reopen - нужен новый разбор.
04 · итог
active → или → deprecated + new
После renew - продлеваем valid_until. После reopen - старое уходит в deprecated, начинается новый draft с lineage.
Работа со stale-артефактами // Просмотреть все stale-артефакты в проекте list --status stale // Продлить - всё ещё лучший вариант после пересмотра renew ADR-001 --reason "Re-evaluated, still best option" --until 2027-06-30 // Или открыть пересмотр заново - появились новые альтернативы reopen ADR-001 --reason "New alternatives available, fresh evaluation"
Связь со scoring

Когда evidence становится stale, его оценка падает до 0.1 (а не до 0 - «решение было, контекст мог измениться»). Это значит, что R_eff = min(scores) у всего связанного артефакта тоже падает до 0.1 - тихий сигнал, который виден в health-дашборде системы. Игнорировать его = молчаливо принимать риск.

Полный цикл на одном артефакте · ADR-001

Vault choice - LanceDB как embedded DB. Артефакт проживает все возможные состояния за 18 месяцев.

М 0 · draft

ADR-001 создан · статус draft

Frontmatter: status: draft, depth: deep, valid_until не установлен. 3 гипотезы из ADI (FAISS / LanceDB / pgvector), evidence пока пустое.

М 0.5 · active

Validation pass → артефакт активирован

3 quality gates прошли, evidence линкован (бенчмарк CL2), R_eff = 0.7. status: active, valid_until: 2026-12-01. Файл immutable.

М 12 · stale

valid_until истёк · автоматический переход в stale

Контекст не меняли, ничего не делали - но valid_until прошёл. status: stale выставлен системой. Health-дашборд показывает: «1 stale artifact, R_eff degraded».

М 12 · renew

Re-evaluation → продлено до 2027-06-30

Перезамерили на новой версии LanceDB. Те же тренды - выбор валиден. Renew продлевает valid_until, статус возвращается в active, evidence актуализируется.

М 18 · supersede

Появился лучший вариант → ADR-002 заменяет ADR-001

В индустрии появился sqlite-vec с лучшим API. ADR-002 (новое решение) создан, активирован. ADR-001 помечается как superseded, ADR-002 ссылается на ADR-001 как на источник lineage. ADR-001 уходит в terminal.