tink-harness 1.2.1 → 1.2.2
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.
- package/.claude-plugin/plugin.json +2 -2
- package/CHANGELOG.md +103 -75
- package/README.ko.md +130 -122
- package/README.md +96 -92
- package/VERSIONING.md +2 -2
- package/bin/install.js +318 -257
- package/commands/cast.md +179 -172
- package/docs/context-change-review.ko.md +14 -0
- package/docs/context-change-review.md +14 -0
- package/docs/external-context-policy.ko.md +15 -0
- package/docs/external-context-policy.md +15 -0
- package/docs/graph-contracts-and-guards.md +61 -0
- package/docs/harness-lifecycle-signals.ko.md +23 -0
- package/docs/harness-lifecycle-signals.md +23 -0
- package/docs/hooks.md +49 -0
- package/docs/memory-decision-layers.ko.md +14 -0
- package/docs/memory-decision-layers.md +14 -0
- package/docs/memory.md +31 -0
- package/docs/phase-5-update-confidence.ko.md +99 -0
- package/docs/phase-5-update-confidence.md +97 -0
- package/docs/planned-work-units.ko.md +77 -0
- package/docs/planned-work-units.md +77 -0
- package/docs/pr/2026-06-07-phase-5-6-follow-up.ko.md +35 -0
- package/docs/pr/2026-06-07-v1.2.0-improvements.html +450 -0
- package/docs/pr/2026-06-08-planned-work-units.ko.md +27 -0
- package/docs/pr/2026-06-08-v1.2.2.ko.md +27 -0
- package/docs/repo-signals.ko.md +104 -0
- package/docs/repo-signals.md +95 -77
- package/docs/research.md +16 -0
- package/docs/tink-idea-implementation-plan.ko.md +201 -0
- package/docs/update-diagnosis.ko.md +16 -0
- package/docs/update-diagnosis.md +16 -0
- package/docs/update-troubleshooting.ko.md +113 -0
- package/docs/update-troubleshooting.md +100 -0
- package/docs/update-verification-recipe.ko.md +118 -0
- package/docs/update-verification-recipe.md +119 -0
- package/docs/verification-evidence-details.ko.md +14 -0
- package/docs/verification-evidence-details.md +14 -0
- package/docs/work-state.ko.md +94 -0
- package/docs/work-state.md +92 -0
- package/package.json +2 -4
- package/templates/claude/commands/tink/cast.md +179 -172
- package/templates/codex/skills/tink-cast/SKILL.md +14 -13
- package/templates/codex/skills/tink-core/RULES.md +163 -112
- package/templates/tink/memory/approved/README.md +5 -0
- package/templates/tink/memory/candidate/README.md +5 -0
- package/templates/tink/memory/evidence/README.md +5 -0
- package/templates/tink/memory/rejected/README.md +5 -0
- package/templates/tink/schemas/harness-lifecycle.schema.json +44 -0
- package/templates/tink/schemas/mcp-policy.schema.json +65 -0
- package/templates/tink/schemas/verification.schema.json +154 -141
package/docs/repo-signals.md
CHANGED
|
@@ -1,77 +1,95 @@
|
|
|
1
|
-
# Repo Signals
|
|
2
|
-
|
|
3
|
-
Repo signals are small, static hints that help `/tink:cast` choose context and verification without adding a new command surface.
|
|
4
|
-
|
|
5
|
-
They are not a generated index, not a cache, and not a `tink index` command. In this phase, repo signals live in fixtures so the behavior can be reviewed and tested before any runtime automation exists.
|
|
6
|
-
|
|
7
|
-
Repo signals follow the project compatibility baseline in `docs/compatibility-policy.md`: Claude Code and Codex must both be considered, and macOS and Windows must both remain supported.
|
|
8
|
-
|
|
9
|
-
## Purpose
|
|
10
|
-
|
|
11
|
-
Repo signals answer
|
|
12
|
-
|
|
13
|
-
1. Which files usually move together?
|
|
14
|
-
2. Which checks prove those files stayed consistent?
|
|
15
|
-
3. Which changed paths are unknown to the current signal set?
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
->
|
|
59
|
-
->
|
|
60
|
-
->
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
1
|
+
# Repo Signals
|
|
2
|
+
|
|
3
|
+
Repo signals are small, static hints that help `/tink:cast` choose context and verification without adding a new command surface.
|
|
4
|
+
|
|
5
|
+
They are not a generated index, not a cache, and not a `tink index` command. In this phase, repo signals live in fixtures so the behavior can be reviewed and tested before any runtime automation exists.
|
|
6
|
+
|
|
7
|
+
Repo signals follow the project compatibility baseline in `docs/compatibility-policy.md`: Claude Code and Codex must both be considered, and macOS and Windows must both remain supported.
|
|
8
|
+
|
|
9
|
+
## Purpose
|
|
10
|
+
|
|
11
|
+
Repo signals answer four questions:
|
|
12
|
+
|
|
13
|
+
1. Which files usually move together?
|
|
14
|
+
2. Which checks prove those files stayed consistent?
|
|
15
|
+
3. Which changed paths are unknown to the current signal set?
|
|
16
|
+
4. Which small set of related context should cast inspect first?
|
|
17
|
+
|
|
18
|
+
This lets Tink explain why a file was included in `context-map.json`, why a verification check was selected in `contract.json`, and when no check should be invented.
|
|
19
|
+
|
|
20
|
+
## Context Graph Lite
|
|
21
|
+
|
|
22
|
+
Phase 6 adds `context_graph_lite` to the static fixture. It is a small set of changed-path rules for cast. It is internal to `/tink:cast` and `$tink:cast`; it is not a new command, not a file watcher, and not a runtime indexer.
|
|
23
|
+
|
|
24
|
+
Each rule has:
|
|
25
|
+
|
|
26
|
+
- `when_paths`: changed path patterns that activate the rule.
|
|
27
|
+
- `include_paths`: related files cast should consider first.
|
|
28
|
+
- `signal_refs`: sync groups, verification commands, or verification hints that explain the selection.
|
|
29
|
+
- `reason` and `confidence`: human-readable traceability for `context-map.json signals`.
|
|
30
|
+
|
|
31
|
+
Context Graph Lite should prefer a small high-confidence context pack over a broad list. If no graph rule matches, Tink should record `unmatched_path` instead of inventing a relationship.
|
|
32
|
+
|
|
33
|
+
## Current Fixtures
|
|
34
|
+
|
|
35
|
+
- `tests/fixtures/repo-signals/tink-harness.json`: stable repo facts such as sync groups, instruction files, schema files, command surface, and verification hints.
|
|
36
|
+
- `tests/fixtures/repo-signals/path-cases.json`: examples of changed paths and the verification hints they should select.
|
|
37
|
+
- `tests/fixtures/current-run/context-map.json`: an example of context signals that cite repo signal sources.
|
|
38
|
+
- `tests/fixtures/current-run/contract.json`: an example of selected verification hints written as manual checks.
|
|
39
|
+
|
|
40
|
+
## Flow
|
|
41
|
+
|
|
42
|
+
The intended cast flow is:
|
|
43
|
+
|
|
44
|
+
```text
|
|
45
|
+
changed path
|
|
46
|
+
-> matching context_graph_lite rules
|
|
47
|
+
-> small related context set
|
|
48
|
+
-> matching repo signal verification_hints
|
|
49
|
+
-> contract.verification.manual_checks[]
|
|
50
|
+
-> context-map.json signals
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
For example:
|
|
54
|
+
|
|
55
|
+
```text
|
|
56
|
+
commands/cast.md
|
|
57
|
+
-> context_graph_lite.rules.claude-command-sync
|
|
58
|
+
-> include matching command copies and tests/test_templates.py
|
|
59
|
+
-> verification_hints.command-template-sync
|
|
60
|
+
-> manual check: test_dual_format_paths_stay_in_sync
|
|
61
|
+
-> context-map signal: verification_hint
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
The contract records what must be checked. The context map records why that check was selected.
|
|
65
|
+
|
|
66
|
+
## Unmatched Paths
|
|
67
|
+
|
|
68
|
+
If a changed path matches no verification hint, Tink should not invent a check.
|
|
69
|
+
|
|
70
|
+
Instead, it records an `unmatched_path` signal in `context-map.json`.
|
|
71
|
+
|
|
72
|
+
Example:
|
|
73
|
+
|
|
74
|
+
```text
|
|
75
|
+
docs/memory.md
|
|
76
|
+
-> no matching verification hint
|
|
77
|
+
-> no manual check added
|
|
78
|
+
-> context-map signal: unmatched_path
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
This keeps Tink honest. Unknown context is still visible, but it does not create fake certainty.
|
|
82
|
+
|
|
83
|
+
## Boundaries
|
|
84
|
+
|
|
85
|
+
Repo signal fixtures are advisory inputs.
|
|
86
|
+
|
|
87
|
+
They must not:
|
|
88
|
+
|
|
89
|
+
- run commands;
|
|
90
|
+
- install tools;
|
|
91
|
+
- write files;
|
|
92
|
+
- create command surfaces;
|
|
93
|
+
- behave like a runtime indexer.
|
|
94
|
+
|
|
95
|
+
If runtime support is added later, it should preserve the same contract: signals explain context and verification choices, while checks still run through the normal verification flow.
|
package/docs/research.md
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Research notes
|
|
2
|
+
|
|
3
|
+
Tink was shaped by a small survey of harness, agent, workflow, and skill projects. The survey goal was to learn invariants, not copy implementations.
|
|
4
|
+
|
|
5
|
+
## Borrowed principles
|
|
6
|
+
|
|
7
|
+
- Small composable skills reduce setup friction.
|
|
8
|
+
- Feedback loops are the speed limit.
|
|
9
|
+
- Handoffs and guardrails should be explicit.
|
|
10
|
+
- State and recovery matter, but a full workflow engine is too heavy for Tink v0.
|
|
11
|
+
- Verification should happen before completion claims.
|
|
12
|
+
- Repeated mistakes should become short reusable rules after approval.
|
|
13
|
+
|
|
14
|
+
## Product decision
|
|
15
|
+
|
|
16
|
+
Tink v0 is Claude Code-only. This keeps the first version easy to understand and install.
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
# Tink 아이디어 구현 점검과 다음 계획
|
|
2
|
+
|
|
3
|
+
이 문서는 지금까지 논의한 Tink 확장 아이디어가 v1.2.x 기준으로 어디까지 구현되었는지 점검하고, 다음에 어떤 순서로 확장하면 좋은지 정리한다.
|
|
4
|
+
|
|
5
|
+
핵심 방향은 그대로 유지한다. Tink는 자체 거대 런타임이 아니라 Claude Code와 Codex 위에 얹는 경량 하네스 계층이다. 목표는 더 많은 명령을 만드는 것이 아니라, 작업 전 context 설계, 작업 계약, 검증 가능한 완료, 반복 개선을 더 안정적으로 만드는 것이다.
|
|
6
|
+
|
|
7
|
+
## 요약
|
|
8
|
+
|
|
9
|
+
v1.2.0에서 가장 크게 들어간 것은 Codex 지원, context artifact, Repo Signal, Verify Runner, MCP Safe Profile의 기반이다. 즉, Tink가 단순한 명령 묶음에서 "작업 상태와 검증 계약을 남기는 하네스 레이어"로 이동하기 시작했다.
|
|
10
|
+
|
|
11
|
+
다만 첨부 아이디어에서 말한 완전한 graph 기반 context compiler, 실제 MCP gateway, productivity dashboard, harness registry, subagent adapter는 아직 구현되지 않았다. 지금 단계에서는 이들을 한 번에 크게 만들기보다, 현재 surface를 유지한 채 내부 artifact와 검증 품질을 조금씩 강화하는 편이 맞다.
|
|
12
|
+
|
|
13
|
+
중요한 제약도 명확하다.
|
|
14
|
+
|
|
15
|
+
- Claude Code와 Codex를 모두 지원한다.
|
|
16
|
+
- macOS와 Windows를 모두 지원한다.
|
|
17
|
+
- 새 public `tink index` command는 만들지 않는다.
|
|
18
|
+
- Sentry 연동은 현재 계획에서 제외한다.
|
|
19
|
+
- 문서는 한국어로도 제공한다.
|
|
20
|
+
- 사용자 수정 파일, local memory, local harness는 update 과정에서 보존한다.
|
|
21
|
+
|
|
22
|
+
## 구현 상태 매트릭스
|
|
23
|
+
|
|
24
|
+
| 아이디어 | 현재 상태 | 구현된 부분 | 아직 필요한 부분 |
|
|
25
|
+
| --- | --- | --- | --- |
|
|
26
|
+
| Codex/Claude Code 동시 지원 | 상당 부분 구현 | Codex action skills, Claude Code commands, installer surface 선택, focused Codex picker, compatibility policy | update 결과 요약, 기존 설치 진단, 양쪽 surface를 함께 검증하는 recipe 강화 |
|
|
27
|
+
| Contract-first execution | 구현 기반 있음 | `.tink/current/contract.json`, verification command/manual check schema, success/risk/evidence 구조 | 실제 작업 중 contract 변경 이력, diff evidence 연결, blocked 복구 흐름 강화 |
|
|
28
|
+
| Context Pack / Context Map | 부분 구현 | `context-pack.md`, `context-map.json`, `excluded-context.md`, external context profile, repo signal fixture | 실제 dependency graph 분석, changed path 기반 context 선택 고도화, 왜 제외했는지의 품질 개선 |
|
|
29
|
+
| Repo Signals | 부분 구현 | fixture 기반 instruction files, schema files, verification hints, sync groups | 내부 Context Graph Lite로 확장, 테스트/문서/명령 연결 자동 추론, confidence 점수 개선 |
|
|
30
|
+
| Verify Runner | 부분 구현 | `verification.json`, pass/fail/blocked/skipped, final report, notes summary, maintenance signals | command 실행 증거 요약, diff/coverage/security/manual evidence 연결, 재실행 recipe 자동화 |
|
|
31
|
+
| MCP Safe Profile | 문서와 schema 기반 있음 | 외부 context 안전 체크리스트, sensitivity/confidence/source_ref, Figma/GitHub/docs 예시 | 실제 `.tink/mcp-policy.json`, allowlist, read-only 기본값, secret redaction, prompt injection scanner |
|
|
32
|
+
| Hook 기반 safety | 일부 구현 | advisory-only `UserPromptSubmit` hook 추천 | PreToolUse/PostToolUse/Stop/PreCompact에 대응하는 안전 profile 설계, 승인된 경우에만 guard화 |
|
|
33
|
+
| Productivity dashboard | 미구현 | ledger/friction/weave queue로 원천 신호는 있음 | token/context cost, 실패 유형, 검증 누락, update 이슈를 사람이 읽기 쉬운 요약으로 변환 |
|
|
34
|
+
| Harness 자동 개선과 삭제 | 부분 구현 | `/tink:weave`, `/tink:frog`, evidence grade, maintenance ledger | 사용 빈도와 실패 신호 기반 scoring, 삭제/병합 후보 설명 품질, 승인 전 preview |
|
|
35
|
+
| Harness registry/signing/lockfile | 미구현 | plugin/package release 흐름은 있음 | `.tink/lock.json`, registry metadata, source trust, version pinning |
|
|
36
|
+
| Subagent adapter | 미구현 | multi-agent 자체 런타임을 만들지 않는 방향만 정해짐 | Claude/Codex의 기존 subagent 기능에 맞춘 얇은 adapter contract |
|
|
37
|
+
| Memory knowledge layers | 부분 구현 | `.tink/memory/`, reusable save gate | `approved/`, `candidate/`, `rejected/`, `evidence/` 계층화와 승인 이력 |
|
|
38
|
+
|
|
39
|
+
## 다음 구현 원칙
|
|
40
|
+
|
|
41
|
+
### 1. 새 명령보다 기존 흐름 강화
|
|
42
|
+
|
|
43
|
+
첨부 아이디어에는 `tink index` 같은 graph 명령이 있었지만, 이 프로젝트에서는 새 public command를 만들지 않는다. 대신 `$tink:cast`와 `/tink:cast` 내부에서 context selection 품질을 높인다.
|
|
44
|
+
|
|
45
|
+
이름은 "Context Graph Lite" 정도로 문서화하되, 사용자는 새 명령을 외우지 않아도 된다.
|
|
46
|
+
|
|
47
|
+
### 2. artifact를 먼저 안정화
|
|
48
|
+
|
|
49
|
+
큰 기능을 바로 자동화하기 전에 다음 파일들의 의미를 더 안정적으로 만든다.
|
|
50
|
+
|
|
51
|
+
- `.tink/current/context-pack.md`
|
|
52
|
+
- `.tink/current/context-map.json`
|
|
53
|
+
- `.tink/current/excluded-context.md`
|
|
54
|
+
- `.tink/current/contract.json`
|
|
55
|
+
- `.tink/current/verification.json`
|
|
56
|
+
- `.tink/maintenance/ledger.jsonl`
|
|
57
|
+
- `.tink/maintenance/friction.jsonl`
|
|
58
|
+
|
|
59
|
+
Tink의 장점은 "AI가 알아서 했다"가 아니라 "왜 이 context와 검증을 선택했는지 확인할 수 있다"에 있다.
|
|
60
|
+
|
|
61
|
+
### 3. 모든 확장은 양쪽 surface와 양쪽 OS를 기준으로 설계
|
|
62
|
+
|
|
63
|
+
새 기능은 Claude Code command와 Codex skill에서 같은 개념으로 설명되어야 한다. 또한 shell 예시, path, installer/update 동작은 macOS와 Windows 모두에서 자연스럽게 동작해야 한다.
|
|
64
|
+
|
|
65
|
+
## 제안 로드맵
|
|
66
|
+
|
|
67
|
+
### Phase 5: Update Confidence
|
|
68
|
+
|
|
69
|
+
기존 사용자가 v1.2.x로 업데이트할 때 무엇이 바뀌고 무엇이 보존되는지 확신할 수 있게 만든다.
|
|
70
|
+
|
|
71
|
+
생기는 기능:
|
|
72
|
+
|
|
73
|
+
- update 후 설치된 surface 요약
|
|
74
|
+
- refresh된 command/skill 목록
|
|
75
|
+
- 제거된 legacy Codex `skills/tink/SKILL.md` 표시
|
|
76
|
+
- 보존된 user-modified files 표시
|
|
77
|
+
- 다음에 실행할 검증 command 안내
|
|
78
|
+
|
|
79
|
+
개선 효과:
|
|
80
|
+
|
|
81
|
+
- 기존 사용자가 update 후 Codex picker나 Claude command 상태를 덜 헷갈린다.
|
|
82
|
+
- update가 local harness, memory, config를 건드렸는지 확인하기 쉬워진다.
|
|
83
|
+
- 이후 큰 기능을 넣기 전에 업데이트 안정성을 먼저 확보한다.
|
|
84
|
+
|
|
85
|
+
### Phase 6: Context Graph Lite
|
|
86
|
+
|
|
87
|
+
새 public command 없이 `$tink:cast`와 `/tink:cast`가 내부적으로 더 나은 context 후보를 고르게 만든다.
|
|
88
|
+
|
|
89
|
+
생기는 기능:
|
|
90
|
+
|
|
91
|
+
- changed paths를 기준으로 관련 tests, schemas, docs, command copies를 더 잘 찾는다.
|
|
92
|
+
- sync group이나 verification hint가 왜 선택됐는지 `context-map.json.signals[]`에 더 구체적으로 남긴다.
|
|
93
|
+
- 제외한 파일은 `excluded-context.md`에 "왜 제외했는지"를 짧게 남긴다.
|
|
94
|
+
|
|
95
|
+
개선 효과:
|
|
96
|
+
|
|
97
|
+
- context pack이 더 작고 정확해진다.
|
|
98
|
+
- Codex와 Claude Code 모두 같은 판단 근거를 공유한다.
|
|
99
|
+
- `tink index` 같은 별도 명령 없이도 graph 느낌의 도움을 받을 수 있다.
|
|
100
|
+
|
|
101
|
+
### Phase 7: Evidence Runner Plus
|
|
102
|
+
|
|
103
|
+
검증 결과를 더 행동 가능한 증거로 만든다.
|
|
104
|
+
|
|
105
|
+
생기는 기능:
|
|
106
|
+
|
|
107
|
+
- command evidence, manual evidence, diff evidence를 구분한다.
|
|
108
|
+
- 실패한 check마다 `next_action`을 더 명확히 기록한다.
|
|
109
|
+
- blocked 상태일 때 마지막 안전 지점과 재개 방법을 더 잘 남긴다.
|
|
110
|
+
|
|
111
|
+
개선 효과:
|
|
112
|
+
|
|
113
|
+
- 검증 실패가 단순한 "실패"가 아니라 다음 행동으로 이어진다.
|
|
114
|
+
- PR/release history에 들어갈 검증 근거가 더 깔끔해진다.
|
|
115
|
+
- weave가 반복 실패를 더 정확하게 개선 후보로 받을 수 있다.
|
|
116
|
+
|
|
117
|
+
### Phase 8: MCP Gateway Policy
|
|
118
|
+
|
|
119
|
+
외부 context를 가져올 때의 안전 기준을 실제 정책 파일로 만든다. Sentry는 현재 제외하고, Figma, GitHub, official docs, dashboard, attachment 같은 일반 source를 우선한다.
|
|
120
|
+
|
|
121
|
+
생기는 기능:
|
|
122
|
+
|
|
123
|
+
- `.tink/mcp-policy.schema.json`
|
|
124
|
+
- optional `.tink/mcp-policy.json`
|
|
125
|
+
- source allowlist
|
|
126
|
+
- read-only 기본값
|
|
127
|
+
- secret/sensitive context redaction 규칙
|
|
128
|
+
- prompt injection 의심 문구를 evidence에 남기는 규칙
|
|
129
|
+
|
|
130
|
+
개선 효과:
|
|
131
|
+
|
|
132
|
+
- 외부 context를 더 많이 쓰더라도 안전 기준이 흐려지지 않는다.
|
|
133
|
+
- "가져온 정보"와 "신뢰해도 되는 정보"를 분리할 수 있다.
|
|
134
|
+
- 회사/개인 프로젝트에서 source별 정책을 조정하기 쉬워진다.
|
|
135
|
+
|
|
136
|
+
### Phase 9: Harness Lifecycle Metrics
|
|
137
|
+
|
|
138
|
+
하네스가 실제로 도움이 되는지, 오래되어 정리해야 하는지 판단할 수 있게 만든다.
|
|
139
|
+
|
|
140
|
+
생기는 기능:
|
|
141
|
+
|
|
142
|
+
- harness별 사용 신호 요약
|
|
143
|
+
- 반복 실패와 반복 성공 신호
|
|
144
|
+
- context-cost 증가 신호
|
|
145
|
+
- frog/weave 후보 목록
|
|
146
|
+
- 삭제, 병합, 유지 추천 이유
|
|
147
|
+
|
|
148
|
+
개선 효과:
|
|
149
|
+
|
|
150
|
+
- Tink가 하네스를 무작정 늘리지 않는다.
|
|
151
|
+
- 실제 도움이 된 하네스와 헷갈리게 만드는 하네스를 구분한다.
|
|
152
|
+
- `/tink:frog`가 더 설득력 있는 정리 제안을 할 수 있다.
|
|
153
|
+
|
|
154
|
+
### Phase 10: Memory Knowledge Layers
|
|
155
|
+
|
|
156
|
+
메모리를 "승인된 지식"과 "후보"로 분리한다.
|
|
157
|
+
|
|
158
|
+
생기는 기능:
|
|
159
|
+
|
|
160
|
+
- `.tink/memory/approved/`
|
|
161
|
+
- `.tink/memory/candidate/`
|
|
162
|
+
- `.tink/memory/rejected/`
|
|
163
|
+
- `.tink/memory/evidence/`
|
|
164
|
+
|
|
165
|
+
개선 효과:
|
|
166
|
+
|
|
167
|
+
- 한 번 나온 말이 곧바로 영구 규칙이 되는 위험을 줄인다.
|
|
168
|
+
- 사용자 승인 전에는 candidate로만 남긴다.
|
|
169
|
+
- 왜 어떤 기억이 저장되었는지 evidence를 추적할 수 있다.
|
|
170
|
+
|
|
171
|
+
## 더 추가하면 좋은 아이디어
|
|
172
|
+
|
|
173
|
+
### Context Diff Review
|
|
174
|
+
|
|
175
|
+
작업 시작 전후로 context-map이 어떻게 달라졌는지 비교한다. 예를 들어 처음에는 빠졌지만 작업 중 필요해진 파일, 처음에는 포함했지만 실제로는 쓰지 않은 파일을 기록한다.
|
|
176
|
+
|
|
177
|
+
이 기능은 Context Graph Lite와 Harness Lifecycle Metrics 사이를 이어준다.
|
|
178
|
+
|
|
179
|
+
### Update Doctor
|
|
180
|
+
|
|
181
|
+
`update` 결과가 이상할 때 사람이 바로 확인할 수 있는 체크리스트를 제공한다. 새 명령을 만들기보다 `$tink:update`와 `/tink:update` 문서 안에 "진단 모드" 절차로 넣는다.
|
|
182
|
+
|
|
183
|
+
## 제외한 아이디어
|
|
184
|
+
|
|
185
|
+
### Release Evidence Pack
|
|
186
|
+
|
|
187
|
+
release나 PR 작업이 끝났을 때 `contract.json`, `verification.json`, changelog, npm pack 결과, GitHub release 상태를 하나의 요약으로 묶는 아이디어는 현재 계획에서 제외한다.
|
|
188
|
+
|
|
189
|
+
이 기능은 릴리즈 판단, 공개 기록, 포트폴리오성 서술까지 Tink가 지나치게 많이 제안하게 만들 수 있다. 그 영역은 사용자나 팀이 직접 결정해야 하므로, Tink는 필요한 검증 artifact를 남기는 선에서 멈춘다.
|
|
190
|
+
|
|
191
|
+
## 바로 다음 Slice 추천
|
|
192
|
+
|
|
193
|
+
다음 slice는 Phase 5의 "Update Result Summary"가 가장 좋다.
|
|
194
|
+
|
|
195
|
+
이유:
|
|
196
|
+
|
|
197
|
+
- 이미 update smoke test가 있으므로 실패를 잡을 안전망이 있다.
|
|
198
|
+
- 기존 사용자에게 바로 체감되는 개선이다.
|
|
199
|
+
- 이후 Context Graph Lite나 MCP Gateway처럼 더 큰 기능을 넣기 전에 update 신뢰도를 확보할 수 있다.
|
|
200
|
+
|
|
201
|
+
그 다음에는 Phase 6 "Context Graph Lite"로 넘어가는 흐름을 추천한다. 이때도 새 `tink index` command는 만들지 않고, cast의 내부 context selection과 artifact 품질을 개선하는 방향으로 진행한다.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# 업데이트 진단
|
|
2
|
+
|
|
3
|
+
업데이트 진단은 새 command를 추가하지 않고 update 문제를 더 쉽게 확인하기 위한 흐름이다.
|
|
4
|
+
|
|
5
|
+
이 흐름은 `/tink:update`, `$tink:update`, troubleshooting 문서, verification recipe 안에서 사용한다.
|
|
6
|
+
|
|
7
|
+
확인할 항목은 다음과 같다.
|
|
8
|
+
|
|
9
|
+
- 기대한 install surface: Claude Code, Codex, 또는 둘 다
|
|
10
|
+
- 실제 command와 skill 파일
|
|
11
|
+
- 보존된 user-modified file
|
|
12
|
+
- 제거된 legacy Codex skill 경로
|
|
13
|
+
- 누락된 schema 또는 maintenance file
|
|
14
|
+
- 최종 `Update Result Summary`
|
|
15
|
+
|
|
16
|
+
다음 행동은 보통 `docs/update-verification-recipe.ko.md` 또는 `docs/update-troubleshooting.ko.md` 같은 가장 작은 recipe로 안내한다.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Update Diagnosis
|
|
2
|
+
|
|
3
|
+
Update diagnosis makes update problems easier to inspect without adding a new command.
|
|
4
|
+
|
|
5
|
+
Use it inside `/tink:update`, `$tink:update`, troubleshooting docs, and verification recipes.
|
|
6
|
+
|
|
7
|
+
Check:
|
|
8
|
+
|
|
9
|
+
- expected install surface: Claude Code, Codex, or both
|
|
10
|
+
- actual command and skill files
|
|
11
|
+
- preserved user-modified files
|
|
12
|
+
- removed legacy Codex skill paths
|
|
13
|
+
- missing schema or maintenance files
|
|
14
|
+
- final `Update Result Summary`
|
|
15
|
+
|
|
16
|
+
The next action should point to the smallest useful recipe, usually `docs/update-verification-recipe.md` or `docs/update-troubleshooting.md`.
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
# 업데이트 문제 해결 가이드
|
|
2
|
+
|
|
3
|
+
이 문서는 `tink-harness update` 이후 뭔가 오래된 상태처럼 보이거나, 설치 결과가 예상과 다를 때 확인할 항목을 정리한다.
|
|
4
|
+
|
|
5
|
+
README에는 긴 문제 해결 내용을 넣지 않는다. 평소에는 설치와 사용 흐름을 가볍게 유지하고, 문제가 생겼을 때만 이 문서를 본다.
|
|
6
|
+
|
|
7
|
+
## 먼저 볼 것
|
|
8
|
+
|
|
9
|
+
`tink-harness update`가 끝나면 출력의 `Update Result Summary`를 먼저 확인한다.
|
|
10
|
+
|
|
11
|
+
- `Surfaces`: 새로 고친 대상이 `claude`, `codex`, 또는 `all`인지 확인한다.
|
|
12
|
+
- `Updated or added`: 새 command, skill, schema가 들어갔는지 확인한다.
|
|
13
|
+
- `Preserved user-modified files`: 사용자가 고친 파일이 보존됐는지 확인한다.
|
|
14
|
+
- `Removed legacy paths`: 오래된 Codex `skills/tink` 같은 legacy path가 제거됐는지 확인한다.
|
|
15
|
+
- `Installed locations`: 실제 파일이 들어간 위치를 확인한다.
|
|
16
|
+
|
|
17
|
+
## Codex skill picker에 예전 `tink`가 보일 때
|
|
18
|
+
|
|
19
|
+
가능한 원인:
|
|
20
|
+
|
|
21
|
+
- 이전 버전의 넓은 Codex `skills/tink/SKILL.md`가 남아 있다.
|
|
22
|
+
- `CODEX_HOME`이 예상한 위치와 다르다.
|
|
23
|
+
- Codex UI가 아직 skill 목록을 새로 읽지 않았다.
|
|
24
|
+
|
|
25
|
+
확인:
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
npx tink-harness@latest update --yes
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
그 다음 `Update Result Summary`에서 다음을 본다.
|
|
32
|
+
|
|
33
|
+
- `Codex target`
|
|
34
|
+
- `Removed legacy paths`
|
|
35
|
+
- `Codex skills`
|
|
36
|
+
|
|
37
|
+
기대 상태:
|
|
38
|
+
|
|
39
|
+
- `skills/tink`는 없어야 한다.
|
|
40
|
+
- `tink-cast`, `tink-verify`, `tink-list`, `tink-frog`, `tink-weave`, `tink-setup`, `tink-update`가 있어야 한다.
|
|
41
|
+
- `tink-core/RULES.md`는 내부 공유 규칙으로 존재하지만 picker에 action으로 보이지 않는 것이 정상이다.
|
|
42
|
+
|
|
43
|
+
## schema files가 없을 때
|
|
44
|
+
|
|
45
|
+
가능한 원인:
|
|
46
|
+
|
|
47
|
+
- update 대상 surface만 Codex로 맞췄지만 repo `.tink/` 설치 경로가 다르다.
|
|
48
|
+
- update를 다른 working directory에서 실행했다.
|
|
49
|
+
- 기존 사용자 수정 파일이 보존되어 새 템플릿으로 덮이지 않았다.
|
|
50
|
+
|
|
51
|
+
확인할 파일:
|
|
52
|
+
|
|
53
|
+
- `.tink/schemas/contract.schema.json`
|
|
54
|
+
- `.tink/schemas/context-map.schema.json`
|
|
55
|
+
- `.tink/schemas/verification.schema.json`
|
|
56
|
+
- `.tink/schemas/session.schema.json`
|
|
57
|
+
|
|
58
|
+
`Update Result Summary`의 `Install target`이 현재 repo인지 먼저 확인한다.
|
|
59
|
+
|
|
60
|
+
## 사용자 수정 파일이 덮였는지 걱정될 때
|
|
61
|
+
|
|
62
|
+
Tink update는 기본적으로 사용자 수정 파일을 보존한다. 특히 local harness, memory, config는 함부로 덮지 않는 것이 원칙이다.
|
|
63
|
+
|
|
64
|
+
확인:
|
|
65
|
+
|
|
66
|
+
- `Preserved user-modified files`에 해당 파일이 있는지 본다.
|
|
67
|
+
- `--force`를 쓰지 않았는지 확인한다.
|
|
68
|
+
|
|
69
|
+
주의:
|
|
70
|
+
|
|
71
|
+
- `commands`, `skills`, `maintenance` template은 새 버전과 맞추기 위해 update 대상이다.
|
|
72
|
+
- reusable local state는 사용자 승인 없이 새 의미로 바꾸지 않는다.
|
|
73
|
+
|
|
74
|
+
## Claude Code command가 오래된 것 같을 때
|
|
75
|
+
|
|
76
|
+
Claude Code command는 세 copy가 같은 내용이어야 한다.
|
|
77
|
+
|
|
78
|
+
- `commands/<name>.md`
|
|
79
|
+
- `templates/claude/commands/tink/<name>.md`
|
|
80
|
+
- `.claude/commands/tink/<name>.md`
|
|
81
|
+
|
|
82
|
+
repo 개발 중이라면 다음 검증을 실행한다.
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
npm test
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
일반 사용자라면 update 후 Claude Code를 다시 열거나 `/reload-plugins`를 실행한다.
|
|
89
|
+
|
|
90
|
+
## Windows에서 인코딩 경고가 보일 때
|
|
91
|
+
|
|
92
|
+
Windows PowerShell이나 cp949 환경에서는 일부 테스트 출력에서 인코딩 경고가 보일 수 있다. 테스트가 `OK`로 끝났다면 기존에 알려진 환경 경고일 수 있다.
|
|
93
|
+
|
|
94
|
+
중요한 기준:
|
|
95
|
+
|
|
96
|
+
- `npm test`가 성공했는가
|
|
97
|
+
- `node --check bin/install.js`가 성공했는가
|
|
98
|
+
- 실제 파일 내용이 깨진 것이 아니라 terminal 출력만 깨진 것인가
|
|
99
|
+
|
|
100
|
+
문서 파일은 UTF-8로 저장한다.
|
|
101
|
+
|
|
102
|
+
## 여전히 이상할 때
|
|
103
|
+
|
|
104
|
+
다음을 함께 기록하면 다음 진단이 쉬워진다.
|
|
105
|
+
|
|
106
|
+
- 실행한 update command
|
|
107
|
+
- `Update Result Summary`
|
|
108
|
+
- 사용한 OS
|
|
109
|
+
- `CODEX_HOME` 값
|
|
110
|
+
- 현재 repo path
|
|
111
|
+
- 기대한 surface: Claude Code, Codex, 또는 둘 다
|
|
112
|
+
|
|
113
|
+
이 정보는 Tink가 자동으로 결정을 대신하기 위한 것이 아니라, 사용자가 어떤 설치 상태인지 빠르게 확인하기 위한 증거다.
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
# Update Troubleshooting
|
|
2
|
+
|
|
3
|
+
Use this guide when `tink-harness update` finishes but the installed state still looks stale or incomplete.
|
|
4
|
+
|
|
5
|
+
README should stay short. This document holds the symptom-specific checks.
|
|
6
|
+
|
|
7
|
+
## Start Here
|
|
8
|
+
|
|
9
|
+
After `tink-harness update`, read `Update Result Summary`.
|
|
10
|
+
|
|
11
|
+
- `Surfaces`: the refreshed target, such as `claude`, `codex`, or `all`.
|
|
12
|
+
- `Updated or added`: commands, skills, and schemas that changed.
|
|
13
|
+
- `Preserved user-modified files`: local files Tink did not overwrite.
|
|
14
|
+
- `Removed legacy paths`: old paths such as Codex `skills/tink`.
|
|
15
|
+
- `Installed locations`: where the files were written.
|
|
16
|
+
|
|
17
|
+
## Old `tink` Still Appears In Codex
|
|
18
|
+
|
|
19
|
+
Possible causes:
|
|
20
|
+
|
|
21
|
+
- The old broad Codex `skills/tink/SKILL.md` is still present.
|
|
22
|
+
- `CODEX_HOME` points somewhere unexpected.
|
|
23
|
+
- Codex has not refreshed the skill list yet.
|
|
24
|
+
|
|
25
|
+
Run:
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
npx tink-harness@latest update --yes
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Then check `Codex target`, `Removed legacy paths`, and `Codex skills` in the summary.
|
|
32
|
+
|
|
33
|
+
Expected state:
|
|
34
|
+
|
|
35
|
+
- `skills/tink` is gone.
|
|
36
|
+
- `tink-cast`, `tink-verify`, `tink-list`, `tink-frog`, `tink-weave`, `tink-setup`, and `tink-update` exist.
|
|
37
|
+
- `tink-core/RULES.md` exists as shared internal rules, but should not appear as a user action in the picker.
|
|
38
|
+
|
|
39
|
+
## Schema Files Are Missing
|
|
40
|
+
|
|
41
|
+
Check that `Install target` is the repo you meant to update.
|
|
42
|
+
|
|
43
|
+
Expected schema files:
|
|
44
|
+
|
|
45
|
+
- `.tink/schemas/contract.schema.json`
|
|
46
|
+
- `.tink/schemas/context-map.schema.json`
|
|
47
|
+
- `.tink/schemas/verification.schema.json`
|
|
48
|
+
- `.tink/schemas/session.schema.json`
|
|
49
|
+
|
|
50
|
+
If you ran update from a different working directory, run it again from the intended repo.
|
|
51
|
+
|
|
52
|
+
## Worried About User-Modified Files
|
|
53
|
+
|
|
54
|
+
By default, update preserves user-modified local harnesses, memory, and config.
|
|
55
|
+
|
|
56
|
+
Check:
|
|
57
|
+
|
|
58
|
+
- The file appears under `Preserved user-modified files`.
|
|
59
|
+
- You did not pass `--force`.
|
|
60
|
+
|
|
61
|
+
Commands, skills, and maintenance templates are refreshed to match the package version. Reusable local state should not change meaning without user approval.
|
|
62
|
+
|
|
63
|
+
## Claude Code Commands Look Stale
|
|
64
|
+
|
|
65
|
+
For this repo, command copies must stay in sync:
|
|
66
|
+
|
|
67
|
+
- `commands/<name>.md`
|
|
68
|
+
- `templates/claude/commands/tink/<name>.md`
|
|
69
|
+
- `.claude/commands/tink/<name>.md`
|
|
70
|
+
|
|
71
|
+
When developing Tink itself, run:
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
npm test
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
As a normal user, reload Claude Code or run `/reload-plugins` after updating the plugin.
|
|
78
|
+
|
|
79
|
+
## Windows Encoding Warnings
|
|
80
|
+
|
|
81
|
+
On Windows PowerShell or cp949 environments, some command output can show encoding warnings. If tests end with `OK`, this may be an environment warning rather than a failed update.
|
|
82
|
+
|
|
83
|
+
Useful checks:
|
|
84
|
+
|
|
85
|
+
- `npm test` passed.
|
|
86
|
+
- `node --check bin/install.js` passed.
|
|
87
|
+
- The file content is UTF-8 and not actually corrupted.
|
|
88
|
+
|
|
89
|
+
## Still Stuck
|
|
90
|
+
|
|
91
|
+
Record these details:
|
|
92
|
+
|
|
93
|
+
- update command used
|
|
94
|
+
- `Update Result Summary`
|
|
95
|
+
- OS
|
|
96
|
+
- `CODEX_HOME`
|
|
97
|
+
- current repo path
|
|
98
|
+
- intended surface: Claude Code, Codex, or both
|
|
99
|
+
|
|
100
|
+
This evidence helps diagnose install state without letting Tink make release or project decisions on the user's behalf.
|