Repository navigation
docs(qa): lift action-location-matrix's no-surface knownGap now that the showcase hosts record_header / record_more / record_related - #22040
Merged
objectstack-fleet[bot] merged 2 commits intoOct 6, 2026
Conversation
…the showcase hosts the three record locations records-forms.action-location-matrix revision 8 -> 9. The showcase change that hosts record_header / record_more / record_related for showcase_task landed as 60ccda5, so knownGaps[1] is rewritten from "no surface" to where each location lives on a stock boot: Task Detail's page:header (record_header inline, record_more's url / api / api under the overflow) and Project Detail's Related tab (the Tasks related list, an authored record:related_list). Step 2, clause 1 and clause 3 drop the blocked(fixture) lines revision 7 added for the gap. knownGaps[0] and every other item are unchanged. Claude-Session: https://claude.ai/code/session_01VF48aw8RPG6wzDnMgp6rtw Co-authored-by: Claude <noreply@anthropic.com>
…n knownGap The header renders three record_header actions inline on a desktop viewport (one on mobile) and folds the rest into the overflow, so a runner on a narrow viewport does not score a folded record_header action as an extra record_more placement. Read from the page:header renderer at the objectui pin a58626c88dc8. Claude-Session: https://claude.ai/code/session_01VF48aw8RPG6wzDnMgp6rtw Co-authored-by: Claude <noreply@anthropic.com>
objectstack-fleet
Bot
deleted the
claude/issue-22039-lift-action-location-knowngap
branch
October 6, 2026 22:27
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #22039
Clause-②: no
The showcase change carded as #22030 landed as PR #22036 (
60ccda5a24). It hostsrecord_header,record_moreandrecord_relatedforshowcase_taskon stock showcase pages. This PR lifts the row-7 fixture knownGap onrecords-forms.action-location-matrixthat parked those three locations, and A3's url / api dispatch legs, on that card. It is a checklist-only diff: one item indocs/qa/platform-checklist/areas/records-forms.json, no other item, no code.What changed (item
records-forms.action-location-matrix, revision 8 to 9)revisionfixtures.knownGaps[1]60ccda5a24and this card, then says where each location now lives on a stock boot (below)steps[1]acceptance[0].clauseacceptance[0].verifyacceptance[2].clausehistory#22039, citing #22030 / PR #22036fixtures.knownGaps[0](the objectui-pinned automation) is byte-identical. No other key and no other item changed. A structural diff of all 43 items against60ccda5a24shows exactly one changed item.The rewritten knownGap: where each location lives
record_header/record_more: Task Detail (showcase_task_detail, the record page the console opens for any task). Its first node is apage:header. The header renders the action ids it lists, each placed by its ownlocations, and the host's Edit / Share / Delete come after them.showcase_mark_done(script, shown only while the task is not done),showcase_log_time(form) andshowcase_archive_task(script, disabled until done).showcase_open_docs(url),showcase_recalc_estimate(api) andshowcase_recalc_selection(api).record_headeraction past it folds into ⋯. Read from thepage:headerrenderer at the objectui pina58626c88dc8. The knownGap names this so that a runner on a narrow viewport does not score a folded action as an extrarecord_moreplacement.record_related: Project Detail (showcase_project_detail), on the Related tab (?tab=related). The tab holds the Tasks related list, arecord:related_listforshowcase_taskthrough itsprojectFK. As PR feat(example-showcase): host record_header / record_more / record_related for showcase_task #22036 noted, this is an authored node, not the synthesizer's strip. The page'stabsoverride still replaces that strip, and the tab puts the list back with noactionskey, so its rows carryshowcase_log_timebeside the task'slist_itemactions. The Tasks tab next to it is therecord:line_itemsgrid, which hosts norecord_relatedaction.Scope reading, declared
The dispatch scopes edits to
fixtures.requires,stepsand acceptanceverifylines that still send the runner to a surface that does not host the leg. Two of the lines above are acceptanceclausetexts, notverifylines. Revision 7 added the gap's blocked(fixture) instructions in five places: knownGaps[1], step 2, clause 1, clause 1's verify, and clause 3. The item diff betweenff29410ed2and18c7dfd2e6shows them. Clause 3's last sentence parks the url / api legs by itself, so leaving it would keep A3 parked after the lift. Clause 1's "synthesized" sends a runner to look for a strip that the page'stabsoverride removes. The edit to each clause is the minimum that undoes revision 7's gap text. Nothing else in either clause changed.fixtures.requiresis unchanged: it describes the fleet and does not point the runner at any surface.Verification (head
d99f1f57ee, after the final commit)node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstackon the actual diff derived 13 commands. The list is the same at both commits. Each was run with its exit code recorded before any pipe, and all 13 exited 0.--ran: "13 derived famil(ies) accounted for — 13 run, 0 NOT-MEASURED (a DERIVED zero — all 13 recorded an exit code and none of them is 3)".check:platform-checklist: "OK — 15 areas, 276 items (272 active, 2 planned) …".check:doc-authoring,check:cross-package-test-inputsandcheck:nul-bytesare green.check:doc-formula-expressionsanswered PREREQUISITE NOT MET (exit 3:@objectstack/formulaand@objectstack/lintwere unbuilt). Both were then built underos-verify-lock.sh(VERDICT command-exit 0), and the gate ran green at both commits.scripts/cross-package-test-inputs.mjsnamesdocs/qa/platform-checklist/areas/*.jsonfor plugin-auth anddocs/**for rest, and nothing else.pnpm --filter @objectstack/plugin-auth exec vitest run --maxWorkers=2 src/checklist-refusal-envelope-consistency.test.ts: exit 0, 1 file / 5 tests passed.pnpm --filter @objectstack/rest exec vitest run --maxWorkers=2 src/meta-state-route-doc-spelling.test.ts: exit 0, 1 file / 8 tests passed.eslint --no-inline-config --format jsonon the changed file returns 1 file and 0 errors. The one message is "File ignored because no matching configuration was supplied". No block ineslint.config.mjscovers.jsonunderdocs/, so this diff cannot move any lint verdict. The fullpnpm lintrun is CI's.files[]entry namingdocs/qaor the checklist (0 hits). Positive control: all 69 namedist(69 hits). The path is outside every package directory, so this diff publishes nothing. Henceskip-changeset.Acceptance notes
page:headerrenders only the ids it lists (objectuicontainers.tsx,resolvedHeaderActions). Therecord:quick_actionsbar is also an explicitactionNameslist. So the step-7 probe action, andshowcase_new_task, are absent from the record header, the ⋯ overflow and the quick-actions bar because those lists leave them out. That absence is decided before anylocationspredicate runs. The probe's verdict therefore rests on the list toolbar, the row menu and the related-list rows. The quick-actions half predates this card. The header half is new, because before PR feat(example-showcase): host record_header / record_more / record_related for showcase_task #22036 the header did not exist. Not filed: this is an item-design observation, not a runtime defect, a contract violation or an authoring trap. Carrier: none.fixtures.requires[0]and clause 4 spell mark_done's predicate as'!record.done'. The fixture's actual predicate ishas(record.done) && record.done != true.requires[0]also leaves outshowcase_recalc_estimateandshowcase_archive_task, which the header now carries. Neither points the runner at a wrong surface, so both are outside this card's edit rule and are left as they are. Carrier: none.Labels
skip-changeset: checklist-only diff, measured above.Generated by Claude Code