{
    "ok": true,
    "stage": "status",
    "supplier": "Vincea + INDA",
    "version": "3.3.5",
    "current_version": "3.3.5",
    "build": "2026-08-13-approved-characteristic-map-safe-apply",
    "current_route": "/vincea-auto-334",
    "writes_performed": false,
    "production_ready": false,
    "last_cycle_version": "3.3.9",
    "last_cycle_version_matches_current": false,
    "version_drift_blocker": "Permanent CRON or last executed cycle is still on 3.3.9; switch CRON to /vincea-auto-334 and run current version.",
    "self_check": {
        "ok": true,
        "stage": "self-check",
        "supplier": "Vincea + INDA",
        "version": "3.3.5",
        "build": "2026-08-13-approved-characteristic-map-safe-apply",
        "writes_performed": false,
        "checks": {
            "php_7_3_compatible_runtime": true,
            "curl": true,
            "ziparchive": true,
            "xmlreader": true,
            "dom": true,
            "moguta_db": true,
            "models_product": true,
            "property_class": true,
            "property_create_string": true,
            "product_add": true,
            "product_add_id_revalidated_by_exact_article": true,
            "product_fast_update": true,
            "product_get": true,
            "product_storage": true,
            "product_storage_readback": true,
            "product_storage_total": true,
            "product_storage_recalc": true,
            "product_storage_fallback_replace": true,
            "numeric_storage_aggregate_positive_sources_only": true,
            "negative_storage_count_not_stock_without_explicit_source_rule": true,
            "negative_physical_storage_normalization": true,
            "native_storefront_count_verification": true,
            "category_characteristic_mapping_audit_read_only": true,
            "manual_characteristic_mapping_wizard_admin_only": true,
            "manual_characteristic_mapping_save_is_plan_only": true,
            "manual_characteristic_mapping_shows_linked_global_unlinked": true,
            "property_create_definition": true,
            "property_create_category_link": true,
            "approved_characteristic_map_embedded_complete": true,
            "approved_characteristic_create_deduplicated": true,
            "approved_characteristic_unit_transforms_explicit_only": true,
            "product_delete": true,
            "product_delete_images": true,
            "product_delete_image_folder": true,
            "images_construction": true,
            "image_db_fields": true,
            "ordinary_brand_id_118_seen": true,
            "ordinary_brand_operational_lock_118": true,
            "plugin_brand_separate": true,
            "other_brand_like_fields_ignored": true,
            "vincea_order_flag_property_515_exact": true,
            "images_construction_pipe_contract": true,
            "fast_update_direct_db_contract": true,
            "protected_cron_control_config": true,
            "no_query_string_secret": true
        },
        "order_flag_runtime": {
            "ok": true,
            "property_id": 515,
            "expected_name": "Под заказ[prop attr=Общая]",
            "expected_value": "Да",
            "actual": {
                "id": "515",
                "name": "Под заказ[prop attr=Общая]",
                "type": "string",
                "activity": "1",
                "all_category": "1",
                "plugin": ""
            }
        },
        "brand_runtime": {
            "operational_ordinary_ids": [
                118
            ],
            "ordinary_candidate_ids": [
                118,
                145,
                169,
                175,
                180,
                184,
                222,
                262,
                376,
                394,
                421,
                458,
                544,
                545,
                697
            ],
            "ignored_other_ordinary_ids": [
                145,
                169,
                175,
                180,
                184,
                222,
                262,
                376,
                394,
                421,
                458,
                544,
                545,
                697
            ],
            "plugin_ids": [
                6,
                581
            ],
            "policy": "Only ordinary Brand ID 118 participates in Vincea/INDA ownership and new-product Brand writes; other Brand-like fields are diagnostic only."
        },
        "disk": {
            "site_dir": "/var/www/u1437730/data/www/xn----7sbajmsollb4bo4b.xn--p1ai",
            "free_bytes": 116997668864,
            "total_bytes": 248505155584,
            "free_percent": 47.079999999999998,
            "heavy_start_free_bytes": 4294967296,
            "heavy_stop_free_bytes": 2147483648,
            "heavy_allowed": true,
            "new_cards_min_free_bytes": 1073741824,
            "new_cards_allowed": true
        },
        "automatic_policy": {
            "all_checks_run_inside_cron": true,
            "light_stages": "price + supplier-ledger Moscow materialization + physical negative/duplicate stock normalization + native storefront count verification + existing content + approved-characteristic schema status + approved-map-only integration-created characteristic backfill",
            "heavy_stages": "supplier image downloads auto-start only when free disk >= 4 GiB and stop before reserve falls below 2 GiB",
            "new_products": "photo-free new product cards may be created automatically while image downloads are paused only after the administrator-approved characteristic schema is applied and verified; approved mapped/create rows fill only empty fields, pending rows are skipped, explicit transforms are enforced; exact official photos are deferred to a later cycle",
            "order_flag": "Vincea-specific approved rule: Под заказ[prop attr=Общая] ID 515 is forced to Да for every safely-owned Vincea product, including products currently in stock. INDA remains unchanged.",
            "new_products_currently_need_no_manual_switch": true,
            "cron_command": "single curl command uses protected config outside web root; secret is sent in POST body, not URL or command text"
        }
    },
    "last_cycle": {
        "ok": false,
        "stage": "cron",
        "supplier": "Vincea + INDA",
        "version": "3.3.9",
        "build": "2026-08-13-order-flag-completion-drift-audit",
        "cycle_id": "20260814-223002-214741",
        "started_at": "2026-08-14T22:30:02+10:00",
        "writes_performed": false,
        "single_controller": true,
        "resume_context": {
            "cycle_id": "20260814-220002-203358",
            "version": "3.3.9",
            "build": "2026-08-13-order-flag-completion-drift-audit",
            "stage": "existing_price_stock",
            "status": "running",
            "updated_at": "2026-08-14T22:00:08+10:00"
        },
        "stages": {
            "self_check": {
                "ok": true,
                "stage": "self-check",
                "supplier": "Vincea + INDA",
                "version": "3.3.9",
                "build": "2026-08-13-order-flag-completion-drift-audit",
                "writes_performed": false,
                "checks": {
                    "php_7_3_compatible_runtime": true,
                    "curl": true,
                    "ziparchive": true,
                    "xmlreader": true,
                    "dom": true,
                    "moguta_db": true,
                    "models_product": true,
                    "property_class": true,
                    "property_create_string": true,
                    "product_add": true,
                    "product_add_id_revalidated_by_exact_article": true,
                    "product_fast_update": true,
                    "product_get": true,
                    "product_storage": true,
                    "product_storage_readback": true,
                    "product_storage_total": true,
                    "product_storage_recalc": true,
                    "product_storage_fallback_replace": true,
                    "numeric_storage_aggregate_positive_sources_only": true,
                    "negative_storage_count_not_stock_without_explicit_source_rule": true,
                    "negative_physical_storage_normalization": true,
                    "native_storefront_count_verification": true,
                    "category_characteristic_mapping_audit_read_only": true,
                    "manual_characteristic_mapping_wizard_admin_only": true,
                    "manual_characteristic_mapping_save_is_plan_only": true,
                    "manual_characteristic_mapping_shows_linked_global_unlinked": true,
                    "property_create_definition": true,
                    "property_create_category_link": true,
                    "approved_characteristic_map_embedded_complete": true,
                    "approved_characteristic_map_zero_pending_runtime": true,
                    "approved_characteristic_map_ignore_49_runtime": true,
                    "approved_characteristic_create_deduplicated": true,
                    "approved_characteristic_unit_transforms_explicit_only": true,
                    "approved_characteristic_backfill_persistent_cursor": true,
                    "approved_characteristic_backfill_failure_does_not_advance_cursor": true,
                    "production_characteristic_audit_is_fast_delta_only": true,
                    "pending_characteristic_second_pass_admin_only": true,
                    "pending_characteristic_ignore_requires_explicit_save": true,
                    "pending_characteristic_second_pass_is_plan_only": true,
                    "final_characteristic_map_has_zero_pending": true,
                    "final_characteristic_ignore_is_known_no_write": true,
                    "final_characteristic_second_pass_targeted_repair_cursor": true,
                    "approved_multisource_merge_cat176_property360": true,
                    "approved_multisource_merge_appends_distinct_values": true,
                    "approved_multisource_merge_deduplicates_exact_values": true,
                    "completed_full_backfill_not_repeated_for_pending_only_map_finalize": true,
                    "product_delete": true,
                    "product_delete_images": true,
                    "product_delete_image_folder": true,
                    "images_construction": true,
                    "image_db_fields": true,
                    "ordinary_brand_id_118_seen": true,
                    "ordinary_brand_operational_lock_118": true,
                    "plugin_brand_separate": true,
                    "other_brand_like_fields_ignored": true,
                    "vincea_order_flag_property_515_exact": true,
                    "vincea_order_flag_full_backfill_has_durable_completion_state": true,
                    "vincea_order_flag_completed_pass_uses_bulk_drift_audit": true,
                    "vincea_order_flag_drift_repairs_only_mismatches": true,
                    "vincea_order_flag_failure_does_not_advance_cursor": true,
                    "images_construction_pipe_contract": true,
                    "fast_update_direct_db_contract": true,
                    "protected_cron_control_config": true,
                    "no_query_string_secret": true
                },
                "order_flag_runtime": {
                    "ok": true,
                    "property_id": 515,
                    "expected_name": "Под заказ[prop attr=Общая]",
                    "expected_value": "Да",
                    "actual": {
                        "id": "515",
                        "name": "Под заказ[prop attr=Общая]",
                        "type": "string",
                        "activity": "1",
                        "all_category": "1",
                        "plugin": ""
                    }
                },
                "brand_runtime": {
                    "operational_ordinary_ids": [
                        118
                    ],
                    "ordinary_candidate_ids": [
                        118,
                        145,
                        169,
                        175,
                        180,
                        184,
                        222,
                        262,
                        376,
                        394,
                        421,
                        458,
                        544,
                        545,
                        697
                    ],
                    "ignored_other_ordinary_ids": [
                        145,
                        169,
                        175,
                        180,
                        184,
                        222,
                        262,
                        376,
                        394,
                        421,
                        458,
                        544,
                        545,
                        697
                    ],
                    "plugin_ids": [
                        6,
                        581
                    ],
                    "policy": "Only ordinary Brand ID 118 participates in Vincea/INDA ownership and new-product Brand writes; other Brand-like fields are diagnostic only."
                },
                "disk": {
                    "site_dir": "/var/www/u1437730/data/www/xn----7sbajmsollb4bo4b.xn--p1ai",
                    "free_bytes": 117512208384,
                    "total_bytes": 248505155584,
                    "free_percent": 47.289999999999999,
                    "heavy_start_free_bytes": 4294967296,
                    "heavy_stop_free_bytes": 2147483648,
                    "heavy_allowed": true,
                    "new_cards_min_free_bytes": 1073741824,
                    "new_cards_allowed": true
                },
                "automatic_policy": {
                    "all_checks_run_inside_cron": true,
                    "light_stages": "price + supplier-ledger Moscow materialization + physical negative/duplicate stock normalization + native storefront count verification + existing content + fast final-map delta audit + final approved-characteristic schema status + completed generic backfill state + cursor-based targeted repair only for newly actionable second-pass pairs",
                    "heavy_stages": "supplier image downloads auto-start only when free disk >= 4 GiB and stop before reserve falls below 2 GiB",
                    "new_products": "photo-free new product cards may be created automatically while image downloads are paused only after the administrator-approved characteristic schema is applied and verified; approved mapped/create rows fill only empty fields, pending rows are skipped, explicit transforms are enforced; exact official photos are deferred to a later cycle",
                    "order_flag": "Vincea-specific approved rule: Под заказ[prop attr=Общая] ID 515 is forced to Да for every safely-owned Vincea product. Historical full backfill is cursor-based and completes once; after completion each CRON performs a lightweight bulk drift audit and repairs only actual mismatches. New Vincea cards receive Да during creation. INDA remains unchanged.",
                    "new_products_currently_need_no_manual_switch": true,
                    "cron_command": "single curl command uses protected config outside web root; secret is sent in POST body, not URL or command text"
                }
            },
            "known_gallery_repair": {
                "needed": false,
                "changed": false,
                "reason": "current raw gallery is not the known damaged one-image state"
            },
            "snapshot_precheck": {
                "ok": false,
                "catalog_scope": [],
                "daily_stock": [],
                "error": "HTTP error 0 for https://vincea.ru/partneram/: Operation timed out after 45001 milliseconds with 0 bytes received"
            }
        },
        "error": "supplier precheck failed: HTTP error 0 for https://vincea.ru/partneram/: Operation timed out after 45001 milliseconds with 0 bytes received",
        "failed_stage": "snapshot_precheck",
        "finished_at": "2026-08-14T22:30:47+10:00",
        "elapsed_sec": 45.021999999999998,
        "disk_after": {
            "site_dir": "/var/www/u1437730/data/www/xn----7sbajmsollb4bo4b.xn--p1ai",
            "free_bytes": 117509558272,
            "total_bytes": 248505155584,
            "free_percent": 47.289999999999999,
            "heavy_start_free_bytes": 4294967296,
            "heavy_stop_free_bytes": 2147483648,
            "heavy_allowed": true,
            "new_cards_min_free_bytes": 1073741824,
            "new_cards_allowed": true
        }
    },
    "checkpoint": {
        "cycle_id": "20260815-083001-362797",
        "version": "3.3.9",
        "build": "2026-08-13-order-flag-completion-drift-audit",
        "stage": "existing_price_stock",
        "status": "running",
        "updated_at": "2026-08-15T08:30:07+10:00"
    },
    "cron_control": {
        "ok": true,
        "protected_config": "/var/www/u1437730/data/.vincea-curl.conf",
        "secret_in_url": false,
        "expected_endpoint": "https://xn----7sbajmsollb4bo4b.xn--p1ai/vincea-auto-334",
        "write_modes": "protected POST body from curl config; X-Vincea-Key header accepted as fallback; browser manual run is admin-session + CSRF protected"
    },
    "state_summary": {
        "map_rows": 3525,
        "last_valid_snapshot_count": 4258,
        "last_successful_snapshot_at": "2026-08-13T20:06:01+10:00",
        "last_cycle_id": "20260813-200226-976033",
        "last_cycle_version": "3.3.9"
    }
}