Repository navigation
skills-sweep ⑦: objectstack-api (707 lines, 3 files) — behavioral-claim verification, content-class execution-first #13814
Description
Activity
- addeddocumentationImprovements or additions to documentationImprovements or additions to documentationpriority:p1High: required for production / M2High: required for production / M2
on Aug 31, 2026 huangyiirene commented
on Aug 31, 2026 CollaboratorAuthorMore actionsClaim: PM loop round 1
Session:session_01EnE7G31tqbxN1rqpQmzurT
Branch:claude/issue-13814-skills-sweep-api
Worktree:objectstack-issue-13814
Domain:domain:skills
File surface:skills/objectstack-api/**(stop on breach; explain in the report)
Container & model: M (claim verification with executed probes),mode:subagent,model: opus— no path-derived mandate onskills/**per this morning'sdispatch-gates.mjs --tierposture.
Clause-②: yes — 批 #12 CONTENT-limb criterion;needs:contract-reviewto PR AND this card same-stroke; this seat reviews atCONTRACT_REVIEW_TIERat ACCEPT.
Serial constraints cleared: zero open PRs touchskills/objectstack-api/**(listings read this hour); sibling flight ⑧ (#13815,skills/objectstack-i18n/**) dispatches this same wave — disjoint faces, no read-coupling; flight ⑥'s draft PR #13808 isskills/objectstack-automation/**, disjoint.
Generated by Claude Code
huangyiirene commented
on Aug 31, 2026 CollaboratorAuthorMore actionsos-dev-report
{ "issue": 13814, "status": "done", "branch": "claude/issue-13814-skills-sweep-api", "pr": "https://github.com/objectstack-ai/objectstack/pull/13827", "premise_still_valid": true, "summary": "Flight 7 swept skills/objectstack-api in full: 3 files, 707 lines at origin/main exactly as the PM's face reading said (SKILL.md 609 / evals/README.md 49 / references/_index.md 49, re-derived from the fetched tree). ~224 behavioral claims inventoried; 8 distinct FALSE facts across 9 landing sites, all in SKILL.md (3.6% distinct / 4.0% sites — inside the 1.5-6% working range). The eight: error.type is a removed field and error.code is the semantic string not the numeric status (the number moved to httpStatus, #3842); the dispatcher's 501 does not come from handlerStatus, which has zero runtime consumers; handlerStatus reaches no consumer at all, so the best-practice item claiming it does was deleted; the websocket filters key is declared-but-inert while the bullet two lines above already marked its sibling; mongo is not the canonical registered driver id (mongodb since #6345, with an ADR-0087 conversion) and the catalog table omitted sqlite-wasm and pushed the registered turso id outside the table; IDataEngine.batch was retired by ADR-0119 D3; and 'upsert exists as an apiMethods enum value' contradicted this same file's own six-primitive section 270 lines earlier, settled against the implementation. Method notes that paid off: the cross-file/cross-section contradiction scan found the upsert one, and the enumeration-vs-schema row count found the driver catalog. The 'silently/ignored/dropped' seed grep returned ZERO hits in this package — recorded, not skipped. evals/README.md (all ten rubric rows) and the generator-owned references/_index.md (check:skill-refs green, all 23 pointers resolve and sit inside the published files glob) came back clean. Two half-states worth the PM's eye: (1) the card arrived with no assignee and no needs:contract-review, and the PM's claim comment already carried THIS session id and THIS branch, so per flight-5 reasoning no second claim comment was written — the anti-duplication job was already done; (2) the token ceiling on this file had ZERO headroom, so the first draft went RED (6364 vs 6319, over by 45) and every correction was tightened and funded by an in-file deletion until it went green at -8 tokens. No ceiling was touched. One nuance was deliberately NOT added and is recorded in the PR body instead: SKILL.md:363's /ready sentence is incomplete rather than false since #13408 (a down primary datasource also drains), which the program routes to content/docs follow-ups, not into ratcheted skill prose.", "tests": "All readings at commit 5a5804ae (the final commit; the union was re-run on it after committing). GATES — families derived from the REAL diff via `node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack` (1 path, no STALE warning, re-derived post-commit and byte-identical). 14 families, exit codes captured by redirect before any pipe: check-ci-filter-parity 0 · check-cross-package-test-inputs 0 · check-shard-attestation 0 · check-skills-token-ratchet 0 · check-test-completeness 3 · check:doc-formula-expressions 0 · check:agent-test-spelling 0 · check:corpus-claim-drift 0 · check:cross-package-test-inputs 0 · check:doc-authoring 0 · check:pm-governed-merges 0 · check:role-word 0 · check:skill-compatibility 0 · check:skill-frame-sync 0. Two NOT-MEASURED readings, both self-declared by the gate and neither a red: check-test-completeness exit 3 is its own PREREQUISITE-NOT-MET code (it grades a saved turbo test log only CI produces); check:doc-formula-expressions first hit the same branch (@objectstack/formula and @objectstack/lint unbuilt) — both were built and it re-ran to a genuine exit 0, which is the reading reported. Outside the derived list: `pnpm --filter @objectstack/spec check:skill-refs` exit 0 ('9 generated files in sync with packages/spec'), and a C0 control-character scan of the edited file with no hits. RATCHET: the authoritative reading is the gate's own printed line — 'check-skills-token-ratchet: skills/objectstack-api/SKILL.md is 6311 tokens (ceiling 6319; headroom 8)' at exit 0; whole file 609 -> 607 lines / 6319 -> 6311 tokens; package-wide across all 11 published SKILL.md 10503 -> 10501 lines / 117856 -> 117848 tokens. EXECUTED PROBES (non-vacuity control): one probe file run under scripts/pm/os-verify-lock.sh, 30+ assertions against packages/spec sources, VERDICT command-exit 0. Four of them PROVE the falsehoods rather than merely reading code: DispatcherErrorResponseSchema.safeParse with code:404 (a number) returns success=false while code:'ROUTE_NOT_FOUND' returns true, and a body supplying `type` parses back with keys [code,message,httpStatus] — the key is stripped; BUILTIN_DRIVER_IDS = [memory,sqlite,sqlite-wasm,postgres,mysql,mongodb,turso] with resolveDriverId('mongo') = 'mongodb'; ApiMethod.options = [get,list,create,update,delete,bulk] with 'upsert' absent. The confirming half (claims the skill already had right): authRequired omitted parses to true; authRequired:false with {windowMs,maxRequests} draws the D6 rejection while {enabled:true,...} is accepted, and RateLimitConfigSchema.parse({windowMs,maxRequests}).enabled is false; one rejection each for outputMapping transform, inputMapping on a 'find' op, targets 'x' vs 'x.y', type:'script', and a path outside the carve-out; ['list'] derives [list,aggregate,search,export] and ['create','update'] derives [create,update,upsert,import]; [] is deny-all with an empty operation set; API_OPERATION_ORDER.length = 14; ServiceStatus/AuthProvider/TransportProtocol options match the skill verbatim and 'healthy' is rejected. DECLARED NARROWING — check:skill-examples: the path derivation names no such family for skills/**, and the diff's population for it is empty, measured three ways not assumed — (1) the population is os:check-marked fences, read from the gate's own definition; (2) this file has 6 fences at lines 123-138, 171-185, 328-340, 438-446, 480-495, 529-538 and the diff's hunks are at 376, 393-395, 409-411, 505-510, 520, 548-551, 557, 559-561, disjoint with zero overlap; (3) a fence's verdict is a function of its own text plus the spec/client-react declaration types, neither of which this diff changes, so no untouched fence's verdict can move. Running it locally needs a @objectstack/client-react build; CI runs it on every PR regardless. No ablation was performed — this card corrects prose, it adds no guard whose failure needed proving.", "mcp_calls": "8 — get_comments(13658) · search_issues(dedupe) · issue_write create(13823) · create_pull_request(13827) · issue_read get_labels(13814) · issue_write labels(13814) · issue_write labels(13827) · this comment. Card and program bodies plus all timeline reads, both label read-backs and the PR body read-back went through the zero-quota payload channel; the 13658 comment tail needed MCP because the payload channel serves only the first 15 timeline items.", "open_questions": [], "out_of_scope_findings": [ "filed as #13823: RestApiEndpointSchema.handlerStatus is authorable but has zero runtime consumers repo-wide (3 hits, all inside its own declaring file) — the 501 it is documented to cause is emitted from four sites in the declarative-endpoint executor, none of which reads it, and nothing constructs the RouteCoverageReport that would carry it outward. ADR-0049 enforce-or-remove class, same shape as #13613; labelled `finding`, unassigned, remove-vs-enforce laid out for triage.", "NOT filed, recorded here for the PM: packages/runtime/src/dispatcher-plugin.ts:977-979 carries the same /ready staleness the skill does — its comment still says 503 only while booting or shutting down, which #13408 widened today. A code comment, not a contract; too small to card on its own, and it belongs to whoever next touches that file." ] }Both governed-posture carriers were attached in the same stroke and confirmed by a delayed read-back, not by the write's return value: PR #13827 shows
needs:contract-review+skip-changeset+size/s+documentation(the auto-labeler'sdocumentationarrived after my read and was NOT clobbered by the union write), and this card showsneeds:contract-reviewalongside its four originals. The PR is DRAFT and stays that way — human merge only. Not self-cleared.
Generated by Claude Code
- added and removed
on Aug 31, 2026 huangyiirene commented
on Aug 31, 2026 CollaboratorAuthorMore actionsACCEPT — PR #13827; governed md ⇒ parked draft, both approvers requested; contract-review PASS on the PR
Reviewed against GitHub, not the report: draft ✓ ·
Fixes #13814+Part of #13658✓ · diff confined toSKILL.md(rubrics and the generator-owned index verified clean,check:skill-refsgreen) ✓ · both carriers attached at creation, cleared at PASS (trace: PR comment 5479582217) ✓ · budget net −2 lines / −8 tokens after the first-draft ratchet red was paid down in-file — no ceiling touched ✓.Spot readings: four falsehood-PROVING probes (numeric error code refused / semantic accepted /
typestripped;resolveDriverId('mongo')→'mongodb';ApiMethodwithout upsert; the 501 emitted from sites that never readhandlerStatus) all corroborated by my ownorigin/mainmeasurements. Out-of-scope finding #13823 verified real (declaring-file-only grep — the ADR-0049 enforce-or-remove shape, honestly split for triage). The unfileddispatcher-plugin.ts:977/ready staleness note is recorded here for whoever next touches that file — too small to card, correctly not ridden along. The "card arrived with no assignee" observation is the third stale zero-quota payload read of the day (assignee was set at claim time and reads back intact) — a channel artifact of the #13387 class, not a half-state.Card →
pm:awaiting-maintainer; closes viaFixeswhen the maintainer merges #13827. Flight ⑧ (i18n) still in flight; program note follows its collection.
Generated by Claude Code
Member card of program #13658 (published-skills factual sweep). Flight ⑦ target:
skills/objectstack-api/**— 3 files, 707 lines at origin/main this hour:SKILL.md(609) ·evals/README.md(49) ·references/_index.md(49, generator-owned — verify sync, never hand-edit).Scope: verify every behavioral claim against the implementation per the program method as BOUND by #13658 comments 5474435934 / 5474464789 / 5475032239 + calibrations 5476328676 / 5476875577 / 5477729758 / 5479170359 (content-class first; both error directions; cross-file contradiction + md-vs-generated oracle first; "silently / ignored / dropped" seed; eval rubrics FULL weight; when a false claim matches a spec
.describe()string verbatim, file the spec-side twin as an out-of-scope finding). Likely implementation homes:packages/rest,packages/client*,packages/spec/src/api/**(error-code ledger, envelopes),packages/mcp.Constraints: published governed surface — draft PR, human merge; ceilings unchanged; net line budget ≤ 0; NOT MEASURABLE recorded. Clause ② CONTENT limb (批 #12):
needs:contract-reviewto PR AND this card same-stroke.Part of #13658; closes with the flight's PR (Fixes).
Generated by Claude Code