Repository navigation
Commit a21fd6c
docs(react-pages): re-take the react-prop-missing-required transcript from a real os validate run (pages[28]) (#24354)
Fixes #24346
Clause-②: no
Docs only. I re-took the `react-prop-missing-required` transcript in
`content/docs/ui/react-pages.mdx` (under "How you check your work") from
a real `os validate` run on the showcase stack. Its `rule:` line now
reads `at pages[28].source`, which is what the run prints and what the
`react-block-needs-record-context` transcript on the same page already
says (#24313 re-took that one). The verdict line and the `fix:` line
were already byte-identical to the run, so the diff is one line: `+1 /
-1`. The fence, its language-less info string and the prose around it
are unchanged, and the block is still 4 lines.
Claim: `6251270238`. It is the newest `Claim:` on the card and it names
this branch. I checked that before any edit.
## How the transcript was taken
I took it from a real run. I did not edit the one token by hand.
All readings are in `objectstack-ai/objectstack`, base `33f700b87`
(`BASE`).
1. **Build.** `turbo run build
--filter='@objectstack/example-showcase^...' --concurrency=2` under the
verify lock: 63 tasks, 0 cached, `VERDICT command-exit 0`.
2. **Control run, page unmodified.** I ran `node
../../packages/cli/bin/run.js validate` from `examples/app-showcase`. It
exited 0 with `Running author-time rules (49)`, `Validation passed`, and
64 warnings. The output has no `react-prop-missing-required` line.
3. **Throwaway plant, never committed.** In
`examples/app-showcase/src/ui/pages/renewals-pipeline.page.ts`, I
removed `objectName="showcase_invoice" ` from the page's one ObjectChart
tag. I used `scripts/ablation-replace.mjs` in wrap mode, under the
verify lock.
- Anchor: a less-than sign followed by `ObjectChart
objectName="showcase_invoice" type="bar"`. It hit exactly once (x1 ->
x0).
- Replacement: a less-than sign followed by `ObjectChart type="bar"` (x0
-> x1).
- Blob `fd28f319b192` -> `93f6f0cc05b4`.
- The wrapped command was the same `validate` invocation, with its
output redirected to a log. It **exited 1**.
4. **Restore, proven on disk.** The blob after restore is
`fd28f319b192`, the same as `HEAD`'s. `git diff HEAD` is 0 bytes and
`git status --porcelain` has 0 lines. The script also had a shell `trap`
that restored with `git checkout HEAD -- ABSOLUTE_PATH` on EXIT, INT and
TERM.
Raw output of the planted run, log lines 12 to 15 (the whole issue
block):
```text
✗ Author-time rules failed (1 issue)
• page "showcase_renewals_pipeline" › [ObjectChart]: [ObjectChart] is missing the required prop "objectName".
fix: Pass objectName={…}: The object this block binds to (server-connected).
rule: react-prop-missing-required at pages[28].source
```
In this block the tag name ObjectChart is written between **square**
brackets, because GitHub strips tag-shaped fragments from bodies. The
run log and the committed page both use angle brackets. The proof is
over the real bytes:
- sha256 of log lines 12 to 15: `a7cbf59031ba7d17…`.
- sha256 of page lines 403 to 406 at this head: the same value.
- The same four page lines at `BASE` hash to `16f09ec516f19176…`. `diff`
between the old block and the run shows exactly one changed line, the
`rule:` line (`pages[27]` -> `pages[28]`).
I copied the four lines into the fence with a script. It checks each
line's prefix in both the run and the page, and it checks that the fence
lines bracket the block. It then splices in the run's bytes.
Cross-check against the config: `pages:` in
`examples/app-showcase/objectstack.config.ts` lists 29 entries, and
`RenewalsPipelinePage` is the last one, which is index 28.
## The dispatch's hypotheses, measured
- **H1** (page counts at `33f700b87`): `grep -c
'react-prop-missing-required at pages\[27\]'` gives 1, and the control
`grep -c 'react-block-needs-record-context at pages\[28\]'` gives 1.
Both hold. **One reading did not hold:** `grep -c 'page
"showcase_renewals_pipeline"'` gives **3**, not 2, both at `33f700b87`
and at the card's base `51ad8e4fba`. The third hit is the near-miss
warning transcript a few lines below, which names the same page. This
does not change the conclusion.
- **H2** (a real run prints `pages[28]`): **confirmed** by the run
above. The verdict line and the `fix:` line had not drifted. The
`fix:`-line slices that landed after the transcript was written did not
change this rule's lines.
- **H3** (stop condition): not triggered. The run prints `[28]`, so the
stale transcript is this one and not the record-context one.
After the edit, the same file reads: `react-prop-missing-required at
pages[27]` gives 0, `react-prop-missing-required at pages[28]` gives 1,
and `react-block-needs-record-context at pages[28]` gives 1.
## Verification
Head `6ce04dac7`. That is the docs commit `5c9a28737` plus a clean merge
of `origin/main` `dd72a047f`. That merge touches only
`.claude/skills/pm-dispatch/**`. `git diff --quiet 33f700b
origin/main` over this page, `examples/app-showcase`, `packages/lint`,
`packages/cli`, `packages/sdui-parser`, `packages/formula` and
`packages/spec/src` exits 0, so the run above also holds at this head. I
captured every exit code before any pipe.
- **Derived gates.** `node scripts/pm/dispatch-gates.mjs --commands
--repo objectstack-ai/objectstack`, with no paths, at `6ce04dac7`: 40
commands over 1 path, from merge base `dd72a047f`. That is the same list
as the dispatch-time reading. I ran all 40 one by one and all exit 0.
- `pnpm --filter @objectstack/spec run check:skill-examples` first
exited **3** (`PREREQUISITE NOT MET`: `packages/client-react` had no
`.d.ts`), so it measured nothing. I built that package (`turbo run build
--filter=@objectstack/client-react`: 35 tasks, all cache hits, `.d.ts`
present) and re-ran the gate: 262 prose examples type-check, exit 0.
- `node scripts/check-comment-mask-corpus.mjs` was running while I took
a second throwaway reading (see the acceptance notes), so I re-ran it on
the clean tree: 9484 files, 0 disagree, exit 0.
- `--ran`: "40 derived, 40 run, 0 NOT-MEASURED, 0 UNRUN", exit 0.
- `pnpm check:docs-transcript-drift` exits 0. It does not judge this
block, which is a bare fence and quotes no registry-derived number. Its
4 declared values across 417 pages are all `ok`.
- `pnpm check:nul-bytes` exits 0. A `grep -naP` control-byte scan of the
changed file finds nothing (exit 1).
- **Not owed locally:**
- No package build closure, package test or typecheck: the diff touches
no package.
- `test:repo` belongs to CI.
- `check:dev-prereqs` and `check:skill-frame-freshness`: the diff
touches neither a `packages/spec` build input nor the four-axis frame
files.
- The docs app build belongs to CI (`Build Docs`).
- For every family CI runs, this PR's own check-runs are the reading.
## Acceptance notes
- **The near-miss transcript on the same page is an excerpt, not
stale.** It is outside this card's file surface and I did not touch it.
I took one more throwaway reading the same way (the renewals page's
ObjectForm `onSuccess` spelled `onSucces`; restore proven: blob equals
`HEAD`'s, `git diff HEAD` empty). That run exits 0 and prints three
lines. The first is byte-identical to the page's single line. The two
the page leaves out are `fix: Likely a typo of a contract prop. Fix it
or remove it.` and `rule: react-prop-typo at pages[28].source`. So the
excerpt is correct as far as it goes. Not filed: no defect class
applies.
- The H1 count reading above (3, not 2) is a note about the dispatch's
measurement, not about the page.
- Nothing was filed from this PR.
---
_Generated by [Claude
Code](https://claude.ai/code/session_01FM29ZqLTrnPNXxijioZwMp)_
Co-authored-by: Claude <noreply@anthropic.com>1 parent 4634544 commit a21fd6c
1 file changed
Lines changed: 1 addition & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
403 | 403 | | |
404 | 404 | | |
405 | 405 | | |
406 | | - | |
| 406 | + | |
407 | 407 | | |
408 | 408 | | |
409 | 409 | | |
| |||
0 commit comments