{
  "schema": "varexis-public-evidence-record/0.3",
  "generated_at_utc": "2026-10-24T23:47:34.928Z",
  "record_id": "VXI-EXT-PROCUREMENT-SPARKPLUG-CLEAN-DISCONNECT-DEATH-PUBLICATION-01-v1",
  "record_kind": "external_reference",
  "title": "Sparkplug intentional disconnect evidence",
  "system": "Eclipse Sparkplug 3.0.0",
  "evidence_family": "vendor_evidence_review",
  "index_status": "PUBLIC_SAFE_SOURCE_REVIEW",
  "evidence_state": "PRIMARY_DOCUMENTATION_REVIEW_ONLY",
  "canonical_question": "Will a clean MQTT disconnect automatically publish the Sparkplug node death message?",
  "near_questions": [
    "Does MQTT DISCONNECT suppress a Sparkplug Last Will?",
    "When must an Edge Node publish NDEATH during clean shutdown?",
    "Can Sparkplug receive both an explicit death and a later Will?",
    "What evidence proves the intended Sparkplug shutdown notification path?"
  ],
  "supported_claims": [
    {
      "claim": "Sparkplug 3.0.0 requires an intentionally disconnecting Edge Node to publish NDEATH before sending MQTT DISCONNECT. A clean disconnect suppresses the broker Will, so relying only on the Will would omit that notification. If no DISCONNECT is sent and a later Will duplicates the death notification, the host must use the matching bdSeq to avoid duplicate processing.",
      "reliance": "DOCUMENTED_CAPABILITY_ONLY"
    }
  ],
  "not_demonstrated_claims": [
    "Actual shutdown delivery was not observed.",
    "No independently verified physical outcome, calibration, industrial safety, deletion or complete capture.",
    "Buyer deployment testing, live runtime enforcement, certification or permission to act",
    "Expanded capabilities or licences for existing INDEX executables"
  ],
  "public_summary": "Sparkplug 3.0.0 requires an intentionally disconnecting Edge Node to publish NDEATH before sending MQTT DISCONNECT. A clean disconnect suppresses the broker Will, so relying only on the Will would omit that notification. If no DISCONNECT is sent and a later Will duplicates the death notification, the host must use the matching bdSeq to avoid duplicate processing.",
  "related_record_ids": [],
  "source_review": {
    "source_type": "official_external_documentation",
    "source_title": "Sparkplug 3.0.0 release — Sparkplug_5_Operational_Behavior",
    "source_url": "https://raw.githubusercontent.com/eclipse-sparkplug/sparkplug/8b76877131203e88eaa9f5415e6a55f1a8470d74/specification/src/main/asciidoc/chapters/Sparkplug_5_Operational_Behavior.adoc",
    "checked_on": "2026-10-24",
    "candidate_record_id": "VXI-EXT-PROCUREMENT-SPARKPLUG-CLEAN-DISCONNECT-DEATH-PUBLICATION-01-v1",
    "candidate_record_sha256": "607cca391ecf3f5018bf79811cc4db93b4d5938192f5ceefae5d2220e8846bfe",
    "method": "Primary documentation reviewed for the published bounded statement.",
    "deployment_tested_by_varexis": false,
    "revalidation": "The delivered snapshot preserves the review date shown. Recheck current primary documentation and deployment context before relying on present applicability; payment does not trigger fresh research."
  },
  "answer_policy": {
    "classification": "DOCUMENTED_WITH_DEPLOYMENT_BOUNDARY",
    "bounded_answer": "Sparkplug 3.0.0 requires an intentionally disconnecting Edge Node to publish NDEATH before sending MQTT DISCONNECT. A clean disconnect suppresses the broker Will, so relying only on the Will would omit that notification. If no DISCONNECT is sent and a later Will duplicates the death notification, the host must use the matching bdSeq to avoid duplicate processing.",
    "required_buyer_context": "NDEATH publication record; MQTT DISCONNECT handling; Host bdSeq duplicate handling. Buyer deployment not inspected.",
    "missing_evidence": "A broader claim needs evidence matching the intended use. Payment does not upgrade the evidence state."
  },
  "private_boundary": "Raw logs, thresholds, private paths, source code, protected mechanisms and reconstruction-level details are excluded from public and paid delivery.",
  "decision_profile": {
    "schema": "varexis-vendor-evidence-review/1",
    "review_status": "documentation_review_only",
    "checked_on": "2026-10-24",
    "claim_to_check": "Will a clean MQTT disconnect automatically publish the Sparkplug node death message?",
    "documented_statement": {
      "status": "documented",
      "statement": "Sparkplug 3.0.0 requires an intentionally disconnecting Edge Node to publish NDEATH before sending MQTT DISCONNECT. A clean disconnect suppresses the broker Will, so relying only on the Will would omit that notification. If no DISCONNECT is sent and a later Will duplicates the death notification, the host must use the matching bdSeq to avoid duplicate processing.",
      "source_ids": [
        "sparkplug-5"
      ]
    },
    "review_inference": {
      "status": "review_inference",
      "statement": "Check the explicit shutdown notification path. This is a review judgment, not a measured deployment result.",
      "source_ids": [
        "sparkplug-5"
      ]
    },
    "buyer_evidence_required": [
      "NDEATH publication record",
      "MQTT DISCONNECT handling",
      "Host bdSeq duplicate handling"
    ],
    "review_condition": {
      "status": "varexis_review_policy",
      "statement": "Refuse a complete shutdown-notification claim based only on configured Last Will."
    },
    "unknowns": "Actual shutdown delivery was not observed.",
    "unknown_finding": {
      "status": "unknown",
      "statement": "Actual shutdown delivery was not observed."
    },
    "evidence_sources": [
      {
        "source_id": "sparkplug-5",
        "url": "https://raw.githubusercontent.com/eclipse-sparkplug/sparkplug/8b76877131203e88eaa9f5415e6a55f1a8470d74/specification/src/main/asciidoc/chapters/Sparkplug_5_Operational_Behavior.adoc",
        "final_url": "https://raw.githubusercontent.com/eclipse-sparkplug/sparkplug/8b76877131203e88eaa9f5415e6a55f1a8470d74/specification/src/main/asciidoc/chapters/Sparkplug_5_Operational_Behavior.adoc",
        "status": 200,
        "captured_at_utc": "2026-10-24T23:24:16.561Z",
        "sha256": "7c7772189ec538e9b01b9020fa47a465333d98b905a6910e53800eb920c3d58a",
        "bytes": 78634,
        "title": "Sparkplug 3.0.0 release — Sparkplug_5_Operational_Behavior",
        "hash_basis": "SHA-256 of unmodified HTTP response body bytes",
        "rights_review": "Original bounded paraphrase; source bodies are captured privately and not redistributed. Eclipse repository EPL-2.0 licence reviewed.",
        "checked_on": "2026-10-24",
        "capture_status": 200,
        "claim_review_completed": true,
        "reviewed_sections": [
          "NDEATH processing; Node Control/Rebirth",
          "NDEATH timestamp processing; Sparkplug-aware broker timestamp replacement",
          "Intentional disconnect and NDEATH processing",
          "NDEATH host processing",
          "Message reordering; Node Control/Rebirth",
          "Birth and DATA metric publication",
          "DATA multiple metric changes and chronological ordering"
        ],
        "version_context": "Sparkplug 3.0.0 release; pinned repository revision 8b76877131203e88eaa9f5415e6a55f1a8470d74. Documentation is not evidence of buyer deployment behaviour."
      }
    ],
    "observed_deployment": false,
    "commercial_reliance_boundary": "Documentation review only; the buyer must establish applicability and actual outcomes. INDEX does not inspect or control the deployment.",
    "paid_value": {
      "decision_context": "Check the explicit shutdown notification path.",
      "free": "Complete review, sources, practical questions and limitations; may be saved locally.",
      "single_request": "Existing server-saved version-bound route snapshot for later authenticated retrieval.",
      "evidence_receipt": "The same snapshot plus the existing unsigned delivery receipt.",
      "excluded": [
        "Fresh vendor research",
        "Continuous monitoring or change alerts",
        "Testing the buyer configuration",
        "Private evidence or vendor certification"
      ],
      "integrity": "Hashes identify content versions; they do not prove truth or provide a signature."
    },
    "revalidation": {
      "trigger": "A saved purchase does not recheck the source or buyer configuration.",
      "specific_watch": "Recheck the specification version, errata availability, deployed profile, clock policy and retained operation results before relying on a current outcome."
    },
    "buyer_relevance": "Check the explicit shutdown notification path.",
    "refusal_conditions": [
      "Refuse a complete shutdown-notification claim based only on configured Last Will."
    ]
  },
  "niche": {
    "niche_id": "agent-authority-action-evidence",
    "label": "Agent Authority & Action Evidence",
    "classification_id": "audit",
    "classification_label": "Audit, Provenance & Evidence Accountability",
    "topic_id": "audit",
    "buyer_intent": "Check the explicit shutdown notification path.",
    "comparison_role": "supplementary_discovery"
  },
  "paid_access_note": "The full published answer and boundaries are free. Paid access saves the selected route and source versions, with an unsigned receipt when purchased. Preview coverage before paying. Fresh research, bespoke assessment and protected evidence are excluded.",
  "service_route": {
    "request_guide": "/varexis-index/request.html",
    "request_workflow": "/varexis-index/request-workflow.json",
    "service_id": "single_request",
    "service_routes_url": "/varexis-index/service-routes.json",
    "payment_required": true,
    "availability_endpoint": "/api/index/capabilities",
    "operational_status": "AUTOMATIC_SERVICE_CAPABILITIES_GATED",
    "checkout_url": "/index-access"
  },
  "authority_boundary": "VAREXIS-INDEX informs evidence reliance. It does not provide advice, certification, deployment authority, security assurance, production approval, or guarantee.",
  "human_page": "/varexis-index/catalog.html#sparkplug-clean-disconnect-death-publication",
  "machine_readable_record": "/varexis-index/records/sparkplug-clean-disconnect-death-publication.json"
}
