{
  "manifest_version": "v1",
  "manifest_type": "task_2701_phase_b_loss_zero_preservation",
  "task_id": "task-2701+1",
  "phase": "B",
  "team": "dev2-team",
  "owner": "Odin",
  "chair_authorization_id": "CHAIR-AUTH-TASK-2701-PHASE-B-PRESERVE-THEN-ALIGN-LOCAL-MAIN-20260528-JJONGS-EXECUTE-001",
  "recorded_at": "2026-05-28T08:30:00+09:00",
  "repo": "/home/jay/workspace",
  "stage": "PRE_RESET_PRESERVATION_COMPLETE",

  "divergence_pre_reset": {
    "local_main_HEAD": "f14b38503fd1842f1539a5a1ade765b80e6969ec",
    "origin_main_HEAD": "35e81f01f31a39c95bdd122ba76f5b0c5785646b",
    "origin_main_commit": "[task-2700+1] dev6 페룬: LOCAL_MAIN_DIVERGENCE_PREVENTION fresh re-extract (#160)",
    "merge_base": "6220f5b5cbbf34e637c24096a1f09254010d187b",
    "ahead": 6,
    "behind": 70,
    "dirty_total": 895
  },

  "ahead_6_commits_reachability": {
    "loss_risk": "ZERO",
    "evidence": "all 6 reachable from origin remote refs (for-each-ref --contains)",
    "commits": [
      {"sha": "f14b38503fd1842f1539a5a1ade765b80e6969ec", "task": "task-2692", "remote_refs": ["origin/task/task-2699-dev1"], "also": "PR #154 OPEN"},
      {"sha": "5a29d3ee", "task": "task-2569+1", "remote_refs": ["origin/task/task-2691-dev8", "origin/task/task-2699-dev1"]},
      {"sha": "6b082dab", "task": "task-2569 merge", "remote_refs": ["origin/task/task-2691-dev8", "origin/task/task-2699-dev1"]},
      {"sha": "f0e90e09", "task": "task-2569", "remote_refs": ["origin/task/task-2691-dev8", "origin/task/task-2699-dev1"]},
      {"sha": "3000e601", "task": "task-2568", "remote_refs": ["origin/task/task-2691-dev8", "origin/task/task-2699-dev1"]},
      {"sha": "8e18e354", "task": "task-2568", "remote_refs": ["origin/task/task-2691-dev8", "origin/task/task-2699-dev1"]}
    ]
  },

  "preserve_branch": {
    "name": "task-2701-local-main-preserve",
    "sha": "f14b38503fd1842f1539a5a1ade765b80e6969ec",
    "equals_local_main": true,
    "contains_all_6_ahead": true
  },

  "preservation_artifacts": {
    "tracked_diff_patch": {
      "path": "memory/backups/task-2701-dirty.patch",
      "command": "git diff HEAD",
      "lines": 481220,
      "bytes": 43072882,
      "sha256": "892da833e12446a4a4ebb5c169bac0d6b9bbfe49f5a2d4378c1ea83cc2050563",
      "covers": "all tracked working-tree changes vs HEAD (M 21 + D 44 + staged content)"
    },
    "staged_diff_patch": {
      "path": "memory/backups/task-2701-phase-b/task-2701-staged.patch",
      "command": "git diff --cached HEAD",
      "lines": 142,
      "sha256": "fa3c8374c72f3e7865f51b9558577778cd188974ad0ab15c7a5dfc3b650081fb"
    },
    "content_source_archive": {
      "dir": "memory/backups/task-2701-phase-b/content-archive/",
      "files": [
        {"orig": "config/constants.json", "bytes": 4968, "sha256": "a918284a9b1d97a2f8f5ddd74b8f32f554d04b61f0b3ec3d2497ef719a0bae6b"},
        {"orig": "memory/reports/task-2692.md", "bytes": 10430, "sha256": "bd9c35793a27cfef73a6c4b7077c0f241993ba411d52ab751b22809dd6c7fafb"},
        {"orig": "memory/specs/anu-system-spec-changelog.md", "bytes": 23955, "sha256": "f93fe0f3357474aad6955c8824d507a40a8b08018ed69b55c58472aaa08474a0"},
        {"orig": "memory/specs/anu-system-spec.md", "bytes": 34643, "sha256": "dd929c0996f56f72833799d1c7bbe92189662104ab4001a76dfd2c23c94aae4b"},
        {"orig": "memory/tasks/task-2.md", "bytes": 21, "sha256": "fc8dba750fc0a13a85aaa7188491a62486801bf5669e94159d4c32726f9ddb08"},
        {"orig": "memory/events/anu_callback/task-2695-normal-completion.json", "bytes": 2917, "sha256": "63ecf093f41afce701129bc8fd1be4984c809e53ec3ede1838a9f5a2e7b9bddc"},
        {"orig": "memory/reports/task-2695.md", "bytes": 6922, "sha256": "8f24fdabb5ed113bd8450f878cecd7a00121ab6909ca510f7e36cc7b0030ff80"}
      ]
    },
    "file_lists": {
      "untracked": "memory/backups/task-2701-phase-b/untracked-list-pre-reset.txt (831 entries, collision-with-origin=0 -> preserved by reset)",
      "tracked_deleted": "memory/backups/task-2701-phase-b/tracked-deleted-list.txt (44 daemon .acked/.notified markers, restored by reset)",
      "tracked_modified": "memory/backups/task-2701-phase-b/tracked-modified-list.txt (21 entries)"
    }
  },

  "truncate_files_canonical": {
    "note": "local = 0-byte truncate ACCIDENT (chair confirmed). HEAD == ORIGIN canonical IDENTICAL -> restored exactly by reset --hard origin/main.",
    "utils/replacement_pr_runner.py": {
      "local_lines": 0,
      "local_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
      "head_lines": 718,
      "head_sha256": "95809c89b2f8ba90afb2de98b30d49ceb5d2f011fd6a3345256f907f8556c3b6",
      "head_blob": "1fa8b2d2d9b25288e7e55152fa73b763aad4551b",
      "origin_lines": 718,
      "origin_sha256": "95809c89b2f8ba90afb2de98b30d49ceb5d2f011fd6a3345256f907f8556c3b6",
      "origin_blob": "1fa8b2d2d9b25288e7e55152fa73b763aad4551b",
      "head_equals_origin": true
    },
    "tests/regression/test_replacement_pr_runner_2510.py": {
      "local_lines": 0,
      "local_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
      "head_lines": 493,
      "head_sha256": "57ebdc51bde574d23322549feb9341c25af1aae550aeac9e5093f5dbf3f3d737",
      "head_blob": "cb01bc6dae220e58a701e9fff2efb6553f351d57",
      "origin_lines": 493,
      "origin_sha256": "57ebdc51bde574d23322549feb9341c25af1aae550aeac9e5093f5dbf3f3d737",
      "origin_blob": "cb01bc6dae220e58a701e9fff2efb6553f351d57",
      "head_equals_origin": true
    }
  },

  "untracked_collision_check": {
    "untracked_count": 831,
    "origin_main_path_count": 25846,
    "intersection": 0,
    "verdict": "reset --hard preserves all untracked (no collision). git clean FORBIDDEN -> retained."
  },

  "daemon_recontamination_prevention": {
    "mechanism": "git update-index --skip-worktree (local, no commit, no divergence) applied AFTER reset",
    "rationale": "main commit/push forbidden + system hook blocks main commit + origin/main .gitignore lacks daemon keys -> gitignore+rm-cached would create new divergence. skip-worktree suppresses daemon re-writes from git status without divergence.",
    "files": [
      "dashboard/data/naver-sa-stats.json",
      "memory/bot_settings_sync.json",
      "memory/events/bot-activity.json",
      "memory/events/member-status.json",
      "memory/logs/audit-trail.jsonl",
      "memory/logs/qc-skip-log.jsonl",
      "memory/logs/retry-counters/task-test-003.fail_history.jsonl",
      "memory/memory-check-log.json",
      "memory/pipeline-status.json",
      "memory/specs/.spec-state-cache.json",
      "memory/task-timers.json",
      "memory/token-ledger.json",
      "memory/whisper/session-guidance.json",
      "memory/whisper/status.json"
    ],
    "permanent_fix_plan": "gitignore add + daemon write-path move outside repo (requires main PR -> out of this no-push task scope; documented for future task)"
  },

  "restore_procedure": {
    "ahead_commits": "git cherry-pick / git branch from task-2701-local-main-preserve (or origin remote task refs)",
    "tracked_mods": "git apply memory/backups/task-2701-dirty.patch (from origin/main base)",
    "content_files": "cp memory/backups/task-2701-phase-b/content-archive/<mangled> <orig path>",
    "verification": "compare sha256 against this manifest"
  },

  "loss_zero_assertion": "All 6 ahead commits (origin-reachable + preserve branch), all tracked modifications (dirty.patch + content archive), all staged (staged.patch + archive), all untracked (collision-0, reset-preserved). Truncate 2 files discarded LOCAL 0-byte accident -> restored canonical 718/493. LOSS = 0."
}
