{
  "schema": "harness.live.activation.chair_signature.template.v1",
  "template_purpose": "회장이 본 packet의 3축을 axis별로 서명할 때 사용하는 단일 templates. 본 파일은 template일 뿐 실제 서명 0.",
  "recorded_at": "2026-05-24",
  "live_change_count": 0,
  "chair_signature_required": true,
  "task_id_reference": "task-2647",
  "single_source_packet": "memory/specs/harness_live_activation_integration_packet_260524.md",
  "field_definitions": {
    "chair_authorization_id": {
      "type": "string",
      "description": "회장 부여 단일 서명 ID. 형식: 'CHAIR-AUTH-{YYYYMMDD}-{axis_id}-{seq}' 예: CHAIR-AUTH-20260524-axis1-001",
      "required": true
    },
    "chair_signature_timestamp": {
      "type": "string",
      "format": "iso8601",
      "description": "서명 시각 (KST 권장)",
      "required": true
    },
    "activation_scope": {
      "type": "string",
      "enum": [
        "callback_authority_gate",
        "callback_collector_control_plane_v2",
        "pre_tool_use_runtime_guard"
      ],
      "description": "활성화 대상 축 식별자 (axis_id 매핑: axis1=callback_authority_gate, axis2=callback_collector_control_plane_v2, axis3=pre_tool_use_runtime_guard)",
      "required": true
    },
    "axis_id": {
      "type": "integer",
      "enum": [1, 2, 3],
      "description": "축 번호 (1=task-2646, 2=task-2644+1, 3=task-2643)",
      "required": true
    },
    "activation_target_path": {
      "type": "array",
      "items": {"type": "string"},
      "description": "활성화로 수정/추가되는 live path 목록 (staged_to_live_mapping §2.X 참조)",
      "required": true
    },
    "rollback_triggers": {
      "type": "array",
      "items": {"type": "string"},
      "description": "rollback 즉시 발동 조건 (rollback_plan §5 참조)",
      "required": true
    },
    "smoke_pass_criteria": {
      "type": "array",
      "items": {"type": "string"},
      "description": "활성화 직후 통과해야 하는 smoke 조건 (smoke_plan §2.X 참조)",
      "required": true
    },
    "live_settings_modification_allowed": {
      "type": "boolean",
      "default": false,
      "description": "settings.json 수정 허락 여부. true 시 별도 verbatim 서명 추가 권장",
      "required": true
    },
    "live_env_gate_modification_allowed": {
      "type": "boolean",
      "default": false,
      "description": "ENV 변수 (예: CLAUDE_PRE_TOOL_USE_HOOK_ENABLED) 변경 허락 여부",
      "required": true
    },
    "approval_window_duration_minutes": {
      "type": "integer",
      "minimum": 30,
      "maximum": 1440,
      "description": "본 서명 유효 시간 (분). 시간 초과 시 재서명 필요. 권장: axis1=120 / axis2=240 / axis3=360",
      "required": true
    },
    "rollback_executor_key": {
      "type": "string",
      "description": "rollback 권한 실행자의 ANU key (별도 발급). 본 packet 작성 시점 권장: axis1=다그다(dev3) / axis2=비슈누(dev4) / axis3=페룬(dev6)",
      "required": true
    },
    "smoke_executor_key": {
      "type": "string",
      "description": "smoke 실행자의 ANU key. rollback_executor_key와 동일 가능",
      "required": true
    },
    "axis_dependency_acknowledged": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "dependent_axis_id": {"type": "integer"},
          "dependency_type": {"type": "string", "enum": ["import", "operational", "settings_shared"]},
          "dependency_resolved": {"type": "boolean"}
        }
      },
      "description": "본 축 활성화 시 사전 충족되어야 하는 다른 축 의존 (예: axis2 활성화 시 axis1 import 의존)",
      "required": true
    },
    "harness_enforced_declaration": {
      "type": "boolean",
      "const": false,
      "description": "★ 본 packet에서는 반드시 false. HARNESS_ENFORCED 선언은 별도 packet에서만 가능.",
      "required": true
    },
    "merge_authorization": {
      "type": "object",
      "properties": {
        "pr_number": {"type": ["integer", "null"], "description": "활성화 PR 번호 (axis3=146 기존 PR / axis1/2=새 PR)"},
        "merge_method": {"type": "string", "enum": ["squash", "merge", "rebase"], "default": "squash"},
        "merge_after_smoke": {"type": "boolean", "default": true}
      },
      "required": true
    },
    "post_activation_monitoring_duration_minutes": {
      "type": "integer",
      "description": "활성화 후 모니터링 의무 시간. 권장: axis1=30 / axis2=60 / axis3=120",
      "required": true
    },
    "chair_verbatim_quote": {
      "type": "string",
      "description": "회장이 직접 입력한 verbatim 서명 문구 (예: '회장 verbatim 2026-05-24 axis 1 live activation 승인')",
      "required": true
    }
  },
  "per_axis_recommended_defaults": {
    "axis_1_callback_authority_gate": {
      "axis_id": 1,
      "activation_scope": "callback_authority_gate",
      "live_settings_modification_allowed": false,
      "live_env_gate_modification_allowed": false,
      "approval_window_duration_minutes": 120,
      "rollback_executor_key": "다그다(dev3) — recommended",
      "smoke_executor_key": "다그다(dev3) — recommended",
      "axis_dependency_acknowledged": [],
      "post_activation_monitoring_duration_minutes": 30,
      "rollback_triggers": [
        "helper.selftest FAIL",
        "pytest tests/regression/callback_authority_gate/ FAIL",
        "authority marker 오인식 1건 이상"
      ],
      "smoke_pass_criteria": [
        "124 regression PASS",
        "6/6 selftest PASS",
        "dispatch.py shim re-export 검증"
      ]
    },
    "axis_2_callback_collector_control_plane_v2": {
      "axis_id": 2,
      "activation_scope": "callback_collector_control_plane_v2",
      "live_settings_modification_allowed": true,
      "live_env_gate_modification_allowed": false,
      "approval_window_duration_minutes": 240,
      "rollback_executor_key": "비슈누(dev4) — recommended",
      "smoke_executor_key": "비슈누(dev4) — recommended",
      "axis_dependency_acknowledged": [
        {
          "dependent_axis_id": 1,
          "dependency_type": "import",
          "dependency_resolved": false,
          "note": "axis 1 live merge 후 true 로 갱신"
        }
      ],
      "post_activation_monitoring_duration_minutes": 60,
      "rollback_triggers": [
        "integration.selftest FAIL",
        "SessionStart hook timeout > 10초",
        "Stop verifier가 정상 세션 차단",
        "regression 66 test 중 1건 이상 FAIL"
      ],
      "smoke_pass_criteria": [
        "66 regression PASS",
        "integration.selftest PASS",
        "3 hook dry-run echo exit 0",
        "ledger entry +1 이상 (post-activation)"
      ]
    },
    "axis_3_pre_tool_use_runtime_guard": {
      "axis_id": 3,
      "activation_scope": "pre_tool_use_runtime_guard",
      "live_settings_modification_allowed": true,
      "live_env_gate_modification_allowed": true,
      "approval_window_duration_minutes": 360,
      "rollback_executor_key": "페룬(dev6) — recommended",
      "smoke_executor_key": "페룬(dev6) — recommended",
      "axis_dependency_acknowledged": [
        {
          "dependent_axis_id": 1,
          "dependency_type": "import",
          "dependency_resolved": true,
          "note": "axis 1과 import 의존 0"
        },
        {
          "dependent_axis_id": 2,
          "dependency_type": "settings_shared",
          "dependency_resolved": false,
          "note": "settings.json hooks 키 공유. axis 2 entry와 별개 key (PreToolUse vs SessionStart/Stop/UserPromptSubmit) 이므로 머지 시 충돌 없음"
        }
      ],
      "post_activation_monitoring_duration_minutes": 120,
      "rollback_triggers": [
        "PreToolUse false positive 1건 이상 (정상 Bash deny)",
        "hook timeout > 5초",
        "fail-closed exception 발생률 > 0.1%"
      ],
      "smoke_pass_criteria": [
        "5 regression test file PASS",
        "4 dry-run case (allow/deny/non-Bash/fail-closed) 정확 응답",
        "30분 soak 후 false positive 0"
      ]
    }
  },
  "instance_template_example": {
    "_comment": "★ 실 서명 시 본 구조를 복사하여 사용. 본 파일에 직접 채워 넣지 말 것.",
    "chair_authorization_id": "CHAIR-AUTH-YYYYMMDD-axisN-001",
    "chair_signature_timestamp": "2026-MM-DDTHH:MM:SS+09:00",
    "activation_scope": "<callback_authority_gate | callback_collector_control_plane_v2 | pre_tool_use_runtime_guard>",
    "axis_id": "<1|2|3>",
    "activation_target_path": ["<live path 1>", "<live path 2>"],
    "rollback_triggers": ["<trigger 1>", "<trigger 2>"],
    "smoke_pass_criteria": ["<criterion 1>", "<criterion 2>"],
    "live_settings_modification_allowed": false,
    "live_env_gate_modification_allowed": false,
    "approval_window_duration_minutes": 120,
    "rollback_executor_key": "<executor name + ANU key>",
    "smoke_executor_key": "<executor name + ANU key>",
    "axis_dependency_acknowledged": [],
    "harness_enforced_declaration": false,
    "merge_authorization": {
      "pr_number": null,
      "merge_method": "squash",
      "merge_after_smoke": true
    },
    "post_activation_monitoring_duration_minutes": 30,
    "chair_verbatim_quote": "<회장 직접 입력 verbatim 서명 문구>"
  },
  "validation_rules": [
    "harness_enforced_declaration는 본 packet 모든 서명에서 false 강제",
    "axis_id와 activation_scope는 1:1 매핑 강제",
    "axis 2 서명 시 axis_dependency_acknowledged[0].dependency_resolved=true 강제 (axis 1 live merge 완료)",
    "live_settings_modification_allowed=true 인 경우 chair_verbatim_quote에 settings.json 수정 허락 명시 강제",
    "live_env_gate_modification_allowed=true 인 경우 (axis 3) ENV gate 활성/비활성 모두 별도 verbatim 필요"
  ],
  "non_negotiable_forbidden": [
    "HARNESS_ENFORCED 선언",
    "회장 서명 없이 settings.json 수정",
    "회장 서명 없이 ENV gate 활성화",
    "BOT App token 사용",
    "auto-merge 활성화",
    "PR #141 pilot",
    "callback enforcement 실 적용 (별도 packet 필요)"
  ]
}
