You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
objectql: publish a driver conformance kit that out-of-repo plugin drivers run in their own CI, so a contract change here is caught there — epic #27261 P2 #27744
epic:#27261#1 · marchtian · session_017ihL2c5z3q4h8inrn5kwqV
Filing gate: ③ maintainer-directed — 田騏 at 2026-10-29T21:58Z 「现在启动全部 P2」 (epic comment 6509296853, D1 amended), at 2026-10-29T21:59Z 「OData 驱动 只做 v4」 (6509311454), at 2026-10-29T22:01Z 「同意」 (generic P2 parts open source in this repository; vendor-specific drivers such as Salesforce stay out of it).
Ruling-ref: 6486145005 (#27299, Tier B = declarative OData) · 6486136301 (#27298, D7) · 6471382887 (#27261 D1–D6)
Dedupe (open AND closed): "OData datasource driver $metadata import connector credential external datasource" → 5 hits, none this work (#27298 is the ruled decision card).
Reader: the epic PM (#27261) dispatches it in the epic subtree.
type: Feature
维护者速读
做什么: 把插件驱动必须满足的行为(读、筛选下推与兜底、计数、写入拒绝映射、introspectSchema)做成一个可发布的测试套件,仓库外的驱动(如闭源的 Salesforce 驱动)在自己的 CI 里跑。
epic:#27261#1 · marchtian · session_017ihL2c5z3q4h8inrn5kwqV
Claim: PM loop round 9 2026-10-29T22:57Z
Session: session_017ihL2c5z3q4h8inrn5kwqV (epic PM); implementing card thread session_017ihL2g15Dr6sEsgv4sGBkq
Account: marchtian
Branch: claude/project-thread-yyuer7 (the card thread's platform-assigned branch — measured platform exception to claude/issue-<n>-<slug>)
Worktree: objectstack-issue-27744
Domain: domain:server
Seat: epic:#27261#1 (epic PM; no domain:* seat). Maintainer order, 田騏 2026-10-29T22:01Z: 「同意」 (vendor drivers out of this repository, verified by a public conformance kit)
File surface: packages/objectql/src/** (an exported driver conformance kit, or a small test-kit package under packages/ with its workspace wiring), its own tests, .changeset/** (stop on breach, including any packages/spec/src/** edit; explain in the report)
Container & model: M, mode:thread, model: default tier (dispatch-gates --tier: no path-derived mandate), effort: high
Clause-②: yes
Metadata-protocol: none
Responsibility: epic #27261 P2 (22:01Z placement decision); the floor contract it asserts is #27277's
Thread-read: none
Premise: holds — on origin/main no exported kit lets an out-of-repo plugin driver assert the floor contract; the floor's own tests are package-internal.
Serial constraints: #27741 (driver-odata, in flight) is the intended first consumer; do not edit its package. Wire it in a later PR, or say in the report how the two meet.
{
"issue": 27744,
"status": "done",
"branch": "claude/project-thread-yyuer7",
"pr": "https://github.com/objectstack-ai/objectstack/pull/27798",
"session": "session_017ihL2g15Dr6sEsgv4sGBkq",
"premise_still_valid": true,
"summary": "@objectstack/objectql now exports a plugin-driver conformance kit (packages/objectql/src/plugin-driver-conformance.ts): createPluginDriverConformance / runPluginDriverConformance / definePluginDriverConformanceSuite / pluginDriverConformanceFixtures. A caller-supplied setup(fixture) builds the driver over a remote holding the spec table rows; the floor tier (default) asserts the #27277 floor contract against FILTER_LOGIC_CASES, FILTER_TEXT_CASES (evaluated rows), TEMPORAL_CASES (lowered + token forms) and PAGINATION_CASES: the driver's own answer to the floor's query holds every matching row and only stored rows or refuses 400/404/422, the floored answer equals the table, row shape and stored values unchanged, floored count, floored paged walk, caller write probes reach 422 EXTERNAL_WRITE_REFUSED, an unavailable remote reaches 503 ERR_DATASOURCE_UNAVAILABLE, introspectSchema shape when offered. An opt-in direct tier (exact filter, count, findOne, deterministic paging, limit by presence) is the P3 oracle; pushdown is measured per case (exact/superset/refused) because DriverCapabilities has no pushdown claim (premise correction to the card's 'supports-declared'). PR body says Part of #27744: the driver-odata wiring (#27741's package, in flight) and the guide pointer (content/docs, outside the claim's file surface; #27747 can carry it) are left to their carriers.",
"tests": "head 07def8cc (origin/main 968cacfd merged; merge touched nothing in objectql's dependency closure). Under os-verify-lock: pnpm --filter @objectstack/objectql test: Test Files 491 passed (491), Tests 9574 passed (9574), VERDICT command-exit 0. pnpm --filter @objectstack/objectql typecheck: exit 0 (check:test-typecheck OK, 64 pinned signatures held, no new debt). New file plugin-driver-conformance.test.ts: 330 tests (batteries pinned by count vs the spec tables; exact / every-row / refusing / native-Date drivers pass as stated; 11 mutants each fail on the named case ids; the suite form runs the exact driver through both tiers). eslint --no-inline-config over the 3 changed source files: exit 0. Ablation: n/a — no existing tested behaviour changed (pure addition); the mutant battery is the kit's capability-to-fail proof.",
"gates": "dispatch-gates --commands at 07def8cc derived 59; all 59 run locally with exit codes captured before any pipe; --ran: 59 derived, 59 run, 0 NOT-MEASURED, 0 UNRUN (a DERIVED zero). check:dual-build-cjs-loads first exited 3 (no dist), rerun after check:type-check-debt built packages: exit 0. check:objectql-double-limit / check:where-matcher: none new; check:engine-double-contract exit 0. PR check-runs on 07def8cc at report time: 21 listed, 3 skipped, 18 in_progress, 0 failure.",
"dogfood_battery": "n/a — no ! in the PR title and Clause-② is yes without a (narrowing) arm",
"mcp_calls": "6 — github issue_read x3 (#27744 get, get_comments x2), pull_request_read get_check_runs x1, subscribe_pr_activity x1 (platform subscription, not a GitHub write), ToolSearch loads excluded; no MCP write tool",
"api_writes": "2 — relay pr_create (run 40974315901, PR #27798, body 10129 bytes read back identical, assignees none); relay comment on #27744 (this report). git push is not a REST write.",
"open_questions": [
{
"question": "Close #27744 with this PR, or keep it open until driver-odata runs the kit?",
"options": [
"A: PM moves the driver-odata wiring into #27741 (or a follow-up card) and the guide pointer into #27747, then edits this PR body to Fixes #27744",
"B: keep Part of; a small follow-up PR under #27744 wires driver-odata after #27741 lands"
],
"recommendation": "A, because the wiring is one test file inside driver-odata's own package, which #27741 owns, and the guide pointer is one paragraph in the page #27747 is already editing"
}
],
"out_of_scope_findings": [
"carrier: #27741 · driver-odata should call definePluginDriverConformanceSuite with a setup over a fake OData service (card task item 2, noted, not filed)",
"carrier: #27747 · virtual-objects.mdx 'The engine re-applies every query' step 3 should point to the kit (card task item 2, noted, not filed)"
]
}
#27741 landed first (PR #27796, 0a4b0fb223), so under the claim's serial rule this card adds the driver-odata test that runs the conformance kit. The file surface adds packages/drivers/driver-odata/src/**, tests only: one suite through definePluginDriverConformanceSuite over the in-process service in src/__fixtures__/odata-service.ts, with write probes. PR #27798 now closes the card (Fixes, ruling 6511123974); the guide pointer stays with #27747.
PR #27798 merged through the queue as d8de26d673 on 2026-10-30T03:53:19Z (head eb7990be; contract review PASS 6513256862, earlier 6511619545; seat ACCEPT 6514176452). @objectstack/objectql exports a plugin-driver conformance kit (definePluginDriverConformanceSuite and friends) that an out-of-repo driver runs in its own CI, and driver-odata runs it over its in-process service. The PR body says "Part of", so per ruling 6511123974 the seat closes the card here. The guide pointer is on #27786.
Activity
objectstack-fleet commentedon Oct 29, 2026
epic:#27261#1 · marchtian · session_017ihL2c5z3q4h8inrn5kwqV
Claim: PM loop round 9 2026-10-29T22:57Z
Session:
session_017ihL2c5z3q4h8inrn5kwqV(epic PM); implementing card threadsession_017ihL2g15Dr6sEsgv4sGBkqAccount:
marchtianBranch:
claude/project-thread-yyuer7(the card thread's platform-assigned branch — measured platform exception toclaude/issue-<n>-<slug>)Worktree:
objectstack-issue-27744Domain:
domain:serverSeat:
epic:#27261#1(epic PM; nodomain:*seat). Maintainer order, 田騏 2026-10-29T22:01Z: 「同意」 (vendor drivers out of this repository, verified by a public conformance kit)File surface:
packages/objectql/src/**(an exported driver conformance kit, or a small test-kit package underpackages/with its workspace wiring), its own tests,.changeset/**(stop on breach, including anypackages/spec/src/**edit; explain in the report)Container & model:
M,mode:thread,model: default tier (dispatch-gates --tier: no path-derived mandate),effort: highClause-②: yes
Metadata-protocol: none
Responsibility: epic #27261 P2 (22:01Z placement decision); the floor contract it asserts is #27277's
Thread-read: none
Premise: holds — on
origin/mainno exported kit lets an out-of-repo plugin driver assert the floor contract; the floor's own tests are package-internal.Serial constraints: #27741 (driver-odata, in flight) is the intended first consumer; do not edit its package. Wire it in a later PR, or say in the report how the two meet.
objectstack-fleet commentedon Oct 29, 2026
epic:#27261#1 · marchtian · session_017ihL2g15Dr6sEsgv4sGBkq
os-dev-report
{ "issue": 27744, "status": "done", "branch": "claude/project-thread-yyuer7", "pr": "https://github.com/objectstack-ai/objectstack/pull/27798", "session": "session_017ihL2g15Dr6sEsgv4sGBkq", "premise_still_valid": true, "summary": "@objectstack/objectql now exports a plugin-driver conformance kit (packages/objectql/src/plugin-driver-conformance.ts): createPluginDriverConformance / runPluginDriverConformance / definePluginDriverConformanceSuite / pluginDriverConformanceFixtures. A caller-supplied setup(fixture) builds the driver over a remote holding the spec table rows; the floor tier (default) asserts the #27277 floor contract against FILTER_LOGIC_CASES, FILTER_TEXT_CASES (evaluated rows), TEMPORAL_CASES (lowered + token forms) and PAGINATION_CASES: the driver's own answer to the floor's query holds every matching row and only stored rows or refuses 400/404/422, the floored answer equals the table, row shape and stored values unchanged, floored count, floored paged walk, caller write probes reach 422 EXTERNAL_WRITE_REFUSED, an unavailable remote reaches 503 ERR_DATASOURCE_UNAVAILABLE, introspectSchema shape when offered. An opt-in direct tier (exact filter, count, findOne, deterministic paging, limit by presence) is the P3 oracle; pushdown is measured per case (exact/superset/refused) because DriverCapabilities has no pushdown claim (premise correction to the card's 'supports-declared'). PR body says Part of #27744: the driver-odata wiring (#27741's package, in flight) and the guide pointer (content/docs, outside the claim's file surface; #27747 can carry it) are left to their carriers.", "tests": "head 07def8cc (origin/main 968cacfd merged; merge touched nothing in objectql's dependency closure). Under os-verify-lock: pnpm --filter @objectstack/objectql test: Test Files 491 passed (491), Tests 9574 passed (9574), VERDICT command-exit 0. pnpm --filter @objectstack/objectql typecheck: exit 0 (check:test-typecheck OK, 64 pinned signatures held, no new debt). New file plugin-driver-conformance.test.ts: 330 tests (batteries pinned by count vs the spec tables; exact / every-row / refusing / native-Date drivers pass as stated; 11 mutants each fail on the named case ids; the suite form runs the exact driver through both tiers). eslint --no-inline-config over the 3 changed source files: exit 0. Ablation: n/a — no existing tested behaviour changed (pure addition); the mutant battery is the kit's capability-to-fail proof.", "gates": "dispatch-gates --commands at 07def8cc derived 59; all 59 run locally with exit codes captured before any pipe; --ran: 59 derived, 59 run, 0 NOT-MEASURED, 0 UNRUN (a DERIVED zero). check:dual-build-cjs-loads first exited 3 (no dist), rerun after check:type-check-debt built packages: exit 0. check:objectql-double-limit / check:where-matcher: none new; check:engine-double-contract exit 0. PR check-runs on 07def8cc at report time: 21 listed, 3 skipped, 18 in_progress, 0 failure.", "dogfood_battery": "n/a — no ! in the PR title and Clause-② is yes without a (narrowing) arm", "mcp_calls": "6 — github issue_read x3 (#27744 get, get_comments x2), pull_request_read get_check_runs x1, subscribe_pr_activity x1 (platform subscription, not a GitHub write), ToolSearch loads excluded; no MCP write tool", "api_writes": "2 — relay pr_create (run 40974315901, PR #27798, body 10129 bytes read back identical, assignees none); relay comment on #27744 (this report). git push is not a REST write.", "open_questions": [ { "question": "Close #27744 with this PR, or keep it open until driver-odata runs the kit?", "options": [ "A: PM moves the driver-odata wiring into #27741 (or a follow-up card) and the guide pointer into #27747, then edits this PR body to Fixes #27744", "B: keep Part of; a small follow-up PR under #27744 wires driver-odata after #27741 lands" ], "recommendation": "A, because the wiring is one test file inside driver-odata's own package, which #27741 owns, and the guide pointer is one paragraph in the page #27747 is already editing" } ], "out_of_scope_findings": [ "carrier: #27741 · driver-odata should call definePluginDriverConformanceSuite with a setup over a fake OData service (card task item 2, noted, not filed)", "carrier: #27747 · virtual-objects.mdx 'The engine re-applies every query' step 3 should point to the kit (card task item 2, noted, not filed)" ] }objectstack-fleet commentedon Oct 30, 2026
epic:#27261#1 · marchtian · session_017ihL2c5z3q4h8inrn5kwqV
Claim amendment · 2026-10-30T01:35Z
#27741 landed first (PR #27796,
0a4b0fb223), so under the claim's serial rule this card adds thedriver-odatatest that runs the conformance kit. The file surface addspackages/drivers/driver-odata/src/**, tests only: one suite throughdefinePluginDriverConformanceSuiteover the in-process service insrc/__fixtures__/odata-service.ts, with write probes. PR #27798 now closes the card (Fixes, ruling 6511123974); the guide pointer stays with #27747.objectstack-fleet commentedon Oct 30, 2026
epic:#27261#1 · marchtian · session_017ihL2c5z3q4h8inrn5kwqV
Landed · 2026-10-30T04:30Z
PR #27798 merged through the queue as
d8de26d673on 2026-10-30T03:53:19Z (headeb7990be; contract review PASS 6513256862, earlier 6511619545; seat ACCEPT 6514176452).@objectstack/objectqlexports a plugin-driver conformance kit (definePluginDriverConformanceSuiteand friends) that an out-of-repo driver runs in its own CI, anddriver-odataruns it over its in-process service. The PR body says "Part of", so per ruling 6511123974 the seat closes the card here. The guide pointer is on #27786.