{
  "checker": {
    "claims": [
      {
        "claim": "microsegments cuts each line into 30 m stretches and counts observations per stretch",
        "command": "<guest-path> run examples/synth.toml -o <guest-path>",
        "evidence": "538 segments, 5 hotspots (read 0.2s coverage 0.2s network 0.2s place 0.4s passages 0.4s count 0.1s analyse 0.1s hotspots 0.1s)\n",
        "expected": "run reports 538 segments",
        "input": "examples/synth.toml synthetic tram line",
        "kind": "claim",
        "outcome": "Real input produced the expected result: 538 segments",
        "returncode": 0,
        "source": "`microsegments` cuts each line into short stretches (30 m by default)",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      }
    ],
    "cycle_checks": [
      {
        "claim": "Scheduled or looping main behavior",
        "command": "",
        "evidence": "Entry points inspected (README CLI section, src/microsegments CLI commands run/tune/hotspots/inspect/compare/sensitivity-table). The package is a one-shot batch pipeline with no scheduler, cron, daemon, loop, webhook or --once/--now trigger; the only while-loop found is in network/keys.py and is not a product cycle. It is run on demand by the user.",
        "expected": "identify the product trigger",
        "input": "source inspection",
        "kind": "cycle",
        "outcome": "Entry points inspected (README CLI section, src/microsegments CLI commands run/tune/hotspots/inspect/compare/sensitivity-table). The package is a one-shot batch pipeline with no scheduler, cron, daemon, loop, webhook or --once/--now trigger; the only while-loop found is in network/keys.py and is not a product cycle. It is run on demand by the user.",
        "source": "repository entry points",
        "verdict": "yes"
      }
    ],
    "details": {
      "argv": [
        "<guest-path>",
        "run",
        "examples/synth.toml",
        "-o",
        "<guest-path>"
      ],
      "kind": "cli",
      "needs_browser": false,
      "needs_credentials": false,
      "returncode": 0,
      "scope": "product operation",
      "stderr": "observations: 201,368 rows\nnetwork: 6 patterns over 15 dates\nplaced: 235,639 rows\nanalysis: 15 days included, 0 excluded\nhotspots: 5\ndone: 15 days, 538 segments, 5 hotspots (read 0.2s coverage 0.2s network 0.2s place 0.4s passages 0.4s count 0.1s analyse 0.1s hotspots 0.1s)",
      "stdout": "<guest-path>\n<guest-path>\n<guest-path>\n<guest-path>\n<guest-path>\n<guest-path>\n<guest-path>\n<guest-path>\n<guest-path>\n<guest-path>\n<guest-path>",
      "working": true
    },
    "evidence_strength": "readme_checked",
    "example_checks": [
      {
        "claim": "documented STIB 55 example runs on the two-day test fixture",
        "command": "<guest-path> run examples/stib55.toml -o <guest-path>",
        "deferred": false,
        "evidence": "ib55/out/analysis.json\n<guest-path>\n<guest-path>\n<guest-path>\nobservations: 78,799 rows\nGTFS calendar does not cover 2 date(s) (2025-03-18..2025-03-19): using the same weekday of the feed (2025-04-14..2025-05-11)\nnetwork: 9 patterns over 2 dates\nplaced: 98,407 rows\nanalysis: 2 days included, 0 excluded\nhotspots skipped: too_few_days: 2 included days < 5 (quality.min_days, floor 5)\ndone: 2 days, 1303 segments, 0 hotspots (read 0.1s coverage 0.1s network 0.2s place 0.2s passages 0.2s count 0.1s analyse 0.1s)",
        "expected": "analysis and report written to output directory",
        "input": "examples/stib55.toml",
        "kind": "example",
        "outcome": "command completed successfully",
        "returncode": 0,
        "source": "examples/stib55.toml header: microsegments run examples/stib55.toml -o out/stib55",
        "verdict": "yes"
      }
    ],
    "status": "PASS"
  },
  "deviations": [
    "Installed from the pinned local checkout instead of PyPI so the pinned commit is what is tested.",
    "Used the absolute venv executable <guest-path> in all saved argv, because the checker does not activate the venv and bare 'microsegments' was not found on PATH.",
    "Hotspot GeoJSON claim was removed from claims.json: the checker appends a '-checker-<id>' suffix to -o destinations, so the product's out.suffix == '.geojson' check (src/microsegments/cli.py:77) fails and the file is written as parquet. This is a harness artifact; the export works when run manually with a plain .geojson path.",
    "Probe expected_text uses a stdout path because the probe checks stdout only; the '538 segments' text is in stderr and is verified by the README claim instead."
  ],
  "fault_owner": null,
  "main_blocker": null,
  "operation": "Run the documented microsegments pipeline on the offline synthetic tram line and the STIB 55 example, producing result, analysis, report and matrix files",
  "operation_scope": "Python 3.12 venv at <guest-path> with pip install of the pinned checkout with the [plot] extra; offline synthetic data from examples/make_synth.py; no credentials or browser needed",
  "outcome": "working",
  "plain_failure": null,
  "steps": [
    "git init; git remote add origin https://github.com/GaspardMerten/microsegments; git fetch --depth 1 origin ceada544d6c01c212850253a531c5ca8e473601d; git reset --mixed FETCH_HEAD",
    "python3 -m venv <guest-path>; <guest-path> install \"<guest-path>\"  (README: pip install \"microsegments[plot]\", installed from the pinned local checkout)",
    "python examples/make_synth.py (generates examples/data)",
    "microsegments run examples/synth.toml -o out/ (executed as <guest-path>)",
    "microsegments hotspots examples/synth.toml -o hotspots.geojson (run manually; output printed hotspot table and wrote GeoJSON)",
    "microsegments run examples/stib55.toml -o out/stib55 (README linear-referenced example)"
  ],
  "stuck_step": null,
  "suggested_fix": "Harness: do not append a suffix to -o file destinations (or keep the extension last) so the product's extension-based output format is preserved. No product change needed."
}
