You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Slice E of the v0.2 "Meaning" wave. Shared design context: docs/superpowers/specs/2026-07-04-impact-roadmap-design.md (PR #47).
Recruiters think in roles and stories, not counts. This slice adds a
narrative paragraph describing the shape of the subject's collaboration
(authoring↔reviewing mix and its trajectory) and an interviewer kit — three
probe questions derived from the strongest signals. Everything is
render-layer, derived from already-attested numbers via published,
deterministic rules.
Goal (vertical slice)
Rule functions over the report struct → narrative sentences + interviewer
probes → rendered front-page section + derivation annex, end to end.
No schema change, no fetching.
In scope
Pure, unit-testable rule functions in render (or a small sub-package),
each with a stable rule ID.
Profile-mix rule:r = reviews_given.total / pull_requests.authored; r > 1.5 → review-weighted phrasing; r < 0.67 → authoring-weighted;
otherwise balanced. authored == 0 → the authoring comparison is skipped
(never a division blow-up or filler sentence).
Trajectory rule: split the cadence trend buckets into first/second
half; compute r per half from bucket counts; skip the sentence when either
half has < 10 combined events. Relative shift > +0.30 → "shifted toward
reviewing"; < −0.30 → "shifted toward authoring"; otherwise no sentence.
Interviewer kit: exactly three probes chosen by documented priority:
(1) deep reviews present → how they give review feedback; (2) rework stats
present → how they handle revision cycles; (3) time-to-merge present → how
they scope PRs; (4) cadence trend present → consistency habits;
(5) language mix present → depth in the top language. Take the first
three whose data exists; fewer only when fewer exist. Each phrased as a
question for the interviewer, grounded in the number it cites.
Derivation annex: the technical annex lists every rule that fired
(rule ID + one-line explanation), fulfilling the spec's "how this
narrative was derived" honesty requirement.
Sentence templates enumerated in testdata, keyed by rule ID.
Rule semantics changes require an owner comment on this issue; phrasing
refinement is free as long as goldens and the wordlist tests pass.
No rule may reference data outside the report struct.
Acceptance criteria — TDD
Success (write these tests first; all must pass)
Rule-function unit tests: profile mix at r = 1.51 (review-weighted),
0.66 (authoring-weighted), 1.0 (balanced), authored = 0 (skip);
trajectory at +0.31 (fires), +0.29 (silent), sparse halves (silent).
Golden narratives for fixture permutations: review-weighted,
authoring-weighted, balanced, with/without trajectory, sparse report
(minimal sections) — each renders the expected sentences and nothing
else. No placeholder text ever ("N/A", "unknown", empty braces).
Interviewer kit: full report → exactly 3 probes in priority order;
report missing rework and languages → the next-priority probes fill in;
minimal report → fewer probes, section omitted entirely when zero.
Every numeral rendered in narrative/probes also appears in the report
JSON (extraction test) — the narrative can never invent a number.
Derivation annex lists exactly the rule IDs that fired, matching the
goldens.
Wordlist test over narrative + probes: no grading adjectives
(excellent, strong, weak, slow, fast, top, elite, poor)
and no seniority labels (junior, senior, staff, principal).
Prohibited-strings golden test passes over the new section.
Reports without the narrative's inputs still render (graceful omission,
no errors) — asserted on the sparse golden.
Failure — QA red flags (any one observed → reject the PR)
A sentence not traceable to a listed rule ID, or an annex listing rules
that did not fire.
Invented or derived-but-unattested numbers in copy.
Grading/seniority vocabulary, or judgment phrasing smuggled into
templates.
Placeholder text in any permutation.
Rule semantics differing from this issue without owner sign-off in the
issue thread.
Parallel-work contract
Territory:render/ — new rules file(s), new template partial (new
numbered section file before 30-collaboration, e.g. render/templates/sections/25-narrative.tmpl), testdata goldens.
Depends on:feat: banded context layer — cited typical ranges under every KPI #48 merged first is recommended (front page reads better
with context lines present and goldens then settle once), but there is no
build dependency. Golden-file conflicts with parallel render slices are
expected — merges are serialized; rebase and regenerate.
Definition of done
TDD skill followed; all success criteria green; go test ./... passes;
PR references this issue.
Context
Slice E of the v0.2 "Meaning" wave. Shared design context:
docs/superpowers/specs/2026-07-04-impact-roadmap-design.md(PR #47).Recruiters think in roles and stories, not counts. This slice adds a
narrative paragraph describing the shape of the subject's collaboration
(authoring↔reviewing mix and its trajectory) and an interviewer kit — three
probe questions derived from the strongest signals. Everything is
render-layer, derived from already-attested numbers via published,
deterministic rules.
Goal (vertical slice)
Rule functions over the report struct → narrative sentences + interviewer
probes → rendered front-page section + derivation annex, end to end.
No schema change, no fetching.
In scope
render(or a small sub-package),each with a stable rule ID.
r = reviews_given.total / pull_requests.authored;r > 1.5→ review-weighted phrasing;r < 0.67→ authoring-weighted;otherwise balanced.
authored == 0→ the authoring comparison is skipped(never a division blow-up or filler sentence).
half; compute r per half from bucket counts; skip the sentence when either
half has < 10 combined events. Relative shift > +0.30 → "shifted toward
reviewing"; < −0.30 → "shifted toward authoring"; otherwise no sentence.
(1) deep reviews present → how they give review feedback; (2) rework stats
present → how they handle revision cycles; (3) time-to-merge present → how
they scope PRs; (4) cadence trend present → consistency habits;
(5) language mix present → depth in the top language. Take the first
three whose data exists; fewer only when fewer exist. Each phrased as a
question for the interviewer, grounded in the number it cites.
(rule ID + one-line explanation), fulfilling the spec's "how this
narrative was derived" honesty requirement.
refinement is free as long as goldens and the wordlist tests pass.
Out of scope
seniority labels ("senior", "staff") — the narrative describes shape,
the reader draws conclusions.
Design constraints
copy.
Acceptance criteria — TDD
Success (write these tests first; all must pass)
0.66 (authoring-weighted), 1.0 (balanced), authored = 0 (skip);
trajectory at +0.31 (fires), +0.29 (silent), sparse halves (silent).
authoring-weighted, balanced, with/without trajectory, sparse report
(minimal sections) — each renders the expected sentences and nothing
else. No placeholder text ever ("N/A", "unknown", empty braces).
report missing rework and languages → the next-priority probes fill in;
minimal report → fewer probes, section omitted entirely when zero.
JSON (extraction test) — the narrative can never invent a number.
goldens.
(
excellent,strong,weak,slow,fast,top,elite,poor)and no seniority labels (
junior,senior,staff,principal).no errors) — asserted on the sparse golden.
Failure — QA red flags (any one observed → reject the PR)
that did not fire.
templates.
issue thread.
Parallel-work contract
render/— new rules file(s), new template partial (newnumbered section file before 30-collaboration, e.g.
render/templates/sections/25-narrative.tmpl), testdata goldens.render/render.go(wiring),render/templates/layout.tmpl(include line).with context lines present and goldens then settle once), but there is no
build dependency. Golden-file conflicts with parallel render slices are
expected — merges are serialized; rebase and regenerate.
Definition of done
TDD skill followed; all success criteria green;
go test ./...passes;PR references this issue.