SHA256
109 lines
4.4 KiB
Markdown
109 lines
4.4 KiB
Markdown
# Инструкция Codex: применить ANS-104 test5590 patch
|
||
|
||
## Цель
|
||
|
||
Перевести пользовательский blockchain SHiNE на Frame v1 внутри готовых ANS-104 DataItems и убрать старый SHINE-ARCHIVE/файловое хранение цепочек.
|
||
|
||
## Жёсткое ограничение
|
||
|
||
**Не изменять ничего в `ESP32/`.** В этом patch нет ни одного файла `ESP32/**`.
|
||
|
||
Remote/homeserver signer, завязанный на устройство, намеренно не мигрирован. Не пытаться «заодно исправить» его в рамках этого patch.
|
||
|
||
## Применение
|
||
|
||
1. Распаковать patch поверх корня репозитория, сохраняя относительные пути.
|
||
2. Удалить все пути из корневого `DELETE_FILES.txt`.
|
||
3. Проверить, что `git diff -- ESP32` пуст.
|
||
4. Использовать чистую/dev test DB. `migration_v24.sql` намеренно откажется мигрировать непустую blockchain DB, потому что backward compatibility со старым block format не требуется.
|
||
|
||
## Arweave config
|
||
|
||
Минимально для публикации:
|
||
|
||
```properties
|
||
arweave.blocks.publish.enabled=true
|
||
arweave.blocks.publish.intervalMinutes=15
|
||
arweave.blocks.publish.gateway=https://arweave.net
|
||
arweave.blocks.publish.walletJwkPath=/ABSOLUTE/SECRET/PATH/arweave-wallet.json
|
||
```
|
||
|
||
JWK не коммитить.
|
||
|
||
Для discovery/import:
|
||
|
||
```properties
|
||
arweave.blocks.sync.enabled=true
|
||
arweave.blocks.sync.intervalMinutes=15
|
||
arweave.blocks.sync.gateway=https://turbo-gateway.com
|
||
arweave.blocks.sync.startBlockHeight=0
|
||
```
|
||
|
||
На тестах желательно установить `startBlockHeight` на высоту начала `test5590`, чтобы не сканировать лишнюю историю.
|
||
|
||
## Test namespace
|
||
|
||
Child DataItem:
|
||
|
||
```text
|
||
App=test5590
|
||
```
|
||
|
||
Channel child:
|
||
|
||
```text
|
||
App=test5590
|
||
c=<canonical_channel_slug>
|
||
```
|
||
|
||
Root bundle:
|
||
|
||
```text
|
||
Bundle-Format=binary
|
||
Bundle-Version=2.0.0
|
||
App=test5590-batch
|
||
```
|
||
|
||
Перед production-start test namespace должен быть заменён отдельным осознанным изменением.
|
||
|
||
## Проверки после применения
|
||
|
||
Из корня репозитория:
|
||
|
||
```bash
|
||
node --check shine-UI/js/services/ans104-data-item.js
|
||
node --check shine-UI/js/services/auth-service.js
|
||
node --check shine-UI/js/app.js
|
||
node --check shine-UI/js/pages/settings-view.js
|
||
```
|
||
|
||
Java/Gradle:
|
||
|
||
```bash
|
||
./gradlew testClasses
|
||
./gradlew test
|
||
```
|
||
|
||
Затем локальный smoke test по штатной инструкции проекта, например `./gradlew startLocal`.
|
||
|
||
В среде, где готовился patch, Gradle wrapper не смог скачать Gradle 8.14 из-за отсутствия внешнего сетевого доступа к `services.gradle.org`. Поэтому полный Gradle compile/test обязательно прогнать после применения в обычной dev-среде.
|
||
|
||
## Smoke scenario
|
||
|
||
1. Создать/использовать тестового пользователя с локальным blockchain Ed25519 key.
|
||
2. Добавить обычный block и убедиться, что `blocks.block_bytes` начинается с ANS-104 DataItem, а `data_item_id` заполнен.
|
||
3. Создать channel и post; проверить `c=<canonical slug>`.
|
||
4. Включить publisher, дождаться цикла или вызвать сервис тестом; проверить root Arweave tx.
|
||
5. На второй чистой test DB включить importer и убедиться, что `App=test5590` blocks восстанавливаются в правильном порядке.
|
||
6. Убедиться, что imported blocks имеют `arweave_publish_pending=false`.
|
||
7. Проверить, что повторный discovery не создаёт дублей.
|
||
|
||
## Не делать в этом patch
|
||
|
||
- не добавлять backward compatibility Frame v0;
|
||
- не возвращать `.bch` storage;
|
||
- не возвращать SHINE-ARCHIVE;
|
||
- не менять ESP32;
|
||
- не мигрировать remote/homeserver signing без отдельного решения пользователя;
|
||
- не заменять `prevHash` на Arweave DataItem ID.
|