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 }}
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
Repository navigation
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
Migrated from objectstack-ai/objectstack#7119 under the file-at-destination ruling (objectstack-ai/objectstack#7167, maintainer 2026-08-10). Originally filed 2026-08-09T17:46:03Z. The full prior thread — including triage rulings and hold/restart conditions — remains on the source issue and MUST be read before acting on this card.
Release-board grading (arrival pass): target:v17 added — class ②.
The published inputs vocabulary declares filters (plural) while the renderer reads only filter (singular): filter conditions written per the published word are silently ineffective — declared ≠ enforced on a shipped surface, textbook class ②. The card is simultaneously in the decision inbox; board membership signals that this ruling should be prioritized because the release rides on it.
Authorization: maintainer directive (2026-08-10) —「objectui 任务你帮我现在执行 v17 补判」. Post-migration arrival grading per objectstack#6903 / objectstack#7167; v17 production for this backlog normally belongs to the objectui whole-repo seat.
Maintainer ruling (2026-08-10, directed in session session_01BPWqbmEFU8gJepBJTHESXd): Option A.
The inputs declaration becomes singular filter, aligned three ways — with the renderer's real read point, with list-view, and with spec vocabulary. filters is deleted outright: it has zero read points, so there is no in-the-wild working usage to keep compatible, and Option B would harden a misspelling into a second de-facto contract (AGENTS.md #0.1). Add the pin this card asks for: writing a filter under the declared name must produce $filter in the query.
Claim: PM loop round 3 (objectui whole-repo seat, v17 board priority — final open dispatchable board item)
Session: session_017Qqyix2QcnpUC9XeYVDzx3
Branch: claude/issue-4041-grid-filter-input-spelling
Worktree: objectui-issue-4041
Domain: repo:objectui (whole-repo seat)
File surface: packages/plugin-grid/src/index.tsx (registration inputs), packages/plugin-grid/src/ObjectGrid.tsx (read point unchanged unless the pin needs a hook) + tests; console parity/manifest gates only if mechanically forced by the rename (each move pinned, per the #4070 precedent). Stop on breach; explain in the report.
Container & model: M, mode:subagent, model: opus
Serial constraints cleared: no open claim or PR touches packages/plugin-grid; #3569's branch touches packages/fields/plugin-form (disjoint); all other board work MERGED this shift.
Ruling in hand (maintainer, 2026-08-10, comment above): Option A — inputs becomes singular filter aligned three ways, filters deleted outright (zero read points, no in-the-wild working usage), plus the pin: a filter written under the declared name must produce $filter in the query.
ACCEPT (objectui seat PM, session session_017Qqyix2QcnpUC9XeYVDzx3, review of record) — PR #4081, implementing the maintainer's Option A ruling.
What shipped: object-grid and its view:grid alias declare singular filter via one shared GRID_QUERY_INPUTS constant (the alias cannot drift); the never-read plural filters is deleted outright. Beyond the rename, the read point now lowers through toFilterNode — the source thread's binding 「本单实施时必须一并处理」 constraint, which my dispatch prompt under-scoped and the dev correctly honored (the prompt named the source thread authoritative): without the hop, an author writing spec ViewFilterRule[] under the newly-declared key would get a guaranteed 400 INVALID_FILTER instead of today's silent no-op — trading one failure for a worse one. The dev probed the pinned spec live to confirm rule objects already reach this read point via the spec bridge. Two narrow ride-along corrections toward the shared sink's documented contract (MongoDB-style object converted instead of dropped; empty filter: [] skips $filter), each independently reverse-verified. Changeset present; the pin reads the declared key name OUT of the registry so the test survives exactly the drift class this card is about.
Review notes: premise anchors re-verified on current main plus a fourth (spec's own ListViewSchema.shape carries filter); downstream consumer sweep with the correct prefix filter direction (8 of 46 dependents, all clean, after building the closure — stale-artefact trap recognized, not misattributed). Both reverse verifications red in the predicted, independent directions. All 20 checks completed, 0 failures (Lint 06:09, Type Check 06:07, 4 shards 06:10-06:11 — per-job conclusions; the dev also documented a ~50-min stale check-runs listing and confirmed against the authoritative per-job records). Finding #4082 (defaultFilters leg bypassing the same hop) verified filed as observation-class with the honest "no live producer measured" caveat.
Landing next: flipping ready and driving to MERGED — the last open dispatchable target:v17 item on this board.
Activity
os-zhuang commentedon Aug 10, 2026
Release-board grading (arrival pass):
target:v17added — class ②.The published inputs vocabulary declares
filters(plural) while the renderer reads onlyfilter(singular): filter conditions written per the published word are silently ineffective — declared ≠ enforced on a shipped surface, textbook class ②. The card is simultaneously in the decision inbox; board membership signals that this ruling should be prioritized because the release rides on it.Authorization: maintainer directive (2026-08-10) —「objectui 任务你帮我现在执行 v17 补判」. Post-migration arrival grading per objectstack#6903 / objectstack#7167; v17 production for this backlog normally belongs to the objectui whole-repo seat.
Session: 01JaVVMrSxt7Tgi1uwEuDtH7
Generated by Claude Code
os-zhuang commentedon Aug 10, 2026
Maintainer ruling (2026-08-10, directed in session
session_01BPWqbmEFU8gJepBJTHESXd): Option A.The
inputsdeclaration becomes singularfilter, aligned three ways — with the renderer's real read point, withlist-view, and with spec vocabulary.filtersis deleted outright: it has zero read points, so there is no in-the-wild working usage to keep compatible, and Option B would harden a misspelling into a second de-facto contract (AGENTS.md #0.1). Add the pin this card asks for: writing a filter under the declared name must produce$filterin the query.needs-user-decision→pm:queue;target:v17stays.Generated by Claude Code
yinlianghui commentedon Aug 10, 2026
Claim: PM loop round 3 (objectui whole-repo seat, v17 board priority — final open dispatchable board item)
Session:
session_017Qqyix2QcnpUC9XeYVDzx3Branch:
claude/issue-4041-grid-filter-input-spellingWorktree:
objectui-issue-4041Domain:
repo:objectui(whole-repo seat)File surface:
packages/plugin-grid/src/index.tsx(registration inputs),packages/plugin-grid/src/ObjectGrid.tsx(read point unchanged unless the pin needs a hook) + tests; console parity/manifest gates only if mechanically forced by the rename (each move pinned, per the #4070 precedent). Stop on breach; explain in the report.Container & model: M,
mode:subagent,model: opusSerial constraints cleared: no open claim or PR touches
packages/plugin-grid; #3569's branch touchespackages/fields/plugin-form(disjoint); all other board work MERGED this shift.Ruling in hand (maintainer, 2026-08-10, comment above): Option A —
inputsbecomes singularfilteraligned three ways,filtersdeleted outright (zero read points, no in-the-wild working usage), plus the pin: a filter written under the declared name must produce$filterin the query.Generated by Claude Code
yinlianghui commentedon Aug 10, 2026
ACCEPT (objectui seat PM, session
session_017Qqyix2QcnpUC9XeYVDzx3, review of record) — PR #4081, implementing the maintainer's Option A ruling.What shipped:
object-gridand itsview:gridalias declare singularfiltervia one sharedGRID_QUERY_INPUTSconstant (the alias cannot drift); the never-read pluralfiltersis deleted outright. Beyond the rename, the read point now lowers throughtoFilterNode— the source thread's binding 「本单实施时必须一并处理」 constraint, which my dispatch prompt under-scoped and the dev correctly honored (the prompt named the source thread authoritative): without the hop, an author writing specViewFilterRule[]under the newly-declared key would get a guaranteed400 INVALID_FILTERinstead of today's silent no-op — trading one failure for a worse one. The dev probed the pinned spec live to confirm rule objects already reach this read point via the spec bridge. Two narrow ride-along corrections toward the shared sink's documented contract (MongoDB-style object converted instead of dropped; emptyfilter: []skips$filter), each independently reverse-verified. Changeset present; the pin reads the declared key name OUT of the registry so the test survives exactly the drift class this card is about.Review notes: premise anchors re-verified on current main plus a fourth (spec's own
ListViewSchema.shapecarriesfilter); downstream consumer sweep with the correct prefix filter direction (8 of 46 dependents, all clean, after building the closure — stale-artefact trap recognized, not misattributed). Both reverse verifications red in the predicted, independent directions. All 20 checks completed, 0 failures (Lint 06:09, Type Check 06:07, 4 shards 06:10-06:11 — per-job conclusions; the dev also documented a ~50-min stale check-runs listing and confirmed against the authoritative per-job records). Finding #4082 (defaultFiltersleg bypassing the same hop) verified filed as observation-class with the honest "no live producer measured" caveat.Landing next: flipping ready and driving to MERGED — the last open dispatchable
target:v17item on this board.Generated by Claude Code
fix(plugin-grid): object-grid publishes the filter key it reads — `fi…
fix(plugin-grid): object-grid 的 data 输入按契约声明为 ViewData 对象 (objectstac…