2218c7c1b7
Merge pull request 'feat(parser): авто-переподключение к SHiP с backoff (1.3.0)' (#12) from dev into main
main
v1.3.0
claude2026-06-05 13:01:02 +00:00
92811c258f
feat(parser): авто-переподключение к SHiP через ReconnectSupervisor с backoff
dev
coopops
2026-06-05 13:00:11 +00:00
3bf7cf9c7a
Merge pull request 'docs(readme): backpressure-окно со схемой + конфиг' (#11) from dev into main
claude2026-06-04 05:44:26 +00:00
be67debf51
docs(readme): раздел про backpressure-окно со схемой + конфиг в примерах
coopops
2026-06-04 05:43:48 +00:00
3dbd2c9116
Merge pull request 'feat(backpressure): окно поглощения writer↔consumer (защита Redis RAM на репарсинге)' (#10) from dev into main
v1.2.0
claude2026-06-03 16:08:12 +00:00
19a905d54b
Merge pull request 'fix(xtrim): не триммить un-acked pending + null-гард parseStreamEntries (баг #3)' (#9) from dev into main
v1.1.3
claude2026-06-03 13:02:49 +00:00
c8b7107c3a
fix(xtrim): не триммить un-acked pending + гард null-записей в parseStreamEntries
coopops
2026-06-03 13:02:21 +00:00
71f7a22436
Merge pull request 'fix(block-time): on-chain timestamp блока вместо wall-clock' (#8) from dev into main
v1.1.2
claude2026-06-03 11:57:39 +00:00
5319209cb2
fix(block-time): брать on-chain timestamp блока из signed_block header, не wall-clock
coopops
2026-06-03 11:57:14 +00:00
30475c055f
Merge pull request 'fix(native-delta): декодировать нативные строки ABI вместо JSON.parse' (#7) from dev into main
v1.1.1
claude2026-06-03 09:07:56 +00:00
39eabb737b
fix(native-delta): декодировать нативные строки ABI, а не JSON.parse
coopops
2026-06-03 09:06:13 +00:00
d71a2d696d
release: синк release.yml с main (без docker, Gitea API, NPM_TOKEN) (#6)
claude2026-05-28 11:57:17 +00:00
f6360132f0
release: убрать docker job + создавать релиз через Gitea API (#5)
claude2026-05-28 09:53:20 +00:00
16bd87cca1
release: публикация npm через NODE_AUTH_TOKEN (Gitea не выдаёт OIDC) (#4)
v1.1.0
claude2026-05-28 05:56:17 +00:00
c5dc3ca799
release: публикация npm через NODE_AUTH_TOKEN, без OIDC/provenance
fix/release-npm-token
coopops
2026-05-28 05:55:17 +00:00
677dc35bde
Merge pull request 'release: parser2 1.1.0 + ship-reader 0.2.0 (полный SHiP action_trace)' (#3) from dev into main
ant2026-05-27 06:36:18 +00:00
05d413b37f
ci: запускать только на pull_request, убрать триггер push
coopops
2026-05-26 16:17:12 +00:00
37efb4834e
ci: корректная интеграция на DinD-раннере (docker cp + сеть jobа + redis по имени) (#2)
claude2026-05-26 15:01:55 +00:00
d575da529b
ci: поднимать ноду через docker cp вместо bind-mount (DinD)
coopops
2026-05-26 12:52:02 +00:00
9f21c61a75
ci: перезапуск прогона на dev — проверка после очистки диска раннера
coopops
2026-05-26 11:56:12 +00:00
fce498ce45
feat(events): полный SHiP action_trace в ActionEvent (transaction_id, creator_action_ordinal, receipt.auth_sequence, …) (#1)
claude2026-05-26 04:26:33 +00:00
1c3cf56dd0
ci: монтировать pristine-копию node-config через mktemp + запас по таймауту
feat/action-trace-fields
coopops
2026-05-26 04:25:54 +00:00
82d3ed2643
ci: сносить остаточный контейнер blockchain перед docker run
coopops
2026-05-25 17:51:44 +00:00
1ee77e3427
ci: увеличить бюджет ожидания Chain API до 120 попыток + curl --max-time
coopops
2026-05-25 17:16:40 +00:00
9e37cb585d
feat(events): прокинуть полный SHiP action_trace в ActionEvent — transaction_id, creator_action_ordinal, receipt.auth_sequence, console/elapsed/context_free/account_ram_deltas
coopops
2026-05-25 16:29:53 +00:00
0c3c3bc002
[549-27][@ant] config: переключить publish обратно на OIDC trusted publishing и синхронизировать URL репозитория coopenomics/parser→coopenomics/parser2 — npm Trusted Publisher теперь настроен на @coopenomics/parser2 через workflow релиза нового имени репо, NPM_TOKEN больше не нужен и sigstore provenance снова включён; bump до 1.0.3 чтобы Lerna опубликовала новую версию и протестировать OIDC-флоу с новой конфигурацией; URL-ы в README/package.json/examples подтянуты под новое имя github-репо parser2
v1.0.3
coopops
2026-04-23 16:00:32 +00:00
a1f72d3352
[549-27][@ant] fix(docker): обновить пути packages/parser/→packages/parser2/ — предыдущий sed не покрыл Dockerfile (там слэш после parser а не word-boundary), docker build ломался на COPY packages/parser/package.json не найден; теперь Dockerfile согласован с новым расположением пакета и ENTRYPOINT указывает на parser2/dist/cli/index.js
v1.0.2
coopops
2026-04-23 15:50:32 +00:00
ecc6a25734
[549-27][@ant] config: временно вернуть NPM_TOKEN и провенанс=false в publish-step — первая публикация @coopenomics/parser2 не может идти через OIDC trusted publishing потому что на стороне npm Trusted Publisher настраивается только для уже существующего пакета, а parser2 ещё не создан в реестре; после первого publish добавим Trusted Publisher на npm и вернёмся на OIDC без токена
coopops
2026-04-23 15:41:10 +00:00
a464cdbd2d
[549-27][@ant] chore: пустой коммит чтобы триггернуть actions после сбоя первоначального триггера
coopops
2026-04-23 14:44:40 +00:00
167c885a70
[549-27][@ant] refactor: вернуть имя parser2 обратно (полный реверт 549-20) — существующий @coopenomics/parser@2026.x в mono-ai живёт в продакшене (dicoop/cooparser всё ещё деплоится), параллельный publish @coopenomics/parser@1.0.x из этого репо создавал коллизию ожиданий у потребителей; раздельные имена parser2/parser устраняют путаницу. Папка packages/parser→parser2, пакет @coopenomics/parser→@coopenomics/parser2, docker image dicoop/parser→dicoop/parser2, Redis prefix parser:→parser2: (ce:parser:, abi, sub, sync, subs, reparse), метрики parser_*→parser2_*, bin parser2. Версия bumpnута до 1.0.2 для нового публичного пакета @coopenomics/parser2
coopops
2026-04-23 14:43:22 +00:00
aff8a2451d
[549-23][@ant] feat(parser): bump до 1.0.1 и добавить Docker-секцию в root README — проверить npm trusted publishing через GitHub Actions OIDC (на v1.0.0 lerna скипала No unpublished release found), документировать публичный образ dicoop/parser с docker-compose примером Redis+parser и полным parser.config.yaml шаблоном для пользователей
v1.0.1
coopops
2026-04-22 15:49:38 +00:00
2f391db4b4
[549-22][@ant] config: поменять Docker Hub namespace coopenomics→dicoop — реальный owner Docker Hub организации для этого проекта dicoop (coopenomics там не существует), иначе docker push падал с insufficient_scope; image теперь публикуется как docker.io/dicoop/parser:<version>
v1.0.0
coopops
2026-04-22 15:44:33 +00:00
94dbcb8400
[549-22][@ant] config: переключить Docker push на Docker Hub и npm publish на trusted publishing (OIDC) — Docker Hub доступнее без префикса реестра чем ghcr (docker pull coopenomics/parser), а OIDC-публикация в npm избавляет от ручного обновления NPM_TOKEN который рано или поздно забудется и сломает релиз; release.yml теперь использует DOCKERHUB_USERNAME/DOCKERHUB_TOKEN для docker login и id-token write permission с NPM_CONFIG_PROVENANCE=true для sigstore-подписанной публикации через настроенный npm Trusted Publisher
coopops
2026-04-22 15:36:55 +00:00
0acfd25a64
[549-21][@ant] chore: пустой коммит для ретригера release workflow — после исправления Dockerfile и удаления тега v1.0.0 нужно заново пройти релизный пайплайн чтобы Docker образ собрался и запушился в ghcr.io
coopops
2026-04-22 11:07:09 +00:00
a625b3ae05
[549-21][@ant] fix(docker): обновить пути parser2→parser, убрать несуществующий корневой LICENSE/NOTICE, переключить ENTRYPOINT на ESM index.js — Docker build падал с '/LICENSE: not found' после переименования папки и отсутствия корневой лицензии; теперь используем per-package LICENSE+NOTICE что также правильнее для атрибуции
coopops
2026-04-22 11:06:11 +00:00
b023f26a8f
[549-21][@ant] config: переименовать root npm-scripts version/publish → release:version/release:publish — имена publish и version зарезервированы как npm lifecycle hooks, Lerna в workspace вызывала сама себя через npm publish трактовав root script как lifecycle handler (@coopenomics/parser@1.0.0 успел, ship-reader упал на рекурсии); ship-reader теперь сможет опубликоваться
coopops
2026-04-22 11:03:11 +00:00
fd7ff5fcaa
[549-21][@ant] config: убрать id-token permission и явно NPM_CONFIG_PROVENANCE=false — npm автоматически включает provenance когда видит id-token: write + CI=true, а для новых пакетов это блокирует publish с E404; включим обратно после первого успешного релиза
coopops
2026-04-22 10:53:04 +00:00
cf988d8c38
[549-21][@ant] config: отключить NPM_CONFIG_PROVENANCE на время первого publish — sigstore attestation требует чтобы пакет уже существовал в реестре, блокирует первоначальную публикацию @coopenomics/coopos-ship-reader; включим обратно после того как пакеты созданы
coopops
2026-04-22 10:50:59 +00:00
42393ff1ef
[549-21][@ant] config: добавить publishConfig.access=public в пакеты — npm требует явного access для первой публикации scoped пакетов @coopenomics/* особенно при включённом provenance (Lerna падал с "Can't generate provenance for new or private package")
coopops
2026-04-22 10:48:54 +00:00
b5cf922a7b
[549-21][@ant] config: интегрировать Lerna для управления пакетами и регенерировать lockfile — упростить multi-package версионирование и публикацию перед первым релизом в npm; lerna.json с independent versioning + pnpm as npmClient + allowBranch=main, npm-скрипты changed/version/publish/release в root package.json для локального интерактивного bump и dry-run проверок, release.yml переключён на lerna publish from-package --yes (smart skip неизменных версий вместо ручного version-check), попутно регенерирован pnpm-lock.yaml который после rename parser2→parser провалил CI на ERR_PNPM_OUTDATED_LOCKFILE
coopops
2026-04-22 10:47:38 +00:00
3bdd240d8a
[549-20][@ant] refactor: переименовать parser2→parser, добавить root README и автопубликацию из main — привести репозиторий к релизной форме под публичным именем @coopenomics/parser до первого npm publish; единое имя папки, Redis key prefix (parser2:→parser:), метрик (parser2_*→parser_*) и комментариев устраняет путаницу в CLI, observability и docs; root README описывает монорепу, архитектурную схему, процесс релиза; ci.yml теперь только на push/PR в main и dev, отдельный release.yml на push в main детектит bump версии, публикует пакеты в npm, тегирует, создаёт GitHub Release через changelogithub и пушит Docker-образ в ghcr
coopops
2026-04-22 10:40:35 +00:00
e6e986cb86
[549-19][@ant] refactor: отказаться от abieos в пользу wharfkit-only и расширить unit-покрытие до 80%+ — native binding давал только 2-5× на типичной нагрузке с крупными транзакциями, не оправдывая инфраструктурной возни с нативной компиляцией и GLIBCXX-зависимостями; параллельно закрыты пробелы в тестах (ParserClient, XtrimSupervisor, RedisKeys, ShipProtocol, NativeRowStream, ForkDetector edge cases — +86 тестов) чтобы зафиксировать baseline перед будущими оптимизациями wharfkit
coopops
2026-04-22 10:16:57 +00:00
4d6316dc50
cleanup: убрать debug логи после того как integration тест начал проходить
coopops
2026-04-22 07:22:10 +00:00
7ab332efaa
fix(ship-reader): конвертировать wharfkit Name объекты в строки — trace.account/name приходили как Name (не string), worker.Serializer.decode пытался синтезировать ABI из Name-класса и падал на abiName
coopops
2026-04-22 07:11:54 +00:00
c3f36223e2
debug: dump full stack + ABI + raw hex for eosio.token decode failures
coopops
2026-04-22 07:02:41 +00:00
1414a6509f
fix(parser): использовать abi.toJSON() вместо JSON.stringify(abi) — wharfkit ABI-объект сериализуется во внутренний формат вместо канонической схемы, из-за чего worker.Serializer.decode не находил типы
coopops
2026-04-22 06:49:03 +00:00
355e44e92b
debug: логировать ошибки десериализации action data для диагностики integration тестов
coopops
2026-04-22 06:38:54 +00:00
d8491c588f
fix(parser): сериализовать BigInt как string в eventToFields — JSON.stringify не умеет BigInt, action.global_sequence уходил в Redis как ошибка
coopops
2026-04-22 06:29:05 +00:00
6db2eddd81
fix(ship-reader): конвертировать block_id и chain_id в строки — wharfkit ABI decoder возвращает Checksum256 объект, а downstream код ожидает hex-строку (blockId.slice())
coopops
2026-04-22 06:20:20 +00:00
6166afa279
fix(ship-reader): брать global_sequence из receipt — в action_trace_v1 top-level global_sequence отсутствует, только в action_receipt
coopops
2026-04-22 06:11:23 +00:00
83b82c7972
test: увеличить таймаут до 40s, включить info логи, показывать parser errors — нужна диагностика почему событие не доходит до клиента
coopops
2026-04-22 05:52:50 +00:00
4b6fc95eca
fix(test): убрать keyPrefix и добавить FLUSHDB — ioredis keyPrefix не применялся к XGROUP CREATE что вызывало NOGROUP между Parser (писатель) и ParserClient (читатель)
coopops
2026-04-22 05:44:37 +00:00
aac54b4e5e
fix(test): общий keyPrefix для Parser и ParserClient — Date.now() в двух местах давал разные префиксы, клиент не находил consumer group
coopops
2026-04-22 05:32:43 +00:00
6a37d997ef
fix: XREADGROUP передавал consumer name дважды, тест использовал transfer вместо issue — у coopenomics-fork eosio.token есть проверка членства получателя в wallet program, а синтаксис XREADGROUP GROUP <g> <c> требует ровно 3 аргумента
coopops
2026-04-22 05:25:04 +00:00
57b3b66513
fix(build): собирать deserialize.worker.cjs, перевести пакет на ESM-only — Piscina требует отдельный .cjs файл, а top-level await несовместим с CJS форматом
coopops
2026-04-22 05:14:08 +00:00
5387e64ed8
fix(test): сериализовать action data локально через @wharfkit/antelope — эндпоинт /v1/chain/abi_json_to_bin удалён в LEAP 5.x
coopops
2026-04-22 04:59:56 +00:00
06ed9e375e
fix(ci): смонтировать node-config как read-write — nodeos создаёт protocol_features/ внутри config-dir при старте
coopops
2026-04-22 04:50:23 +00:00
f5fbef2287
fix(ci): запускать nodeos явно через docker run — образ dicoop/blockchain не имеет CMD, services: не поддерживает передачу команды
coopops
2026-04-22 04:41:46 +00:00
748c485cb5
feat(test): добавить end-to-end integration тест с реальным блокчейном — убедиться что парсер захватывает eosio.token::transfer от SHiP до ParserClient
coopops
2026-04-21 20:33:02 +00:00
bf79f589f8
fix(ci): собирать ship-reader перед typecheck/test — TypeScript не находил .d.ts зависимого workspace пакета без предварительного build
coopops
2026-04-21 20:18:44 +00:00
fb21b3fd10
fix: убрать @eosrio/node-abieos из optionalDependencies и обновить CI — устранить рассинхрон lockfile и deprecation warning pnpm/action-setup@v3
coopops
2026-04-21 20:09:21 +00:00
7c1f44b519
[549-12][@ant] docs: добавить исчерпывающие JSDoc комментарии ко всем исходным файлам src/ — объяснить алгоритмы, инварианты и архитектурные решения для сопровождаемости кода
coopops
2026-04-21 19:59:40 +00:00
ac25c32940
[549-12][@ant] feat: v1.0.0 — пример verifier-like, три документа, бенчмарк-отчёт, CI/CD pipeline и Dockerfile — обеспечить готовность пакета к публичному релизу
coopops
2026-04-21 19:31:46 +00:00
2f0e13e201
[549-11][@ant] feat: добавить ForkDetector, ReconnectSupervisor и режим irreversibleOnly — автоматически восстанавливаться после форков и обрывов соединения без ручного вмешательства оператора
coopops
2026-04-21 19:25:55 +00:00
cc3416c94b
[549-10][@ant] feat: добавить Pino-логгер, метрики Prometheus и /health HTTP endpoint — обеспечить операционную наблюдаемость парсера без внешней инструментации
coopops
2026-04-21 19:23:34 +00:00
7d38acebd0
[549-17][@ant] feat: реализован Epic 6 Native-Deltas End-to-End — эмиссия NativeDeltaEvent для всех нативных таблиц SHiP в единый Redis-стрим
coopops
2026-04-21 19:06:44 +00:00
b698c596ed
[549-16][@ant] feat: реализован Epic 5 Subscription Lifecycle CLI — операторское управление подписками и ABI без ручных Redis команд
coopops
2026-04-21 18:52:40 +00:00
2b63322b23
[549-15][@ant] feat: реализован Epic 4 AbiStore + AbiBootstrapper — исторический ABI в Redis ZSET без падений при reparse
coopops
2026-04-21 18:28:22 +00:00
a98aa3d665
[549-14][@ant] feat: реализован ParserClient + Subscription Manager (Epic 3) — single-active-consumer с lock/recovery для надёжной доставки событий блокчейна
coopops
2026-04-21 18:13:24 +00:00
205618cab2
refactor: переименован пакет @coopenomics/parser2 → @coopenomics/parser — публичное имя без суффикса версии
coopops
2026-04-21 17:55:30 +00:00
763126b863
[549-13][@ant] feat: реализован @coopenomics/parser2 v0.1.0 (Epic 2) — ядро индексера для публикации блокчейн-событий в Redis unified stream
coopops
2026-04-21 17:49:14 +00:00
399496d51c
[549-3][@ant] feat: реализован @coopenomics/coopos-ship-reader v0.1.0 — SHiP-транспортная основа для универсального индексера блокчейна
coopops
2026-04-21 17:28:45 +00:00