transcripto 0.1.0__tar.gz → 0.1.1__tar.gz
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.
- {transcripto-0.1.0/transcripto.egg-info → transcripto-0.1.1}/PKG-INFO +38 -27
- {transcripto-0.1.0 → transcripto-0.1.1}/README.md +37 -26
- {transcripto-0.1.0 → transcripto-0.1.1}/pyproject.toml +1 -1
- {transcripto-0.1.0 → transcripto-0.1.1/transcripto.egg-info}/PKG-INFO +38 -27
- {transcripto-0.1.0 → transcripto-0.1.1}/LICENSE +0 -0
- {transcripto-0.1.0 → transcripto-0.1.1}/setup.cfg +0 -0
- {transcripto-0.1.0 → transcripto-0.1.1}/transcripto.egg-info/SOURCES.txt +0 -0
- {transcripto-0.1.0 → transcripto-0.1.1}/transcripto.egg-info/dependency_links.txt +0 -0
- {transcripto-0.1.0 → transcripto-0.1.1}/transcripto.egg-info/entry_points.txt +0 -0
- {transcripto-0.1.0 → transcripto-0.1.1}/transcripto.egg-info/top_level.txt +0 -0
- {transcripto-0.1.0 → transcripto-0.1.1}/transcripto.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: transcripto
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.1
|
|
4
4
|
Summary: Search everything your coding agents ever did, grade your own prompts, and price your decisions. Local, stdlib-only, your data never leaves the machine.
|
|
5
5
|
Author: Oscar Morke
|
|
6
6
|
License: MIT
|
|
@@ -31,32 +31,33 @@ uvx transcripto coach
|
|
|
31
31
|
|
|
32
32
|
## what you get back
|
|
33
33
|
|
|
34
|
-
this is a real run on one machine, pasted unedited:
|
|
34
|
+
this is a real run on one machine, pasted unedited, 2026-08-28:
|
|
35
35
|
|
|
36
36
|
```
|
|
37
|
+
|
|
37
38
|
YOUR PROMPT HABITS, GRADED (offline, your machine only)
|
|
38
39
|
|
|
39
40
|
harness: claude
|
|
40
|
-
corpus :
|
|
41
|
-
kept :
|
|
42
|
-
|
|
43
|
-
tiers : commit
|
|
41
|
+
corpus : 2720 transcript(s), 381,804 records
|
|
42
|
+
kept : 3678 prompts you actually typed (0.96% of records)
|
|
43
|
+
episodes: 1946 ranked, 910 survived (47%)
|
|
44
|
+
tiers : commit 373 | write/edit 537 | reverted 2 | nothing durable 1034
|
|
44
45
|
|
|
45
46
|
SURVIVAL IS A PROXY: survival = a durable Write/Edit or an un-reverted git commit in-episode. A PROXY, not proof the work was correct or shipped.
|
|
46
47
|
|
|
47
48
|
SURVIVES MOST do more of these:
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
49
|
+
64% (167/260) detailed (>40 words)
|
|
50
|
+
63% (66/104) states-a-check-or-done-condition
|
|
51
|
+
58% (414/708) intent:CHANGE
|
|
51
52
|
58% (21/36) no-object (pronoun/vague)
|
|
52
|
-
|
|
53
|
+
57% (99/175) cites-a-file-or-path
|
|
53
54
|
|
|
54
55
|
SURVIVES LEAST these tend to loop:
|
|
55
56
|
33% (4/12) intent:REVERT
|
|
56
|
-
39% (
|
|
57
|
+
39% (411/1043) intent:none
|
|
57
58
|
40% (4/10) intent:TEST
|
|
58
|
-
|
|
59
|
-
|
|
59
|
+
42% (298/715) terse (<8 words)
|
|
60
|
+
45% (77/173) intent:DESCRIBE
|
|
60
61
|
|
|
61
62
|
+ your best landed prompt, with its witness:
|
|
62
63
|
"mTERMINAL 8 — Mountain of Helicon · ~/CODE/mountain-of-helicon Read ~/CODE/mountain-of-helicon. Two…"
|
|
@@ -67,13 +68,14 @@ this is a real run on one machine, pasted unedited:
|
|
|
67
68
|
NO-DURABLE-RECORD: read-only Bash only, no file change · corrections: 15 · assistant turns: 221
|
|
68
69
|
```
|
|
69
70
|
|
|
70
|
-
those are my numbers
|
|
71
|
-
|
|
72
|
-
|
|
71
|
+
those are my numbers on that date, and they move every session i run, so treat
|
|
72
|
+
them as a snapshot rather than a constant. yours will be different, which is the
|
|
73
|
+
whole point. the last two lines are the ones that sting: it hands you back your
|
|
74
|
+
own best and worst prompt, verbatim, with the receipt for why it scored each one.
|
|
73
75
|
|
|
74
|
-
on that machine, prompts that wrote down what done looks like survived **
|
|
75
|
-
the time (66 of
|
|
76
|
-
|
|
76
|
+
on that machine, prompts that wrote down what done looks like survived **63% of
|
|
77
|
+
the time (66 of 104)**. prompts with no stated intent survived **39% (411 of
|
|
78
|
+
1043)**. i had spent a year blaming the model.
|
|
77
79
|
|
|
78
80
|
## the proxy caveat, which travels with every number
|
|
79
81
|
|
|
@@ -94,8 +96,8 @@ you. they are tool results, injected skill bodies, sub-agent prompts, and
|
|
|
94
96
|
messages from other terminals, all wearing your role. transcripto gates on
|
|
95
97
|
`promptSource` (typed/queued, no meta, no sidechain) so it grades what you typed.
|
|
96
98
|
|
|
97
|
-
you can watch the gate do work: in the run above,
|
|
98
|
-
survived it. that is 0.
|
|
99
|
+
you can watch the gate do work: in the run above, 3678 of 381,804 records
|
|
100
|
+
survived it. that is 0.96%.
|
|
99
101
|
|
|
100
102
|
the same gate is what makes `cost` produce a number a spend tracker cannot:
|
|
101
103
|
|
|
@@ -134,10 +136,20 @@ read these before you quote a number at anyone.
|
|
|
134
136
|
|
|
135
137
|
## privacy
|
|
136
138
|
|
|
137
|
-
it runs locally and never touches the network.
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
139
|
+
it runs locally and never touches the network. there is no socket, no urllib, no
|
|
140
|
+
requests, no subprocess, no telemetry, no analytics, and no account. that is a
|
|
141
|
+
claim, so here is the grep that settles it against the single file it ships as:
|
|
142
|
+
|
|
143
|
+
```
|
|
144
|
+
$ grep -nE '^[[:space:]]*(import|from) ' transcripto.py
|
|
145
|
+
8:import sys, os, json, glob, re, sqlite3, argparse
|
|
146
|
+
9:from datetime import datetime, timezone
|
|
147
|
+
225: import time
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
that is the whole import list, three lines. `time` sits inside the `watch` loop,
|
|
151
|
+
which is why the pattern allows for indentation. anchor it at `^import` and you
|
|
152
|
+
would miss one, so do not take my word for the anchor either.
|
|
141
153
|
|
|
142
154
|
your transcripts stay in `~/.claude` and `~/.codex`. the index it builds stays in
|
|
143
155
|
`~/.trace`.
|
|
@@ -198,8 +210,7 @@ python3 transcripto.py coach
|
|
|
198
210
|
```
|
|
199
211
|
|
|
200
212
|
no dependencies, stdlib only, one file. the packaging adds nothing at runtime, it
|
|
201
|
-
just gives the file a name on your PATH.
|
|
202
|
-
command.
|
|
213
|
+
just gives the file a name on your PATH.
|
|
203
214
|
|
|
204
215
|
## tests
|
|
205
216
|
|
|
@@ -13,32 +13,33 @@ uvx transcripto coach
|
|
|
13
13
|
|
|
14
14
|
## what you get back
|
|
15
15
|
|
|
16
|
-
this is a real run on one machine, pasted unedited:
|
|
16
|
+
this is a real run on one machine, pasted unedited, 2026-08-28:
|
|
17
17
|
|
|
18
18
|
```
|
|
19
|
+
|
|
19
20
|
YOUR PROMPT HABITS, GRADED (offline, your machine only)
|
|
20
21
|
|
|
21
22
|
harness: claude
|
|
22
|
-
corpus :
|
|
23
|
-
kept :
|
|
24
|
-
|
|
25
|
-
tiers : commit
|
|
23
|
+
corpus : 2720 transcript(s), 381,804 records
|
|
24
|
+
kept : 3678 prompts you actually typed (0.96% of records)
|
|
25
|
+
episodes: 1946 ranked, 910 survived (47%)
|
|
26
|
+
tiers : commit 373 | write/edit 537 | reverted 2 | nothing durable 1034
|
|
26
27
|
|
|
27
28
|
SURVIVAL IS A PROXY: survival = a durable Write/Edit or an un-reverted git commit in-episode. A PROXY, not proof the work was correct or shipped.
|
|
28
29
|
|
|
29
30
|
SURVIVES MOST do more of these:
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
64% (167/260) detailed (>40 words)
|
|
32
|
+
63% (66/104) states-a-check-or-done-condition
|
|
33
|
+
58% (414/708) intent:CHANGE
|
|
33
34
|
58% (21/36) no-object (pronoun/vague)
|
|
34
|
-
|
|
35
|
+
57% (99/175) cites-a-file-or-path
|
|
35
36
|
|
|
36
37
|
SURVIVES LEAST these tend to loop:
|
|
37
38
|
33% (4/12) intent:REVERT
|
|
38
|
-
39% (
|
|
39
|
+
39% (411/1043) intent:none
|
|
39
40
|
40% (4/10) intent:TEST
|
|
40
|
-
|
|
41
|
-
|
|
41
|
+
42% (298/715) terse (<8 words)
|
|
42
|
+
45% (77/173) intent:DESCRIBE
|
|
42
43
|
|
|
43
44
|
+ your best landed prompt, with its witness:
|
|
44
45
|
"mTERMINAL 8 — Mountain of Helicon · ~/CODE/mountain-of-helicon Read ~/CODE/mountain-of-helicon. Two…"
|
|
@@ -49,13 +50,14 @@ this is a real run on one machine, pasted unedited:
|
|
|
49
50
|
NO-DURABLE-RECORD: read-only Bash only, no file change · corrections: 15 · assistant turns: 221
|
|
50
51
|
```
|
|
51
52
|
|
|
52
|
-
those are my numbers
|
|
53
|
-
|
|
54
|
-
|
|
53
|
+
those are my numbers on that date, and they move every session i run, so treat
|
|
54
|
+
them as a snapshot rather than a constant. yours will be different, which is the
|
|
55
|
+
whole point. the last two lines are the ones that sting: it hands you back your
|
|
56
|
+
own best and worst prompt, verbatim, with the receipt for why it scored each one.
|
|
55
57
|
|
|
56
|
-
on that machine, prompts that wrote down what done looks like survived **
|
|
57
|
-
the time (66 of
|
|
58
|
-
|
|
58
|
+
on that machine, prompts that wrote down what done looks like survived **63% of
|
|
59
|
+
the time (66 of 104)**. prompts with no stated intent survived **39% (411 of
|
|
60
|
+
1043)**. i had spent a year blaming the model.
|
|
59
61
|
|
|
60
62
|
## the proxy caveat, which travels with every number
|
|
61
63
|
|
|
@@ -76,8 +78,8 @@ you. they are tool results, injected skill bodies, sub-agent prompts, and
|
|
|
76
78
|
messages from other terminals, all wearing your role. transcripto gates on
|
|
77
79
|
`promptSource` (typed/queued, no meta, no sidechain) so it grades what you typed.
|
|
78
80
|
|
|
79
|
-
you can watch the gate do work: in the run above,
|
|
80
|
-
survived it. that is 0.
|
|
81
|
+
you can watch the gate do work: in the run above, 3678 of 381,804 records
|
|
82
|
+
survived it. that is 0.96%.
|
|
81
83
|
|
|
82
84
|
the same gate is what makes `cost` produce a number a spend tracker cannot:
|
|
83
85
|
|
|
@@ -116,10 +118,20 @@ read these before you quote a number at anyone.
|
|
|
116
118
|
|
|
117
119
|
## privacy
|
|
118
120
|
|
|
119
|
-
it runs locally and never touches the network.
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
121
|
+
it runs locally and never touches the network. there is no socket, no urllib, no
|
|
122
|
+
requests, no subprocess, no telemetry, no analytics, and no account. that is a
|
|
123
|
+
claim, so here is the grep that settles it against the single file it ships as:
|
|
124
|
+
|
|
125
|
+
```
|
|
126
|
+
$ grep -nE '^[[:space:]]*(import|from) ' transcripto.py
|
|
127
|
+
8:import sys, os, json, glob, re, sqlite3, argparse
|
|
128
|
+
9:from datetime import datetime, timezone
|
|
129
|
+
225: import time
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
that is the whole import list, three lines. `time` sits inside the `watch` loop,
|
|
133
|
+
which is why the pattern allows for indentation. anchor it at `^import` and you
|
|
134
|
+
would miss one, so do not take my word for the anchor either.
|
|
123
135
|
|
|
124
136
|
your transcripts stay in `~/.claude` and `~/.codex`. the index it builds stays in
|
|
125
137
|
`~/.trace`.
|
|
@@ -180,8 +192,7 @@ python3 transcripto.py coach
|
|
|
180
192
|
```
|
|
181
193
|
|
|
182
194
|
no dependencies, stdlib only, one file. the packaging adds nothing at runtime, it
|
|
183
|
-
just gives the file a name on your PATH.
|
|
184
|
-
command.
|
|
195
|
+
just gives the file a name on your PATH.
|
|
185
196
|
|
|
186
197
|
## tests
|
|
187
198
|
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "transcripto"
|
|
7
|
-
version = "0.1.
|
|
7
|
+
version = "0.1.1"
|
|
8
8
|
description = "Search everything your coding agents ever did, grade your own prompts, and price your decisions. Local, stdlib-only, your data never leaves the machine."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.9"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: transcripto
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.1
|
|
4
4
|
Summary: Search everything your coding agents ever did, grade your own prompts, and price your decisions. Local, stdlib-only, your data never leaves the machine.
|
|
5
5
|
Author: Oscar Morke
|
|
6
6
|
License: MIT
|
|
@@ -31,32 +31,33 @@ uvx transcripto coach
|
|
|
31
31
|
|
|
32
32
|
## what you get back
|
|
33
33
|
|
|
34
|
-
this is a real run on one machine, pasted unedited:
|
|
34
|
+
this is a real run on one machine, pasted unedited, 2026-08-28:
|
|
35
35
|
|
|
36
36
|
```
|
|
37
|
+
|
|
37
38
|
YOUR PROMPT HABITS, GRADED (offline, your machine only)
|
|
38
39
|
|
|
39
40
|
harness: claude
|
|
40
|
-
corpus :
|
|
41
|
-
kept :
|
|
42
|
-
|
|
43
|
-
tiers : commit
|
|
41
|
+
corpus : 2720 transcript(s), 381,804 records
|
|
42
|
+
kept : 3678 prompts you actually typed (0.96% of records)
|
|
43
|
+
episodes: 1946 ranked, 910 survived (47%)
|
|
44
|
+
tiers : commit 373 | write/edit 537 | reverted 2 | nothing durable 1034
|
|
44
45
|
|
|
45
46
|
SURVIVAL IS A PROXY: survival = a durable Write/Edit or an un-reverted git commit in-episode. A PROXY, not proof the work was correct or shipped.
|
|
46
47
|
|
|
47
48
|
SURVIVES MOST do more of these:
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
49
|
+
64% (167/260) detailed (>40 words)
|
|
50
|
+
63% (66/104) states-a-check-or-done-condition
|
|
51
|
+
58% (414/708) intent:CHANGE
|
|
51
52
|
58% (21/36) no-object (pronoun/vague)
|
|
52
|
-
|
|
53
|
+
57% (99/175) cites-a-file-or-path
|
|
53
54
|
|
|
54
55
|
SURVIVES LEAST these tend to loop:
|
|
55
56
|
33% (4/12) intent:REVERT
|
|
56
|
-
39% (
|
|
57
|
+
39% (411/1043) intent:none
|
|
57
58
|
40% (4/10) intent:TEST
|
|
58
|
-
|
|
59
|
-
|
|
59
|
+
42% (298/715) terse (<8 words)
|
|
60
|
+
45% (77/173) intent:DESCRIBE
|
|
60
61
|
|
|
61
62
|
+ your best landed prompt, with its witness:
|
|
62
63
|
"mTERMINAL 8 — Mountain of Helicon · ~/CODE/mountain-of-helicon Read ~/CODE/mountain-of-helicon. Two…"
|
|
@@ -67,13 +68,14 @@ this is a real run on one machine, pasted unedited:
|
|
|
67
68
|
NO-DURABLE-RECORD: read-only Bash only, no file change · corrections: 15 · assistant turns: 221
|
|
68
69
|
```
|
|
69
70
|
|
|
70
|
-
those are my numbers
|
|
71
|
-
|
|
72
|
-
|
|
71
|
+
those are my numbers on that date, and they move every session i run, so treat
|
|
72
|
+
them as a snapshot rather than a constant. yours will be different, which is the
|
|
73
|
+
whole point. the last two lines are the ones that sting: it hands you back your
|
|
74
|
+
own best and worst prompt, verbatim, with the receipt for why it scored each one.
|
|
73
75
|
|
|
74
|
-
on that machine, prompts that wrote down what done looks like survived **
|
|
75
|
-
the time (66 of
|
|
76
|
-
|
|
76
|
+
on that machine, prompts that wrote down what done looks like survived **63% of
|
|
77
|
+
the time (66 of 104)**. prompts with no stated intent survived **39% (411 of
|
|
78
|
+
1043)**. i had spent a year blaming the model.
|
|
77
79
|
|
|
78
80
|
## the proxy caveat, which travels with every number
|
|
79
81
|
|
|
@@ -94,8 +96,8 @@ you. they are tool results, injected skill bodies, sub-agent prompts, and
|
|
|
94
96
|
messages from other terminals, all wearing your role. transcripto gates on
|
|
95
97
|
`promptSource` (typed/queued, no meta, no sidechain) so it grades what you typed.
|
|
96
98
|
|
|
97
|
-
you can watch the gate do work: in the run above,
|
|
98
|
-
survived it. that is 0.
|
|
99
|
+
you can watch the gate do work: in the run above, 3678 of 381,804 records
|
|
100
|
+
survived it. that is 0.96%.
|
|
99
101
|
|
|
100
102
|
the same gate is what makes `cost` produce a number a spend tracker cannot:
|
|
101
103
|
|
|
@@ -134,10 +136,20 @@ read these before you quote a number at anyone.
|
|
|
134
136
|
|
|
135
137
|
## privacy
|
|
136
138
|
|
|
137
|
-
it runs locally and never touches the network.
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
139
|
+
it runs locally and never touches the network. there is no socket, no urllib, no
|
|
140
|
+
requests, no subprocess, no telemetry, no analytics, and no account. that is a
|
|
141
|
+
claim, so here is the grep that settles it against the single file it ships as:
|
|
142
|
+
|
|
143
|
+
```
|
|
144
|
+
$ grep -nE '^[[:space:]]*(import|from) ' transcripto.py
|
|
145
|
+
8:import sys, os, json, glob, re, sqlite3, argparse
|
|
146
|
+
9:from datetime import datetime, timezone
|
|
147
|
+
225: import time
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
that is the whole import list, three lines. `time` sits inside the `watch` loop,
|
|
151
|
+
which is why the pattern allows for indentation. anchor it at `^import` and you
|
|
152
|
+
would miss one, so do not take my word for the anchor either.
|
|
141
153
|
|
|
142
154
|
your transcripts stay in `~/.claude` and `~/.codex`. the index it builds stays in
|
|
143
155
|
`~/.trace`.
|
|
@@ -198,8 +210,7 @@ python3 transcripto.py coach
|
|
|
198
210
|
```
|
|
199
211
|
|
|
200
212
|
no dependencies, stdlib only, one file. the packaging adds nothing at runtime, it
|
|
201
|
-
just gives the file a name on your PATH.
|
|
202
|
-
command.
|
|
213
|
+
just gives the file a name on your PATH.
|
|
203
214
|
|
|
204
215
|
## tests
|
|
205
216
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|