{
  "marker_version": "v1",
  "marker_type": "callback_normal_fire_delay_remediation_phase_2_result",
  "task_id": "task-2660",
  "recorded_at": "2026-05-25T15:30:00+09:00",
  "recorded_by": "dev1_hermes",
  "chair_authorization_id": "CHAIR-AUTH-CALLBACK-DELAY-P2-20260525-JJONGS-NORMAL-FAST-001",
  "sentinel": "CALLBACK_NORMAL_FIRE_DELAY_REMEDIATION_HOLD_FOR_CHAIR",
  "sentinel_reason": "코드/regression 완료 / commit OK · ★ ANCHOR-7 OWNER PAT(ghp_*) 만 존재, GitHub App token(ghs_*) 부재 → 봇 자율 push/PR 금지 → 회장 결정 대기",

  "base_sha": "d4098b04",
  "branch": "task/task-2660-dev1",
  "worktree": "/home/jay/workspace/.worktrees/task-2660-dev1",
  "commit_sha": "c6425611f5def45c45b3eeb4cd655afe03d27033",
  "pr_number": null,
  "pr_url": null,
  "auto_merge": false,
  "auto_merge_label_applied": false,

  "changed_files_count": 5,
  "changed_files": [
    "dispatch/normal_fallback_callback_helper.py",
    "scripts/finish-task.sh",
    "tests/callback_fire_delay_remediation/__init__.py",
    "tests/callback_fire_delay_remediation/conftest.py",
    "tests/callback_fire_delay_remediation/test_regression_6.py"
  ],
  "insertions": 495,
  "deletions": 5,

  "smoking_gun_remediation": {
    "A_finish_task_sh_line_1369": {
      "before": "--prompt \"$T2626_ENVELOPE\" --at \"10m\"",
      "after": "--prompt \"$T2626_ENVELOPE\" --at \"10s\"",
      "delay_before_seconds": 600,
      "delay_after_seconds": 10,
      "reduction_factor": 60
    },
    "B_helper_argparse_default": {
      "before": "lp.add_argument(\"--at\", default=\"10m\")",
      "after": "lp.add_argument(\"--at\", default=None)  # post-parse kind-aware",
      "kind_aware_resolution": {
        "normal": "DEFAULT_AT_NORMAL = '10s' (≤30s · 회장 verbatim)",
        "fallback": "DEFAULT_AT_FALLBACK = '10m' (★ 기존 동작 유지 · 변경 0)"
      }
    },
    "C_envelope_label_minimal_reinforcement": {
      "added_keys": ["callback_kind", "source_attribution"],
      "envelope_allowed_keys_added": ["source_attribution"],
      "structural_change": false,
      "label_only": true
    },
    "D_minimal_lint_R4": {
      "function": "lint_normal_callback_delay(kind, at, reason=None) -> dict",
      "enforce": false,
      "verdict_changed": false,
      "stderr_warning_only": true,
      "phase_4_enforce_blocked": true
    }
  },

  "normal_delay_before_after": {
    "before_seconds": 600,
    "after_seconds": 10,
    "target_seconds": 30,
    "target_met": true
  },

  "fallback_impact": {
    "default_at_fallback_unchanged": "10m",
    "default_at_fallback_seconds": 600,
    "phase_3_fallback_launcher_separation_attempted": false,
    "any_fallback_module_modified": false
  },

  "regression_6_results": {
    "total_test_cases": 16,
    "passed": 16,
    "failed": 0,
    "regression_per_chair_verbatim": {
      "R1_normal_default_under_30s": "PASS (2/2)",
      "R2_finish_task_sh_normal_under_30s": "PASS (2/2)",
      "R3_fallback_unchanged_or_ge_600s": "PASS (2/2)",
      "R4_normal_delay_gt_60s_no_reason_lint_warning": "PASS (5/5)",
      "R5_task_2659_timing_replay_no_regression": "PASS (2/2)",
      "R6_envelope_byte_limit_utf8_3900_maintained": "PASS (3/3)"
    }
  },

  "forbidden_action_count": 0,
  "forbidden_paths_inspected_unchanged": [
    "/home/jay/.claude/settings.json",
    "/home/jay/.claude/settings.local.json",
    "/home/jay/.claude/hooks/**",
    "/usr/local/bin/cokacdir",
    ".github/**",
    "schemas/**",
    "hooks/**",
    "dispatch.py",
    "dispatch/__init__.py",
    "utils/replacement_pr_runner.py",
    "utils/anu_callback_registrar.py",
    "utils/anu_callback_fallback.py",
    "utils/completion_callback_fallback_cancel.py",
    "utils/**axis_1**",
    "utils/**axis_2**",
    "utils/axis_3_canary_scale_aware_guard/**",
    "utils/anu_spawn_visibility_guard/**"
  ],

  "frozen_anchors_compliance": {
    "ANCHOR_1_phase_2_only": true,
    "ANCHOR_2_normal_under_30s_fallback_unchanged": true,
    "ANCHOR_3_only_two_files_modified_plus_tests": true,
    "ANCHOR_4_no_auto_merge_no_pr_147_merge": true,
    "ANCHOR_5_dispatch_settings_axis_unchanged": true,
    "ANCHOR_6_label_only_no_structural_change": true,
    "ANCHOR_7_owner_pat_only_hold_for_chair": true
  },

  "task_2659_timing_replay": {
    "pre_remediation_idle_gap_seconds_done_to_fire": 849,
    "pre_remediation_idle_gap_human": "약 14분 9초",
    "post_remediation_idle_gap_seconds_done_to_fire": 259,
    "post_remediation_idle_gap_human": "약 4분 19초 (done→register lag + 10s fire)",
    "register_to_fire_post_seconds": 10,
    "register_to_fire_target_seconds": 30,
    "register_to_fire_target_met": true
  },

  "current_axis_3_canary_isolation_anchor": {
    "anu_action_count_this_task": 0,
    "observer_chain_modified": false,
    "axis_3_canary_running_promotion_blocked_anchor_maintained": true,
    "next_observer_expected": "+960m schedule_id 7F77793F · fire 14:50:00 KST (격리 진행)"
  },

  "chair_decision_required_4": [
    "push 승인 — ghs_* GitHub App token 발급 또는 회장 직접 push",
    "PR create 승인 — gh pr create 호출 권한 (★ auto-merge label 절대 금지)",
    "PR merge 정책 — phase_2_normal_callback_fire_delay_pr_only_no_auto_merge 별도 verbatim",
    "Phase 3 fallback launcher 분리 / Phase 4 threshold enforce 진행 여부"
  ],

  "linked_markers": [
    "memory/events/callback-fire-at-delay-audit-packet-260525.json",
    "memory/tasks/task-2660.md",
    "memory/reports/task-2660.md",
    "memory/events/task-2659.dispatch-submitted-phase-1-canonical-promotion-260525.json"
  ]
}
