GWPTD Marketplace Collector — автономный S3 Next
Единственный активный движок этой ветки — универсальный spec-runtime. Каждый
источник описан ProductSpec в ../specs/products/; endpoint-specific Python
коллекторов и fallback на старый dispatcher в Next нет.
Поток
ProductSpec + auth/transport/plugin
→ next_collector.py
→ collection_run + raw_payload + typed gwptd_intake table
→ kernel/etl/build_all.py (15 шагов)
→ gwptd_kernel facts/dimensions
→ Data API → /new
Это всё ещё действующий совмещённый поток. Рядом подготовлен, но пока не развёрнут независимый контур:
next_raw_collector.py / capture_source_profile.py
→ immutable gwptd_raw
parse_pending_captures.py → next_parser.py / next_source_parser.py
→ immutable gwptd_stage generation
activate_parse_generation.py
→ accepted generation → будущий canonical publisher
Его точные границы, S20/current/future 1C profiles, права и rollout gates:
docs/architecture/INDEPENDENT-SOURCE-PIPELINE.md.
Канонический S3 root: /opt/gwptd-analytics/repo. MySQL, PostgreSQL, MinIO,
collector, ETL, Data API и frontend находятся на S3; S2 не входит в write или
deploy path Next. Отдельный comparator читает с S2 только закрытые агрегаты и
пишет результат локально на S3.
Структура active runtime
next_collector.py— единственный CLI entrypoint;spec_runtime/next_registry.py— exact active ProductSpec allowlist;spec_runtime/runner.py,fetch_plugins.py,parse_plugins.py— общий transport/pagination/extraction runtime;mapper/— declarative mapper и только необходимые shared transforms;intake/— CollectionRun/raw/error envelope;kernel/etl/— штатные 15 шагов расчёта;monitoring/— freshness, reconciliation, invariants и Canon↔Next compare;archive/maintenance/— изолированные разовые backfill, не active runtime;scripts/crontab.s3-next.txt— каноническое расписание S3.
Параллельный, пока не активный source pipeline:
next_raw_collector.py— ProductSpec raw-only acquisition;spec_runtime/runner.py— parser-free acquisition runtime;spec_runtime/parsed_runner.py— лениво загружаемый старый combined parser/intake writer, отсутствующий в raw process;capture_source_profile.py— S20/1C raw-only acquisition;next_parser.py,next_source_parser.py— отдельные parser generations;parse_pending_captures.py— независимый drain накопившегося сырья;activate_parse_generation.py— отдельный control-plane switch;source_pipeline/иspecs/sources/— parser contracts без секретов;specs/acquisition/products/иspecs/acquisition/sources/— отдельные parser-free acquisition contracts, проверяемые генераторами;scripts/run_source_pipeline.sh— разные DB identities на одной безопасной operational оболочке;scripts/crontab.s3-source-pipeline.example.txt— не действующий cron.
Проверка на S3
Не запускайте Python напрямую для live-сбора: wrapper загружает root-owned
секреты, фиксирует локальную S3 DB и включает fail-closed contract. Штатные
run_collector.sh и run_kernel_etl.sh запускает только root crontab из
scripts/crontab.s3-next.txt. Ручной collector или build_all в день
естественной P1B-проверки запрещён: он делает доказательство цикла
неприемлемым.
cd /opt/gwptd-analytics/repo
# декларативный реестр без обращения к API
marketplace-collector-v3/venv/bin/python3 \
marketplace-collector-v3/next_collector.py --list
# read-only проверка завершённого естественного P1B-цикла
cd marketplace-collector-v3
PYTHONDONTWRITEBYTECODE=1 ./venv/bin/python3 -B -m monitoring.p1b3_natural_cycle \
--slot-date YYYY-MM-DD
Одноточечный тестовый полигон допускается только в явно согласованное окно и
не заменяет штатный cron, receipt или естественный P1B-цикл. Перед ним нужны
проверка host process, DB lease и последнего collection_run: дубль того же
marketplace запрещён. Для обычной эксплуатации использовать
S3-NEXT-AUTONOMOUS-RUNBOOK.md
и P1B runbook.
Секреты
Operational store: /etc/gwptd/secrets/runtime.env, root:root, mode 0600.
Секреты не передаются в аргументах процесса, Git и документации. Полный список
обязательных имён проверяет scripts/deploy/deploy-s3-next.sh; значения он не
печатает.
Тесты
PYTHONPATH=marketplace-collector-v3 python -m pytest \
marketplace-collector-v3/tests -q
python scripts/architecture/measure_next_change_surface.py --check
python scripts/architecture/check_s3_next_frontend_cleanroom.py
81 ProductSpec имеют exact golden parity. Maintenance запускается только через
archive/maintenance/run.sh с GWPTD_MAINTENANCE_CONFIRM=YES и не включён в
cron либо основной collector image.
Эксплуатационная топология, deploy и rollback:
docs/remediation/S3-NEXT-AUTONOMOUS-RUNBOOK.md.