open · diff

git:20260803.5cd381b to git:20260803.2830b18

22 added, 7 removed. Audit A to A.

---
name: open
description: "Open a transaction: cut a tx-* branch off base, seed the repo, and route the change"
argument-hint: "[change description]"
effort: high
---
transaction(tx:open ~ tx:close)은 작업 단위가 아니라 **무결성 경계**다.
**`tx:open`은 "지금부터 전체 상태를 무결하지 않게 만들겠다"는 선언이다.**
+ # Lifecycle
+
+ `tx:open` → `tx:plan` → `tx:apply` → `tx:archive` → `tx:close`. 모두 Skill 도구다.
+
+ - `tx:plan`: 변경의 intent·design을 change artifact로 기록한다. route가 openspec을 생략하면
+ 건너뛴다.
+ - `tx:apply`: task 순서대로 구현한다. spec delta가 있으면 독립 verify stage를 pass까지 돌린다.
+ - `tx:archive`: 완료된 change를 동결한다. close의 조건이다.
+ - `tx:close`: "전체 상태가 무결하다"를 선언한다. transaction 전체가 CI green인 하나의 PR
+ squash merge로 base에 안착하고, transaction에서 생겨난 모든 것은 base에 실리거나 소멸한다.
+ 이 gate는 close 시점이 아니라 작업 내내의 규율이다.
+
# 열린 상태: 아래가 전부 참이면 transaction은 열린 것이다
- - 새 branch `tx-<slug>`가 최신 `origin/<base>`에서 cut되어 checkout되어 있다. slug는 의도를
- 나타내는 짧은 kebab-case다:
+ - A new branch `tx-<slug>` is cut from the latest `origin/<base>` and checked
+ out. The slug is a short kebab-case name for the intent:
```bash
"${CLAUDE_PLUGIN_ROOT}/bin/tx-hook" open-tx <slug>
```
- - seed가 완료되어 있다 (idempotent). 산출물은 이 transaction에 실려 함께 merge된다:
+ - The seed has run (idempotent). Its artifacts ride this transaction and merge
+ with it:
```bash
"${CLAUDE_PLUGIN_ROOT}/bin/tx-hook" seed
```
- - 변경이 route되어 있다: 구조·세계관에 영향을 주는 변경은 `tx:plan`(Skill 도구)으로 간다.
- behavior 불변인 refactor도 구조에 닿으면 여기다. 그 밖의 trivial·docs 표면 변경은
- openspec을 생략한다.
+ - The change is routed. `tx:plan` takes anything that touches structure or
+ worldview; a behavior-preserving refactor that touches structure is still
+ `tx:plan`'s. Only two kinds of change skip openspec: one confined to the
+ docs surface, and one trivial enough to touch neither.
- command가 실패하면 stderr의 지시가 fix 경로다. seed 실패만은 openspec 생략 경로로 진행한다.
+ When a command fails, stderr carries the fix. Only a seed failure proceeds
+ anyway, on the openspec-skip route.