feat(registry): add workspace-scoped artifact metadata

This commit is contained in:
2026-08-27 02:18:09 +03:00
parent 497e1b740f
commit 2eb185b14a
29 changed files with 2264 additions and 181 deletions
+6 -1
View File
@@ -16,7 +16,7 @@ docker compose -f deploy/community/docker-compose.yml --env-file deploy/communit
2. Создайте и проверьте согласованный backup PostgreSQL и artifact storage. Для первой пустой установки зафиксируйте, что восстанавливать нечего.
3. Проверьте immutable plan: `cargo run -p admin-api --bin crank-migrate -- plan --check` в source checkout либо `<compose> run --rm migrate crank-migrate plan` для образа.
4. Примените sequence: `<compose> run --rm migrate crank-migrate apply`.
5. Повторите preflight и убедитесь в `{"status":"current","version":11}`.
5. Повторите preflight и убедитесь в `{"status":"current","version":12}`.
6. Только теперь запускайте long-running services: `<compose> up -d`.
Обычный `up` также содержит обязательный migration job, но при upgrade он не заменяет предварительные preflight и backup. Migrator делает до десяти bounded попыток подключения с секундной паузой и затем безопасно завершается ошибкой.
@@ -85,6 +85,11 @@ cargo run -p admin-api --bin crank-migrate -- plan --check
`invocation_logs.platform_api_key_id`, immutable local `product_events`, daily
denominator rollups и partial success index. Legacy history не backfill-ится;
external/unscoped credentials не получают fabricated key identity.
- V12 — global immutable artifact blob metadata и workspace-owned source
relations. Digest/ref и size фиксируются canonical constraints; MIME,
sensitivity и source lifecycle принадлежат scoped relation. Claim token/expiry
зарезервированы bounded all-or-none contract для последующего reconciliation,
но эта версия не запускает cleanup и не удаляет physical blobs.
- Каждая версия имеет contiguous `i64` version, стабильное имя, lowercase SHA-256, owner, phase, explicit readable schema min/max и backfill policy.
- `migrate` требует bounded cursor/batch policy; `contract` дополнительно требует tracked compatibility evidence и закрытого окна.
- Добавление descriptor без executable implementation блокируется `invalid_contract` до DB I/O.
+16
View File
@@ -176,6 +176,22 @@
"source_digest": "a439bbcdc9cc909d717ed5a868c7a51bd1ad3c49c4e85fd20933743ee3f31166",
"transactional": true,
"version": 11
},
{
"backfill": {
"kind": "none"
},
"checksum": "052058da53cd861b2a1af81243b34cc35204d665a9276f8ece563e061f8ebbfe",
"compatibility": "n-minus-one-readable",
"contract_evidence": null,
"name": "artifact-metadata-v12",
"owner": "crank-registry",
"phase": "expand",
"readable_schema_max": 12,
"readable_schema_min": 11,
"source_digest": "052058da53cd861b2a1af81243b34cc35204d665a9276f8ece563e061f8ebbfe",
"transactional": true,
"version": 12
}
]
}