{
  "api_version": "v1",
  "dataset_version": "AdityaNet_v2_dataset_r1",
  "dataset_sha256": "43fd0e228b28ae6bc7e468c3acf68722768bd62b73798eb6631e9e6233b71ed9",
  "generated_at": "2026-07-29T13:34:16.817222+00:00",
  "source_commit": "99af630",
  "data": {
    "id": "CONTRADICTION-006",
    "slug": "contradiction-006",
    "title": "two \u00a72.8 HK checks falsified by the archive-wide rebuild",
    "state": "CLOSED",
    "date": "2026-07-17",
    "reason": "r5 rebuild surfaced two more \u00a72.8 HK checks. RESOLVED: Defect A implementation-only fix approved; Defect B not approved (working as designed).",
    "resolving_revision": null,
    "status_line": "Status: CLOSED 2026-07-17.",
    "declined_amendment": false,
    "lead": "**Status: CLOSED 2026-07-17.**\n\n**Defect A: APPROVED as an implementation-only fix.** The observed failures are numerical representation artifacts (all ~6.3\u00d710\u207b\u2077 s \u2014 the float64 ULP of MJD at ~61000), not physically out-of-span telemetry. The HK header-span check now applies the SAME documented `_FLOAT_EPS_S` (1 ms) already employed by \u00a72.7 R-1. **The specification text is unchanged** \u2014 the epsilon exists solely to prevent IEEE754 boundary artifacts and is not a physical tolerance, documented as such at the check site. Verified: a previously-rejected ULP orbit parses; no spec edit was made.\n\n**Defect B: NOT APPROVED \u2014 \u00a72.8 unchanged, working as designed.** Duplicate HK timestamps remain archive-quality defects; F-16 continues to terminate; parser behaviour unmodified. The 2 affected orbits (`HLS_20260201_120005_43198sec_V111`: 2 duplicate values; one further orbit: 1) are **recorded as archive findings** for Milestone VIII, alongside the 12 SoLEXS `STOP\u2264START` days and 10 unreadable files.\n\nMy disposition-(i) recommendation was upheld. 188/188 tests pass; the duplicate orbit verifiably still terminates with F-16.\n\nRaised under: *\"Do not revisit parser implementation unless a new parser-level contradiction is proven.\"* Two are proven. Both are the **same root-cause pattern as CONTRADICTION-001/-003/-004A/-005A**: a \u00a72.8 property asserted from orbit `20251208` (the one M-V orbit) without checking the population. A-12 already anticipated that HK properties need archive-wide verification; these two checks are further HK properties that also don't hold as written.\n\n**r5 rebuild result:** SoLEXS **424/436** (was 353 \u2014 Defect A/B fixes recovered 71), HEL1OS **295/391**. New skips: **F-06 \u00d7 94**, **F-16 \u00d7 2**. Both are in the \u00a72.8 HK parser.\n\n---",
    "sections": [
      {
        "heading": "DEFECT A \u2014 \u00a72.8 header-span check rejects 94 orbits on float-ULP noise",
        "body": "**The rule (\u00a72.8 r4):** *header-span consistency \u2014 the global `mjd` range lies within the header `TSTART`/`TSTOP`.* Implemented as `mjd.min() < TSTART or mjd.max() > TSTOP \u2192 F-06`.\n\n**`OBSERVED`, archive-wide (391 orbits):**\n\n| | Orbits | Overshoot magnitude |\n|---|---|---|\n| `mjd.max() > TSTOP` | **60** | **all 6.28\u00d710\u207b\u2077 s** |\n| `mjd.min() < TSTART` | **40** | **all \u2248 6\u00d710\u207b\u2077 s** |\n| overshoot \u2265 1 s | **0** | \u2014 |\n\nEvery single violation is **~0.6 microseconds** \u2014 the **float64 ULP of an MJD value at ~61000** (`2\u207b\u2075\u00b2 \u00d7 61000 d \u00d7 86400 s/d \u2248 6\u00d710\u207b\u2077 s`). There is **no orbit whose HK data is genuinely outside its header span**; there are only orbits where a boundary timestamp equals the header bound to physical precision but differs by one representable float step.\n\n**This is not a data anomaly \u2014 it is my check testing float representation instead of data validity.** The header `TSTART`/`TSTOP` are themselves MJD floats carrying the same ULP, so \"within the header span\" cannot be checked more tightly than that ULP. A strict inequality below the ULP scale is meaningless.\n\n**Precedent already in the codebase.** \u00a72.7 R-1 (r4) hit the identical issue \u2014 an MJD\u2192seconds comparison landing exactly on a boundary \u2014 and it is handled by a documented `_FLOAT_EPS_S = 1e-3` (1 ms, ~1600\u00d7 the ULP, ~4 orders below the smallest real excursion). The \u00a72.8 header-span check should use the same mechanism.\n\n**Why this is an implementation-faithfulness fix, not a weakening.** The contract's intent \u2014 \"the `mjd` range lies within the header span\" \u2014 is *satisfied* by all 391 orbits at physical precision. A real out-of-span excursion would be seconds (a wrong day, a wrong epoch), not sub-microsecond. A 1 ms tolerance absorbs representation noise while still catching every physically meaningful violation.\n\n### Proposed amendment (NOT applied)\n1. **\u00a72.8 validation** \u2014 clarify header-span consistency as: *`min(mjd) \u2265 TSTART \u2212 \u03b5` and `max(mjd) \u2264 TSTOP + \u03b5`, with `\u03b5 = 1 ms` (the documented MJD-float-ULP slack, shared with \u00a72.7 R-1). A violation beyond `\u03b5` \u2192 F-06.* This is numerical slack, **not** a physical tolerance and **not** a jitter allowance.\n2. No statistic is encoded; the ULP magnitude is stated once as the justification for `\u03b5`.\n\n---"
      },
      {
        "heading": "DEFECT B \u2014 2 orbits have duplicate HK `mjd` timestamps",
        "body": "**The rule (\u00a72.8 r4):** *`mjd` MUST be \u2026 **unique** (duplicates remain F-16 \u2014 a repeated timestamp is a genuine defect).*\n\n**`OBSERVED`, archive-wide:** exactly **2 orbits** contain duplicate HK `mjd`:\n- `HLS_20260201_120005_43198sec_V111` \u2014 63,298 rows, **2** duplicated values (e.g. `61072.99604\u2026` appears twice, rows 10584 & 10660).\n- one further orbit \u2014 **1** duplicated value.\n\n389 of 391 orbits have fully unique HK `mjd`.\n\n**This one is genuinely a contract question, and I do not think the answer is obvious.** Two defensible readings:\n\n- **(i) Working as designed \u2014 no amendment.** \u00a72.8 r4 explicitly calls a duplicate timestamp \"a genuine defect\", owner-approved. Under that wording these 2 orbits are archive defects, correctly terminated and logged \u2014 the same disposition as Defect C's 12 SoLEXS `STOP\u2264START` days. Recovers nothing, discards 2 orbits, records an archive-quality finding.\n- **(ii) Telemetry reality \u2014 amend.** \u00a72.8 also establishes that HK `mjd` is *\"a measurement, not an index\"*, written in arrival order with jitter (A-12). Two packets sharing a millisecond-precision timestamp is consistent with that framing rather than with corruption. Under this reading a duplicate HK `mjd` is not a defect and should not terminate; uniqueness would be dropped for HK (while remaining in force for the 1-second-cadence LC/PI/spectra, where a duplicate genuinely is a defect).\n\n**I record both and recommend (i)** \u2014 no amendment \u2014 for three reasons: it is the smaller change; it matches the owner's explicit r4 wording; and 2 orbits of 391 is a negligible loss that does not justify weakening a uniqueness guarantee that is correct everywhere else. But this is the owner's call, not mine, because it turns on whether a duplicate HK timestamp is \"a defect\" or \"telemetry\" \u2014 a question the r4 text answers one way and the r4 rationale gestures at the other.\n\n**Whichever way it is ruled, no statistic enters the contract.** If (ii), duplicates are simply permitted for HK; the *count* stays in the profile.\n\n---"
      },
      {
        "heading": "What is NOT affected",
        "body": "The r5 rebuild is otherwise clean: SoLEXS 424 archives (T1/T2), HEL1OS 295 orbits (T3/T4/T5 all built \u2014 the CdTe/CZT `DETCHANS` allowlist works, and **R-1 resolved `relative_seconds` on all 1,180 spectra products**). Defects A and B here concern only the two \u00a72.8 HK validation predicates; every other invariant held. **188/188 unit tests pass** (the M-VII suite already tracks the r5 implication rule)."
      },
      {
        "heading": "State of the work",
        "body": "Milestone VII is **paused with the code committed and both HK checks terminating exactly as frozen**. Nothing weakened: the header-span check still uses strict inequality; the uniqueness check still fires on duplicates. The rebuild's own skip log is the evidence.\n\n**Awaiting approval:** Defect A amendment (float \u03b5 on the header-span check); Defect B ruling (recommend disposition (i), no amendment). Once ruled, I will apply, do the final clean rebuild, and generate `CANONICAL_DATASET_PROFILE.md` + `MILESTONE_VII_COMPLIANCE.md` against the final dataset."
      }
    ],
    "source": "artifacts/v2/phase05/CONTRADICTION-006.md"
  }
}
