chore(release): bump framework and 8 skills to v4.1.2 (PATCH — pane resolution & reuse reliability fixes)

This commit is contained in:
2026-08-30 11:02:54 +09:00
parent 526f7a59b7
commit 0644e7736a
9 changed files with 37 additions and 23 deletions
+29 -15
View File
@@ -6,37 +6,51 @@
## 📌 현재 버전 개요 (Current Release)
- **프레임워크 버전**: `v4.1.1`
- **프레임워크 버전**: `v4.1.2`
- **최신 릴리스 일시**: 2026-08-30 (KST)
- **기준 브랜치**: `main`
- **핵심 아키텍처**:
- **OpenCode TUI Readiness Token Hardening**: OpenCode ASCII 아트 로고 및 `Build auto` 시작 모드 대응 `'OpenCode|Chat|Ask anything|tab agents|ctrl\+p|Build auto|commands'` 토큰 확장
- **Herdr Shim Dynamic PYTHONPATH Injection**: 격리 환경 서브프로세스 실행 시 `$WORKSPACE_ROOT/.agents/skills` 경로를 `PYTHONPATH`로 자동 주입하여 `lib_py` 모듈 해석 보장
- **Herdr Agent Startup Resilience & Send-Text Fallback**: TUI 렌더링 지연 시 타임아웃을 즉시 에러 처리하지 않고 실제 에이전트 프로세스 생존 여부 검사 및 `pane send-text` + Enter 폴백 주입
- **Exact Pane ID Fast-Path & Workspace Label Resolution**: `_resolve_herdr_pane_id``wN:pM` 직접 입력 fast-path 및 `herdr workspace list` 기반 workspace label -> id 역방향 해석 지원
- **Runtime Framework Version Constant (`MAM_VERSION`) & 3-Way Lockstep**: `lib.sh``MAM_VERSION="4.1.1"` 런타임 진실 공급원 정의 및 8개 스킬 3자 동기화 가드 유지
- **Generic Agent-Kind Fallback Misattribution Guard**: `_resolve_herdr_pane_id``agent_kind` 광역 폴백을, 대상 이름 자체가 kind 리터럴인 호출로만 한정하여 무관한 동종 에이전트 페인 오인 매칭 차단
- **Idle Pane Reuse on `new-session`**: 기존 워크스페이스에 유휴(에이전트 미할당) 페인이 있으면 신규 `pane split` 없이 우선 재사용하여 페인 증식 및 그리드 레이아웃 경합 방지
- **Runtime Framework Version Constant (`MAM_VERSION`) & 3-Way Lockstep**: `lib.sh``MAM_VERSION="4.1.2"` 런타임 진실 공급원 정의 및 8개 스킬 3자 동기화 가드 유지
---
## 🧭 스킬 패키지 버전 매트릭스 (Skills Version Matrix)
모든 8개 스킬은 YAML frontmatter 메타데이터(`author`, `version`, `platforms`, `environments`) 표준화를 통해 `v4.1.1`으로 동기화되어 배포됩니다.
모든 8개 스킬은 YAML frontmatter 메타데이터(`author`, `version`, `platforms`, `environments`) 표준화를 통해 `v4.1.2`으로 동기화되어 배포됩니다.
| 스킬명 | 버전 | 역할 및 주요 책임 | 상태 |
| :--- | :---: | :--- | :---: |
| **`multi-agent-mux-create`** | `4.1.1` | 에이전트 세션 신규 생성 및 Herdr 컨테이너 격리 스폰 | ✅ 배포 |
| **`multi-agent-mux-stop`** | `4.1.1` | 대화 UUID 원자적 캡처 및 세션 안전 종료 (Graceful Stop) | ✅ 배포 |
| **`multi-agent-mux-resume`** | `4.1.1` | 온디스크 대화 컨텍스트 기반 Tier-1 초고속 세션 복원 | ✅ 배포 |
| **`multi-agent-mux-status`** | `4.1.1` | 실시간 Herdr 세션 및 레지스트리 드리프트 스냅샷 조회 | ✅ 배포 |
| **`multi-agent-mux-monitor`** | `4.1.1` | YAML ↔ 런타임 상태 간 자율 조정자 (Reconciler Loop) | ✅ 배포 |
| **`multi-agent-mux-delegate-job`** | `4.1.1` | MQTT 이벤트 채널 기반 비동기 단위 작업 위임 | ✅ 배포 |
| **`multi-agent-mux-loop`** | `4.1.1` | Planner-Creator-Reviewer 3자 자율 계획·실행·피어리뷰 루프 | ✅ 배포 |
| **`multi-agent-mux-orc-onboard`** | `4.1.1` | 오케스트레이터 UUID 격리 등록 및 서브 세션 오염 방지 | ✅ 배포 |
| **`multi-agent-mux-create`** | `4.1.2` | 에이전트 세션 신규 생성 및 Herdr 컨테이너 격리 스폰 | ✅ 배포 |
| **`multi-agent-mux-stop`** | `4.1.2` | 대화 UUID 원자적 캡처 및 세션 안전 종료 (Graceful Stop) | ✅ 배포 |
| **`multi-agent-mux-resume`** | `4.1.2` | 온디스크 대화 컨텍스트 기반 Tier-1 초고속 세션 복원 | ✅ 배포 |
| **`multi-agent-mux-status`** | `4.1.2` | 실시간 Herdr 세션 및 레지스트리 드리프트 스냅샷 조회 | ✅ 배포 |
| **`multi-agent-mux-monitor`** | `4.1.2` | YAML ↔ 런타임 상태 간 자율 조정자 (Reconciler Loop) | ✅ 배포 |
| **`multi-agent-mux-delegate-job`** | `4.1.2` | MQTT 이벤트 채널 기반 비동기 단위 작업 위임 | ✅ 배포 |
| **`multi-agent-mux-loop`** | `4.1.2` | Planner-Creator-Reviewer 3자 자율 계획·실행·피어리뷰 루프 | ✅ 배포 |
| **`multi-agent-mux-orc-onboard`** | `4.1.2` | 오케스트레이터 UUID 격리 등록 및 서브 세션 오염 방지 | ✅ 배포 |
---
## 📋 버전별 상세 변경 내역 (Changelog)
### 🛠️ `v4.1.2` — Pane Resolution & Reuse Reliability Fixes (2026-08-30)
> **주요 마일스톤 (PATCH Release)**: `bug-report/mam_upstream_bug_fix_report.md`에 보고된 4건을 실 코드 대비 독립 검증 — 2건은 실재하는 결함으로 확인되어 수정(SemVer 2.0.0 §6 PATCH), 1건(`ready_tokens`)은 v4.1.1에서 이미 해결됨을 확인, 1건(`resume_spec` `materialized` 게이트)은 5개 어댑터 공통의 의도된 안전장치로 판단되어 제안된 수정을 채택하지 않음(근거는 아래 참조).
#### 🩹 버그 수정 및 안정성 개선 (Bug Fixes & Resilience)
* **C-1: `_resolve_herdr_pane_id` Generic `agent_kind` 오인 매칭 방지 (`lib.sh`)**:
- 세션명 매칭 실패 시 수행되던 `agent_kind` 광역 폴백을 호출 대상 자체가 kind 리터럴(예: `"agy"`)인 경우로만 한정하고, 상위 루프의 exact match 대상에서 `'agent'`를 제외하여 동종 페인 다수 존재 시 R-1 fail-closed 계약이 온전히 적용되도록 보장. 이전에는 대상 세션의 yaml 항목에서 조회한 kind로 "동종 페인 아무거나" 검색을 수행해, 워크스페이스 내 무관한 동종 에이전트(예: 별도 오케스트레이터 `agy` 세션)가 단 1개라도 살아있으면 그 페인을 대상으로 오인 반환하는 결함이 있었음.
* **C-2: `new-session` 유휴 페인(Idle Pane) 우선 재사용 및 환경변수 주입 보전 (`lib.sh`)**:
- 기존 워크스페이스가 감지되면 곧바로 `pane split`을 호출하던 기존 동작을 변경, 워크스페이스 내 에이전트 미할당(유휴) 페인이 존재하면 이를 `target_pane`으로 즉시 재사용하고 split을 생략. 재사용 시 호출자가 전달한 `$env_flags``HERDR_WORKSPACE_ID`가 유실되지 않도록 `env` 접두어로 `$final_cmd`에 주입하여 환경변수 전달 일관성 보장. 오버플로우 시 신규 워크스페이스 생성 정책(W2b)은 유휴 페인이 없는 경우에만 그대로 적용됨.
* **검토 후 미채택 — `opencode.py::resume_spec` `materialized` 게이트**:
- 보고서는 `if materialized and session_uuid:` 조건 제거를 제안했으나, 이는 `claude`/`grok`/`agy`/`hermes`/`opencode` 5개 어댑터 전원에 동일하게 존재하는 의도된 계약이며, `materialized``verify_artifact()`(opencode의 경우 실제 SQLite 세션 DB 조회)로 산출됨 — 존재하지 않는 세션 ID로 `--session`을 넘겨 CLI가 실패/행(hang)하는 것을 막기 위한 안전장치. 제안대로 수정 시 5-어댑터 일관성이 깨지고 안전장치가 무력화되므로 채택하지 않음. `resume_session.sh``WORKSPACE`를 필수 인자로 검증하므로 `ctx`가 비어 `materialized`가 거짓이 되는 경로도 확인되지 않음.
* **재확인(조치 불필요) — `opencode.py::ready_tokens`**:
- 보고서가 지적한 ASCII 배너 미인식 문제는 v4.1.1(B-1, job `c38ddfcf`)에서 이미 해결되어 현재 `ready_tokens`가 보고서의 "수정 후" 값과 완전히 일치함을 확인. 보고서 작성 시점이 v4.1.1 이전 체크아웃이었던 것으로 추정.
---
### 🛠️ `v4.1.1` — Agent Creation & Runtime Reliability Fixes (2026-08-30)
> **주요 마일스톤 (PATCH Release)**: 에이전트 생성 및 런타임 신뢰성 향상을 위한 4대 보편 버그 수정(SemVer 2.0.0 §6 PATCH), Herdr 격리 환경 `PYTHONPATH` 자동 주입, OpenCode TUI 레디 토큰 보강, 세션 페인 식별자 Fast-Path 및 시작 타임아웃 복원력 강화.