diff --git a/runtime/history/BOOTSTRAP-FILE-DIAG-002.json b/runtime/history/BOOTSTRAP-FILE-DIAG-002.json new file mode 100644 index 0000000..cd359cd --- /dev/null +++ b/runtime/history/BOOTSTRAP-FILE-DIAG-002.json @@ -0,0 +1,30 @@ +{ + "schema_version": 1, + "channel": "homelab-runtime", + "command_id": "BOOTSTRAP-FILE-DIAG-002", + "status": "OK", + "rc": 0, + "host": "pve01", + "mode": "read-only", + "component": "gitea-bootstrap", + "started_at_utc": "2026-07-21T09:32:47Z", + "finished_at_utc": "2026-07-21T09:32:47Z", + "reference_register_checked": true, + "reference_sha256": "f6f7749fda946015116cdbbd754c7e7f20356b4a6cf4df330a1b0b8fdf59cbb2", + "error_register_checked": true, + "error_register_sha256": "ab8308549db90d235b591af0581580c3c7ba1b287b129cc6111c2eef0a0f9ecc", + "command_sha256": "ff7fad42e98aa003067d7496afc43ad2c9ad5fe91eb84b8eb79aeb41674bb1be", + "duplicate_failed_command_blocked": false, + "block_reason": null, + "execution_started": true, + "changes_made": false, + "sanitized": true, + "secrets_included": false, + "private_addresses_included": false, + "raw_evidence_retained_locally": true, + "raw_evidence_sha256": "2c25590ae8d63b455ecfea329a8495fa57f04ba43113a348dace1265c58ce33e", + "sanitized_output_sha256": "2c25590ae8d63b455ecfea329a8495fa57f04ba43113a348dace1265c58ce33e", + "output_truncated_in_json": false, + "full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt", + "output": "{\n \"schema_version\": 2,\n \"cluster_id\": \"homelab\",\n \"status\": \"READY\",\n \"generated_at_utc\": \"2026-07-21T07:02:17Z\",\n \"context\": {\n \"full_context_command_id\": \"CONTEXT-SOURCES-FULL-002\",\n \"full_context_commit\": \"e23caf794cc68ce5fa6f8922efa7f2a35c8aa6e0\",\n \"full_context_sha256\": \"621830f58b028a0116a42964d02bdca31c280d6ff358f518d0e8f24c2ba01366\",\n \"full_context_url\": \"https://git.gram1.ru/homelab-admin/homelab-public-context/raw/commit/e23caf794cc68ce5fa6f8922efa7f2a35c8aa6e0/runtime/history/CONTEXT-SOURCES-FULL-002.txt\",\n \"context_index_command_id\": \"CONTEXT-INDEX-001\",\n \"context_index_commit\": \"055521f14fbb0780bdb501c7d7be755350d45091\",\n \"context_index_url\": \"https://git.gram1.ru/homelab-admin/homelab-public-context/raw/commit/055521f14fbb0780bdb501c7d7be755350d45091/runtime/history/CONTEXT-INDEX-001.json\",\n \"reference_sha256\": \"f6f7749fda946015116cdbbd754c7e7f20356b4a6cf4df330a1b0b8fdf59cbb2\",\n \"error_register_sha256\": \"ab8308549db90d235b591af0581580c3c7ba1b287b129cc6111c2eef0a0f9ecc\",\n \"error_register_embedded_in_full_context\": true\n },\n \"runtime\": {\n \"history_url\": \"https://git.gram1.ru/homelab-admin/homelab-public-context/src/branch/assistant-runtime/runtime/history\",\n \"latest_branch_url\": \"https://git.gram1.ru/homelab-admin/homelab-public-context/raw/branch/assistant-runtime/runtime/latest.json\",\n \"result_confirmation\": \"immutable_history_by_command_id\",\n \"latest_json_is_authoritative\": false\n },\n \"operating_contract\": {\n \"load_bootstrap_before_commands\": true,\n \"load_error_register_before_commands\": true,\n \"check_previous_command_result\": true,\n \"reject_known_failed_exact_repeats\": true,\n \"one_command_per_step\": true,\n \"manual_terminal_output_required\": false,\n \"runner\": \"homelab-chat-run\",\n \"confirmation_tokens\": [\n \".\",\n \",\",\n \"\\\\\"\n ],\n \"immediate_next_command\": true,\n \"command_display\": \"collapsible_details\",\n \"double_pre_command_check\": true\n },\n \"privacy\": {\n \"sanitized\": true,\n \"secrets_included\": false,\n \"private_addresses_included\": false\n },\n \"entrypoints\": {\n \"full_context_url\": \"https://git.gram1.ru/homelab-admin/homelab-public-context/raw/commit/e23caf794cc68ce5fa6f8922efa7f2a35c8aa6e0/runtime/history/CONTEXT-SOURCES-FULL-002.txt\",\n \"errors_index_url\": \"https://git.gram1.ru/homelab-admin/homelab-public-context/raw/commit/a615069de3d32564fc4de29baff949bdaf811caf/runtime/history/ERRORS-INDEX-004.json\",\n \"workflow_contract_url\": \"https://git.gram1.ru/homelab-admin/homelab-public-context/raw/commit/2f37a4eb600528d03f5c570af8c5aa0e463b1798/runtime/history/WORKFLOW-CONTRACT-003.json\",\n \"double_check_rule_url\": \"https://git.gram1.ru/homelab-admin/homelab-public-context/raw/commit/d1061e47e7955dba9c73a2841d4eacf02ccc1bf5/runtime/policy/double-check-rule.json\"\n },\n \"freshness\": {\n \"max_age_seconds\": 86400,\n \"stale_requires_refresh\": true\n },\n \"coverage\": {\n \"status\": \"PARTIAL\",\n \"missing\": [\n \"automatic_refresh\",\n \"per_node_freshness\",\n \"structured_service_inventory\"\n ]\n }\n}\n" +} diff --git a/runtime/history/BOOTSTRAP-FILE-DIAG-002.txt b/runtime/history/BOOTSTRAP-FILE-DIAG-002.txt new file mode 100644 index 0000000..7a11014 --- /dev/null +++ b/runtime/history/BOOTSTRAP-FILE-DIAG-002.txt @@ -0,0 +1,88 @@ +CHAT_OUTPUT_BEGIN +COMMAND_ID=BOOTSTRAP-FILE-DIAG-002 +STATUS=OK +RC=0 +HOST=pve01 +MODE=read-only +COMPONENT=gitea-bootstrap +REFERENCE_REGISTER_CHECK=OK +REFERENCE_SHA256=f6f7749fda946015116cdbbd754c7e7f20356b4a6cf4df330a1b0b8fdf59cbb2 +ERROR_REGISTER_CHECK=OK +ERROR_REGISTER_SHA256=ab8308549db90d235b591af0581580c3c7ba1b287b129cc6111c2eef0a0f9ecc +COMMAND_SHA256=ff7fad42e98aa003067d7496afc43ad2c9ad5fe91eb84b8eb79aeb41674bb1be +DUPLICATE_FAILED_COMMAND_BLOCKED=false +EXECUTION_STARTED=true +CHANGES_MADE=false +SANITIZED=yes +SECRETS_INCLUDED=no +PRIVATE_ADDRESSES_INCLUDED=no +RAW_EVIDENCE_SHA256=2c25590ae8d63b455ecfea329a8495fa57f04ba43113a348dace1265c58ce33e +SANITIZED_OUTPUT_SHA256=2c25590ae8d63b455ecfea329a8495fa57f04ba43113a348dace1265c58ce33e +OUTPUT_BEGIN +{ + "schema_version": 2, + "cluster_id": "homelab", + "status": "READY", + "generated_at_utc": "2026-07-21T07:02:17Z", + "context": { + "full_context_command_id": "CONTEXT-SOURCES-FULL-002", + "full_context_commit": "e23caf794cc68ce5fa6f8922efa7f2a35c8aa6e0", + "full_context_sha256": "621830f58b028a0116a42964d02bdca31c280d6ff358f518d0e8f24c2ba01366", + "full_context_url": "https://git.gram1.ru/homelab-admin/homelab-public-context/raw/commit/e23caf794cc68ce5fa6f8922efa7f2a35c8aa6e0/runtime/history/CONTEXT-SOURCES-FULL-002.txt", + "context_index_command_id": "CONTEXT-INDEX-001", + "context_index_commit": "055521f14fbb0780bdb501c7d7be755350d45091", + "context_index_url": "https://git.gram1.ru/homelab-admin/homelab-public-context/raw/commit/055521f14fbb0780bdb501c7d7be755350d45091/runtime/history/CONTEXT-INDEX-001.json", + "reference_sha256": "f6f7749fda946015116cdbbd754c7e7f20356b4a6cf4df330a1b0b8fdf59cbb2", + "error_register_sha256": "ab8308549db90d235b591af0581580c3c7ba1b287b129cc6111c2eef0a0f9ecc", + "error_register_embedded_in_full_context": true + }, + "runtime": { + "history_url": "https://git.gram1.ru/homelab-admin/homelab-public-context/src/branch/assistant-runtime/runtime/history", + "latest_branch_url": "https://git.gram1.ru/homelab-admin/homelab-public-context/raw/branch/assistant-runtime/runtime/latest.json", + "result_confirmation": "immutable_history_by_command_id", + "latest_json_is_authoritative": false + }, + "operating_contract": { + "load_bootstrap_before_commands": true, + "load_error_register_before_commands": true, + "check_previous_command_result": true, + "reject_known_failed_exact_repeats": true, + "one_command_per_step": true, + "manual_terminal_output_required": false, + "runner": "homelab-chat-run", + "confirmation_tokens": [ + ".", + ",", + "\\" + ], + "immediate_next_command": true, + "command_display": "collapsible_details", + "double_pre_command_check": true + }, + "privacy": { + "sanitized": true, + "secrets_included": false, + "private_addresses_included": false + }, + "entrypoints": { + "full_context_url": "https://git.gram1.ru/homelab-admin/homelab-public-context/raw/commit/e23caf794cc68ce5fa6f8922efa7f2a35c8aa6e0/runtime/history/CONTEXT-SOURCES-FULL-002.txt", + "errors_index_url": "https://git.gram1.ru/homelab-admin/homelab-public-context/raw/commit/a615069de3d32564fc4de29baff949bdaf811caf/runtime/history/ERRORS-INDEX-004.json", + "workflow_contract_url": "https://git.gram1.ru/homelab-admin/homelab-public-context/raw/commit/2f37a4eb600528d03f5c570af8c5aa0e463b1798/runtime/history/WORKFLOW-CONTRACT-003.json", + "double_check_rule_url": "https://git.gram1.ru/homelab-admin/homelab-public-context/raw/commit/d1061e47e7955dba9c73a2841d4eacf02ccc1bf5/runtime/policy/double-check-rule.json" + }, + "freshness": { + "max_age_seconds": 86400, + "stale_requires_refresh": true + }, + "coverage": { + "status": "PARTIAL", + "missing": [ + "automatic_refresh", + "per_node_freshness", + "structured_service_inventory" + ] + } +} + +OUTPUT_END +CHAT_OUTPUT_END diff --git a/runtime/latest.json b/runtime/latest.json index b4e0ee3..cd359cd 100644 --- a/runtime/latest.json +++ b/runtime/latest.json @@ -1,19 +1,19 @@ { "schema_version": 1, "channel": "homelab-runtime", - "command_id": "RUNTIME-RECEIVER-PREFLIGHT-021", + "command_id": "BOOTSTRAP-FILE-DIAG-002", "status": "OK", "rc": 0, "host": "pve01", "mode": "read-only", - "component": "gitea-runtime", - "started_at_utc": "2026-07-21T09:19:03Z", - "finished_at_utc": "2026-07-21T09:19:04Z", + "component": "gitea-bootstrap", + "started_at_utc": "2026-07-21T09:32:47Z", + "finished_at_utc": "2026-07-21T09:32:47Z", "reference_register_checked": true, "reference_sha256": "f6f7749fda946015116cdbbd754c7e7f20356b4a6cf4df330a1b0b8fdf59cbb2", "error_register_checked": true, "error_register_sha256": "ab8308549db90d235b591af0581580c3c7ba1b287b129cc6111c2eef0a0f9ecc", - "command_sha256": "88eca6f2f0959337342caee23f5076e065ae8d46481cf0917b6418033a6f670d", + "command_sha256": "ff7fad42e98aa003067d7496afc43ad2c9ad5fe91eb84b8eb79aeb41674bb1be", "duplicate_failed_command_blocked": false, "block_reason": null, "execution_started": true, @@ -22,9 +22,9 @@ "secrets_included": false, "private_addresses_included": false, "raw_evidence_retained_locally": true, - "raw_evidence_sha256": "564a57c395ae278f54552a62fcb6c7065ee4e60068c076cd87905e69721f6b2b", - "sanitized_output_sha256": "564a57c395ae278f54552a62fcb6c7065ee4e60068c076cd87905e69721f6b2b", + "raw_evidence_sha256": "2c25590ae8d63b455ecfea329a8495fa57f04ba43113a348dace1265c58ce33e", + "sanitized_output_sha256": "2c25590ae8d63b455ecfea329a8495fa57f04ba43113a348dace1265c58ce33e", "output_truncated_in_json": false, "full_sanitized_output_url": "https://git.gram1.ru/.well-known/homelab-runtime/latest.txt", - "output": "COMMAND_ID=RUNTIME-RECEIVER-PREFLIGHT-020\n2c183b9ced4334e5ff12c1ba35dceb1f7f6ef113298d44bf3fb80ca07305b8b3 /usr/local/sbin/homelab-runtime-receive\nBASH_SYNTAX=OK\n154:BARE=\"/data/git/repositories/homelab-admin/homelab-public-context.git\"\n156:WORK=\"$WORK_CONTAINER\"\n170: refs/remotes/origin/assistant-runtime\n174: -B assistant-runtime \\\n175: origin/assistant-runtime\n179: --orphan assistant-runtime\n215: refs/heads/assistant-runtime\n219: rev-parse refs/heads/assistant-runtime \\\n227: update-ref \\\n228: refs/heads/assistant-runtime \\\n233: update-ref \\\n234: refs/heads/assistant-runtime \\\n263: \"branch\": \"assistant-runtime\",\n291: \"http://127.0.0.1:3002/homelab-admin/homelab-public-context/raw/branch/assistant-runtime/runtime/latest.json\" |\n" + "output": "{\n \"schema_version\": 2,\n \"cluster_id\": \"homelab\",\n \"status\": \"READY\",\n \"generated_at_utc\": \"2026-07-21T07:02:17Z\",\n \"context\": {\n \"full_context_command_id\": \"CONTEXT-SOURCES-FULL-002\",\n \"full_context_commit\": \"e23caf794cc68ce5fa6f8922efa7f2a35c8aa6e0\",\n \"full_context_sha256\": \"621830f58b028a0116a42964d02bdca31c280d6ff358f518d0e8f24c2ba01366\",\n \"full_context_url\": \"https://git.gram1.ru/homelab-admin/homelab-public-context/raw/commit/e23caf794cc68ce5fa6f8922efa7f2a35c8aa6e0/runtime/history/CONTEXT-SOURCES-FULL-002.txt\",\n \"context_index_command_id\": \"CONTEXT-INDEX-001\",\n \"context_index_commit\": \"055521f14fbb0780bdb501c7d7be755350d45091\",\n \"context_index_url\": \"https://git.gram1.ru/homelab-admin/homelab-public-context/raw/commit/055521f14fbb0780bdb501c7d7be755350d45091/runtime/history/CONTEXT-INDEX-001.json\",\n \"reference_sha256\": \"f6f7749fda946015116cdbbd754c7e7f20356b4a6cf4df330a1b0b8fdf59cbb2\",\n \"error_register_sha256\": \"ab8308549db90d235b591af0581580c3c7ba1b287b129cc6111c2eef0a0f9ecc\",\n \"error_register_embedded_in_full_context\": true\n },\n \"runtime\": {\n \"history_url\": \"https://git.gram1.ru/homelab-admin/homelab-public-context/src/branch/assistant-runtime/runtime/history\",\n \"latest_branch_url\": \"https://git.gram1.ru/homelab-admin/homelab-public-context/raw/branch/assistant-runtime/runtime/latest.json\",\n \"result_confirmation\": \"immutable_history_by_command_id\",\n \"latest_json_is_authoritative\": false\n },\n \"operating_contract\": {\n \"load_bootstrap_before_commands\": true,\n \"load_error_register_before_commands\": true,\n \"check_previous_command_result\": true,\n \"reject_known_failed_exact_repeats\": true,\n \"one_command_per_step\": true,\n \"manual_terminal_output_required\": false,\n \"runner\": \"homelab-chat-run\",\n \"confirmation_tokens\": [\n \".\",\n \",\",\n \"\\\\\"\n ],\n \"immediate_next_command\": true,\n \"command_display\": \"collapsible_details\",\n \"double_pre_command_check\": true\n },\n \"privacy\": {\n \"sanitized\": true,\n \"secrets_included\": false,\n \"private_addresses_included\": false\n },\n \"entrypoints\": {\n \"full_context_url\": \"https://git.gram1.ru/homelab-admin/homelab-public-context/raw/commit/e23caf794cc68ce5fa6f8922efa7f2a35c8aa6e0/runtime/history/CONTEXT-SOURCES-FULL-002.txt\",\n \"errors_index_url\": \"https://git.gram1.ru/homelab-admin/homelab-public-context/raw/commit/a615069de3d32564fc4de29baff949bdaf811caf/runtime/history/ERRORS-INDEX-004.json\",\n \"workflow_contract_url\": \"https://git.gram1.ru/homelab-admin/homelab-public-context/raw/commit/2f37a4eb600528d03f5c570af8c5aa0e463b1798/runtime/history/WORKFLOW-CONTRACT-003.json\",\n \"double_check_rule_url\": \"https://git.gram1.ru/homelab-admin/homelab-public-context/raw/commit/d1061e47e7955dba9c73a2841d4eacf02ccc1bf5/runtime/policy/double-check-rule.json\"\n },\n \"freshness\": {\n \"max_age_seconds\": 86400,\n \"stale_requires_refresh\": true\n },\n \"coverage\": {\n \"status\": \"PARTIAL\",\n \"missing\": [\n \"automatic_refresh\",\n \"per_node_freshness\",\n \"structured_service_inventory\"\n ]\n }\n}\n" } diff --git a/runtime/latest.txt b/runtime/latest.txt index 7d0e710..7a11014 100644 --- a/runtime/latest.txt +++ b/runtime/latest.txt @@ -1,41 +1,88 @@ CHAT_OUTPUT_BEGIN -COMMAND_ID=RUNTIME-RECEIVER-PREFLIGHT-021 +COMMAND_ID=BOOTSTRAP-FILE-DIAG-002 STATUS=OK RC=0 HOST=pve01 MODE=read-only -COMPONENT=gitea-runtime +COMPONENT=gitea-bootstrap REFERENCE_REGISTER_CHECK=OK REFERENCE_SHA256=f6f7749fda946015116cdbbd754c7e7f20356b4a6cf4df330a1b0b8fdf59cbb2 ERROR_REGISTER_CHECK=OK ERROR_REGISTER_SHA256=ab8308549db90d235b591af0581580c3c7ba1b287b129cc6111c2eef0a0f9ecc -COMMAND_SHA256=88eca6f2f0959337342caee23f5076e065ae8d46481cf0917b6418033a6f670d +COMMAND_SHA256=ff7fad42e98aa003067d7496afc43ad2c9ad5fe91eb84b8eb79aeb41674bb1be DUPLICATE_FAILED_COMMAND_BLOCKED=false EXECUTION_STARTED=true CHANGES_MADE=false SANITIZED=yes SECRETS_INCLUDED=no PRIVATE_ADDRESSES_INCLUDED=no -RAW_EVIDENCE_SHA256=564a57c395ae278f54552a62fcb6c7065ee4e60068c076cd87905e69721f6b2b -SANITIZED_OUTPUT_SHA256=564a57c395ae278f54552a62fcb6c7065ee4e60068c076cd87905e69721f6b2b +RAW_EVIDENCE_SHA256=2c25590ae8d63b455ecfea329a8495fa57f04ba43113a348dace1265c58ce33e +SANITIZED_OUTPUT_SHA256=2c25590ae8d63b455ecfea329a8495fa57f04ba43113a348dace1265c58ce33e OUTPUT_BEGIN -COMMAND_ID=RUNTIME-RECEIVER-PREFLIGHT-020 -2c183b9ced4334e5ff12c1ba35dceb1f7f6ef113298d44bf3fb80ca07305b8b3 /usr/local/sbin/homelab-runtime-receive -BASH_SYNTAX=OK -154:BARE="/data/git/repositories/homelab-admin/homelab-public-context.git" -156:WORK="$WORK_CONTAINER" -170: refs/remotes/origin/assistant-runtime -174: -B assistant-runtime \ -175: origin/assistant-runtime -179: --orphan assistant-runtime -215: refs/heads/assistant-runtime -219: rev-parse refs/heads/assistant-runtime \ -227: update-ref \ -228: refs/heads/assistant-runtime \ -233: update-ref \ -234: refs/heads/assistant-runtime \ -263: "branch": "assistant-runtime", -291: "http://127.0.0.1:3002/homelab-admin/homelab-public-context/raw/branch/assistant-runtime/runtime/latest.json" | +{ + "schema_version": 2, + "cluster_id": "homelab", + "status": "READY", + "generated_at_utc": "2026-07-21T07:02:17Z", + "context": { + "full_context_command_id": "CONTEXT-SOURCES-FULL-002", + "full_context_commit": "e23caf794cc68ce5fa6f8922efa7f2a35c8aa6e0", + "full_context_sha256": "621830f58b028a0116a42964d02bdca31c280d6ff358f518d0e8f24c2ba01366", + "full_context_url": "https://git.gram1.ru/homelab-admin/homelab-public-context/raw/commit/e23caf794cc68ce5fa6f8922efa7f2a35c8aa6e0/runtime/history/CONTEXT-SOURCES-FULL-002.txt", + "context_index_command_id": "CONTEXT-INDEX-001", + "context_index_commit": "055521f14fbb0780bdb501c7d7be755350d45091", + "context_index_url": "https://git.gram1.ru/homelab-admin/homelab-public-context/raw/commit/055521f14fbb0780bdb501c7d7be755350d45091/runtime/history/CONTEXT-INDEX-001.json", + "reference_sha256": "f6f7749fda946015116cdbbd754c7e7f20356b4a6cf4df330a1b0b8fdf59cbb2", + "error_register_sha256": "ab8308549db90d235b591af0581580c3c7ba1b287b129cc6111c2eef0a0f9ecc", + "error_register_embedded_in_full_context": true + }, + "runtime": { + "history_url": "https://git.gram1.ru/homelab-admin/homelab-public-context/src/branch/assistant-runtime/runtime/history", + "latest_branch_url": "https://git.gram1.ru/homelab-admin/homelab-public-context/raw/branch/assistant-runtime/runtime/latest.json", + "result_confirmation": "immutable_history_by_command_id", + "latest_json_is_authoritative": false + }, + "operating_contract": { + "load_bootstrap_before_commands": true, + "load_error_register_before_commands": true, + "check_previous_command_result": true, + "reject_known_failed_exact_repeats": true, + "one_command_per_step": true, + "manual_terminal_output_required": false, + "runner": "homelab-chat-run", + "confirmation_tokens": [ + ".", + ",", + "\\" + ], + "immediate_next_command": true, + "command_display": "collapsible_details", + "double_pre_command_check": true + }, + "privacy": { + "sanitized": true, + "secrets_included": false, + "private_addresses_included": false + }, + "entrypoints": { + "full_context_url": "https://git.gram1.ru/homelab-admin/homelab-public-context/raw/commit/e23caf794cc68ce5fa6f8922efa7f2a35c8aa6e0/runtime/history/CONTEXT-SOURCES-FULL-002.txt", + "errors_index_url": "https://git.gram1.ru/homelab-admin/homelab-public-context/raw/commit/a615069de3d32564fc4de29baff949bdaf811caf/runtime/history/ERRORS-INDEX-004.json", + "workflow_contract_url": "https://git.gram1.ru/homelab-admin/homelab-public-context/raw/commit/2f37a4eb600528d03f5c570af8c5aa0e463b1798/runtime/history/WORKFLOW-CONTRACT-003.json", + "double_check_rule_url": "https://git.gram1.ru/homelab-admin/homelab-public-context/raw/commit/d1061e47e7955dba9c73a2841d4eacf02ccc1bf5/runtime/policy/double-check-rule.json" + }, + "freshness": { + "max_age_seconds": 86400, + "stale_requires_refresh": true + }, + "coverage": { + "status": "PARTIAL", + "missing": [ + "automatic_refresh", + "per_node_freshness", + "structured_service_inventory" + ] + } +} OUTPUT_END CHAT_OUTPUT_END