@su-record/vibe 3.2.42 → 3.2.44
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vibe",
|
|
3
3
|
"displayName": "Vibe",
|
|
4
|
-
"version": "3.2.
|
|
4
|
+
"version": "3.2.44",
|
|
5
5
|
"description": "Verification harness for AI coding agents — \"done\" is decided by deterministic gates (test exit codes, run-ledger, regression memory), not the model self-report.",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "su-record",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vibe",
|
|
3
|
-
"version": "3.2.
|
|
3
|
+
"version": "3.2.44",
|
|
4
4
|
"description": "Verification harness for AI coding agents — \"done\" is decided by deterministic gates (test exit codes, run-ledger, regression memory), not the model self-report.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "su-record",
|
package/CLAUDE.md
CHANGED
|
@@ -125,6 +125,19 @@ Claude Code 는 `Workflow` 도구(dynamic workflows)를 제공한다 — 한 실
|
|
|
125
125
|
- **Codex 에는 등가물이 없다** — 하네스별 능력 차이지 워크플로 분기가 아니다. vibe 코어의 루프 계약은 양쪽에서 동일하게 남는다 (Dual-Harness Doctrine)
|
|
126
126
|
- 넘기더라도 **격리·검증 규정은 그대로** 적용된다 — 파일을 쓰는 병렬 단위는 worktree, 검증자는 독립 컨텍스트
|
|
127
127
|
|
|
128
|
+
### 테스트는 불변식을 고정하고, 선택은 고정하지 않는다
|
|
129
|
+
값을 박은 단언은 유지보수자가 선택을 바꾸려 할 때 **"되돌려라" 를 요구한다**. 실제로 `browser-ladder.test.ts` 가 "Agent Browser 가 1순위" 를 단언하고 있어서, 도구를 걷어내는 작업이 테스트 수정을 동반해야 했다.
|
|
130
|
+
|
|
131
|
+
| 고정한다 (불변식) | 고정하지 않는다 (선택) |
|
|
132
|
+
|---|---|
|
|
133
|
+
| 사다리에 오른 도구는 **얻는 경로**가 함께 적혀 있을 것 | 어느 도구가 1순위인지 |
|
|
134
|
+
| 마켓플레이스 source 가 **빌드 산출물**을 가리킬 것 | 그 산출물이 어느 경로인지 (빌드 스크립트에서 읽는다) |
|
|
135
|
+
| 고른 capability 의 매핑값**만** 나올 것 | 그 매핑이 어느 패키지인지 (매핑에서 읽는다) |
|
|
136
|
+
|
|
137
|
+
기준값이 필요하면 **SSOT 에서 읽어온다** — 테스트에 복사하면 그 순간 두 벌이 된다.
|
|
138
|
+
|
|
139
|
+
예외: **정책 단언**은 값을 박아도 된다 (예: "taste-skill 은 자동 설치 매핑에 없다"). 임의의 선택이 아니라 결정을 고정하는 것이고, 뒤집으려면 테스트를 의도적으로 지우면 된다 — 그 사실을 테스트 이름에 적는다.
|
|
140
|
+
|
|
128
141
|
### Gotchas
|
|
129
142
|
- `better-sqlite3` WAL mode — synchronous API
|
|
130
143
|
- `crypto.timingSafeEqual` requires same-length buffers — check length first
|
package/agents/e2e-tester.md
CHANGED
|
@@ -26,34 +26,18 @@ failed scenario. The loop, not a human, closes the gap.
|
|
|
26
26
|
|
|
27
27
|
Cheap verification is what makes the closed loop viable. Priority order:
|
|
28
28
|
|
|
29
|
-
1. **
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
```bash
|
|
33
|
-
npm install -g agent-browser && agent-browser install # native CLI (no Node/Playwright at runtime)
|
|
34
|
-
agent-browser mcp # or run it as an MCP server
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
CLI shape — snapshot once, then act on refs:
|
|
38
|
-
|
|
39
|
-
```bash
|
|
40
|
-
agent-browser open localhost:3000
|
|
41
|
-
agent-browser snapshot # accessibility tree with refs
|
|
42
|
-
agent-browser click @e2
|
|
43
|
-
agent-browser fill @e3 "user@example.com"
|
|
44
|
-
agent-browser close
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
2. **Playwright test runner** — write a spec, run
|
|
48
|
-
`npx playwright test --reporter=line`, consume pass/fail only.
|
|
29
|
+
1. **Playwright test runner** — write a spec, run
|
|
30
|
+
`npx playwright test --reporter=line`, consume **pass/fail only**. The spec
|
|
31
|
+
file holds the interaction detail so the transcript doesn't.
|
|
49
32
|
If missing: `npx playwright install chromium`.
|
|
50
|
-
|
|
51
|
-
context in 2–3
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
>
|
|
55
|
-
>
|
|
56
|
-
>
|
|
33
|
+
2. **Playwright MCP (DOM-based)** — interactive poking when a spec can't
|
|
34
|
+
express the check. Last resort: full DOM trees exhaust context in 2–3
|
|
35
|
+
interactions, so budget for it rather than defaulting to it.
|
|
36
|
+
|
|
37
|
+
> **비용이 루프 횟수를 정한다.** 검증 한 번이 비쌀수록 세션당 돌릴 수 있는 루프가
|
|
38
|
+
> 줄고, 루프가 줄면 닫힌 루프가 성립하지 않는다. 그래서 기본은 **결과만 소비하는**
|
|
39
|
+
> 1순위다 — 상호작용 내용은 spec 파일에 남기고 컨텍스트에는 exit code 만 들인다.
|
|
40
|
+
> DOM 을 컨텍스트로 끌어오는 방식은 그 예산을 한 번에 태운다.
|
|
57
41
|
|
|
58
42
|
## Verification Scope
|
|
59
43
|
|
package/package.json
CHANGED
|
@@ -10,13 +10,12 @@ Browser Tool Priority:
|
|
|
10
10
|
|
|
11
11
|
| Priority | Tool | 용도 | 없을 때 |
|
|
12
12
|
|----------|------|------|---------|
|
|
13
|
-
| 1st |
|
|
14
|
-
| 2nd | Playwright
|
|
15
|
-
| 3rd | Playwright MCP (DOM) | 최후 수단, 토큰 비효율 | — |
|
|
13
|
+
| 1st | Playwright Test Runner | 테스트 코드 실행, **pass/fail 만** 소비 | `npx playwright install chromium` |
|
|
14
|
+
| 2nd | Playwright MCP (DOM) | spec 으로 표현 못 하는 확인, 최후 수단 | — |
|
|
16
15
|
|
|
17
|
-
>
|
|
18
|
-
>
|
|
19
|
-
>
|
|
16
|
+
> 검증 비용이 루프 횟수를 정한다. 1순위는 상호작용 내용을 spec 파일에 남기고
|
|
17
|
+
> 컨텍스트에는 exit code 만 들인다. DOM 을 컨텍스트로 끌어오는 2순위는 2~3회면
|
|
18
|
+
> 예산을 태우므로 기본값이 아니라 예외로 쓴다.
|
|
20
19
|
|
|
21
20
|
**활성화 조건:** Feature 파일에 UI 관련 시나리오 존재 + `.vibe/e2e/config.json`의 `closedLoop.enabled: true` (기본값) + dev server가 실행 중
|
|
22
21
|
|