Repository navigation
Say what a lead can see, at the moment we ask someone to supply data about themselves - #170
Conversation
…about themselves The `ask-me` promise said "your lead sees what the team understands, never who replied". Both halves were false. X was the team's AGGREGATE, and it is not the upper bound any more: a lead sees what each NAMED person understands, as a split. Y was "who replied", which is inferable — credit for a demonstrated answer exists only where that person's graded row does, so a non-zero figure beside a login says they replied. The server statement was corrected already; the CLI's three copies of it were not. This aligns them, quoting the server rather than paraphrasing it: "Your lead sees what each person understands, never how much anyone took part. 'Did not answer' and 'was not asked' are the same thing here, because neither one was recorded." That version is checkable. Participation volume genuinely is not measured anywhere, and the collapse of "did not answer" into "was not asked" is what makes the not-an-exam claim falsifiable rather than reassuring. The README is the sharpest case: it says the statement "comes from the server that enforces it, so it cannot drift from the behaviour it describes the way a README can" — and then its own one-line outline had drifted. So the three copies are now pinned against each other by `promiseWording.test.ts`, which asserts the claim as a SHAPE (so punctuation may differ), bans both retired wordings by name, and carries a negative control proving the pattern rejects the old sentence and accepts the new one. Without that control, a regex matching nothing would pass every assertion in the file. Mutation-tested, 5 mutants, all killed: README reverted · ask-me.md reverted · fixture reverted · README drops the sentence entirely · the falsifiable half dropped from the fixture. A false privacy promise is worst exactly here — at a consent moment, in the text someone reads while being asked to supply data about themselves — and it is the easiest kind for a reader to discover. Version 0.19.0 → 0.19.1 via the lockstep script; test floor raised 723 → 729.
| 'Nothing counts how often you are asked or how often you answer.', | ||
| 'Your lead sees what the team understands, never who replied.', | ||
| // The third point is quoted from the server, which is the only place this statement | ||
| // is authoritative. It used to read "sees what the team understands, never who |
There was a problem hiding this comment.
REVIEWER: [low] The comment says the server "is the only place this statement is authoritative", and nothing here checks the copy against it. promiseWording.test.ts pins the three copies to each other — so all three can be consistently stale, which is a smaller version of the failure this PR fixes (the README asserted the server was authoritative while its own outline had drifted).
I verified the alignment by hand for this change: the fixture string and the worker's are byte-identical (both 171 characters, same quotes, same trailing sentence). But that check lives in my terminal, not in the repo, and this repo cannot import from the private one.
Suggested improvement: say the limitation out loud in the file header — something like "this pins the three copies to each other; it cannot see the server, so a server reword lands here as a manual update" — so the next reader knows what the green run does and does not prove. The alternative (fetching the live --promise output in CI) makes the suite depend on a network call and on someone being signed in, which is worse.
|
REVIEWER: Review summary Summary: Aligns the three CLI copies of the The wording change is right and the reason it matters is stated correctly: this text is read at a consent moment, which is where a false privacy promise does the most damage and is easiest to discover. The new sentence is also the only version of it that is checkable — participation volume genuinely is not measured, and collapsing "did not answer" into "was not asked" is what makes the not-an-exam claim falsifiable. Verification I ran independently:
Findings:
Overall risk level: low — documentation and one fixture; no runtime behaviour changes, and the runtime string comes from the server either way. Recommendation: Approve. Fold the [low] into the file header before merge if it is cheap; it changes no behaviour. |
REVIEWER [low] — the fixture comment calls the server "the only place this statement is authoritative", and nothing in this repo checks the copy against it. The test pins the three copies TO EACH OTHER, so all three can be consistently stale — a smaller version of the failure this change fixes, where the README asserted the server was authoritative while its own outline had drifted. The alignment was verified by hand for this change (the fixture string and the server's are byte-identical, 171 characters, same quoting), but that check lives in a terminal and this repo cannot import from the private one. So the limitation is now stated in the file header, along with what it would cost to close it: fetching the live --promise output in CI means a network call and a signed-in session on every run, which is worse than a documented manual step.

The claim that was false
ask-me's promise said:Both halves are false.
The server statement — the authoritative one — was corrected already. The CLI's three copies of it were not. This aligns them by quoting the server rather than paraphrasing it:
That version is checkable. Participation volume genuinely is not measured anywhere, and the collapse of "did not answer" into "was not asked" is what makes the not-an-exam claim falsifiable rather than merely reassuring.
Why a test, for three sentences
The README is the sharpest case. It says the statement
…and then its own one-line outline had drifted, along with the slash-command description an engineer reads at the moment of being asked to supply data about themselves.
So the three copies are pinned against each other.
promiseWording.test.tsasserts the claim as a shape (punctuation may differ), bans both retired wordings by name, and carries a negative control proving the pattern rejects the old sentence and accepts the new one — without that control, a regex matching nothing would pass every assertion in the file.Mutation evidence — 5 mutants, all killed
README.md makes the same claim as the fixturecommands/ask-me.mdrevertscommands/ask-me.md makes the same claim as the fixturethe fixture quotes the server statement…README.md makes the same claim as the fixturethe fixture quotes the server statement…A false privacy promise is worst exactly here — at a consent moment — and it is the easiest kind for a reader to discover.
Release
0.19.0 → 0.19.1through the lockstep script (four version files + the committed bundle, which rebuilt byte-identical). Test floor raised723 → 729.clisuite: 729 passing, 0 failing; floor checkOK — "backthread" reported 729 passing test(s), floor 729@backthread/extractor: 2175 passing ·@backthread/ci: 363 passingcheck-no-internal-refs.mjs:OK — no internal references in anything we distribute(415 files, 4 publishable workspaces)