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
packages/spec prose still calls driver-memory's $contains fold open after #7723 closed it #7854
Found while implementing #7117 on packages/drivers/driver-memory. The driver-memory copies of this prose are corrected in that PR; these two live in packages/spec and dragging them into a driver-memory patch would pull a second package (and a second changeset) into an unrelated diff, so they are filed instead.
Measured on origin/main @ 69fde55
#7723 took the i flag off MemoryDriver.filterSubstringPattern, putting the $contains family on #4706 Q2 = A across every face of that package, and pnpm check:driver-conformance now reports 40 covered / 0 DEBT / 0 exempt with driver-memory's FILTER_TEXT cell ok. Two spec docblocks still describe the pre-#7723 world:
packages/spec/src/data/filter.zod.ts:521 — the per-backend table row:
filter.zod.ts's table is the spec's single statement of what each backend means by the $contains family — the thing a driver author reads before writing an arm. A row that says driver-memory folds Unicode is an instruction to match a behaviour that no longer exists, and it is the same document the #4706 rulings are anchored in. Prime Directive #10's corollary applies in reverse: declared ≠ enforced is a defect in either direction.
Scope
Two docblock edits. No code, no schema, no generated baseline — a skip-changeset docs PR. Worth grepping #6682 across packages/spec in the same pass; filter-text-conformance.ts:259-271 reads correct today but is written around the same distinction and should be re-read rather than assumed.
Lane triage (spec seat, session_01ECjShwqVRAhLy15mgatGjV; standing authorization recorded on seat post #6017 — maintainer: 「你的车道你可以执行 分类改标」): re-routed domain:spec → domain:spec-surface + pm:queue.
Rationale: both edits are docblock prose corrections — every input that validates today validates identically after the fix, which is the spec/spec-surface split criterion (acceptance surface unchanged). Same class as the #6146 precedent (docs teaching a retired behavior). The card's own scope note already says it: two docblock edits, no schema, no generated baseline, skip-changeset docs PR — a natural sweep-first item for the surface seat.
If the spec-surface seat reads the filter.zod.ts per-backend table as load-bearing beyond prose (it is the document the #4706 rulings anchor in — read it before assuming), escalate on this card rather than relabeling back.
Claim: PM loop round 2 (spec-surface seat, shift of 2026-08-12)
Session: session_016YBUGvukaeVu9DjKdsHJa9
Branch: claude/issue-7854-contains-fold-prose
Worktree: objectstack-issue-7854
Domain: domain:spec-surface
File surface: packages/spec/src/data/filter.zod.ts (the per-backend $contains docblock table, ~L515–525) + packages/spec/src/data/filter-text-conformance.ts (the @see line ~L95; plus the card's suggested #6682 re-read sweep across packages/spec, prose-only)
Container & model: S mechanical, mode:subagent, model: sonnet
Serial constraints cleared: PR #7625 (drivers seat, prose-only, same two files) MERGED as 7e9e555; #7723 MERGED as 69fde55 (the trigger, latest commit on both files); no open PR touches either file (sweep read 2026-08-12T02:2xZ). Premise re-verified on origin/main: the driver-memory table row still reads INSENSITIVE … 'i' — the last one standing, until #6682 and the @see line still reads memory open, contradicting the same file's header at :58. ⚠️ Handling note for the dev: the table is headed "measured … BEFORE the ruling" and #7625 deliberately kept it as a historical record — the fix must close the stale forward-pointing cells without flattening the historical framing.
{
"issue": 7854,
"status": "done",
"branch": "claude/issue-7854-contains-fold-prose",
"pr": "https://github.com/objectstack-ai/objectstack/pull/7890",
"premise_still_valid": true,
"summary": "Verified on origin/main @ e152dcc (69fde55-tip plus later commits): filter.zod.ts:521's driver-memory history-table cell still read '... the last one standing, until #6682' and filter-text-conformance.ts:95's @see line still read 'mongodb landed, memory open', contradicting that file's own header at :58. Fixed both forward-pointing statements in past tense without flattening filter.zod.ts's deliberately-historical table (kept as history per #7625/#6298) or touching the driver-mongodb row, which is correct as pre-ruling history under the same standard. Swept #6682 across packages/spec/src and confirmed the other 5 hits (filter-text-conformance.ts:55,58,260-262,271 and filter.zod.ts:583) already read correct today.",
"tests": "pnpm check:nul-bytes -> OK (7218 files, no raw control bytes). pnpm check:adr-anchors -> OK (22545 citations resolve). pnpm check:driver-conformance -> OK, 40 covered / 0 DEBT / 0 exempt, all 5x8 matrix cells 'ok' including driver-memory FILTER_TEXT (matches issue's cited reading). pnpm --filter @objectstack/spec build -> clean; grep on rebuilt dist/filter.zod-*.d.ts confirms the edited docblock prose reaches the published .d.ts (so filed a patch changeset, not skip-changeset). pnpm --filter @objectstack/spec typecheck -> clean (tsc --noEmit + scripts + test-typecheck; pre-existing 265-error test-typecheck debt ledger unaffected). pnpm --filter @objectstack/spec test -> 379 test files / 9983 tests, all passed. CI on the draft PR not yet observed (report delivered at draft-PR time per dispatch contract) -- PM owns convergence.",
"open_questions": [],
"out_of_scope_findings": []
}
The card's suggested #6682 sweep was run: 7 hits, each with a per-hit verdict (2 fixed, 5 verified correct as-is, including the filter-text-conformance.ts:259-271 block the card asked to re-read rather than assume).
Changeset judgment is a measured correction of the card's own scope note: the card proposed skip-changeset, but the dev grepped the rebuilt dist/filter.zod-*.d.ts and found the edited prose ships on the published .d.ts hover surface ⇒ patch changeset per the E13 criterion. Measured beats proposed — accepted as filed.
Gate evidence is real output (nul-bytes / adr-anchors / driver-conformance 40/0/0 unchanged / build / typecheck / spec suite 379 files 9983 tests).
First line Fixes #7854 is correct — merging closes the card in full.
Landing: ready-flip + auto-merge once the ESLint and TypeScript Type Check jobs conclude success (flip checkpoint armed; the PM owns convergence).
Activity
os-zhuang commentedon Aug 12, 2026
Lane triage (spec seat,
session_01ECjShwqVRAhLy15mgatGjV; standing authorization recorded on seat post #6017 — maintainer: 「你的车道你可以执行 分类改标」): re-routeddomain:spec→domain:spec-surface+pm:queue.Rationale: both edits are docblock prose corrections — every input that validates today validates identically after the fix, which is the spec/spec-surface split criterion (acceptance surface unchanged). Same class as the #6146 precedent (docs teaching a retired behavior). The card's own scope note already says it: two docblock edits, no schema, no generated baseline,
skip-changesetdocs PR — a natural sweep-first item for the surface seat.If the spec-surface seat reads the
filter.zod.tsper-backend table as load-bearing beyond prose (it is the document the #4706 rulings anchor in — read it before assuming), escalate on this card rather than relabeling back.Generated by Claude Code
os-zhuang commentedon Aug 12, 2026
Claim: PM loop round 2 (spec-surface seat, shift of 2026-08-12)⚠️ Handling note for the dev: the table is headed "measured … BEFORE the ruling" and #7625 deliberately kept it as a historical record — the fix must close the stale forward-pointing cells without flattening the historical framing.
Session:
session_016YBUGvukaeVu9DjKdsHJa9Branch:
claude/issue-7854-contains-fold-proseWorktree:
objectstack-issue-7854Domain:
domain:spec-surfaceFile surface:
packages/spec/src/data/filter.zod.ts(the per-backend$containsdocblock table, ~L515–525) +packages/spec/src/data/filter-text-conformance.ts(the@seeline ~L95; plus the card's suggested#6682re-read sweep acrosspackages/spec, prose-only)Container & model: S mechanical,
mode:subagent,model: sonnetSerial constraints cleared: PR #7625 (drivers seat, prose-only, same two files) MERGED as
7e9e555; #7723 MERGED as69fde55(the trigger, latest commit on both files); no open PR touches either file (sweep read 2026-08-12T02:2xZ). Premise re-verified onorigin/main: the driver-memory table row still readsINSENSITIVE … 'i' — the last one standing, until #6682and the@seeline still readsmemory open, contradicting the same file's header at :58.Generated by Claude Code
os-zhuang commentedon Aug 12, 2026
os-dev-report
{ "issue": 7854, "status": "done", "branch": "claude/issue-7854-contains-fold-prose", "pr": "https://github.com/objectstack-ai/objectstack/pull/7890", "premise_still_valid": true, "summary": "Verified on origin/main @ e152dcc (69fde55-tip plus later commits): filter.zod.ts:521's driver-memory history-table cell still read '... the last one standing, until #6682' and filter-text-conformance.ts:95's @see line still read 'mongodb landed, memory open', contradicting that file's own header at :58. Fixed both forward-pointing statements in past tense without flattening filter.zod.ts's deliberately-historical table (kept as history per #7625/#6298) or touching the driver-mongodb row, which is correct as pre-ruling history under the same standard. Swept #6682 across packages/spec/src and confirmed the other 5 hits (filter-text-conformance.ts:55,58,260-262,271 and filter.zod.ts:583) already read correct today.", "tests": "pnpm check:nul-bytes -> OK (7218 files, no raw control bytes). pnpm check:adr-anchors -> OK (22545 citations resolve). pnpm check:driver-conformance -> OK, 40 covered / 0 DEBT / 0 exempt, all 5x8 matrix cells 'ok' including driver-memory FILTER_TEXT (matches issue's cited reading). pnpm --filter @objectstack/spec build -> clean; grep on rebuilt dist/filter.zod-*.d.ts confirms the edited docblock prose reaches the published .d.ts (so filed a patch changeset, not skip-changeset). pnpm --filter @objectstack/spec typecheck -> clean (tsc --noEmit + scripts + test-typecheck; pre-existing 265-error test-typecheck debt ledger unaffected). pnpm --filter @objectstack/spec test -> 379 test files / 9983 tests, all passed. CI on the draft PR not yet observed (report delivered at draft-PR time per dispatch contract) -- PM owns convergence.", "open_questions": [], "out_of_scope_findings": [] }Generated by Claude Code
os-zhuang commentedon Aug 12, 2026
ACCEPT (PM review, session
session_016YBUGvukaeVu9DjKdsHJa9) — PR #7890.filter.zod.tshistory table's framing is preserved — the driver-memory cell keeps its accurate pre-ruling content and only the "until drivers(memory, mongodb): the$containsfamily still folds case — the last two backends left on the wrong side of #4706 Q2 = A #6682" tail is closed; the driver-mongodb row is untouched under the same "correct as pre-ruling history" standard (consistent with fix(driver-mongodb): the$containsfamily is case-SENSITIVE — drop the hardcoded$options: 'i'(#6682) #7625's deliberate choice, as the claim comment required).#6682sweep was run: 7 hits, each with a per-hit verdict (2 fixed, 5 verified correct as-is, including thefilter-text-conformance.ts:259-271block the card asked to re-read rather than assume).skip-changeset, but the dev grepped the rebuiltdist/filter.zod-*.d.tsand found the edited prose ships on the published.d.tshover surface ⇒ patch changeset per the E13 criterion. Measured beats proposed — accepted as filed.Fixes #7854is correct — merging closes the card in full.Landing: ready-flip + auto-merge once the ESLint and TypeScript Type Check jobs conclude
success(flip checkpoint armed; the PM owns convergence).Generated by Claude Code
docs(spec): close stale $contains fold pointers for driver-memory (ob…