@supersuit/hyperspec 0.6.0 → 0.8.0

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.
Files changed (59) hide show
  1. package/CHANGELOG.md +127 -0
  2. package/README.md +71 -8
  3. package/SPEC.md +2 -2
  4. package/WRITING.md +680 -21
  5. package/bin/hyperspec.mjs +188 -4
  6. package/examples/writing/course/claims.jsonl +0 -0
  7. package/examples/writing/course/goldens/lesson.md +1 -0
  8. package/examples/writing/course/materials/brief.md +9 -0
  9. package/examples/writing/course/materials/brief.md.segments.jsonl +6 -0
  10. package/examples/writing/course/outline.md +11 -0
  11. package/examples/writing/course/part-1.md +47 -0
  12. package/examples/writing/course/part-2.md +40 -0
  13. package/examples/writing/course/runs.jsonl +0 -0
  14. package/examples/writing/course.hyperspec.md +205 -0
  15. package/examples/writing/essay/judge/doctor.packet.json +108 -0
  16. package/examples/writing/essay/judge/lineup.packet.json +64 -0
  17. package/examples/writing/essay/judge/persona.packet.json +73 -0
  18. package/examples/writing/essay/judge/reader.packet.json +93 -0
  19. package/examples/writing/essay/learn/first-draft.md +84 -0
  20. package/examples/writing/essay/learn/learn.packet.json +106 -0
  21. package/examples/writing/essay/sample-verdicts/doctor.verdict.json +43 -0
  22. package/examples/writing/essay/sample-verdicts/learn.verdict.json +30 -0
  23. package/examples/writing/essay/sample-verdicts/lineup.verdict.json +6 -0
  24. package/examples/writing/essay/sample-verdicts/persona.verdict.json +4 -0
  25. package/examples/writing/essay/sample-verdicts/reader.verdict.json +7 -0
  26. package/examples/writing/essay.hyperspec.md +6 -1
  27. package/examples/writing/story/judge/attribution.packet.json +194 -0
  28. package/examples/writing/story/judge/doctor.packet.json +108 -0
  29. package/examples/writing/story/judge/knowledge.packet.json +77 -0
  30. package/examples/writing/story/judge/persona.packet.json +73 -0
  31. package/examples/writing/story/judge/reader.packet.json +94 -0
  32. package/examples/writing/story/sample-verdicts/attribution.verdict.json +81 -0
  33. package/examples/writing/story/sample-verdicts/doctor.verdict.json +43 -0
  34. package/examples/writing/story/sample-verdicts/knowledge.verdict.json +4 -0
  35. package/examples/writing/story/sample-verdicts/persona.verdict.json +20 -0
  36. package/examples/writing/story/sample-verdicts/reader.verdict.json +16 -0
  37. package/examples/writing/story.hyperspec.md +7 -3
  38. package/package.json +1 -1
  39. package/src/check.mjs +96 -132
  40. package/src/draft.mjs +26 -0
  41. package/src/judge.mjs +386 -0
  42. package/src/judges/attribution.mjs +360 -0
  43. package/src/judges/doctor.mjs +126 -0
  44. package/src/judges/index.mjs +31 -0
  45. package/src/judges/knowledge.mjs +111 -0
  46. package/src/judges/lineup.mjs +272 -0
  47. package/src/judges/persona.mjs +137 -0
  48. package/src/judges/reader.mjs +111 -0
  49. package/src/learn.mjs +422 -0
  50. package/src/ledger.mjs +108 -0
  51. package/src/sentences.mjs +81 -0
  52. package/src/sequence-draft.mjs +75 -0
  53. package/src/stations/claims.mjs +44 -39
  54. package/src/stations/index.mjs +3 -1
  55. package/src/stations/links.mjs +11 -3
  56. package/src/stations/quotes.mjs +6 -4
  57. package/src/stations/sequence.mjs +275 -0
  58. package/src/writing-fields.mjs +34 -0
  59. package/src/writing.mjs +1 -1
@@ -0,0 +1,108 @@
1
+ {
2
+ "hyperspec_judge": "0.1",
3
+ "station": "doctor",
4
+ "spec": "essay.hyperspec.md",
5
+ "spec_sha256": "e03dfac6b445ae779000f7fc109a9d713df2e5cf8967faf8e808fe87d63e40e9",
6
+ "draft": "essay/draft.md",
7
+ "draft_sha256": "aa4a1d99604f7b2b398b67305b368abbb72651356c38bfffad1452db6be62f65",
8
+ "rubric": "the doctor grades the draft against every condition; the simulated reader is asked whether it would copy the questions now",
9
+ "instructions": "Grade the draft (inputs.draft) against each condition in inputs.conditions: a condition passes unless the draft does what its fails_when describes. For every judgment, quote the draft as evidence: each evidence field is a span copied verbatim from inputs.draft. Then answer whether this reader, having read the draft, would take the next step (inputs.goal.next_if_worked) now, and quote the passage that decided it. Answer only in the verdict shape given in verdict_schema: one entry per condition id, each exactly once, with pass and would_take_next_step as true or false, and a note saying why for every condition that fails.",
10
+ "inputs": {
11
+ "goal": {
12
+ "from": "plans to run the first one-on-one from their own list",
13
+ "to": "hands the first one-on-one to the report and asks the three questions",
14
+ "next_if_worked": "writes the three questions on a card before the meeting",
15
+ "change": {
16
+ "kind": "action",
17
+ "text": "the reader asks the three questions in their next one-on-one and waits after each"
18
+ }
19
+ },
20
+ "conditions": [
21
+ {
22
+ "id": "r1",
23
+ "text": "the opening line tells the reader who sets the agenda of a first one-on-one",
24
+ "fails_when": "a reader shown only the first two sentences cannot say who should set the agenda"
25
+ },
26
+ {
27
+ "id": "r2",
28
+ "text": "the three questions appear word for word as the voice memo states them",
29
+ "fails_when": "any of the three questions differs from essay/materials/voice-memo.md by a word"
30
+ },
31
+ {
32
+ "id": "r3",
33
+ "text": "every survey figure in the draft matches the verified survey summary",
34
+ "fails_when": "a figure in the draft has no entry in the claims ledger pointing at essay/materials/team-survey.md, or differs from it"
35
+ },
36
+ {
37
+ "id": "r4",
38
+ "text": "the draft argues only the four claims in the spine, in order",
39
+ "fails_when": "a paragraph advances a point that traces to none of c1 to c4, or c3 lands before c2"
40
+ },
41
+ {
42
+ "id": "r5",
43
+ "text": "the draft tells the reader what to do with silence in the meeting",
44
+ "fails_when": "the draft never says to wait after asking a question"
45
+ },
46
+ {
47
+ "id": "r6",
48
+ "text": "the draft stays inside its length envelope",
49
+ "fails_when": "the word count is under 700 or over 1,100"
50
+ }
51
+ ],
52
+ "draft": "# Hand your first one-on-one to the person you manage\n\n## Who sets the agenda\n\nYour first one-on-one with a new report is the only meeting on your calendar where they should\nset the agenda. Everything else you run. This one you hand over.\n\nIf you walk in with a list, you have told your report what the meeting is for, and it is for\nyou. They will answer your list politely and leave. You will know nothing you did not know when\nyou sat down, and so will they.\n\nMy team ran a [survey](materials/team-survey.md) this spring. 29 of 41 people said their most useful one-on-one in the last\nquarter was one where they brought the first topic. The meeting that worked for them was the one\nthey started.\n\nSo give them the start. The simplest way to do it is a running agenda: one shared document per\nperson, kept for as long as you manage them. Your report adds items before each meeting, and you\nadd yours last, at the bottom. That is how an engineering manager I interviewed, eight years into\nthe job, runs hers. Her rule is short: the report owns the agenda.\n\n## My first one-on-one\n\nMy first one-on-one as a manager was a disaster, and the reason was simple: I ran it. I had a\nlist, and I went down the list. Project status, blockers, the thing from Tuesday. Thirty minutes\nlater my report said thanks and left, and I had learned nothing I could not have read in the\ntracker.\n\nWhat I ran was a status meeting, which is a meeting spent reading out loud what the tracker\nalready says. Your report wrote those updates. Asking them to recite the updates to you teaches\nyou nothing new, and it spends the one half hour a week that belongs to them.\n\nThe survey shows the cost from their side. 11 of 41 said at least one of their one-on-ones in the\nlast quarter was mostly project status. Read the tracker before you walk in, and leave status\nthere.\n\n## The three questions\n\nHere is what I ask now, in this order, and then I let the report take over:\n\n1. What is taking more of your energy than it should?\n2. What do you want to be doing more of in six months?\n3. What should I stop doing, or start doing, that would make your week easier?\n\nThree is enough to hand the meeting over. The first asks about this week. The second asks about\nthe next six months. The third asks about you, and it is the one your report will not raise\nwithout being asked. A fourth question starts to look like your list again, and the list is what\nyou came to give up.\n\nAsk them in the same words every time. Your report will learn them, and after a few weeks they\nwill walk in with answers already half formed. That is the point of fixing the words: the meeting\nstarts on their topic before you have said anything at all.\n\nThe second question is the one my own team asked for. The most common free-text request in the\nsurvey, in 9 responses, was to be asked what they want to work on next.\n\nAfter the third question, stop talking.\n\n## What to do with the answers\n\nWait after each question, longer than you want to. Dana, the engineering manager I interviewed,\nputs it in three short sentences: \"Wait. Count to five. The real answer is the second one.\" The first\nanswer your report gives is the tidy one, the version they could give anyone. The second is what\nthey came in with, and you only hear it if you let the silence run.\n\nWrite down what they say, in their words, at the top of the running agenda. That list is where\nyour next one-on-one starts, so the meeting stays theirs the week after too.\n\nDo not try to fix everything in the room. Pick one thing you can act on this week, say what you\nwill do, and do it before you meet again. The rest stays on the running agenda until it is done\nor your report takes it off.\n\nAnd keep your own urgent items out of it. She told me: \"If I have something urgent, it is not a\none-on-one topic. I send it the day it happens.\" Your report should never have to wait a week to\nhear something you needed them to know on Monday.\n\n## Before the meeting\n\nOpen the invite and delete your list from it. Ask your report to add the first item to the\nrunning agenda instead.\n\nSo write the three questions on a card. Ask the first one. Then wait, longer than feels polite,\nbecause the first answer is the one they rehearsed and the second one is the one you came for.\n"
53
+ },
54
+ "verdict_schema": {
55
+ "type": "object",
56
+ "required": [
57
+ "conditions",
58
+ "would_take_next_step",
59
+ "evidence"
60
+ ],
61
+ "properties": {
62
+ "conditions": {
63
+ "type": "array",
64
+ "description": "one entry per condition id, each exactly once",
65
+ "items": {
66
+ "type": "object",
67
+ "required": [
68
+ "id",
69
+ "pass",
70
+ "evidence",
71
+ "note"
72
+ ],
73
+ "properties": {
74
+ "id": {
75
+ "enum": [
76
+ "r1",
77
+ "r2",
78
+ "r3",
79
+ "r4",
80
+ "r5",
81
+ "r6"
82
+ ]
83
+ },
84
+ "pass": {
85
+ "type": "boolean"
86
+ },
87
+ "evidence": {
88
+ "type": "string",
89
+ "description": "a span copied verbatim from the draft"
90
+ },
91
+ "note": {
92
+ "type": "string",
93
+ "description": "why; required when pass is false"
94
+ }
95
+ }
96
+ }
97
+ },
98
+ "would_take_next_step": {
99
+ "type": "boolean",
100
+ "description": "whether this reader would take inputs.goal.next_if_worked now"
101
+ },
102
+ "evidence": {
103
+ "type": "string",
104
+ "description": "a span copied verbatim from the draft that decided would_take_next_step"
105
+ }
106
+ }
107
+ }
108
+ }
@@ -0,0 +1,64 @@
1
+ {
2
+ "hyperspec_judge": "0.1",
3
+ "station": "lineup",
4
+ "spec": "essay.hyperspec.md",
5
+ "spec_sha256": "e03dfac6b445ae779000f7fc109a9d713df2e5cf8967faf8e808fe87d63e40e9",
6
+ "draft": "essay/draft.md",
7
+ "draft_sha256": "aa4a1d99604f7b2b398b67305b368abbb72651356c38bfffad1452db6be62f65",
8
+ "rubric": "blind lineup within this scope; a judge shown a generated passage beside the scope's three goldens cannot pick it out",
9
+ "instructions": "Each passage in inputs.candidates carries a capital-letter label. All but one were written by the writer of inputs.scope, for this form, audience and purpose, and approved by a person; exactly one comes from a new draft. Pick the label of the passage you believe comes from the new draft, judging by voice alone: rhythm, diction, sentence shape, what this writer would and would not say. Give your confidence from 0 (a guess) to 1 (certain), and in reason say what in the candidates decided it. Judge from the packet's inputs alone: do not open the spec, the draft or any other file the packet names. Answer only in the verdict shape given in verdict_schema.",
10
+ "inputs": {
11
+ "scope": {
12
+ "writer": "example-author",
13
+ "form": "essay",
14
+ "audience": "new managers",
15
+ "purpose": "teach"
16
+ },
17
+ "candidates": [
18
+ {
19
+ "label": "A",
20
+ "text": "So write the three questions on a card. Ask the first one. Then wait, longer than feels polite, because the first answer is the one they rehearsed and the second one is the one you came for."
21
+ },
22
+ {
23
+ "label": "B",
24
+ "text": "If you can read it in the tracker, do not ask for it in the room. Status already has a home, and your report is the one who put it there. Spend the half hour on what the tracker cannot hold: how the work looks from their side of it."
25
+ },
26
+ {
27
+ "label": "C",
28
+ "text": "Your first one-on-one with a new report is the only meeting on your calendar where they should set the agenda. Everything else you run. This one you hand over."
29
+ },
30
+ {
31
+ "label": "D",
32
+ "text": "The survey shows the cost from their side. 11 of 41 said at least one of their one-on-ones in the last quarter was mostly project status. Read the tracker before you walk in, and leave status there."
33
+ }
34
+ ]
35
+ },
36
+ "verdict_schema": {
37
+ "type": "object",
38
+ "required": [
39
+ "pick",
40
+ "confidence",
41
+ "reason"
42
+ ],
43
+ "properties": {
44
+ "pick": {
45
+ "enum": [
46
+ "A",
47
+ "B",
48
+ "C",
49
+ "D"
50
+ ],
51
+ "description": "the label of the passage you believe comes from the new draft"
52
+ },
53
+ "confidence": {
54
+ "type": "number",
55
+ "minimum": 0,
56
+ "maximum": 1
57
+ },
58
+ "reason": {
59
+ "type": "string",
60
+ "description": "what in the candidates decided the pick"
61
+ }
62
+ }
63
+ }
64
+ }
@@ -0,0 +1,73 @@
1
+ {
2
+ "hyperspec_judge": "0.1",
3
+ "station": "persona",
4
+ "spec": "essay.hyperspec.md",
5
+ "spec_sha256": "e03dfac6b445ae779000f7fc109a9d713df2e5cf8967faf8e808fe87d63e40e9",
6
+ "draft": "essay/draft.md",
7
+ "draft_sha256": "aa4a1d99604f7b2b398b67305b368abbb72651356c38bfffad1452db6be62f65",
8
+ "rubric": "persona-consistency judge; the mentor stance holds, and no fact appears that is not in the claims ledger",
9
+ "instructions": "Read inputs.draft as the speaker inputs.persona describes. Report every break as an entry in breaks: the passage as evidence, copied verbatim from inputs.draft, at least three whole words; its kind; and why. The kind is one of: stance (the voice leaves inputs.persona.stance), assertion (it asserts something outside inputs.persona.may_assert), will_not_say (it says something inputs.persona.will_not_say rules out), unsourced_fact (it states a fact that none of inputs.claims holds). When inputs.claims is null, no claims ledger is declared and facts cannot be checked against sources: do not report unsourced_fact. If the voice holds throughout, breaks is an empty list. Answer only in the verdict shape given in verdict_schema.",
10
+ "inputs": {
11
+ "persona": {
12
+ "identity": "self",
13
+ "stance": "mentor",
14
+ "may_assert": [
15
+ "what the author did in their own first one-on-ones and what happened",
16
+ "the three questions the author uses now"
17
+ ],
18
+ "will_not_say": [
19
+ "a claim about what most managers do, beyond the survey's own figures",
20
+ "the name of anyone on the author's team"
21
+ ]
22
+ },
23
+ "claims": [
24
+ "29 of 41 people said their most useful one-on-one in the last quarter was one where they brought the first topic.",
25
+ "That is how an engineering manager I interviewed, eight years into the job, runs hers.",
26
+ "Her rule is short: the report owns the agenda.",
27
+ "My first one-on-one as a manager was a disaster, and the reason was simple: I ran it.",
28
+ "11 of 41 said at least one of their one-on-ones in the last quarter was mostly project status.",
29
+ "What is taking more of your energy than it should?",
30
+ "What do you want to be doing more of in six months?",
31
+ "What should I stop doing, or start doing, that would make your week easier?",
32
+ "The most common free-text request in the survey, in 9 responses, was to be asked what they want to work on next."
33
+ ],
34
+ "draft": "# Hand your first one-on-one to the person you manage\n\n## Who sets the agenda\n\nYour first one-on-one with a new report is the only meeting on your calendar where they should\nset the agenda. Everything else you run. This one you hand over.\n\nIf you walk in with a list, you have told your report what the meeting is for, and it is for\nyou. They will answer your list politely and leave. You will know nothing you did not know when\nyou sat down, and so will they.\n\nMy team ran a [survey](materials/team-survey.md) this spring. 29 of 41 people said their most useful one-on-one in the last\nquarter was one where they brought the first topic. The meeting that worked for them was the one\nthey started.\n\nSo give them the start. The simplest way to do it is a running agenda: one shared document per\nperson, kept for as long as you manage them. Your report adds items before each meeting, and you\nadd yours last, at the bottom. That is how an engineering manager I interviewed, eight years into\nthe job, runs hers. Her rule is short: the report owns the agenda.\n\n## My first one-on-one\n\nMy first one-on-one as a manager was a disaster, and the reason was simple: I ran it. I had a\nlist, and I went down the list. Project status, blockers, the thing from Tuesday. Thirty minutes\nlater my report said thanks and left, and I had learned nothing I could not have read in the\ntracker.\n\nWhat I ran was a status meeting, which is a meeting spent reading out loud what the tracker\nalready says. Your report wrote those updates. Asking them to recite the updates to you teaches\nyou nothing new, and it spends the one half hour a week that belongs to them.\n\nThe survey shows the cost from their side. 11 of 41 said at least one of their one-on-ones in the\nlast quarter was mostly project status. Read the tracker before you walk in, and leave status\nthere.\n\n## The three questions\n\nHere is what I ask now, in this order, and then I let the report take over:\n\n1. What is taking more of your energy than it should?\n2. What do you want to be doing more of in six months?\n3. What should I stop doing, or start doing, that would make your week easier?\n\nThree is enough to hand the meeting over. The first asks about this week. The second asks about\nthe next six months. The third asks about you, and it is the one your report will not raise\nwithout being asked. A fourth question starts to look like your list again, and the list is what\nyou came to give up.\n\nAsk them in the same words every time. Your report will learn them, and after a few weeks they\nwill walk in with answers already half formed. That is the point of fixing the words: the meeting\nstarts on their topic before you have said anything at all.\n\nThe second question is the one my own team asked for. The most common free-text request in the\nsurvey, in 9 responses, was to be asked what they want to work on next.\n\nAfter the third question, stop talking.\n\n## What to do with the answers\n\nWait after each question, longer than you want to. Dana, the engineering manager I interviewed,\nputs it in three short sentences: \"Wait. Count to five. The real answer is the second one.\" The first\nanswer your report gives is the tidy one, the version they could give anyone. The second is what\nthey came in with, and you only hear it if you let the silence run.\n\nWrite down what they say, in their words, at the top of the running agenda. That list is where\nyour next one-on-one starts, so the meeting stays theirs the week after too.\n\nDo not try to fix everything in the room. Pick one thing you can act on this week, say what you\nwill do, and do it before you meet again. The rest stays on the running agenda until it is done\nor your report takes it off.\n\nAnd keep your own urgent items out of it. She told me: \"If I have something urgent, it is not a\none-on-one topic. I send it the day it happens.\" Your report should never have to wait a week to\nhear something you needed them to know on Monday.\n\n## Before the meeting\n\nOpen the invite and delete your list from it. Ask your report to add the first item to the\nrunning agenda instead.\n\nSo write the three questions on a card. Ask the first one. Then wait, longer than feels polite,\nbecause the first answer is the one they rehearsed and the second one is the one you came for.\n"
35
+ },
36
+ "verdict_schema": {
37
+ "type": "object",
38
+ "required": [
39
+ "breaks"
40
+ ],
41
+ "properties": {
42
+ "breaks": {
43
+ "type": "array",
44
+ "description": "every place the persona breaks; empty when it holds",
45
+ "items": {
46
+ "type": "object",
47
+ "required": [
48
+ "evidence",
49
+ "kind",
50
+ "why"
51
+ ],
52
+ "properties": {
53
+ "evidence": {
54
+ "type": "string",
55
+ "description": "the passage, copied verbatim from the draft, at least three words"
56
+ },
57
+ "kind": {
58
+ "enum": [
59
+ "stance",
60
+ "assertion",
61
+ "will_not_say",
62
+ "unsourced_fact"
63
+ ]
64
+ },
65
+ "why": {
66
+ "type": "string"
67
+ }
68
+ }
69
+ }
70
+ }
71
+ }
72
+ }
73
+ }
@@ -0,0 +1,93 @@
1
+ {
2
+ "hyperspec_judge": "0.1",
3
+ "station": "reader",
4
+ "spec": "essay.hyperspec.md",
5
+ "spec_sha256": "e03dfac6b445ae779000f7fc109a9d713df2e5cf8967faf8e808fe87d63e40e9",
6
+ "draft": "essay/draft.md",
7
+ "draft_sha256": "aa4a1d99604f7b2b398b67305b368abbb72651356c38bfffad1452db6be62f65",
8
+ "rubric": "simulated reader reports where it got lost and where it stopped reading",
9
+ "instructions": "Read inputs.draft as the reader inputs.audience describes: where and how they read it, knowing only what they know and believing what they believe now. For every place you got lost (a term you do not know, a step that does not follow, a sentence you had to read twice), add an entry to lost_at: the passage as evidence, copied verbatim from inputs.draft, at least three whole words, and why. If you would stop reading before the end, set stopped_at to the passage where you stopped, quoted the same way, and why; if you would read to the end, set stopped_at to null. Then say in next_step what you would do next, in your own words, and whether you would do it now (would_take_next_step). Answer only in the verdict shape given in verdict_schema.",
10
+ "inputs": {
11
+ "audience": {
12
+ "who": "someone in their first three months of managing, who was promoted from the team they now lead",
13
+ "funnel_now": "has a first one-on-one with a new report on the calendar this week",
14
+ "knows": [
15
+ "one-on-one",
16
+ "report",
17
+ "tracker"
18
+ ],
19
+ "terms": [
20
+ "running agenda",
21
+ "status meeting"
22
+ ],
23
+ "believes_now": "a one-on-one is where a manager catches up on how the work is going",
24
+ "wants": "a plan for the first meeting that will not waste either person's half hour",
25
+ "reads_on": "a phone, in the ten minutes before the meeting",
26
+ "reader": "person"
27
+ },
28
+ "draft": "# Hand your first one-on-one to the person you manage\n\n## Who sets the agenda\n\nYour first one-on-one with a new report is the only meeting on your calendar where they should\nset the agenda. Everything else you run. This one you hand over.\n\nIf you walk in with a list, you have told your report what the meeting is for, and it is for\nyou. They will answer your list politely and leave. You will know nothing you did not know when\nyou sat down, and so will they.\n\nMy team ran a [survey](materials/team-survey.md) this spring. 29 of 41 people said their most useful one-on-one in the last\nquarter was one where they brought the first topic. The meeting that worked for them was the one\nthey started.\n\nSo give them the start. The simplest way to do it is a running agenda: one shared document per\nperson, kept for as long as you manage them. Your report adds items before each meeting, and you\nadd yours last, at the bottom. That is how an engineering manager I interviewed, eight years into\nthe job, runs hers. Her rule is short: the report owns the agenda.\n\n## My first one-on-one\n\nMy first one-on-one as a manager was a disaster, and the reason was simple: I ran it. I had a\nlist, and I went down the list. Project status, blockers, the thing from Tuesday. Thirty minutes\nlater my report said thanks and left, and I had learned nothing I could not have read in the\ntracker.\n\nWhat I ran was a status meeting, which is a meeting spent reading out loud what the tracker\nalready says. Your report wrote those updates. Asking them to recite the updates to you teaches\nyou nothing new, and it spends the one half hour a week that belongs to them.\n\nThe survey shows the cost from their side. 11 of 41 said at least one of their one-on-ones in the\nlast quarter was mostly project status. Read the tracker before you walk in, and leave status\nthere.\n\n## The three questions\n\nHere is what I ask now, in this order, and then I let the report take over:\n\n1. What is taking more of your energy than it should?\n2. What do you want to be doing more of in six months?\n3. What should I stop doing, or start doing, that would make your week easier?\n\nThree is enough to hand the meeting over. The first asks about this week. The second asks about\nthe next six months. The third asks about you, and it is the one your report will not raise\nwithout being asked. A fourth question starts to look like your list again, and the list is what\nyou came to give up.\n\nAsk them in the same words every time. Your report will learn them, and after a few weeks they\nwill walk in with answers already half formed. That is the point of fixing the words: the meeting\nstarts on their topic before you have said anything at all.\n\nThe second question is the one my own team asked for. The most common free-text request in the\nsurvey, in 9 responses, was to be asked what they want to work on next.\n\nAfter the third question, stop talking.\n\n## What to do with the answers\n\nWait after each question, longer than you want to. Dana, the engineering manager I interviewed,\nputs it in three short sentences: \"Wait. Count to five. The real answer is the second one.\" The first\nanswer your report gives is the tidy one, the version they could give anyone. The second is what\nthey came in with, and you only hear it if you let the silence run.\n\nWrite down what they say, in their words, at the top of the running agenda. That list is where\nyour next one-on-one starts, so the meeting stays theirs the week after too.\n\nDo not try to fix everything in the room. Pick one thing you can act on this week, say what you\nwill do, and do it before you meet again. The rest stays on the running agenda until it is done\nor your report takes it off.\n\nAnd keep your own urgent items out of it. She told me: \"If I have something urgent, it is not a\none-on-one topic. I send it the day it happens.\" Your report should never have to wait a week to\nhear something you needed them to know on Monday.\n\n## Before the meeting\n\nOpen the invite and delete your list from it. Ask your report to add the first item to the\nrunning agenda instead.\n\nSo write the three questions on a card. Ask the first one. Then wait, longer than feels polite,\nbecause the first answer is the one they rehearsed and the second one is the one you came for.\n"
29
+ },
30
+ "verdict_schema": {
31
+ "type": "object",
32
+ "required": [
33
+ "lost_at",
34
+ "stopped_at",
35
+ "would_take_next_step",
36
+ "next_step"
37
+ ],
38
+ "properties": {
39
+ "lost_at": {
40
+ "type": "array",
41
+ "description": "every place the reader got lost; empty when nowhere",
42
+ "items": {
43
+ "type": "object",
44
+ "required": [
45
+ "evidence",
46
+ "why"
47
+ ],
48
+ "properties": {
49
+ "evidence": {
50
+ "type": "string",
51
+ "description": "the passage where the reader got lost, copied verbatim from the draft, at least three words"
52
+ },
53
+ "why": {
54
+ "type": "string"
55
+ }
56
+ }
57
+ }
58
+ },
59
+ "stopped_at": {
60
+ "anyOf": [
61
+ {
62
+ "type": "null"
63
+ },
64
+ {
65
+ "type": "object",
66
+ "required": [
67
+ "evidence",
68
+ "why"
69
+ ],
70
+ "properties": {
71
+ "evidence": {
72
+ "type": "string",
73
+ "description": "the passage where the reader stopped reading, copied verbatim from the draft, at least three words"
74
+ },
75
+ "why": {
76
+ "type": "string"
77
+ }
78
+ }
79
+ }
80
+ ],
81
+ "description": "null when the reader read to the end"
82
+ },
83
+ "would_take_next_step": {
84
+ "type": "boolean",
85
+ "description": "whether the reader would take next_step now"
86
+ },
87
+ "next_step": {
88
+ "type": "string",
89
+ "description": "what the reader would do next, in their own words"
90
+ }
91
+ }
92
+ }
93
+ }
@@ -0,0 +1,84 @@
1
+ # Hand your first one-on-one to the person you manage
2
+
3
+ ## Who sets the agenda
4
+
5
+ Your first one-on-one with a new report is the only meeting on your calendar where they should
6
+ set the agenda. Everything else you run. This one you hand over.
7
+
8
+ If you walk in with a list, you have told your report what the meeting is for, and it is for
9
+ you. They will answer your list politely and leave. You will know nothing you did not know when
10
+ you sat down, and so will they.
11
+
12
+ My team ran a [survey](materials/team-survey.md) this spring. 29 of 41 people said their most useful one-on-one in the last
13
+ quarter was one where they brought the first topic. The meeting that worked for them was the one
14
+ they started.
15
+
16
+ So give them the start. The simplest way to do it is a running agenda: one shared document per
17
+ person, kept for as long as you manage them. Your report adds items before each meeting, and you
18
+ add yours last, at the bottom. That is how an engineering manager I interviewed, eight years into
19
+ the job, runs hers. Her rule is short: the report owns the agenda.
20
+
21
+ ## My first one-on-one
22
+
23
+ My first one-on-one as a manager was a disaster, and the reason was simple: I ran it. I had a
24
+ list, and I went down the list. Project status, blockers, the thing from Tuesday. Thirty minutes
25
+ later my report said thanks and left, and I had learned nothing I could not have read in the
26
+ tracker. Most new managers make the same mistake.
27
+
28
+ What I ran was a status meeting, which is a meeting spent reading out loud what the tracker
29
+ already says. Your report wrote those updates. Asking them to recite the updates to you teaches
30
+ you nothing new, and it spends the one half hour a week that belongs to them.
31
+
32
+ The survey show the cost from their side. 11 of 41 said at least one of their one-on-ones in the
33
+ last quarter was mostly project status. Read the tracker before you walk in, and leave status
34
+ there.
35
+
36
+ My second manager used to walk our one-on-ones outside, and I liked it. A walk takes the table
37
+ out of the room.
38
+
39
+ ## The three questions
40
+
41
+ Here is what I ask now, in this order, and then I let the report take over:
42
+
43
+ 1. What is taking more of your energy than it should?
44
+ 2. What do you want to be doing more of in six months?
45
+ 3. What should I stop doing, or start doing, that would make your week easier?
46
+
47
+ Three is enough to hand the meeting over. The first asks about this week. The second asks about
48
+ the next six months. The third asks about you, and it is the one your report will not raise
49
+ without being asked. A fourth question starts to look like your list again, and the list is what
50
+ you came to give up.
51
+
52
+ It can be helpful to consider asking the questions in the same words each time. This may help
53
+ your report become familiar with them, and over time they might start to prepare their answers.
54
+
55
+ The second question is the one my own team asked for. The most common free-text request in the
56
+ survey, in 9 responses, was to be asked what they want to work on next.
57
+
58
+ After the third question, stop talking.
59
+
60
+ ## What to do with the answers
61
+
62
+ Wait after each question, longer than you want to. Dana, the engineering manager I interviewed,
63
+ puts it in three short sentences: "Wait. Count to five. The real answer is the second one." The first
64
+ answer your report gives is the tidy one, the version they could give anyone. The second is what
65
+ they came in with, and you only hear it if you let the silence run.
66
+
67
+ Write down what they say, in their words, at the top of the running agenda. That list is where
68
+ your next one-on-one starts, so the meeting stays theirs the week after too.
69
+
70
+ You might want to avoid trying to fix everything in the room. Pick one thing you can act on this week, say what you
71
+ will do, and do it before you meet again. The rest stays on the running agenda until it is done
72
+ or your report takes it off.
73
+
74
+ And keep your own urgent items out of it. She told me: "If I have something urgent, it is not a
75
+ one-on-one topic. I send it the day it happens." Your report should never have to wait a week to
76
+ hear something you needed them to know on Monday.
77
+
78
+ ## Before the meeting
79
+
80
+ Open the invite and delete your list from it. Ask your report to add the first item to the
81
+ running agenda instead.
82
+
83
+ So write the three questions on a card. Ask the first one. Then wait, longer than feels polite,
84
+ because the first answer is the one they rehearsed and the second one is the one you came for.
@@ -0,0 +1,106 @@
1
+ {
2
+ "hyperspec_learn": "0.1",
3
+ "spec": "essay.hyperspec.md",
4
+ "spec_sha256": "e03dfac6b445ae779000f7fc109a9d713df2e5cf8967faf8e808fe87d63e40e9",
5
+ "first": "essay/learn/first-draft.md",
6
+ "first_sha256": "08f039cd278093c81338f8880c4533ada741ecc33b0c6610ffbd98b8d31c0c62",
7
+ "approved": "essay/draft.md",
8
+ "approved_sha256": "aa4a1d99604f7b2b398b67305b368abbb72651356c38bfffad1452db6be62f65",
9
+ "blocks": [
10
+ "materials",
11
+ "dna",
12
+ "persona",
13
+ "audience",
14
+ "goal",
15
+ "form",
16
+ "spine",
17
+ "sources",
18
+ "none"
19
+ ],
20
+ "instructions": "Each hunk is one edit a person made between the first draft a factory produced (first) and the draft they approved (approved): deleted (only in first), inserted (only in approved) or replaced (first became approved). For every hunk, name the one block of the spec (read it at the spec path) that, had it said more or said it better, would have had the factory write the approved text in the first place: materials (the source material the text drew on), dna (the writer's voice: goldens and style rules), persona (who is speaking: stance, what they may assert, what they will not say), audience (the reader: what they know, the terms they use), goal (the change the draft must produce and its conditions), form (length and shape), spine (the claims and their order), sources (the claims ledger), characters (fiction: a character's speech or knowledge), or none when no block of the spec could have prevented it. A hunk never crosses a paragraph or a heading; its sentences field counts the sentences it touched. Name only a block listed in blocks. Answer only in the verdict shape given in verdict_schema: one entry per hunk id, each exactly once, with a why saying what the block should have said, or why no block could have.",
21
+ "hunks": [
22
+ {
23
+ "id": "E1",
24
+ "kind": "deleted",
25
+ "first": "Most new managers make the same mistake.",
26
+ "approved": null,
27
+ "sentences": 1
28
+ },
29
+ {
30
+ "id": "E2",
31
+ "kind": "replaced",
32
+ "first": "The survey show the cost from their side.",
33
+ "approved": "The survey shows the cost from their side.",
34
+ "sentences": 1
35
+ },
36
+ {
37
+ "id": "E3",
38
+ "kind": "deleted",
39
+ "first": "My second manager used to walk our one-on-ones outside, and I liked it. A walk takes the table\nout of the room.",
40
+ "approved": null,
41
+ "sentences": 2
42
+ },
43
+ {
44
+ "id": "E4",
45
+ "kind": "replaced",
46
+ "first": "It can be helpful to consider asking the questions in the same words each time. This may help\nyour report become familiar with them, and over time they might start to prepare their answers.",
47
+ "approved": "Ask them in the same words every time. Your report will learn them, and after a few weeks they\nwill walk in with answers already half formed. That is the point of fixing the words: the meeting\nstarts on their topic before you have said anything at all.",
48
+ "sentences": 3
49
+ },
50
+ {
51
+ "id": "E5",
52
+ "kind": "replaced",
53
+ "first": "You might want to avoid trying to fix everything in the room.",
54
+ "approved": "Do not try to fix everything in the room.",
55
+ "sentences": 1
56
+ }
57
+ ],
58
+ "verdict_schema": {
59
+ "type": "object",
60
+ "required": [
61
+ "edits"
62
+ ],
63
+ "properties": {
64
+ "edits": {
65
+ "type": "array",
66
+ "description": "one entry per hunk id, each exactly once",
67
+ "items": {
68
+ "type": "object",
69
+ "required": [
70
+ "id",
71
+ "block",
72
+ "why"
73
+ ],
74
+ "properties": {
75
+ "id": {
76
+ "enum": [
77
+ "E1",
78
+ "E2",
79
+ "E3",
80
+ "E4",
81
+ "E5"
82
+ ]
83
+ },
84
+ "block": {
85
+ "enum": [
86
+ "materials",
87
+ "dna",
88
+ "persona",
89
+ "audience",
90
+ "goal",
91
+ "form",
92
+ "spine",
93
+ "sources",
94
+ "none"
95
+ ]
96
+ },
97
+ "why": {
98
+ "type": "string",
99
+ "description": "what the block should have said to prevent this edit, or why no block could have"
100
+ }
101
+ }
102
+ }
103
+ }
104
+ }
105
+ }
106
+ }
@@ -0,0 +1,43 @@
1
+ {
2
+ "sample": "A sample judgment for the worked example, filled in by hand to show what a verdict looks like and what judge record does with it. It is one reading of the packet, not a model run, and another judge may answer differently. hyperspec ignores this field.",
3
+ "conditions": [
4
+ {
5
+ "id": "r1",
6
+ "pass": true,
7
+ "evidence": "Your first one-on-one with a new report is the only meeting on your calendar where they should set the agenda.",
8
+ "note": "the first sentence says the report sets the agenda"
9
+ },
10
+ {
11
+ "id": "r2",
12
+ "pass": true,
13
+ "evidence": "What should I stop doing, or start doing, that would make your week easier?",
14
+ "note": "all three numbered questions read word for word as the voice memo has them"
15
+ },
16
+ {
17
+ "id": "r3",
18
+ "pass": true,
19
+ "evidence": "11 of 41 said at least one of their one-on-ones in the last quarter was mostly project status.",
20
+ "note": "each survey figure (29 of 41, 11 of 41, 9 responses) has a ledger line pointing at the survey summary, and matches it"
21
+ },
22
+ {
23
+ "id": "r4",
24
+ "pass": true,
25
+ "evidence": "Three is enough to hand the meeting over.",
26
+ "note": "the sections carry c1, c2, c3 and c4 in that order; the paragraphs on writing the answers down and keeping urgent items out serve c1, that the meeting stays the report's"
27
+ },
28
+ {
29
+ "id": "r5",
30
+ "pass": true,
31
+ "evidence": "Wait after each question, longer than you want to.",
32
+ "note": "it says to wait after each question, and why the second answer is the one worth having"
33
+ },
34
+ {
35
+ "id": "r6",
36
+ "pass": true,
37
+ "evidence": "Open the invite and delete your list from it.",
38
+ "note": "about 830 words, inside 700 to 1,100"
39
+ }
40
+ ],
41
+ "would_take_next_step": true,
42
+ "evidence": "So write the three questions on a card."
43
+ }
@@ -0,0 +1,30 @@
1
+ {
2
+ "sample": "A sample judgment for the worked example, filled in by hand to show what a learn verdict looks like and what learn record does with it. It is one reading of the packet, not a model run, and another judge may answer differently. hyperspec ignores this field.",
3
+ "edits": [
4
+ {
5
+ "id": "E1",
6
+ "block": "persona",
7
+ "why": "persona.will_not_say already rules out a claim about what most managers do, and the factory still wrote one, so the rule needs saying more plainly"
8
+ },
9
+ {
10
+ "id": "E2",
11
+ "block": "none",
12
+ "why": "a typo; no block of the spec governs spelling"
13
+ },
14
+ {
15
+ "id": "E3",
16
+ "block": "materials",
17
+ "why": "the paragraph retells the voice memo segment marked aside, which no spine claim cites; the marking held it back and the factory used it anyway"
18
+ },
19
+ {
20
+ "id": "E4",
21
+ "block": "dna",
22
+ "why": "no golden and no style rule shows advice given flat, so the factory hedged it (can be helpful, may, might); a golden that states a habit as an instruction, or a rule against hedged advice, would have prevented it"
23
+ },
24
+ {
25
+ "id": "E5",
26
+ "block": "dna",
27
+ "why": "the same hedge in one sentence: this writer gives instructions, and nothing in the scope says so"
28
+ }
29
+ ]
30
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "sample": "A sample judgment for the worked example, filled in by hand to show what a verdict looks like and what judge record does with it. It is one reading of the packet, not a model run, and another judge may answer differently. hyperspec ignores this field.",
3
+ "pick": "D",
4
+ "confidence": 0.6,
5
+ "reason": "D is the only passage that rests on a survey figure, and it opens by pointing at something outside itself (the survey); A, B and C each turn one claim into an instruction in the second person, with no numbers."
6
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "sample": "A sample judgment for the worked example, filled in by hand to show what a verdict looks like and what judge record does with it. It is one reading of the packet, not a model run, and another judge may answer differently. hyperspec ignores this field.",
3
+ "breaks": []
4
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "sample": "A sample judgment for the worked example, filled in by hand to show what a verdict looks like and what judge record does with it. It is one reading of the packet, not a model run, and another judge may answer differently. hyperspec ignores this field.",
3
+ "lost_at": [],
4
+ "stopped_at": null,
5
+ "would_take_next_step": true,
6
+ "next_step": "take my own list out of the invite, write the three questions on a card, and ask the first one in this week's meeting"
7
+ }