Refresh server smoke evidence - #11
Conversation
Technical reviewA documentation PR whose entire content is claims, so verifying the claims is the review. The pins are exactServer baseline Picking the merge commit of the PR that completed the capability, rather than whatever The stale claim is genuinely goneThe sentence I flagged when reviewing #9, which said the evals were "not evidence that the pending server AnalysisRun and Compilation lifecycle slices are merged," is removed rather than softened. What replaced it enumerates what is still absent instead of gesturing at it:
and
Naming the specific missing capabilities is more useful than a general disclaimer, because a reader can check each one. Finding: one sentence joins a reproducible claim to an unreproducible oneThe central new evidence reads:
Those are two different claims, and only one of them is checkable. The CLI, Rails, and Solid Queue path is backed by a committed script. First Draft's evidence ledger links it directly:
Anyone can run that. Good. The fresh Codex invocation is different. An agent reading this Skill and driving the workflow from a prose request is not what that script exercises, and nothing in this repository records it. There is no The word doing the damage is "including," which reads as though the agent session is part of the scripted exercise. It is the one genuinely new thing here and the one nobody can reproduce. Two ways to fix it, both cheap. Split the sentence and cite Worth raising because this is the same shape as the finding on #235, which led to a committed script and a corrected ledger, and the same shape as the one on firstdraft/cli#8, where "the packed executable against a real local endpoint" turned out to be two separate verifications. The pattern is a conjunction whose parts are each true and whose whole was never demonstrated. None of this makes the PR wrong. The compiler path really is reproducible, the pins really are exact, and the boundary language is otherwise careful. It is one sentence that claims slightly more than the repository can show. |
Lesson: the README that quietly became a lieThis PR does not add a feature. It deletes sentences that stopped being true. A month ago the repository said the server side was pending. Then the server shipped, and nobody edited that sentence, because editing prose is not on anyone's checklist when they merge a feature. So the README sat there confidently telling readers something false. That is documentation rot, and it is worth treating as a bug class rather than an inevitability. Why it is worse than no documentationNobody trusts a blank page. Everybody trusts a confident paragraph. A stale "this is not implemented yet" makes people build workarounds for a problem you solved. A stale "this is production ready" makes people ship on top of something that is not. Both cost more than silence would have. And rot compounds. Once a reader catches one wrong statement, they stop believing the correct ones too, which is how a team ends up with a wiki nobody reads and knowledge that lives only in whoever has been there longest. The trick: anchor claims to things that can be checkedProse drifts because nothing verifies it. The fix is to write claims that are attached to something mechanical. This PR does it with a commit hash: Notice what that buys. "The server supports compilation" is a claim with no expiry and no way to check it. "It is merged at The pin is also chosen well. Other anchors that work the same way:
This repository runs a documentation link check in CI, which is exactly this idea mechanized: it cannot tell whether a sentence is true, but it can tell when the thing a sentence points at has moved. Say what is not true, specificallyThe replacement text here does something worth copying:
Compare with the version most projects write: "this is experimental, some features are not yet supported." The general disclaimer ages into meaninglessness, because it stays technically true forever and stops carrying information the day it is written. The specific list has a natural expiry: when Publish ships, someone deleting that item is doing an obvious edit rather than a judgment call. Enumerate the gaps. It is more work up front and much less work later, and it makes staleness visible rather than invisible. Separate what you ran from what anyone can runThe other habit worth taking from this review. There are two kinds of evidence and they should not share a sentence. Reproducible: a committed script, a CI job, a test. Anybody can check it, and it keeps being checked after you stop paying attention. Anecdotal: you ran it once on your machine and it worked. Real, useful, and it proves something happened one time under conditions nobody recorded. Both belong in a status document. What causes trouble is joining them with "and" so a reader cannot tell which half is which. I flagged one sentence here that does exactly that: a scripted smoke and a manual agent session, presented as one exercise. If you keep them apart, the anecdote is honest evidence. If you blend them, the reproducible half lends credibility the anecdote did not earn. The practical versionYou are not going to keep every document current by willpower. So:
That last one is the whole discipline. This PR is somebody doing exactly that, and it is worth as much as the feature work it corrects. |
The project-scoped server path is no longer pending. Record the controlled local smoke. Keep release, authentication, and capability boundaries explicit.
526a9a2 to
1fba4a8
Compare
|
Addressed the evidence finding in
The Skill pin Verification:
|
Summary
9e29606and CLI36f1292Boundary
The demonstrated compiler path remains limited to one Entity using supported scalar Fields. This does not add Plan
GET or pull, a complete semantic analyzer, Publish, arbitrary application support, deployment, authentication, or
release evidence. The controlled success smoke did not exercise cancellation.
Verification
sh script/check— 14 tests passednode script/check-cli-contract.mjs /Users/sandbox2/code/firstdraft/cli