Commit Graph

  • 2218c7c1b7 Merge pull request 'feat(parser): авто-переподключение к SHiP с backoff (1.3.0)' (#12) from dev into main main v1.3.0 claude 2026-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 claude 2026-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 claude 2026-06-03 16:08:12 +00:00
  • 87af7a89d2 feat(backpressure): окно поглощения writer↔consumer — пауза чтения SHiP по backlog стрима coopops 2026-06-03 16:07:45 +00:00
  • 19a905d54b Merge pull request 'fix(xtrim): не триммить un-acked pending + null-гард parseStreamEntries (баг #3)' (#9) from dev into main v1.1.3 claude 2026-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 claude 2026-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 claude 2026-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) claude 2026-05-28 11:57:17 +00:00
  • f6360132f0 release: убрать docker job + создавать релиз через Gitea API (#5) claude 2026-05-28 09:53:20 +00:00
  • 16bd87cca1 release: публикация npm через NODE_AUTH_TOKEN (Gitea не выдаёт OIDC) (#4) v1.1.0 claude 2026-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 ant 2026-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) claude 2026-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) claude 2026-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
  • 2eab959e58 docs(readme): задокументировать известное ограничение SHiP — схлопывание create+remove внутри блока coopops 2026-04-28 05:51:16 +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
  • 7579bc4cf4 fix(ship-reader): распаковывать action receipt variant-tuple — SHiP может отдавать receipt как [variantName, data], BigInt(undefined) ломал decodeBlocksResult coopops 2026-04-22 06:01:53 +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
  • 22574bb557 [549-18][@ant] feat: реализован Epic 7 Dead-Letter Queue CLI — инспекция и replay poison-messages без остановки pipeline coopops 2026-04-21 19:14:11 +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