Skip to content

test(dogfood): ADR-0061 search-conformance ledger + HTTP proof (flip to Accepted); ADR-0028 → Deferred - #3065

Merged
os-zhuang merged 3 commits into
mainfrom
claude/auth-model-design-eval-xxgzcl
Jul 16, 2026
Merged

os-zhuang merged 3 commits into
mainfrom
claude/auth-model-design-eval-xxgzcl

Conversation

@os-zhuang

Copy link
Copy Markdown
Contributor

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 $search is "landed iff a driver executes it AND a dogfood proof asserts a multi-field match over the real HTTP API", plus a search-conformance ledger entry. The executor shipped long ago; the verification artifacts never did. Added:

  • search-conformance.ledger.ts — ADR-0060 ConformanceRow ledger: 4 enforced rows ($search executor, object.searchableFields + auto-default, $searchFields narrowing, 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 — checkLedger with proofRequiredForEnforced: 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 via industry, proven positively with searchFields:['industry']); the seed's literally-named acme retail account serves as the cross-field OR control; plus select label mapping ("Retail"), $searchFields narrowing (name-only excludes Northwind), and terms-AND semantics. 4 tests + 2 ledger tests, all green locally.
  • ADR-0061 status → Accepted (Tier 1) with the evidence line; Tier 2 stays deferred with instructions for its future ledger row.

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 Proposed implies 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-search in packages/dogfood — 6/6 green (boots the real showcase kernel, seeds, signs in, queries over the injected Hono HTTP surface via apiAs).

🤖 Generated with Claude Code


Generated by Claude Code

claude added 2 commits July 16, 2026 14:00
…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).
@vercel

vercel Bot commented Jul 16, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
spec Canceled Canceled Jul 16, 2026 2:43pm

Request Review

@github-actions github-actions Bot added size/m documentation Improvements or additions to documentation tests labels Jul 16, 2026
@github-actions

Copy link
Copy Markdown
Contributor

📓 Docs Drift Check

This PR changes 1 package(s): @objectstack/dogfood.

2 hand-written doc(s) reference the affected code and may need an implementation-accuracy re-verification:

  • content/docs/permissions/authorization.mdx (via packages/dogfood)
  • content/docs/permissions/delegated-administration.mdx (via packages/dogfood)

Advisory only. To re-verify, run the docs-accuracy-audit workflow scoped to these files:
node scripts/docs-audit/affected-docs.mjs origin/main → pass the list as args.docs.

Comment thread packages/dogfood/test/search-conformance.test.ts Fixed
@os-zhuang
os-zhuang marked this pull request as ready for review July 16, 2026 14:56
@os-zhuang
os-zhuang merged commit a1f6816 into main Jul 16, 2026
17 checks passed
@os-zhuang
os-zhuang deleted the claude/auth-model-design-eval-xxgzcl branch 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 branch was successfully deployed

1 active deployment
Preview — 08b6e988 Deployed Jul 16, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation size/m tests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants