Repository navigation
Description
Filed by the domain:spec execution seat on behalf of the #17333 round, which measured it but ⛔ could not file it — its dedup paths were blocked (detail below). Handed up rather than filed blind.
⛔ No domain:* and no priority from me. skills/** is a GOVERNED surface with its own line/token ratchet — routing and the governed-merge path are triage's and the owning seat's, ⛔ not mine.
The contradiction — class (b), violates a declared contract
skills/objectstack-query/rules/filters.md, lines 249-251, state:
<= {current_year_end}stops at midnight on the 31st. Use the half-open< {next_year_start}for timestamps.
That contradicts the declared rule in packages/spec/src/data/calendar-day.ts (ADR-0053 D-D): $lte, a $between max and a dateRange end all mean the WHOLE day, and the platform already applies that widening — pinned across drivers by temporal-conformance.ts.
AUTO-GENERATED marker — so ⛔ this is not fixed by regenerating anything.
⭐ Worse here than in code: this file is instructions an agent follows. A wrong rule in a skill does not merely misinform a reader, it gets executed — every query an agent writes from this page carries the unnecessary half-open detour.
⭐ This is the third copy of one false sentence, and that is the finding worth keeping
The same wrong rule is now measured in three places: this site, skills/objectstack-query/rules/filters.md (filed separately), and packages/spec/src/data/date-macros.zod.ts (corrected in PR #17651). One author wrote it once; it was copied outward, and each copy now reads as independent confirmation of the others.
Why the #17333 round left it alone — correctly
Its claim scoped it to packages/spec/src/data/date-macros.zod.ts. Editing skills/** would have added a new verification face (the governed line/token ratchet) to a prose-only PR and failed the bounded-in-place-fix test. ⛔ It did the right thing by reporting instead of reaching.
What a taker should do
Correct lines 249-251 to state the ADR-0053 rule, citing calendar-day.ts.
< {next_year_start} advice in 4 files; this card and its sibling name two, PR #17651 fixed one, and the fourth is unaccounted for. ⛔ Do not close this line of work without finding it.
Duplicate check — completed to the limit the session allows, and the limit is declared
⛔ A full-population dedup was not possible and I will not pretend otherwise:
- REST
/search/*is structurally refused for this session (This GitHub API path is not available: sessions are bound to their configured repositories). - MCP
search_issuesreturnsAPI rate limit already exceeded for user ID 324100929— re-tried at 08:29Z, still limited.
What I did complete, at 08:29Z: a full enumeration of 569 open issues (PRs excluded) over 6 REST pages, grepped by TITLE:
filter-tokens 0 LIT CONTROL "spec" 75
next_year_start 0 FABRICATED zzz_nonexistent 0
current_year_end 0
objectstack-query 0
"stops at midnight" 1 → #17333 itself
date-macros 1 → #17333 itself
ADR-0053 2 → #17333, and #4220 (mongo storage-form, unrelated)
Related: #17333 (the packages/spec copy, PR #17651) · the packages/core/src/utils/filter-tokens.ts copy, filed alongside this one · #17629 (same propagation pattern)
Generated by Claude Code
Activity
os-bill commentedon Sep 12, 2026
This file is carrier 3 of an enumeration that is now closed — and ⛔ it must NOT be folded with #17655
Evidence from the
domain:specexecution seat, 2026-09-12T00:47Z, onorigin/main@431c757120. ⛔ No grading, no routing, no label touched.The full enumeration of the stale pre-ADR-0053 upper-bound rule — 3 live carriers, 1 already fixed, 1 false positive that is the fix's own changeset, plus four adjacent files checked and found clean, with lit and dark controls — is written out once on #17655 and ⛔ not duplicated here.
git grep -n -i 'midnight on the' origin/mainreturns 3 files; this card isskills/objectstack-query/rules/filters.md:250.⇒ whatever PR fixes this sentence is a governed PR: draft only, a human merge is its review record, and ⛔ no seat flips it ready, enqueues it, or arms auto-merge. ⭐ That is also why it must not be folded with #17655 (
packages/core/src/utils/filter-tokens.ts, measured not governed, exit 0): one hit governs the whole PR, so folding would push an ordinary queue-landable prose fix behind a manual merge for no benefit. SERIAL, answered on the reading rather than on preference; the five gates are worked through on #17655.domain:specexecution seat ·session_01MkQhmuuJAVDjmeWNixwDDH· readings taken 2026-09-12T00:47Z onorigin/main@431c757120Generated by Claude Code
claude commentedon Sep 13, 2026
Claim: PM loop round 1
Session:
session_01DAcomhvR9kKizeYgg89Vo8(GitHubos-project-manager, skills seat), claimed at 2026-09-13T07:11ZBranch:
claude/issue-17656-filters-upper-bound-adr-0053Worktree:
objectstack-issue-17656Domain:
domain:skills(graded p2 Bug by the triage seat, 5651107129; governedskills/**)File surface (region-declared):
skills/objectstack-query/rules/filters.md:249–:251 only — the sentence 「{current_year_end}is2026-12-31, so on adatetimecolumn<= {current_year_end}stops at midnight on the 31st. Use the half-open< {next_year_start}for timestamps.」 is replaced by the ADR-0053 D-D rule stated by REFERENCE topackages/spec/src/data/calendar-day.ts($lte, a$betweenmax and adateRangeend mean the WHOLE day; the platform widens), ⛔ not a restatement (the three-copy lesson on #17655 / #17656). Net line budget: 0 (251 → at most 251); ⛔ no re-wrap as currency; the file's line/token ratchet is read from the gate at dispatch, not from this claim.Container & model:
S,mode:subagent,model: fable(claude-fable-5-1—dispatch-gates.mjs --tierat84e6b05:skills/**is clause ①, MANDATORY, no one-line exemption); seat review at the contract-review tier; governed ⇒ draft PR at the human terminal with the four-piece, ⛔ never flipped ready by the seatClause-②: no
Thread-read: 5651107129 (triage grading, 2026-09-13T04:19Z — the newest comment at this claim)
Serial constraints cleared: all 19 open objectstack PRs' file lists read at 2026-09-13T06:58Z — none touches
skills/objectstack-query/**(PR #17914 and PR #17310 touchskills/objectstack-ui/**only); last touch of this file onorigin/main2d34f32; verify lock free at 2026-09-13T06:52Z; H17 index ∩ this face = ∅; disjoint from the wave-1 siblings #17787 (skills/objectstack-i18n/SKILL.md) and #17895 (.claude/skills/spec-property-retirement/SKILL.md); sibling #17655 (packages/core, spec lane, measured not governed) ⛔ not folded.Generated by Claude Code
claude commentedon Sep 13, 2026
os-dev-report
{
"issue": 17656,
"status": "done",
"branch": "claude/issue-17656-filters-upper-bound-adr-0053",
"pr": "#17943",
"premise_still_valid": true,
"summary": "Replaced the three closing lines of skills/objectstack-query/rules/filters.md (the pre-ADR-0053 claim that the $lte form of {current_year_end} stops at midnight on the 31st and that an author should hand-write a strict-less-than {next_year_start} detour) with the ADR-0053 D-D rule stated by reference to packages/spec/src/data/calendar-day.ts, mirroring the vocabulary PR #17651 landed in date-macros.zod.ts and not restating the compile rule. Net +0 lines (251 to 251), +9 bytes inside the 14-byte token slack (2146 to 2148 against ceiling 2149). Governed surface: draft PR left for the maintainer's hand merge; assignee already read os-project-manager and was not touched. All five PM mechanism assumptions held on 84e6b05; one premise correction: filters.md itself carried no stop-sign marker (0), the marker is used in the same package (rules/pagination.md: 2) and in 6 catalog files, so PR #17651's shape was mirrored.",
"tests": "Gates derived by node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack (1 path off merge base 84e6b05), run on be0de0b, exit codes captured before any pipe, reconciled with --ran in command :: exit N form: '23 derived, 23 run, 0 NOT-MEASURED, 0 UNRUN' (reconcile exit 0). All 23 exit 0; check:doc-formula-expressions first exited 3 PREREQUISITE NOT MET (formula and lint not built, 'nothing was measured'), rebuilt under the verify lock (turbo build --filter=@objectstack/formula --filter=@objectstack/lint, VERDICT command-exit 0, held 170s, waited 0s) and re-run: exit 0. check-skills-token-ratchet: filters.md 2146/2149 before, 2148/2149 after, exit 0; --self-test 65 cases pass. Acceptance greps whitespace-flattened on be0de0b: 'stops at midnight on the 31st' 1 to 0; 'half-open' 1 to 0; 'calendar-day.ts|ADR-0053' 0 to 1; lit control current_year_end 2 to 1. Control-char scan of the file: none. No package build/test owed: diff touches no package. Ablation: n/a, prose-only edit with no runtime symbol; the two-direction greps are the proof. CI not awaited per the dispatch contract.",
"mcp_calls": "0 — every GitHub read and write went through repo-scoped REST (issue, comments, PR list, PR files, PR create, PR read-back, labels, report comment)",
"open_questions": [],
"out_of_scope_findings": [
"noted, not filed: filters.md line 206 still lists {next_year_start}; it is the token alias list, not the rule (P3) — bearer: none",
"noted, not filed: filters.md widest line is 94 columns, pre-existing style — bearer: none"
],
"gates": {
"derived_by": "node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack @ merge-base 84e6b05, run on be0de0b",
"reconcile": "23 derived, 23 run, 0 NOT-MEASURED, 0 UNRUN (exit 0; all 23 carry exit codes)",
"exit_0": [
"check-ci-filter-parity",
"check-closing-keyword-parity",
"check-closing-keyword-parity --self-test",
"check-comment-mask-corpus",
"check-doc-route-spelling --advisory",
"check-doc-route-spelling --self-test",
"check-skills-token-ratchet",
"check-skills-token-ratchet --self-test",
"report-test-timings --self-test",
"lint check:doc-formula-expressions (after build; first run exit 3 PREREQUISITE NOT MET)",
"check:agent-test-spelling",
"check:corpus-claim-drift",
"check:cross-package-test-inputs",
"check:doc-authoring",
"check:driver-memory-census",
"check:nul-bytes",
"check:pm-governed-merges",
"check:refd-timer-probe",
"check:role-word",
"check:skill-compatibility",
"check:skill-frame-sync",
"check:skill-identifier-liveness",
"check:watch-hint-literal"
],
"non_zero": [],
"ci": "in_progress — not awaited"
},
"line_budget": {
"file_lines_before": 251,
"file_lines_after": 251,
"file_bytes_before": 8582,
"file_bytes_after": 8591,
"file_tokens_before": 2146,
"file_tokens_after": 2148,
"file_token_ceiling": 2149,
"catalog_skill_md_lines_before": 6134,
"catalog_skill_md_lines_after": 6134,
"package_lines_before": 1133,
"package_lines_after": 1133,
"rewrap_as_currency": false
},
"files_changed": [
"skills/objectstack-query/rules/filters.md"
],
"labels": {
"skip-changeset": "applied via REST POST (HTTP 200) and read back present",
"measurement": "no package files[] covers skills/; create-objectstack pulls skills at scaffold time via npx skills add from git, not from a tarball"
},
"deviations": [
"premise: dispatch said keep the stop-sign tone the file uses elsewhere; the file had 0 such markers — package-scope precedent (rules/pagination.md: 2) and PR #17651's shape were followed instead",
"gate: check:doc-formula-expressions needed @objectstack/formula and @objectstack/lint built first (exit 3 PREREQUISITE NOT MET, then exit 0 after the locked build)",
"channel: REST for every GitHub read/write; MCP not used (0 calls)",
"sanitizer: PR body and this report spell the less-than operator in words; no literal angle brackets",
"commit trailer: model-free pair per AGENTS.md (pre-push hook confirmed), not the harness reminder's model-named form"
]
}
Generated by Claude Code
claude commentedon Sep 13, 2026
ACCEPT — skills seat (session
session_01DAcomhvR9kKizeYgg89Vo8, GitHubos-project-manager), contract-review tier, read on PR #17943 headbe0de0b2aat 2026-09-13T07:37Z (report 5651950285 read after the head).Scope against the claim (5651866004): one file, one block —
skills/objectstack-query/rules/filters.md:249–:251, +3/−3; 251 → 251 lines (net +0 as budgeted); token ratchet per the dev 2146 → 2148 (ceiling 2149) — the seat could not run the ratchet on the head without a worktree, so that reading is the dev's and CI'sLint & Repo Gates(in progress at read time) is the authority for it. Single-parent commit on84e6b05;origin/mainhas since moved tobd25e897without touching this file.Read on the head, not the report: whitespace-flattened greps on
refs/pull/17943/head—stops at midnight on the 31st1 → 0,half-open1 → 0,calendar-day.ts0 → 1,ADR-00530 → 1, lit controlcurrent_year_end2 → 1 (the alias list at :206 is untouched, correctly). The new sentence states the rule by reference and does not restate the compile rule (triage 5651107129). Draft, basemain, first lineFixes #17656, no other closing keyword, one footer,## 维护者速读(草稿)present;skip-changesetmeasured and applied. Gates: 23 derived / 23 run / all exit 0 per the report (check:doc-formula-expressionsfirst exit 3 PREREQUISITE NOT MET, re-run 0 after the locked build);check-clause2-carriers --pair 17943exit 0 (seat-run). CI onbe0de0bat 07:35Z: 21 success, 11 skipped, 2 in progress (Lint & Repo Gates, the token ratchet's job);TypeScript Type Checksuccess;Governed Surface Queue Guardsuccess on the PR leg.Contract review of record: PASS, comment 5651992364 on the PR (head
be0de0b; the one operator-semantics claim checked againstcalendar-day.tsonbd25e897).Deviations accepted: a
⛔marker the file did not previously carry (0 before), mirrored from the package'srules/pagination.mdand PR #17651 — the shape the triage ruling asked to mirror. Out-of-scope notes (the :206 alias list; a 94-column line) carry no bearer and stay noted.Governed ⇒ human terminal:
needs-user-decisionon PR #17943, 速读终稿 posted there, reviews requested from os-zhuang and hotlong. ⛔ Not flipped ready, queued or approved by this seat. The card stayspm:dispatched+ assigned until MERGED (landing record + residue clear then).Generated by Claude Code
claude commentedon Sep 13, 2026
LANDED — skills seat (session
session_01DAcomhvR9kKizeYgg89Vo8), 2026-09-13T08:42Z. PR #17943 merged by os-zhuang through the merge queue at 2026-09-13T08:41Z as884e8347(=origin/maintip at this reading). Two readings: the queue refgh-readonly-queue/main/pr-17943-*is gone, andorigin/maincarries the content —skills/objectstack-query/rules/filters.mdhasADR-00531 andcalendar-day.ts1, 251 lines;git log origin/mainhas(#17943)1 with controls(#17908)1 /(#99999)0. The card was closedcompletedby the PR'sFixesline; thepm:dispatchedresidue and the assignee are stripped in this pass and read back (labels nowbug·priority:p2·domain:skills, nopm:*, no assignee). Contract review of record 5651992364 (headbe0de0b2, unchanged to landing); ACCEPT 5651992978.Generated by Claude Code
fix(skills): state the ADR-0053 upper-bound rule in filters.md by ref…
docs(core): state the ADR-0053 D-D bound width in the filter-tokens h…