test(dogfood): ADR-0061 search-conformance ledger + HTTP proof (flip to Accepted); ADR-0028 → Deferred#3065
Merged
Merged
Conversation
…DR-0061 search-conformance ledger + HTTP dogfood proof - 0028: formally Deferred — literal-prefix model works, no present pain; re-open trigger recorded (real multi-package naming pain). - 0061: close its own acceptance bar — search-conformance ledger (ADR-0060 checkLedger, proof-required) + showcase-search dogfood proof over the real HTTP API: multi-field 'retail'->industry match (Northwind), select label mapping, $searchFields narrowing, terms-AND semantics.
… evidence; flip ADR-0061 to Accepted - showcase-search proof: use signIn token + apiAs (stack.api is unauthed); prove the industry hit positively via searchFields:['industry'] instead of assuming no account name contains 'retail' (the seed has 'acme retail' — now used as the cross-field OR control). - ADR-0061 -> Accepted (Tier 1): its own conformance bar is now met (ledger + HTTP dogfood proof, 6 tests green).
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Contributor
📓 Docs Drift CheckThis PR changes 1 package(s): 2 hand-written doc(s) reference the affected code and may need an implementation-accuracy re-verification:
|
os-zhuang
marked this pull request as ready for review
July 16, 2026 14:56
os-zhuang
pushed a commit
that referenced
this pull request
Jul 16, 2026
…aned search-conformance files - build-probes.test.ts publish suite: spy promoteDraftForPublish + runPublishSideEffects (the batch no longer calls publishMetaItem per item, ADR-0067 D2). objectql suite back to 904/904. - The #3037 packages/dogfood -> packages/qa/dogfood restructure merged concurrently with #3065 and did not carry its three just-added files; they were orphaned at the old path outside every workspace (silently not running in CI). git mv them to packages/qa/dogfood/test — all 5 dogfood suites green at the new home (21 tests).
os-zhuang
added a commit
that referenced
this pull request
Jul 16, 2026
…mit cannot half-land (ADR-0067 D2, #3066) (#3074) * feat(metadata-protocol/objectql): turn-atomic package publish (ADR-0067 D2, #3066) Phase 1: every draft promotion + the sys_metadata_commit record run inside ONE engine.transaction() — a mid-batch failure rolls back everything (publishedCount 0; causal item carries its real error, the rest report batch_aborted). publishMetaItem is split into promoteDraftForPublish (guards + promote, metadata-only) and runPublishSideEffects so the batch can transact promotions while deferring side effects. Phase 2 (post-commit): registry refresh, DDL, seed batch apply, materializers, ADR-0094 projections, events — best-effort, surfaced via materializeApplied.failures instead of faking an unpublish (metadata is live; boot reconciliation heals side-effect drift). objectql: engine.transaction() now JOINS an already-open ambient transaction instead of opening a nested driver transaction — a nested begin deadlocks single-connection pools (SQLite knex) and escapes the outer rollback. Locked by two new engine-ambient-transaction tests. BREAKING (behavioral): consumers relying on partial batch publishes now get all-or-nothing. Engines without transaction() keep the previous sequential behavior (same fallback stance as the repo's withTxn). Tests: publish contract suite rewritten to the two-phase seams (+4 new cases incl. rollback/commit tracking and side-effect-failure surfacing); commit-history suite updated; 29 green across the three suites. * fix(tests): migrate build-probes spy to the phase-1 seam; rescue orphaned search-conformance files - build-probes.test.ts publish suite: spy promoteDraftForPublish + runPublishSideEffects (the batch no longer calls publishMetaItem per item, ADR-0067 D2). objectql suite back to 904/904. - The #3037 packages/dogfood -> packages/qa/dogfood restructure merged concurrently with #3065 and did not carry its three just-added files; they were orphaned at the old path outside every workspace (silently not running in CI). git mv them to packages/qa/dogfood/test — all 5 dogfood suites green at the new home (21 tests). * docs(adr-0067): flip to Accepted — Decision-2 turn-atomicity lands with this PR (#3066) --------- Co-authored-by: Claude <noreply@anthropic.com>
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.
Summary
Executes two items from the follow-up plan approved after the round-2 ADR audit:
1. ADR-0061 — close its own acceptance bar, flip to Accepted (Tier 1)
The ADR's §Conformance says
$searchis "landed iff a driver executes it AND a dogfood proof asserts a multi-field match over the real HTTP API", plus asearch-conformanceledger entry. The executor shipped long ago; the verification artifacts never did. Added:search-conformance.ledger.ts— ADR-0060ConformanceRowledger: 4 enforced rows ($searchexecutor,object.searchableFields+ auto-default,$searchFieldsnarrowing, select label→value mapping), each naming its enforcement site and the shared proof. Tier 2 (FTS) deliberately absent — a surface that doesn't exist in the spec can't be "declared but unenforced" (ADR-0049).search-conformance.test.ts—checkLedgerwithproofRequiredForEnforced: true, so a renamed/deleted proof file fails CI (closing the declared-but-unenforced loop).showcase-search.dogfood.test.ts— the HTTP proof over the booted showcase stack, using the ADR's verbatim example: searching"retail"returns Northwind (matched viaindustry, proven positively withsearchFields:['industry']); the seed's literally-named acme retail account serves as the cross-field OR control; plus select label mapping ("Retail"),$searchFieldsnarrowing (name-only excludes Northwind), and terms-AND semantics. 4 tests + 2 ledger tests, all green locally.2. ADR-0028 — Proposed → Deferred
The round-2 audit found the target naming model entirely unbuilt (a platform-wide migration), while the literal-prefix current-state contract is enforced and collision-proof. Leaving it
Proposedimplies planned work; it isn't. Now Deferred with an explicit re-open trigger (real multi-package ecosystem naming pain).Test plan
pnpm vitest run search-conformance showcase-searchinpackages/dogfood— 6/6 green (boots the real showcase kernel, seeds, signs in, queries over the injected Hono HTTP surface viaapiAs).🤖 Generated with Claude Code
Generated by Claude Code