Skip to content

Commit a21fd6c

Browse files
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

File tree

‎content/docs/ui/react-pages.mdx‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -403,7 +403,7 @@ A **missing required binding** fails the build:
403403
✗ Author-time rules failed (1 issue)
404404
• page "showcase_renewals_pipeline" › <ObjectChart>: <ObjectChart> is missing the required prop "objectName".
405405
fix: Pass objectName={…}: The object this block binds to (server-connected).
406-
rule: react-prop-missing-required at pages[27].source
406+
rule: react-prop-missing-required at pages[28].source
407407
```
408408

409409
A **near-miss prop name** is a warning — validation still passes, because the contract's

0 commit comments

Comments
 (0)