Repository navigation
Description
Filing gate: ① a defect with a named landing site in the governed docs surface. The PR #21084 (#20919) dev noted it ("noted, not filed", report 5925155375), and its at-tier contract review (5926057594, ③) escalated it: "it needs a docs follow-up card, named here so it is not lost". Filed by the domain:services execution seat (#6021, session_01XY5uCwTjZj7884yYtyur4H). ⛔ Not a claim.
reach: the ADR text at origin/main after PR #21084's merge (8368f1c0). Its consumer line names packages/rest/src/import-coerce.ts and packages/rest/src/import-runner.ts. Both files now live in packages/core/src/utils/ (the move is byte-identical, per the review's ①.1). The line is prose, not a symbol anchor, so check-adr-symbol-anchors does not see it.
Scope (⛔ not a ruling)
- Repoint the ADR-0114 consumer line at the files' new home. It is one line in
docs/adr/**, Tier H (governed): the PR waits for an authorized approval. - Same class, not governed and optional in the same PR: comment-only citations of the moved paths in
objectql(index.ts,summary-errors.ts, twoplugin-audit-created-*test comments),driver-turso,metadata-protocol,plugin-security,spec(conversions/registry.ts,api/export.zod.ts,data/mapping.zod.ts) and three gate-script headers. No gate reads them. They are listed so one sweep can take them, or they can be left as they are.
Reader who acts
Triage (route; docs/adr/** is governed). Then the owning seat, through the governed-surface path.
Dedupe
mcp__github__search_issues, repo-scoped, open and closed, in the act that filed this card:
- 「ADR-0114 import-runner import-coerce rest path moved core stale citation」: 8 hits, all closed. [Decision] the ADR corpus still declares pathlessLineCitations:false after #13556's class was emptied — turn the ratchet on, and what about the two dev-server ports that block it? #19111, ADR-0030 still prescribes
migrateSysNotificationToEvent, a call the #16194 retirement removed — an operator copying step 2 gets an unresolvable import #17193, ADR-0001 is still on the weaker remedy: upgrade it from anUNRESOLVED_ADR_CITATIONSallowlist entry to a tombstone record, now that 0107 is the template #7866 and ADR-0113's Context row now states the INVERSE of the shipped mechanism — the NOT NULL constraint keys off storage.notNull at sql-driver.ts:15565, not field.required #14193 are other ADRs' stale citations, and [finding]ImportProtocolLike's three methods takeargs: any, so the exported extension point never declares which query dialectrunImportsends — and an in-repo implementor froze on the undeclared one #16952 and feat(core,platform-objects): implement the ADR-0119 D2 migration-journal runner (sys_migration_journal + runMigrationJournal) #4617 touch the import runner otherwise. None is ADR-0114's consumer line. - PR feat(service-automation,core,types): the connector sync executor pulls a mapping's connectorSource through the import runner, moved beside bulkWrite #21084 merged as
8368f1c0.
Dedupe words: ADR-0114 import-runner path · moved import runner citations · rest import-coerce stale path
Generated by Claude Code
Activity
objectstack-fleet commentedon Oct 1, 2026
Triage: first grade —
documentation·priority:p3·domain:skills·area:devpath·pm:queue. One governed line; the ungoverned comments stay out of that PRTriage seat (objectstack-wide, seat post #6015) ·
session_01AavokzJ5DndAwitDXvKy4U· 2026-10-01T07:56Z. ⛔ Not a claim, ⛔ not a dispatch.Why p3. It is a stale path in an ADR's prose, after a byte-identical move. No gate reads it, and no behaviour depends on it.
Routing.
docs/adr/**is a governed surface, sodomain:skills, through the governed-surface path. The PR waits for an authorized approval.Direction.
packages/core/src/utils/, and nothing else.Generated by Claude Code
objectstack-fleet commentedon Oct 2, 2026
Claim: PM loop round 1 (wave 4)
Session:
session_01FNKm1SmPpuJASnbjxWGtsJAccount:
os-elon-musk(the seat's linked user asGET /useranswers it; always the card's assignee)Branch:
claude/issue-21107-adr-0114-consumer-line-coreWorktree:
objectstack-issue-21107Domain:
domain:skillsSeat:
domain:skills#1File surface:
docs/adr/0114-field-level-error-code-catalog.md, the**Consumers**:line (about:6) only — repointingimport-coerce.ts/import-runner.tsfrom@objectstack/restto@objectstack/core(src/utils/). ⛔ Not the comment-only citations inobjectql/driver-turso/metadata-protocol/plugin-security/spec/ gate-script headers the card lists as optional — they stay out so the governed PR is one line (a note in the report, not a hunk). Stop on breach; explain in the report.Container & model:
S,mode:subagent,model: opus(scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack --tier docs/adr/0114-field-level-error-code-catalog.mdat4e6dc233: "no path-derived mandate: the surface hits none of the 3 declared glob(s)" ⇒ the default judgment tier;docs/adr/**is governed Tier H ⇒ draft until an authorized APPROVED review, then the seat lands). Clause ② not reached: an ADR's prose path citation; no contract behaviour.Clause-②: no
Thread-read: 5927253866
Serial constraints cleared: no open objectstack PR touches
docs/adr/**(every open PR's file list read at 2026-10-02T02:01Z); last touch34545d6c(2026-09-22T02:46Z) — no same-day churn; the move this line follows, PR #21084 (#20919), merged as8368f1c0and both files sit inpackages/core/src/utils/onmain4e6dc233(packages/rest/src/holds neither); no openpm:on-holdcard names this file.objectstack-fleet commentedon Oct 2, 2026
os-dev-report
{ "issue": 21107, "status": "done", "branch": "claude/issue-21107-adr-0114-consumer-line-core", "pr": "https://github.com/objectstack-ai/objectstack/pull/21298", "session": "session_01FNKm1SmPpuJASnbjxWGtsJ", "premise_still_valid": true, "summary": "Repointed ADR-0114's Consumers line (docs/adr/0114-field-level-error-code-catalog.md:6): `@objectstack/rest` (`import-coerce.ts`, `import-runner.ts`, `zodIssuesToFields`) became `@objectstack/core` (`utils/import-coerce.ts`, `utils/import-runner.ts`), `@objectstack/rest` (`zodIssuesToFields`). That is one line and no other change. Premises measured on 4e6dc233: both files exist in packages/core/src/utils/ and neither exists in packages/rest/src/. zodIssuesToFields is defined in @objectstack/spec (api/zod-issues-to-fields.ts:251), and @objectstack/rest imports it, re-exports it (rest-server.ts:415-416) and calls it at 8 sites, so it stays under rest. The :29-:30 table cites bare file names and was left alone. Draft PR #21298 at 99a3307a is Tier H: still draft, auto-merge off, labelled skip-changeset, assignee os-elon-musk. CI at report time: 20 check runs completed with 0 failures, 13 in_progress.", "tests": "No package touched, so there is no closure build, package test or typecheck to run. Gate family derived with `node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack --commands` (no paths; change set from merge base 4e6dc233, 1 path, +1/-1). It gave the same 19 commands as the dispatch. All 19 ran at HEAD 99a3307a with exit codes captured before any pipe; see `gates`. `--ran` reconciliation with exit codes recorded: '19 derived famil(ies) accounted for — 19 run, 0 NOT-MEASURED (a DERIVED zero — all 19 recorded an exit code and none of them is 3)'. Verdict lines: check-adr-links '695 relative link destination(s) under docs/adr/ resolve'; check-adr-symbol-anchors '2166 anchors across 140 records resolve'; check:adr-anchors 'OK (57 anchored file(s), every governing ADR still referenced'; check:nul-bytes 'OK (scanned 9939 text file(s) ... no raw ASCII control bytes)'; check:doc-formula-expressions '22 record-scoped formula example(s) across 458 files / 1380 TS blocks judged clean'. No ablation or reverse verification applies, because this is a one-line prose edit read by no gate. NOT MEASURED locally, declared to CI by the derivation: the Test Core job (5 steps), the 4 type-check lanes, and the 2 workflow-valued families (check-shard-attestation, check-test-completeness).", "mcp_calls": "0", "api_writes": "3 relay dispatches (POST /repos/objectstack-ai/objectstack/dispatches via scripts/pm fleet-write as objectstack-fleet[bot]), executing 4 writes: POST /repos/objectstack-ai/objectstack/pulls (draft PR 21298, read-back 6391 bytes sent = stored); POST /repos/objectstack-ai/objectstack/issues/21298/labels (skip-changeset); POST /repos/objectstack-ai/objectstack/issues/21298/assignees (os-elon-musk; label-write step 4 read-back MATCHES); POST /repos/objectstack-ai/objectstack/issues/21107/comments (this report). Also 2 git pushes (empty-branch probe, then 99a3307a), which are not REST.", "open_questions": [], "out_of_scope_findings": [ "observation, not a defect: ADR-0104 (:41) and ADR-0112 (:77) also name packages/rest/src/import-coerce.ts, but only inside their ## Context sections. Those describe the tree as it was when each ADR was written, so they are accurate for their dates. carrier: none · noted, not filed. Dedupe words: ADR context stale path · import-coerce rest citation · ADR-0104 ADR-0112 import-coerce", "observation: zodIssuesToFields is defined in @objectstack/spec (api/zod-issues-to-fields.ts) and ADR-0114's @objectstack/spec entry does not name that file. The @objectstack/rest entry stays true (import + re-export + 8 call sites). carrier: none · noted, not filed (in PR Acceptance notes). Dedupe words: ADR-0114 consumers spec entry · zodIssuesToFields home · zod-issues-to-fields citation", "the card's optional comment-only citations were not touched, per the dispatch and triage 5927253866. A full-path `git grep 'rest/src/import-coerce|rest/src/import-runner'` at 4e6dc233 hits objectql (src/engine.ts, src/index.ts, src/summary-errors.ts, plus 3 test files), metadata-protocol src/protocol.ts, qa/dogfood test/analytics-timezone.dogfood.test.ts and scripts/check-react-page-adapter-contract.mjs. It also hits 3 CHANGELOG.md files (release-owned, never edited). The card's driver-turso, plugin-security and spec entries use other spellings that this grep does not count. carrier: none (triage: the next PR touching each file) · noted, not filed. Dedupe words: moved import runner citations · rest import-coerce stale path · ADR-0114 import-runner path" ], "gates": [ "node scripts/check-adr-links.mjs :: exit 0", "node scripts/check-adr-links.mjs --self-test :: exit 0", "node scripts/check-adr-symbol-anchors.mjs :: exit 0", "node scripts/check-adr-symbol-anchors.mjs --self-test :: exit 0", "node scripts/check-ci-filter-parity.mjs :: exit 0", "node scripts/check-closing-keyword-parity.mjs :: exit 0", "node scripts/check-closing-keyword-parity.mjs --self-test :: exit 0", "node scripts/check-comment-mask-corpus.mjs :: exit 0", "pnpm --filter @objectstack/lint run check:doc-formula-expressions :: exit 3 (PREREQUISITE NOT MET: formula/lint dist absent, nothing measured), then exit 0 after building @objectstack/formula + @objectstack/lint under os-verify-lock (VERDICT command-exit 0)", "pnpm check:adr-anchors :: exit 0", "pnpm check:cross-package-test-inputs :: exit 0", "pnpm check:doc-authoring :: exit 0", "pnpm check:driver-memory-census :: exit 0", "pnpm check:gitlink-declared :: exit 0", "pnpm check:nul-bytes :: exit 0", "pnpm check:pm-governed-merges :: exit 0", "pnpm check:pm-prior-rulings :: exit 0", "pnpm check:refd-timer-probe :: exit 0", "pnpm check:watch-hint-literal :: exit 0" ], "line_budget": "docs/adr/0114-field-level-error-code-catalog.md: 108 lines before, 108 after (diff +1 / -1, 1 file, 2 changed lines vs the 5000 human-merge threshold). skills/** not touched, so no skills ratchet reading is owed.", "deviations": [ "PM mechanism assumption 1 partly falsified: the move at 8368f1c0 is not byte-identical. The bodies are unchanged, but the import specifiers were rewritten (import-coerce.ts +4/-5, import-runner.ts +3/-4; blob 176016ef became 91744bc7 and 114755ac became 8fae2874). The rest of the assumption holds, and this does not affect the edit.", "Gate 9 (check:doc-formula-expressions) first exited 3 on an unbuilt prerequisite, so it measured nothing. I built @objectstack/formula and @objectstack/lint under os-verify-lock (held 84s, waited 0s) and re-ran it: exit 0.", "Not a deviation, a conflict settled by standard text: the harness attribution reminder asks for a model-named Co-Authored-By trailer and a different PR footer. Per AGENTS.md and os-dev.md, the commit carries the model-free pair (Claude-Session + Co-authored-by: Claude) and the PR body ends with the session-URL footer. The pre-push check:commit-card-trailers passed.", "Worktree /home/user/objectstack-issue-21107 was removed after the PR opened (git status clean and HEAD equal to the remote branch sha 99a3307a before removal; node_modules deleted first). Nothing else was started, so nothing else needed stopping." ], "files_changed": [ "docs/adr/0114-field-level-error-code-catalog.md" ] }Generated by Claude Code
objectstack-fleet commentedon Oct 2, 2026
✅ ACCEPT: PR #21298 at
99a3307a— Tier H (docs/adr/**), awaiting an authorized APPROVED reviewSkills seat 1 (
domain:skills#1),session_01FNKm1SmPpuJASnbjxWGtsJ(os-elon-musk), 2026-10-02T02:37Z. Checked against the PR's patch,origin/main4e6dc233(packages/core/src/utils/,packages/rest/src/rest-server.ts,packages/spec/src/api/zod-issues-to-fields.ts) and the head's check-runs, not against the report's narrative. Claim 5944325898 · report 5944468304. Default-tier build; a governed ADR line, not a skills face ⇒ this ACCEPT is the seat's review record;Clause-②: noholds.main,Fixes #21107first line,Clause-②: noat line start, 1 file (+1 / −1),skip-changeset+ assigneeos-elon-muskset by the dev, 速读(草稿) five sections, session-URL footer, no model identifier**Consumers**:line ofdocs/adr/0114-field-level-error-code-catalog.mdonly; 108 → 108 lines; the:29–:30table (bare file names, still true) untouched; the card's optional comment-only citations left out, as dispatched@objectstack/rest(import-coerce.ts,import-runner.ts,zodIssuesToFields) →@objectstack/core(utils/import-coerce.ts,utils/import-runner.ts),@objectstack/rest(zodIssuesToFields) — both files sit inpackages/core/src/utils/and neither inpackages/rest/src/;zodIssuesToFieldsis defined in@objectstack/spec(api/zod-issues-to-fields.ts:251) and imported, re-exported (rest-server.ts:415–:416) and called 8 times by@objectstack/rest, so it stays under rest99a3307a,--ranreconciled (check:doc-formula-expressionsafter a scoped build offormula+lintunder the verify lock);check-adr-links695 destinations resolve,check-adr-symbol-anchors2166 anchors resolve; CI: 19 success, 10 skipped, 1 in progress (Type Check · workspace), 0 failuremcp_calls0;api_writes3 relay dispatches (pr_create; label-write = labels + assignee; report) + 2 git pushesPremise, as measured: PR #21084's move is not byte-identical after all — the bodies are unchanged but the import specifiers were rewritten (+4 / −5 and +3 / −4); the card's 「byte-identical」 and the dispatch's assumption 1 are corrected here. It does not touch the edit.
Deviations accepted: the scoped build before gate 9; the model-free trailer pair; worktree removed after the PR opened (clean, HEAD = remote).
Noted, not filed: ADR-0104
:41and ADR-0112:77namepackages/rest/src/import-coerce.tsinside their## Contextsections — accurate for their dates; ADR-0114's@objectstack/specentry does not nameapi/zod-issues-to-fields.ts(the rest entry stays true); the card's comment-only old-path citations (objectqlsrc/engine.ts/src/index.ts/src/summary-errors.ts+ 3 tests, metadata-protocolsrc/protocol.ts, qa/dogfood,scripts/check-react-page-adapter-contract.mjs; 3 CHANGELOGs release-owned) —carrier: none, the next PR touching each file. Acceptance notes.Landing (Tier H,
docs/adr/**): the four-piece goes on the PR in this stroke —needs-user-decision, the final 维护者速读, review requested fromos-zhuangandhotlong, assignee already set. After an APPROVED review by either and every check green on the landing head, the seat relayspr_ready+automerge_enable, confirms MERGED, andFixescloses this card.objectstack-fleet commentedon Oct 2, 2026
Landed — skills seat 1,
session_01FNKm1SmPpuJASnbjxWGtsJ(os-elon-musk), 2026-10-02T03:08Z.PR #21298 MERGED through the queue at 2026-10-02T03:03Z as
4e530568— Tier H (docs/adr/**): os-zhuang's APPROVED review (2026-10-02T02:40Z) and his own ready / auto-merge / enqueue, so the seat's landing stroke was not needed; ACCEPT 5944576421 on99a3307ais the record. Confirmed onorigin/mainby content: ADR-0114's**Consumers**:line names@objectstack/core(utils/import-coerce.ts,utils/import-runner.ts) and keepszodIssuesToFieldsunder@objectstack/rest.Fixes #21107closed this card;pm:dispatched, the assignee and the PR'sneeds-user-decisionare stripped in this stroke.docs(adr-0114): repoint the consumer line at @objectstack/core for th…