4.4 KiB
Инструкция Codex: применить ANS-104 test5590 patch
Цель
Перевести пользовательский blockchain SHiNE на Frame v1 внутри готовых ANS-104 DataItems и убрать старый SHINE-ARCHIVE/файловое хранение цепочек.
Жёсткое ограничение
Не изменять ничего в ESP32/. В этом patch нет ни одного файла ESP32/**.
Remote/homeserver signer, завязанный на устройство, намеренно не мигрирован. Не пытаться «заодно исправить» его в рамках этого patch.
Применение
- Распаковать patch поверх корня репозитория, сохраняя относительные пути.
- Удалить все пути из корневого
DELETE_FILES.txt. - Проверить, что
git diff -- ESP32пуст. - Использовать чистую/dev test DB.
migration_v24.sqlнамеренно откажется мигрировать непустую blockchain DB, потому что backward compatibility со старым block format не требуется.
Arweave config
Минимально для публикации:
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:
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:
App=test5590
Channel child:
App=test5590
c=<canonical_channel_slug>
Root bundle:
Bundle-Format=binary
Bundle-Version=2.0.0
App=test5590-batch
Перед production-start test namespace должен быть заменён отдельным осознанным изменением.
Проверки после применения
Из корня репозитория:
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:
./gradlew testClasses
./gradlew test
Затем локальный smoke test по штатной инструкции проекта, например ./gradlew startLocal.
В среде, где готовился patch, Gradle wrapper не смог скачать Gradle 8.14 из-за отсутствия внешнего сетевого доступа к services.gradle.org. Поэтому полный Gradle compile/test обязательно прогнать после применения в обычной dev-среде.
Smoke scenario
- Создать/использовать тестового пользователя с локальным blockchain Ed25519 key.
- Добавить обычный block и убедиться, что
blocks.block_bytesначинается с ANS-104 DataItem, аdata_item_idзаполнен. - Создать channel и post; проверить
c=<canonical slug>. - Включить publisher, дождаться цикла или вызвать сервис тестом; проверить root Arweave tx.
- На второй чистой test DB включить importer и убедиться, что
App=test5590blocks восстанавливаются в правильном порядке. - Убедиться, что imported blocks имеют
arweave_publish_pending=false. - Проверить, что повторный discovery не создаёт дублей.
Не делать в этом patch
- не добавлять backward compatibility Frame v0;
- не возвращать
.bchstorage; - не возвращать SHINE-ARCHIVE;
- не менять ESP32;
- не мигрировать remote/homeserver signing без отдельного решения пользователя;
- не заменять
prevHashна Arweave DataItem ID.