superseedr 1.0.5

A BitTorrent Client in your Terminal.
[
  {
    "phase": "Phase 0: Environment Preparation",
    "status": "PASS",
    "commands": [
      "cargo build",
      "mkdir -p tmp/cli_shared_config_validation_20260319_234156/...",
      "cp integration_tests/{torrents,test_data} fixtures into scratch",
      "python3 -c 'import tomllib; validate seeded TOML'"
    ],
    "artifacts": [
      "evidence/shared_snapshots/phase0_settings_before.toml",
      "evidence/shared_snapshots/phase0_catalog_before.toml",
      "evidence/shared_snapshots/phase0_host_before.toml"
    ],
    "observed": "Scratch workspace was created, fixtures were copied to scratch-local paths, seeded shared files parsed as valid TOML, and runtime local paths were resolved under the platform local app data directory.",
    "expected": "Scratch root exists, binary builds, seeded shared files are valid TOML, and local runtime artifact paths are recorded.",
    "classification": ""
  },
  {
    "phase": "Phase 1: Shared Config Bootstrap And Single-Host Sanity",
    "status": "PASS",
    "commands": [
      "script -q evidence/logs/host-a.tty.log env SUPERSEEDR_SHARED_CONFIG_DIR=... SUPERSEEDR_HOST_ID=host-a bin/superseedr",
      "SUPERSEEDR_SHARED_CONFIG_DIR=... SUPERSEEDR_HOST_ID=host-a bin/superseedr status",
      "SUPERSEEDR_SHARED_CONFIG_DIR=... SUPERSEEDR_HOST_ID=host-a bin/superseedr journal"
    ],
    "artifacts": [
      "evidence/logs/host-a.tty.log",
      "evidence/status/phase1_status.json",
      "evidence/status/phase1_app_state.json",
      "evidence/journal/phase1_journal.txt"
    ],
    "observed": "Host A launched successfully via pseudo-terminal, app_state.json appeared in local app data, both torrents loaded with visible info hashes, client_port was 17301, and output_status_interval remained 0.",
    "expected": "Host A starts and status reflects both seeded catalog entries and expected shared settings.",
    "classification": ""
  },
  {
    "phase": "Phase 2: Online CLI Status Controls",
    "status": "PASS",
    "commands": [
      "SUPERSEEDR_SHARED_CONFIG_DIR=... SUPERSEEDR_HOST_ID=host-a bin/superseedr status",
      "SUPERSEEDR_SHARED_CONFIG_DIR=... SUPERSEEDR_HOST_ID=host-a bin/superseedr status --follow",
      "SUPERSEEDR_SHARED_CONFIG_DIR=... SUPERSEEDR_HOST_ID=host-a bin/superseedr status --stop"
    ],
    "artifacts": [
      "evidence/status/phase2_status_once.json",
      "evidence/status/phase2_follow_updates.json",
      "evidence/status/phase2_stop_check.json",
      "evidence/commands/phase2_follow_cmd.txt",
      "evidence/commands/phase2_stop_cmd.txt"
    ],
    "observed": "status returned JSON, follow mode caused >=3 app_state mtime updates, and stop mode halted further updates after grace period.",
    "expected": "status works and follow/stop toggles periodic status output correctly.",
    "classification": ""
  },
  {
    "phase": "Phase 3: Online CLI Pause/Resume/Priority/Delete",
    "status": "FAIL",
    "commands": [
      "... pause 332af9a80531c7392c51f50e52d15e0cf8fe7b0f",
      "... resume 332af9a80531c7392c51f50e52d15e0cf8fe7b0f",
      "... priority 332af9a80531c7392c51f50e52d15e0cf8fe7b0f --file-index 0 skip",
      "... priority 332af9a80531c7392c51f50e52d15e0cf8fe7b0f --file-index 0 normal",
      "... delete bee22d859dd045de2dea1fc92f8f5bbad7acf69e",
      "... journal"
    ],
    "artifacts": [
      "evidence/commands/phase3_pause_alpha.txt",
      "evidence/commands/phase3_resume_alpha.txt",
      "evidence/commands/phase3_priority_skip.txt",
      "evidence/commands/phase3_priority_normal.txt",
      "evidence/commands/phase3_delete_beta.txt",
      "evidence/status/phase3_state_summary.json",
      "evidence/status/phase3_after_delete.json",
      "evidence/shared_snapshots/phase3_catalog_after_delete.toml",
      "evidence/journal/phase3_journal.txt"
    ],
    "observed": "pause/resume/delete worked and persisted, but both priority invocations crashed with a clap debug assert panic before the command executed.",
    "expected": "pause/resume/priority/delete should all apply online and be recorded in journal.",
    "classification": "PRODUCT"
  },
  {
    "phase": "Phase 4: Offline CLI Behavior",
    "status": "FAIL",
    "commands": [
      "... stop-client",
      "... status",
      "... pause 332af9a80531c7392c51f50e52d15e0cf8fe7b0f",
      "... resume 332af9a80531c7392c51f50e52d15e0cf8fe7b0f",
      "... priority 332af9a80531c7392c51f50e52d15e0cf8fe7b0f --file-index 0 skip",
      "... priority 332af9a80531c7392c51f50e52d15e0cf8fe7b0f --file-index 0 normal",
      "... journal"
    ],
    "artifacts": [
      "evidence/status/phase4_offline_status.json",
      "evidence/commands/phase4_offline_pause.txt",
      "evidence/commands/phase4_offline_resume.txt",
      "evidence/commands/phase4_offline_priority_skip.txt",
      "evidence/commands/phase4_offline_priority_normal.txt",
      "evidence/journal/phase4_journal.txt",
      "evidence/shared_snapshots/phase4_catalog_after_pause.toml",
      "evidence/shared_snapshots/phase4_catalog_after_resume.toml"
    ],
    "observed": "Offline status/pause/resume worked and edited shared catalog directly, but offline priority crashed with the same clap panic and could not be validated.",
    "expected": "Offline status and mutations (including priority) should succeed without daemon.",
    "classification": "PRODUCT"
  },
  {
    "phase": "Phase 5: Shared Config Live Remove Without Resurrection",
    "status": "PASS",
    "commands": [
      "External edit: remove alpha from catalog.toml while host running",
      "... pause bee22d859dd045de2dea1fc92f8f5bbad7acf69e",
      "... status"
    ],
    "artifacts": [
      "evidence/shared_snapshots/phase5_catalog_before_remove.toml",
      "evidence/shared_snapshots/phase5_catalog_after_remove.toml",
      "evidence/shared_snapshots/phase5_catalog_after_host_save.toml",
      "evidence/status/phase5_before_remove_status.json",
      "evidence/status/phase5_after_remove_status.json",
      "evidence/status/phase5_after_host_save_status.json",
      "evidence/status/phase5_resurrection_check.json"
    ],
    "observed": "After external removal, alpha stayed removed in runtime and shared catalog even after an unrelated persisted save on beta.",
    "expected": "Removed entry must not be resurrected by subsequent host saves.",
    "classification": ""
  },
  {
    "phase": "Phase 6: Shared Config Updated-But-Missing Runtime Case",
    "status": "FAIL",
    "commands": [
      "... stop-client",
      "External edit: add alpha with missing shared torrent path",
      "launch host-a",
      "... status",
      "External edit: repair alpha to valid shared torrent and change metadata",
      "... status"
    ],
    "artifacts": [
      "evidence/shared_snapshots/phase6_catalog_with_missing_alpha.toml",
      "evidence/status/phase6_status_missing_alpha.json",
      "evidence/shared_snapshots/phase6_catalog_repaired_alpha.toml",
      "evidence/status/phase6_status_after_repair.json",
      "evidence/status/phase6_runtime_load_check.json"
    ],
    "observed": "With a missing torrent path, runtime omitted alpha as expected, but the shared catalog entry did not remain present (it was pruned). After external repair, alpha loaded live without restart.",
    "expected": "Target scenario expects alpha absent from runtime while still present in shared config prior to repair, then loaded live after updated diff.",
    "classification": "PRODUCT"
  },
  {
    "phase": "Phase 7: Stale-Write Protection",
    "status": "FAIL",
    "commands": [
      "External edit: modify beta name in catalog.toml while host running",
      "... resume bee22d859dd045de2dea1fc92f8f5bbad7acf69e",
      "... status",
      "... journal"
    ],
    "artifacts": [
      "evidence/shared_snapshots/phase7_catalog_before_external_edit.toml",
      "evidence/shared_snapshots/phase7_catalog_after_external_edit.toml",
      "evidence/shared_snapshots/phase7_catalog_after_host_save_attempt.toml",
      "evidence/commands/phase7_resume_beta_after_external_edit.txt",
      "evidence/status/phase7_status_after_save_attempt.json",
      "evidence/journal/phase7_journal.txt"
    ],
    "observed": "The host accepted queued resume and rewrote catalog, overwriting the external edit instead of rejecting stale save with reload-required behavior.",
    "expected": "Conflicting persisted save should be rejected and external on-disk edit should remain intact.",
    "classification": "PRODUCT"
  },
  {
    "phase": "Phase 8: Watch-Folder Delivery For Online CLI",
    "status": "PASS",
    "commands": [
      "Monitor host-a watch folder while issuing online resume",
      "Monitor watch folders while issuing online pause with SUPERSEEDR_WATCH_PATH_1 configured",
      "... status"
    ],
    "artifacts": [
      "evidence/commands/phase8_watch_before.txt",
      "evidence/commands/phase8_watch_after.txt",
      "evidence/commands/phase8_watch_monitor_1.json",
      "evidence/commands/phase8_watch_monitor_2.json",
      "evidence/commands/phase8_watch_summary.json",
      "evidence/commands/phase8_resume_alpha.txt",
      "evidence/commands/phase8_pause_alpha_with_extra_env.txt",
      "evidence/status/phase8_status_after_cmd1.json",
      "evidence/status/phase8_status_after_cmd2.json"
    ],
    "observed": "Online CLI commands produced transient .control files in primary host watch folder that were consumed; no control files were written to extra watch path when SUPERSEEDR_WATCH_PATH_1 was set.",
    "expected": "Primary command watch path is used and consumed regardless of extra watch path configuration.",
    "classification": ""
  }
]