Repository navigation
qa(fixtures): every foreign showcase invoice carries a total, and the 18.0 pre-release restore keeps its activity shard - #33376
Queued
objectstack-fleet[bot] wants to merge 2 commits into
Queued
objectstack-fleet[bot] wants to merge 2 commits into
objectstack-fleet[bot] wants to merge 2 commits into
Conversation
- Every foreign-currency showcase invoice now carries a non-zero line (INV-1007 JPY, INV-1009 and INV-1010 EUR), so the multi-currency item can see a conversion on each of them, not only a rate choice over zero. - The showcase registers a switched-off app (showcase_archive, active: false), the fixture for "an inactive app never appears as a switch target" in the command-palette item. - The 18.0.0-next.5 fixture restore re-dates its rotation shards to the day before the run, as the upgrade harness already does, so the first boot's retention no longer drops the restored sys_activity rows. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FEkQ5kWURVLmS49GR3jwxs
An app package defines at most one app (defineStack single-app validation), so a switched-off second app cannot ride the showcase package; that fixture needs a module package of its own. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FEkQ5kWURVLmS49GR3jwxs
Contributor
📓 Docs Drift CheckNothing in this diff resolved to a documentable surface (no symbol, route or SDK anchor derived from 0 changed package(s)), so this run has no opinion about the docs. What this run could not see
Coarse fallback — 0 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): |
Contributor
Author
|
domain:devx#4 · os-project-manager · session_01FEkQ5ooRyyS95kdyC2dPEX 席位核对 · ACCEPT · head
|
objectstack-fleet
Bot
added this pull request to the merge queue
Nov 14, 2026
Any commits made after this event will not be merged.
This branch has not been deployed
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.
Requested by Leehom · project thread
domain:devx#4 · os-project-manager · session_01FEkQ5kWURVLmS49GR3jwxs
Part of #33351 (section A only; this PR lands the two rows that are fixture additions on main today. Section B and the rows listed below as owed, decided or out of scope stay on the card.)
Clause-②: no
Metadata-protocol: none
维护者速读
examples/app-showcase/src/data/seed/index.ts新增的三行发票明细;packages/qa/dogfood/test/upgrade-harness/cli-prerelease-fixture.ts的restore。pnpm --filter @objectstack/dogfood exec tsx test/upgrade-harness/cli-prerelease-fixture.ts restore --to /tmp/x/n5.db,预期多打印一行re-dated shard sys_activity__r20261027 → sys_activity__r<昨天>。What changes
Two files, fixture space only.
Row 220 ·
records-forms.multi-currency-invoice(examples/app-showcase/src/data/seed/index.ts): one invoice line each under INV-1007 (JPY), INV-1009 (EUR) and INV-1010 (EUR), so all five foreign invoices carry a non-zero total and both rate rows of each currency are exercised. Measured on a stock boot of this head (a throwaway probe, deleted after the run):Before this PR, INV-1007, INV-1009 and INV-1010 had no lines (amount 0), as the QA record measured.
Row 209 ·
cli-18-prerelease-dbrestore (packages/qa/dogfood/test/upgrade-harness/cli-prerelease-fixture.ts):restorenow passes both dumps through the harness's ownfixture-as-of.ts(shardRenamesAsOf+renameShardTables), so the restored telemetry sibling'ssys_activityshard is dated the day before the run and the first boot's rotation retention keeps it. It prints each rename. Measured: at based3f3f4abthe restore writessys_activity__r20261027; at this head it writessys_activity__r20261113(66 rows) on 2026-11-14. Neithermanifest.jsonnor the recipe names the shard, so no census read changes.Per-row dispositions (all 16 section A rows, re-measured on
origin/maind3f3f4ab)packages/services/service-storage/src/attachment-member-grant.tscontributes read + create onsys_attachmentto every member's baseline sincefd6374713(2026-11-13 07:58Z); the QA run was atee9ad834(03:17Z), which does not contain it (merge-base --is-ancestor fd6374713 ee9ad834exit 1;fd6374713in HEAD exit 0; controlee9ad834in HEAD exit 0)18.translation-per-app-settings-platform-only), and no built-in manifest declaresscope: 'user'(packages/services/service-settings/src/manifests/*.ts). A user-scope secret is a platform manifest change, not a fixtureidentity-auth.self-signup-gateknownGaps[0] records the env door (OS_AUTH_AUDIENCE_POSTURE,OS_AUTH_AUDIENCE_ALLOWED_EMAIL_DOMAINS,OS_AUTH_AUDIENCE_SELF_REGISTRATION_PERMISSION_SET) measured live; variants[1]/[2] still say blocked(fixture).identity-auth.jsonis held by batch A PR #33362, so the re-point is owed thereshowcase_task.assigneeisField.textand the showcase stores an EMAIL in it on purpose: the seed writes persona emails (seed/index.ts"#7746" block), the notify flows read it as a recipient,invoice.ownerandprivate_note.ownerfollow the same email convention, andsearch.json/records-forms.jsontell runners to assign by email. The QA run had PATCHed a user id into it by hand (record 6846028996: "the run had set assignee to a user id"). Switching the rule to ids would hide every seeded task from its assigneeshowcase_financeorshowcase_legalalso makes her a required approver of the seeded invoice dual sign-off (showcase_invoice_signoff, unanimous over finance + legal,flows/index.ts), so the stock demo changes beyond the quorum itemmandatoryTopicsis reachable only as aMessagingServicePluginconstructor option (packages/services/service-messaging/src/messaging-service-plugin.ts); a declarative door is product work. Carrier: #33352@objectstack/service-ai;platform-core.keyboard-shortcut-surfaceknownGaps[1] already scores that half blocked(environment). Belongs with section Bactive: false) in the showcase is refused at build, "An 'app' package must define at most one app" (defineStack single-app validation, ADR-0019). The fixture needs a module package composed beside the showcase. Tried ind2faa4b58, withdrawn in the next commitstudio-authoring.flow-edge-type-authoringfixtures.requires[1] ("Start → Decision → two End nodes"); adding a loop is text instudio-authoring.json, held by batch B PR #33360scripts/qa/qa-fixture.mjs walled-bootis held by #33334cli.jsonis routed to batch D (#33330)records-forms.json, held by batch B PR #33360platform-core.activation-ledger-package-key-upgraderoute (a)/(b)). Planting a connector instance and an assignment rule is recipe text inplatform-core.json/cli.json, held by batch D (#33330)records-forms.gantt-interactions: the stock task gantt view declares nolockField/dependenciesField; either the showcase task gains them (plus a dependency field and seed), or the item keeps the documented overlay route and narrowsTotals: 16 rows · 2 landed here (209, 220) · 2 already right (80, 91) · 4 needs_decision questions over 5 rows (92; 135; 90+153; 263) · 3 owed as recipe or item text in held area files (155, 227, plus the 91 and 220 text) · 1 held by #33334 (208) · 3 out of scope as product (89, 151, 218) · 1 environment-bound (152).
No
packages/**outsidepackages/qa, no new door, no area file (every one this card would touch is held by an open batch PR or card: #33362, #33360, #33359, #33327, #33330), no RUNNER.md.Why
The v18.4.0 sweep parked 22 fixture rows (#32908 ledger
/mnt/project-files/pm-orders/devx/32908-ledger.md, routed to #33351 by triage). Section A is the 16 rows that looked like seed or fixture additions. Each was re-measured on main here first; two are fixture additions that hold today and land in this PR, and the rest are answered row by row in the table above. Source records: #32908 comments 6844741021, 6846028996, 6846283471, 6850382730, 6850413952, 6850460138, 6850495479 and 6852480973.Tests
showcase suite + typecheck, dogfood typecheck (head 2b2bca1)
dogfood suites that boot the showcase and read invoice lines
No ablation: the diff adds seed rows and changes a fixture script, and pins no new tested behaviour.
Acceptance notes
assigneestores a user id". On main it stores an email by the showcase's own convention, so the rule was left as it is and the question goes back on the card.Verification
Local subset at head
2b2bca197, derived bynode scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack(73 changed lines at derivation; 33 after the withdrawn app, same path families):dispatch-gates --ran: 54 derived, 53 run with exit 0, 1 NOT MEASURED:pnpm check:dual-build-cjs-loadsexit 3 PREREQUISITE NOT MET (reads every package's dist; studio, client-react, scenarios and others are unbuilt here). The diff changes no published package's build output; CI's Build Core runs it.check-plugin-teardown-shape.mjs --self-testfirst answered exit 3 on the shallow clone (pinned control621a4876unreachable); aftergit fetch --depth=1of that commit it answered exit 0, 48 cases.pnpm exec eslint --no-inline-configon both touched files: exit 0.@objectstack/example-showcaseand@objectstack/dogfoodare both"private": true, so nothing publishes (skip-changeset).Full record:
/mnt/project-files/pm-orders/devx/33351-gates-ran.txt.Human Minimum
packages/specholds no runtime logic. (not touched)pnpm lintpasses. (eslint on both touched files: exit 0)main, one pull request.skip-changeset)packages/spectouched: its generated artifacts are regenerated and committed. (not touched)content/docs/references/,packages/*/CHANGELOG.mdorcontent/docs/releases/.Generated by Claude Code