transcripto 0.1.2__tar.gz → 0.1.3__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.2/transcripto.egg-info → transcripto-0.1.3}/PKG-INFO +36 -37
- {transcripto-0.1.2 → transcripto-0.1.3}/README.md +35 -36
- {transcripto-0.1.2 → transcripto-0.1.3}/pyproject.toml +1 -1
- {transcripto-0.1.2 → transcripto-0.1.3/transcripto.egg-info}/PKG-INFO +36 -37
- {transcripto-0.1.2 → transcripto-0.1.3}/transcripto.py +70 -29
- {transcripto-0.1.2 → transcripto-0.1.3}/LICENSE +0 -0
- {transcripto-0.1.2 → transcripto-0.1.3}/setup.cfg +0 -0
- {transcripto-0.1.2 → transcripto-0.1.3}/transcripto.egg-info/SOURCES.txt +0 -0
- {transcripto-0.1.2 → transcripto-0.1.3}/transcripto.egg-info/dependency_links.txt +0 -0
- {transcripto-0.1.2 → transcripto-0.1.3}/transcripto.egg-info/entry_points.txt +0 -0
- {transcripto-0.1.2 → transcripto-0.1.3}/transcripto.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: transcripto
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.3
|
|
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
|
|
@@ -29,19 +29,11 @@ your disk and never opens a socket.
|
|
|
29
29
|
uvx transcripto coach
|
|
30
30
|
```
|
|
31
31
|
|
|
32
|
-
> **
|
|
33
|
-
>
|
|
34
|
-
>
|
|
35
|
-
> traceback instead of an instruction. One line settles which one you are holding:
|
|
32
|
+
> **which build you got.** `uvx transcripto --version` should print **0.1.3**. If `--version`
|
|
33
|
+
> is not a recognised flag at all you are on 0.1.1, which predates `trace`, Cursor support and
|
|
34
|
+
> this README. `uvx --refresh transcripto` forces a fresh resolve past uv's cache.
|
|
36
35
|
>
|
|
37
|
-
>
|
|
38
|
-
> uvx transcripto --version # 0.1.2 or newer = this README is accurate
|
|
39
|
-
> ```
|
|
40
|
-
>
|
|
41
|
-
> *Read 2026-08-31: PyPI was serving 0.1.1 while this README described 0.1.2, so
|
|
42
|
-
> `uvx transcripto` gave the older build. If `--version` is not even a recognised
|
|
43
|
-
> flag, you have 0.1.1 — it was added in 0.1.2 precisely because there was no way
|
|
44
|
-
> to tell.* The repo always matches this README and needs nothing installed:
|
|
36
|
+
> The repo always matches this README and needs nothing installed:
|
|
45
37
|
>
|
|
46
38
|
> ```
|
|
47
39
|
> git clone https://github.com/Morkeeth/transcripto && cd transcripto
|
|
@@ -81,41 +73,48 @@ the same way.
|
|
|
81
73
|
|
|
82
74
|
## what you get back
|
|
83
75
|
|
|
84
|
-
this is a real run on one machine, pasted unedited, 2026-08-
|
|
76
|
+
this is a real run on one machine, pasted unedited, 2026-08-31:
|
|
85
77
|
|
|
86
78
|
```
|
|
87
79
|
|
|
88
80
|
YOUR PROMPT HABITS, GRADED (offline, your machine only)
|
|
89
81
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
82
|
+
- your worst looped prompt, with its witness:
|
|
83
|
+
"ok, and lets see they might solve it in the future so i can go back to my beloeved routine :) Befor…"
|
|
84
|
+
NO-DURABLE-RECORD: read-only Bash only, no file change · corrections: 15 · assistant turns: 221
|
|
85
|
+
|
|
86
|
+
+ your best landed prompt, with its witness:
|
|
87
|
+
"mTERMINAL 8 — Mountain of Helicon · ~/CODE/mountain-of-helicon Read ~/CODE/mountain-of-helicon. Two…"
|
|
88
|
+
COMMIT-WITNESSED: git commit · corrections: 0
|
|
95
89
|
|
|
96
90
|
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.
|
|
97
91
|
|
|
98
92
|
SURVIVES MOST do more of these:
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
57% (
|
|
93
|
+
65% (71/110) states-a-check-or-done-condition
|
|
94
|
+
64% (178/276) detailed (>40 words)
|
|
95
|
+
59% (22/37) no-object (pronoun/vague)
|
|
96
|
+
59% (451/763) intent:CHANGE
|
|
97
|
+
57% (106/187) cites-a-file-or-path
|
|
104
98
|
|
|
105
99
|
SURVIVES LEAST these tend to loop:
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
42% (
|
|
110
|
-
45% (
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
100
|
+
31% (4/13) intent:REVERT
|
|
101
|
+
40% (451/1129) intent:none
|
|
102
|
+
42% (320/765) terse (<8 words)
|
|
103
|
+
42% (81/192) intent:DESCRIBE
|
|
104
|
+
45% (5/11) intent:TEST
|
|
105
|
+
|
|
106
|
+
harness claude · 2957 transcript(s), 431,085 records · 3969 typed by you (0.92%)
|
|
107
|
+
episodes: 2108 ranked, 992 survived (47%)
|
|
108
|
+
commit 454 · write/edit 538 · reverted 2 · nothing durable 1114
|
|
109
|
+
|
|
110
|
+
─────────────────────────────────────────────────────────
|
|
111
|
+
compare yours. numbers only, nothing from your prompts:
|
|
112
|
+
|
|
113
|
+
transcripto coach · claude · 2108 episodes · 47% survived
|
|
114
|
+
states-a-check-or-done-condition 65% (71/110)
|
|
115
|
+
intent:none 40% (451/1129)
|
|
116
|
+
gap 1.6x
|
|
117
|
+
─────────────────────────────────────────────────────────
|
|
119
118
|
```
|
|
120
119
|
|
|
121
120
|
those are my numbers on that date, and they move every session i run, so treat
|
|
@@ -11,19 +11,11 @@ your disk and never opens a socket.
|
|
|
11
11
|
uvx transcripto coach
|
|
12
12
|
```
|
|
13
13
|
|
|
14
|
-
> **
|
|
15
|
-
>
|
|
16
|
-
>
|
|
17
|
-
> traceback instead of an instruction. One line settles which one you are holding:
|
|
14
|
+
> **which build you got.** `uvx transcripto --version` should print **0.1.3**. If `--version`
|
|
15
|
+
> is not a recognised flag at all you are on 0.1.1, which predates `trace`, Cursor support and
|
|
16
|
+
> this README. `uvx --refresh transcripto` forces a fresh resolve past uv's cache.
|
|
18
17
|
>
|
|
19
|
-
>
|
|
20
|
-
> uvx transcripto --version # 0.1.2 or newer = this README is accurate
|
|
21
|
-
> ```
|
|
22
|
-
>
|
|
23
|
-
> *Read 2026-08-31: PyPI was serving 0.1.1 while this README described 0.1.2, so
|
|
24
|
-
> `uvx transcripto` gave the older build. If `--version` is not even a recognised
|
|
25
|
-
> flag, you have 0.1.1 — it was added in 0.1.2 precisely because there was no way
|
|
26
|
-
> to tell.* The repo always matches this README and needs nothing installed:
|
|
18
|
+
> The repo always matches this README and needs nothing installed:
|
|
27
19
|
>
|
|
28
20
|
> ```
|
|
29
21
|
> git clone https://github.com/Morkeeth/transcripto && cd transcripto
|
|
@@ -63,41 +55,48 @@ the same way.
|
|
|
63
55
|
|
|
64
56
|
## what you get back
|
|
65
57
|
|
|
66
|
-
this is a real run on one machine, pasted unedited, 2026-08-
|
|
58
|
+
this is a real run on one machine, pasted unedited, 2026-08-31:
|
|
67
59
|
|
|
68
60
|
```
|
|
69
61
|
|
|
70
62
|
YOUR PROMPT HABITS, GRADED (offline, your machine only)
|
|
71
63
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
64
|
+
- your worst looped prompt, with its witness:
|
|
65
|
+
"ok, and lets see they might solve it in the future so i can go back to my beloeved routine :) Befor…"
|
|
66
|
+
NO-DURABLE-RECORD: read-only Bash only, no file change · corrections: 15 · assistant turns: 221
|
|
67
|
+
|
|
68
|
+
+ your best landed prompt, with its witness:
|
|
69
|
+
"mTERMINAL 8 — Mountain of Helicon · ~/CODE/mountain-of-helicon Read ~/CODE/mountain-of-helicon. Two…"
|
|
70
|
+
COMMIT-WITNESSED: git commit · corrections: 0
|
|
77
71
|
|
|
78
72
|
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.
|
|
79
73
|
|
|
80
74
|
SURVIVES MOST do more of these:
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
57% (
|
|
75
|
+
65% (71/110) states-a-check-or-done-condition
|
|
76
|
+
64% (178/276) detailed (>40 words)
|
|
77
|
+
59% (22/37) no-object (pronoun/vague)
|
|
78
|
+
59% (451/763) intent:CHANGE
|
|
79
|
+
57% (106/187) cites-a-file-or-path
|
|
86
80
|
|
|
87
81
|
SURVIVES LEAST these tend to loop:
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
42% (
|
|
92
|
-
45% (
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
82
|
+
31% (4/13) intent:REVERT
|
|
83
|
+
40% (451/1129) intent:none
|
|
84
|
+
42% (320/765) terse (<8 words)
|
|
85
|
+
42% (81/192) intent:DESCRIBE
|
|
86
|
+
45% (5/11) intent:TEST
|
|
87
|
+
|
|
88
|
+
harness claude · 2957 transcript(s), 431,085 records · 3969 typed by you (0.92%)
|
|
89
|
+
episodes: 2108 ranked, 992 survived (47%)
|
|
90
|
+
commit 454 · write/edit 538 · reverted 2 · nothing durable 1114
|
|
91
|
+
|
|
92
|
+
─────────────────────────────────────────────────────────
|
|
93
|
+
compare yours. numbers only, nothing from your prompts:
|
|
94
|
+
|
|
95
|
+
transcripto coach · claude · 2108 episodes · 47% survived
|
|
96
|
+
states-a-check-or-done-condition 65% (71/110)
|
|
97
|
+
intent:none 40% (451/1129)
|
|
98
|
+
gap 1.6x
|
|
99
|
+
─────────────────────────────────────────────────────────
|
|
101
100
|
```
|
|
102
101
|
|
|
103
102
|
those are my numbers on that date, and they move every session i run, so treat
|
|
@@ -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.3"
|
|
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.3
|
|
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
|
|
@@ -29,19 +29,11 @@ your disk and never opens a socket.
|
|
|
29
29
|
uvx transcripto coach
|
|
30
30
|
```
|
|
31
31
|
|
|
32
|
-
> **
|
|
33
|
-
>
|
|
34
|
-
>
|
|
35
|
-
> traceback instead of an instruction. One line settles which one you are holding:
|
|
32
|
+
> **which build you got.** `uvx transcripto --version` should print **0.1.3**. If `--version`
|
|
33
|
+
> is not a recognised flag at all you are on 0.1.1, which predates `trace`, Cursor support and
|
|
34
|
+
> this README. `uvx --refresh transcripto` forces a fresh resolve past uv's cache.
|
|
36
35
|
>
|
|
37
|
-
>
|
|
38
|
-
> uvx transcripto --version # 0.1.2 or newer = this README is accurate
|
|
39
|
-
> ```
|
|
40
|
-
>
|
|
41
|
-
> *Read 2026-08-31: PyPI was serving 0.1.1 while this README described 0.1.2, so
|
|
42
|
-
> `uvx transcripto` gave the older build. If `--version` is not even a recognised
|
|
43
|
-
> flag, you have 0.1.1 — it was added in 0.1.2 precisely because there was no way
|
|
44
|
-
> to tell.* The repo always matches this README and needs nothing installed:
|
|
36
|
+
> The repo always matches this README and needs nothing installed:
|
|
45
37
|
>
|
|
46
38
|
> ```
|
|
47
39
|
> git clone https://github.com/Morkeeth/transcripto && cd transcripto
|
|
@@ -81,41 +73,48 @@ the same way.
|
|
|
81
73
|
|
|
82
74
|
## what you get back
|
|
83
75
|
|
|
84
|
-
this is a real run on one machine, pasted unedited, 2026-08-
|
|
76
|
+
this is a real run on one machine, pasted unedited, 2026-08-31:
|
|
85
77
|
|
|
86
78
|
```
|
|
87
79
|
|
|
88
80
|
YOUR PROMPT HABITS, GRADED (offline, your machine only)
|
|
89
81
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
82
|
+
- your worst looped prompt, with its witness:
|
|
83
|
+
"ok, and lets see they might solve it in the future so i can go back to my beloeved routine :) Befor…"
|
|
84
|
+
NO-DURABLE-RECORD: read-only Bash only, no file change · corrections: 15 · assistant turns: 221
|
|
85
|
+
|
|
86
|
+
+ your best landed prompt, with its witness:
|
|
87
|
+
"mTERMINAL 8 — Mountain of Helicon · ~/CODE/mountain-of-helicon Read ~/CODE/mountain-of-helicon. Two…"
|
|
88
|
+
COMMIT-WITNESSED: git commit · corrections: 0
|
|
95
89
|
|
|
96
90
|
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.
|
|
97
91
|
|
|
98
92
|
SURVIVES MOST do more of these:
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
57% (
|
|
93
|
+
65% (71/110) states-a-check-or-done-condition
|
|
94
|
+
64% (178/276) detailed (>40 words)
|
|
95
|
+
59% (22/37) no-object (pronoun/vague)
|
|
96
|
+
59% (451/763) intent:CHANGE
|
|
97
|
+
57% (106/187) cites-a-file-or-path
|
|
104
98
|
|
|
105
99
|
SURVIVES LEAST these tend to loop:
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
42% (
|
|
110
|
-
45% (
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
100
|
+
31% (4/13) intent:REVERT
|
|
101
|
+
40% (451/1129) intent:none
|
|
102
|
+
42% (320/765) terse (<8 words)
|
|
103
|
+
42% (81/192) intent:DESCRIBE
|
|
104
|
+
45% (5/11) intent:TEST
|
|
105
|
+
|
|
106
|
+
harness claude · 2957 transcript(s), 431,085 records · 3969 typed by you (0.92%)
|
|
107
|
+
episodes: 2108 ranked, 992 survived (47%)
|
|
108
|
+
commit 454 · write/edit 538 · reverted 2 · nothing durable 1114
|
|
109
|
+
|
|
110
|
+
─────────────────────────────────────────────────────────
|
|
111
|
+
compare yours. numbers only, nothing from your prompts:
|
|
112
|
+
|
|
113
|
+
transcripto coach · claude · 2108 episodes · 47% survived
|
|
114
|
+
states-a-check-or-done-condition 65% (71/110)
|
|
115
|
+
intent:none 40% (451/1129)
|
|
116
|
+
gap 1.6x
|
|
117
|
+
─────────────────────────────────────────────────────────
|
|
119
118
|
```
|
|
120
119
|
|
|
121
120
|
those are my numbers on that date, and they move every session i run, so treat
|
|
@@ -25,7 +25,7 @@ PROG = _prog()
|
|
|
25
25
|
# packaging. A stranger who reads the README on GitHub and installs from PyPI can be
|
|
26
26
|
# holding a different build than the one the README describes, and until this flag
|
|
27
27
|
# existed there was no way for them to tell which.
|
|
28
|
-
VERSION = "0.1.
|
|
28
|
+
VERSION = "0.1.3"
|
|
29
29
|
|
|
30
30
|
USAGE = """
|
|
31
31
|
%(p)s index build / refresh the index (incremental)
|
|
@@ -1475,6 +1475,10 @@ def coach(roots=None, harness=None, verified_human=False):
|
|
|
1475
1475
|
"durable_rate": round(durable / len(episodes), 3) if episodes else 0.0,
|
|
1476
1476
|
"tiers": tiers,
|
|
1477
1477
|
"top_patterns": rankable[:5],
|
|
1478
|
+
# The share block needs named habits by name, and a habit can land in either
|
|
1479
|
+
# half of the most/least split depending on corpus. Give it the whole list
|
|
1480
|
+
# rather than making it guess which slice to look in.
|
|
1481
|
+
"all_patterns": rankable,
|
|
1478
1482
|
# SURVIVES LEAST must draw only from habits SURVIVES MOST did not take.
|
|
1479
1483
|
# The old guard was `len(rankable) > 5`, which only protected the <=5 case:
|
|
1480
1484
|
# with 6-9 rankable habits, rankable[:5] and rankable[-5:] overlap, and the
|
|
@@ -1496,6 +1500,37 @@ def coach(roots=None, harness=None, verified_human=False):
|
|
|
1496
1500
|
}
|
|
1497
1501
|
|
|
1498
1502
|
|
|
1503
|
+
|
|
1504
|
+
def _share_block(r):
|
|
1505
|
+
"""Four lines a person can paste into a thread.
|
|
1506
|
+
|
|
1507
|
+
The tool asks people to compare their numbers with someone else's; before this
|
|
1508
|
+
existed, answering that meant hand-retyping rows out of two tables, which is
|
|
1509
|
+
why those threads fill with opinions instead of data. Numbers only: no prompt
|
|
1510
|
+
text, no paths, no repo names, so pasting it cannot leak anything.
|
|
1511
|
+
"""
|
|
1512
|
+
pats = {p["pattern"]: p for p in r.get("all_patterns") or []}
|
|
1513
|
+
good = pats.get("states-a-check-or-done-condition")
|
|
1514
|
+
bad = pats.get("intent:none")
|
|
1515
|
+
if not (good and bad): # fall back to the extremes we do have
|
|
1516
|
+
top = (r.get("top_patterns") or [None])[0]
|
|
1517
|
+
bot = (r.get("bottom_patterns") or [None])[0]
|
|
1518
|
+
good, bad = good or top, bad or bot
|
|
1519
|
+
if not (good and bad) or good is bad:
|
|
1520
|
+
return # nothing honest to compare
|
|
1521
|
+
W = 57
|
|
1522
|
+
print(" " + "\u2500" * W)
|
|
1523
|
+
print(" compare yours. numbers only, nothing from your prompts:\n")
|
|
1524
|
+
print(" transcripto coach \u00b7 %s \u00b7 %s episodes \u00b7 %d%% survived"
|
|
1525
|
+
% (r["harness"], r["episodes"], int(round(r["durable_rate"] * 100))))
|
|
1526
|
+
for label, p in ((good["pattern"], good), (bad["pattern"], bad)):
|
|
1527
|
+
print(" %-34s %3d%% (%s/%s)"
|
|
1528
|
+
% (label, round(p["survival_rate"] * 100), p["survived"], p["n"]))
|
|
1529
|
+
if bad["survival_rate"]:
|
|
1530
|
+
print(" %-34s %.1fx" % ("gap", good["survival_rate"] / bad["survival_rate"]))
|
|
1531
|
+
print(" " + "\u2500" * W)
|
|
1532
|
+
|
|
1533
|
+
|
|
1499
1534
|
def _one_line(text, width=100):
|
|
1500
1535
|
one = " ".join(text.split())
|
|
1501
1536
|
return one if len(one) <= width else one[:width - 1] + "…"
|
|
@@ -1524,22 +1559,18 @@ def cmd_coach(args):
|
|
|
1524
1559
|
return
|
|
1525
1560
|
B, D = "\033[1m", "\033[0m"
|
|
1526
1561
|
print("\n %sYOUR PROMPT HABITS, GRADED%s (offline, your machine only)\n" % (B, D))
|
|
1527
|
-
|
|
1528
|
-
|
|
1529
|
-
|
|
1530
|
-
|
|
1531
|
-
|
|
1532
|
-
|
|
1533
|
-
|
|
1534
|
-
if
|
|
1535
|
-
print("
|
|
1536
|
-
|
|
1537
|
-
|
|
1538
|
-
|
|
1539
|
-
% (r["episodes"], r["durable"], int(round(r["durable_rate"] * 100))))
|
|
1540
|
-
t = r["tiers"]
|
|
1541
|
-
print(" tiers : commit %s | write/edit %s | reverted %s | nothing durable %s"
|
|
1542
|
-
% (t["commit"], t["artifact"], t["reverted"], t["none"]))
|
|
1562
|
+
w = r["worst_prompt"]
|
|
1563
|
+
if w:
|
|
1564
|
+
print(" \033[31m-\033[0m your worst looped prompt, with its witness:")
|
|
1565
|
+
print(" \"%s\"" % _one_line(w["opener"]))
|
|
1566
|
+
print(" %s: %s · corrections: %s · assistant turns: %s"
|
|
1567
|
+
% (w["probe"], w["witness"], w["corrective_turns"], w["assistant_turns"]))
|
|
1568
|
+
b = r["best_prompt"]
|
|
1569
|
+
if b:
|
|
1570
|
+
print("\n \033[32m+\033[0m your best landed prompt, with its witness:")
|
|
1571
|
+
print(" \"%s\"" % _one_line(b["opener"]))
|
|
1572
|
+
print(" %s: %s · corrections: %s" % (b["probe"], b["witness"],
|
|
1573
|
+
b["corrective_turns"]))
|
|
1543
1574
|
print("\n \033[2mSURVIVAL IS A PROXY: %s\033[0m" % r["proxy"])
|
|
1544
1575
|
if not r["rankable_corpus"]:
|
|
1545
1576
|
# The refusal IS the product's argument, not an error. A rate needs a
|
|
@@ -1572,18 +1603,28 @@ def cmd_coach(args):
|
|
|
1572
1603
|
else:
|
|
1573
1604
|
print("\n \033[2m(every rankable habit is listed above; too few to split "
|
|
1574
1605
|
"into a most/least pair)\033[0m")
|
|
1575
|
-
|
|
1576
|
-
|
|
1577
|
-
|
|
1578
|
-
|
|
1579
|
-
|
|
1580
|
-
|
|
1581
|
-
|
|
1582
|
-
|
|
1583
|
-
|
|
1584
|
-
|
|
1585
|
-
|
|
1586
|
-
|
|
1606
|
+
print("\n \033[2mharness %s · %s transcript(s), %s records · %s typed by you "
|
|
1607
|
+
"(%s%%)\033[0m"
|
|
1608
|
+
% (r["harness"], r["files"], format(r["total_records"], ","),
|
|
1609
|
+
r["human_turns"], r["human_pct"]))
|
|
1610
|
+
# Keep the phrasing "episodes: N ranked, M survived (P%)" verbatim. test_small_n.sh
|
|
1611
|
+
# greps for it to prove the raw survival count still shows when habit ranking is
|
|
1612
|
+
# refused, which is the honest half of a small-corpus run. Reword it and that check
|
|
1613
|
+
# goes green-by-absence for a reason unrelated to what it is testing.
|
|
1614
|
+
print(" \033[2mepisodes: %s ranked, %s survived (%s%%)\033[0m"
|
|
1615
|
+
% (r["episodes"], r["durable"], int(round(r["durable_rate"] * 100))))
|
|
1616
|
+
t = r["tiers"]
|
|
1617
|
+
print(" \033[2mcommit %s · write/edit %s · reverted %s · nothing durable %s\033[0m"
|
|
1618
|
+
% (t["commit"], t["artifact"], t["reverted"], t["none"]))
|
|
1619
|
+
if r["verified_human"]:
|
|
1620
|
+
print(" \033[2m%s typed turn(s) flagged likely-PASTED and subtracted\033[0m"
|
|
1621
|
+
% r["pastes_flagged"])
|
|
1622
|
+
if r["history_lines"]:
|
|
1623
|
+
print(" \033[2mcodex history.jsonl: %s/%s checkable input lines also appear as "
|
|
1624
|
+
"typed rollout turns (gate control)\033[0m"
|
|
1625
|
+
% (r["history_matched"], r["history_lines"]))
|
|
1626
|
+
print()
|
|
1627
|
+
_share_block(r)
|
|
1587
1628
|
print()
|
|
1588
1629
|
|
|
1589
1630
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|