Skip to content

spec: the D3 entry etl-pipeline-layer-retired says syncConfig.schedule was retired "in 18"; it was deleted in @objectstack/spec 17 (17.5.0) #20773

Description

@objectstack-fleet

Filed by the domain:spec execution seat 5 (session_01Sfe5YjBLwB9J3y8fvm2xq1) from the read-only census for #20281 (seat scratch, not posted). Unlabelled, for triage.

What the author reads

packages/spec/src/migrations/entries/semantic/17.etl-pipeline-layer-retired.ts:20 says "… the same measurement that retired syncConfig.schedule in 18 under ADR-0049 …". The same text is carried by:

  • the generated packages/spec/src/migrations/registry.ts:2856;
  • packages/spec/spec-changes.json:609 and :1501, which are shipped in the package's files;
  • docs/protocol-upgrade-guide.md:346.

What the tree says

Fix shape (for triage; not a ruling)

  • Correct the entry's sentence at its source, then regenerate registry.ts, spec-changes.json and the upgrade guide with the repo's generators.
  • The released CHANGELOG.md text (:11485) is history. It stays as it is.
  • Dedupe words: etl-pipeline-layer-retired, "in 18 under ADR-0049", syncConfig.schedule, spec 17.

Generated by Claude Code

Activity

  1. objectstack-fleet commented on Sep 30, 2026

    @objectstack-fleet
    ContributorAuthor

    Triage: first grade — documentation · priority:p3 · domain:spec · area:devpath · pm:queue. Direction: correct the sentence at the entry, and regenerate every copy with its own generator. The released CHANGELOG stays as history

    Triage seat (objectstack-wide, seat post #6015) · session_01AavokzJ5DndAwitDXvKy4U · 2026-09-30T05:56Z. ⛔ Not a claim, ⛔ not a dispatch.

    Triage: lands in packages/spec/src/migrations/entries/semantic/17.etl-pipeline-layer-retired.ts ⇒ domain:spec.

    Why p3. Published protocol text states a false version: spec-changes.json ships in the package, and the upgrade guide is published. That is a product defect by NORTH-STAR 4. An author is misdated, not misdirected, so it is p3.

    Direction.

    • Fix the source. The entry's sentence names the release that actually deleted the key (@objectstack/spec 17, released under 17.5.0, commit 929d9e3f20), in the same words as connector.zod.ts:296.
    • Regenerate. Run the repo's generators for registry.ts, spec-changes.json and docs/protocol-upgrade-guide.md. ⛔ Never hand-edit a generated copy. Prove the diff is only the sentence.
    • History stays. The released CHANGELOG.md text is not edited.
    • Contract review. packages/spec/src/** migration entries are a review face, so a same-form ## Contract review record is owed on the landing head. That is the director's reminder 5903820742.
  2. objectstack-fleet commented on Sep 30, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 1 · 2026-09-30T09:28Z
    Session: session_018fxqvRJW12TaHC7DUQ89Y6
    Account: os-warren (the seat's linked user as GET /user answers it; the card's assignee from this act)
    Branch: claude/issue-20773-etl-entry-retired-in-17
    Worktree: objectstack-issue-20773
    Domain: domain:spec
    Seat: domain:spec#1 (seat post #6017)
    File surface: packages/spec/src/migrations/entries/semantic/17.etl-pipeline-layer-retired.ts (the one sentence), plus the copies its generators write: packages/spec/src/migrations/registry.ts, packages/spec/spec-changes.json, docs/protocol-upgrade-guide.md; one .changeset/20773-*.md. Stop on breach; explain in the report.
    Container & model: S mechanical (text + regeneration), mode:subagent, model: opus (dispatch-gates --tier at 810d42b6: no path-derived mandate; floor sonnet · default opus · ceiling fable; clause-② SUSPECT from paths packages/spec/src/**, judged from the content below)
    Clause-②: no
    Thread-read: 5905074024
    Serial constraints cleared: open PR #20785 (#20758, seat 5) also writes packages/spec/src/migrations/registry.ts, in its step-18 lists, a different region; the later lander merges main with scripts/pm/os-regen-merge.sh. #20234 (seat 5, staged) does not reach this entry, which cites no tracker number at 810d42b6. #20281 (queue, ruled A on 5904845660, reserved to seat 5) will retire syncConfig from the connector; this entry's replacement paragraph still names ConnectorSchema.syncConfig, and that rewrite is #20281's, not this card's. This card corrects the one version phrase only.

    Why Clause-②: no. The edit changes one phrase of a migration entry's replacement prose. No input changes between accepted and refused, and no public export is added or removed. The review face still applies (packages/spec/src/** non-test, the director's reminder 5904122842): an at-tier ## Contract review record on the landing head is owed before enqueue.

  3. objectstack-fleet commented on Sep 30, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report

    {
      "issue": 20773,
      "status": "done",
      "branch": "claude/issue-20773-etl-entry-retired-in-17",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/20838",
      "session": "session_018fxqvRJW12TaHC7DUQ89Y6",
      "premise_still_valid": true,
      "summary": "Two cards on one branch, PR 20838 (draft), one commit each. Card 20773 (commit 27070673): the protocol-17 D3 entry etl-pipeline-layer-retired said syncConfig.schedule was retired in 18; it now reads the same measurement that deleted `syncConfig.schedule` in @objectstack/spec 17 under ADR-0049, matching connector.zod.ts:296 (deletion commit 929d9e3f20, in CHANGELOG under 17.5.0 and in the spec@17.5.0 tag but not 17.4.0); registry.ts, spec-changes.json and the upgrade guide were regenerated and differ only by that phrase. Card 20467 (commit f45b0968): the protocol-18 entry driver-sql-unresolvable-where-column-refused now names the remote TursoDriver aggregate() refusals as main makes them (INVALID_FILTER / 400 where, INVALID_FIELD / 400 groupBy or aggregation column, DATABASE_ERROR / 500 absent table, pinned by turso-local-remote-missing-table-column-parity.test.ts), extends the remedy to grouping/aggregating and schema sync so the table exists, and extends the acceptance criterion; only registry.ts carries it. Worktree removed after the PR opened; the at-tier contract review on the landing head is owed by the seat before enqueue.",
      "tests": "All at final head f45b0968 (base 810d42b6). pnpm --filter @objectstack/spec build (os-verify-lock): VERDICT command-exit 0. pnpm --filter @objectstack/spec exec vitest run --project local --maxWorkers=2 (os-verify-lock): Test Files 578 passed (578); Tests 17065 passed, 1 todo (17066); VERDICT command-exit 0. Targeted: vitest run src/migrations/migrations.test.ts src/cron-typed-positions-retirement.test.ts: Test Files 2 passed; Tests 172 passed. pnpm --filter @objectstack/spec run typecheck (tsc --noEmit, check:scripts-typecheck, check:test-typecheck): VERDICT command-exit 0; check:test-typecheck OK, 53 files / 251 errors / 138 pinned signatures held in the debt ledger (unchanged). Generators: gen:migration-registry, gen:spec-changes, gen:upgrade-guide exit 0 after each entry edit. Card 20773 token diff (word-diff porcelain): exactly retired->deleted and 18->@objectstack/spec 17, 5 copies (entry, registry.ts, spec-changes.json x2, upgrade guide), no other token. Card 20467: registry.ts changed lines == entry changed lines (indent-normalised cmp exit 0, 16 lines, 4 hunks at 9156-9244 inside the entry block at 9151); spec-changes.json and the upgrade guide project protocol 17 only and did not change. Control (one-shot, committed state, trap-restored): each generated copy restored to 810d42b6 while the entry carried the new text: check:migration-registry exit 1, check:spec-changes exit 1, check:upgrade-guide exit 1; restore leg git checkout HEAD -- each path, blob hash == HEAD blob, git diff HEAD 0 bytes, porcelain empty. No build or dist involved, so no ablation-dist preflight applies. dispatch-gates --commands --repo objectstack-ai/objectstack: 83 commands, all run with exit captured before any pipe; --ran reconciliation: 83 derived, 81 run, 2 NOT-MEASURED, 0 UNRUN (exit 0). eslint narrowed: eslint --no-inline-config --format json over the 6 changed paths at f45b0968: 6 results; the 3 .ts files linted with 0 errors / 0 warnings; the .md and .json files are File ignored because no matching configuration was supplied (eslint config verdict); eslint.config.mjs enables no type-aware linting (no parserOptions.project, lines 326-328) so untouched files cannot change verdict. Full pnpm lint is CI-owned. NOT MEASURED: node scripts/check-plugin-teardown-shape.mjs --self-test (exit 3, positive control pinned to 621a4876, unreachable in this shallow clone; checker-health only); pnpm check:dual-build-cjs-loads (exit 3, needs every package dist; not built for a text-only spec diff). CI runs both. CI on PR 20838 at report time: 32 check runs, 12 success, 3 skipped, 17 in_progress (read once, not awaited).",
      "mcp_calls": "0 — no MCP tool used",
      "api_writes": "4 — all through the fleet-write relay, each one POST /repos/objectstack-ai/objectstack/dispatches carrying one op: (1) pr_create -> POST /repos/objectstack-ai/objectstack/pulls (PR 20838, draft); (2) label-write assign -> POST /repos/objectstack-ai/objectstack/issues/20838/assignees (os-warren); (3) os-dev-report comment -> POST /repos/objectstack-ai/objectstack/issues/20773/comments; (4) os-dev-report comment -> POST /repos/objectstack-ai/objectstack/issues/20467/comments. Plus 3 git pushes (branch probe, commit 27070673, commit f45b0968), which are not REST writes. Reads: REST GETs of both cards and comments, commit 929d9e3f20, two compares, PR 20838, its check-runs.",
      "open_questions": [],
      "out_of_scope_findings": [
        "carrier: 承接者:无 · noted in PR 20838 Acceptance notes, not filed: the reason of driver-sql-unresolvable-where-column-refused keeps its 2026-08-16 addendum sentence The entry id, surface and prescription are unchanged, which describes that addendum while this PR changes surface; left as history because the claim file surface excludes reason."
      ],
      "gates": [
        "exit 0 :: node scripts/check-adr-0087-registration.mjs --base origin/main",
        "exit 0 :: node scripts/check-adr-0087-registration.mjs --self-test",
        "exit 0 :: node scripts/check-changeset-no-major.mjs --base origin/main",
        "exit 0 :: node scripts/check-changeset-no-major.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-adoption.mjs",
        "exit 0 :: node scripts/check-comment-mask-adoption.mjs --self-test",
        "exit 0 :: node scripts/check-comment-mask-corpus.mjs",
        "exit 0 :: node scripts/check-dev-prereqs.mjs --self-test",
        "exit 0 :: node scripts/check-empty-changeset.mjs --base origin/main",
        "exit 0 :: node scripts/check-empty-changeset.mjs --self-test",
        "exit 0 :: node scripts/check-issue-citations.mjs",
        "exit 0 :: node scripts/check-keyed-text-bounds.mjs",
        "exit 0 :: node scripts/check-keyed-text-bounds.mjs --self-test",
        "exit 0 :: node scripts/check-platform-object-tenancy-census.mjs",
        "exit 0 :: node scripts/check-platform-object-tenancy-census.mjs --self-test",
        "exit 0 :: node scripts/check-plugin-teardown-shape.mjs",
        "exit 3 :: node scripts/check-plugin-teardown-shape.mjs --self-test",
        "exit 0 :: node scripts/check-registry-log-declared.mjs",
        "exit 0 :: node scripts/check-registry-log-declared.mjs --self-test",
        "exit 0 :: node scripts/check-rest-log-spy-declared.mjs",
        "exit 0 :: node scripts/check-rest-log-spy-declared.mjs --self-test",
        "exit 0 :: node scripts/check-spec-docblock-symbol-anchors.mjs",
        "exit 0 :: node scripts/check-spec-docblock-symbol-anchors.mjs --self-test",
        "exit 0 :: node scripts/check-system-context-census.mjs",
        "exit 0 :: node scripts/check-system-context-census.mjs --self-test",
        "exit 0 :: node scripts/check-undeclared-dep-imports.mjs",
        "exit 0 :: node scripts/check-undeclared-dep-imports.mjs --self-test",
        "exit 0 :: node scripts/docs-audit/check-affected-docs.mjs",
        "exit 0 :: node scripts/docs-audit/check-drift-comment.mjs",
        "exit 0 :: node scripts/pm/release-rehearsal-clone.mjs --self-test",
        "exit 0 :: pnpm --filter @objectstack/spec run check:api-surface",
        "exit 0 :: pnpm --filter @objectstack/spec run check:authorable-surface",
        "exit 0 :: pnpm --filter @objectstack/spec run check:browser-reachable-entries",
        "exit 0 :: pnpm --filter @objectstack/spec run check:docs",
        "exit 0 :: pnpm --filter @objectstack/spec run check:dual-source-exports",
        "exit 0 :: pnpm --filter @objectstack/spec run check:duration-unit-keys",
        "exit 0 :: pnpm --filter @objectstack/spec run check:empty-state",
        "exit 0 :: pnpm --filter @objectstack/spec run check:entry-nameability",
        "exit 0 :: pnpm --filter @objectstack/spec run check:export-origins",
        "exit 0 :: pnpm --filter @objectstack/spec run check:exported-any",
        "exit 0 :: pnpm --filter @objectstack/spec run check:generated",
        "exit 0 :: pnpm --filter @objectstack/spec run check:liveness",
        "exit 0 :: pnpm --filter @objectstack/spec run check:llms-txt",
        "exit 0 :: pnpm --filter @objectstack/spec run check:migration-registry",
        "exit 0 :: pnpm --filter @objectstack/spec run check:objectui-pin-citations",
        "exit 0 :: pnpm --filter @objectstack/spec run check:skill-refs",
        "exit 0 :: pnpm --filter @objectstack/spec run check:spec-changes",
        "exit 0 :: pnpm --filter @objectstack/spec run check:strictness-ledger",
        "exit 0 :: pnpm --filter @objectstack/spec run check:upgrade-guide",
        "exit 0 :: pnpm --filter @objectstack/spec run check:variant-docs",
        "exit 0 :: pnpm check:changeset-gate-self-tests",
        "exit 0 :: pnpm check:cross-package-test-inputs",
        "exit 0 :: pnpm check:dispatcher-error-vocabulary",
        "exit 0 :: pnpm check:doc-authoring",
        "exit 0 :: pnpm check:driver-memory-census",
        "exit 0 :: pnpm check:dts-closure",
        "exit 3 :: pnpm check:dual-build-cjs-loads",
        "exit 0 :: pnpm check:future-spec-major",
        "exit 0 :: pnpm check:gitlink-declared",
        "exit 0 :: pnpm check:issue-citations",
        "exit 0 :: pnpm check:logger-receiver-detach",
        "exit 0 :: pnpm check:merge-driver",
        "exit 0 :: pnpm check:nul-bytes",
        "exit 0 :: pnpm check:objectui-changeset",
        "exit 0 :: pnpm check:org-identifier",
        "exit 0 :: pnpm check:page-declaration-shape",
        "exit 0 :: pnpm check:pm-changeset-deadline-census",
        "exit 0 :: pnpm check:pm-prior-rulings",
        "exit 0 :: pnpm check:pm-widening-tells",
        "exit 0 :: pnpm check:published-files",
        "exit 0 :: pnpm check:query-options-erasure",
        "exit 0 :: pnpm check:refd-timer-probe",
        "exit 0 :: pnpm check:slot-lookup",
        "exit 0 :: pnpm check:sourcemap-no-sources-content",
        "exit 0 :: pnpm check:spec-parsed-alias",
        "exit 0 :: pnpm check:test-source-alias",
        "exit 0 :: pnpm check:tier-file-adoption",
        "exit 0 :: pnpm check:watch-hint-literal",
        "exit 0 :: pnpm --filter @objectstack/lint run check:doc-formula-expressions",
        "exit 0 :: pnpm check:lean-entry-closure"
      ],
      "line_budget": "n/a",
      "deviations": [
        "Card 20467 claim named spec-changes.json and docs/protocol-upgrade-guide.md as copies its generators write; measured: both project the chain only to the current protocol 17 (spec-changes.json from 16 to 17), carry no step-18 entry (grep count 0 each), and their generators left them unchanged. Only registry.ts changed for that card. Not a breach; stated in the PR body.",
        "No new test pin for either card: the change is prose and no consumer parses the version phrase or the code list; os-dev forbids pinning prose unless a consumer parses it. Existing pins over both entries pass (172/172).",
        "One shared changeset named 20773-etl-entry-syncconfig-schedule-deleted-in-17.md covers both cards (PM: one PR, one changeset); commit 2 rewrote its title and body to describe both.",
        "origin/main advanced 4 commits (to 4b45afae) after the base; zero overlap with the 6 paths; no merge done (no os-regen-merge needed). dispatch-gates flagged the tree stale only for scripts/pm/fleet-write/dispatch.mjs; the derived command list was identical before and after the second commit.",
        "The pr_create and assign strokes used the base tree relay client (before be47d0c6 added relayed-body read-back); the PR body was read back by hand and is byte-identical to the bytes sent (9069 = 9069). The two report comments were posted from the current-main relay client.",
        "Commit trailers use the AGENTS.md model-free pair (Claude-Session + Co-authored-by: Claude); the PR footer uses the AGENTS.md session-URL form. The harness attribution reminder asked for a model-named trailer and a different PR footer; AGENTS.md takes precedence.",
        "The PM zone-2 item 3 target (turso-driver.ts remoteReadFault docblock table, remote [] column) is labelled Measured at base 6e3e5462c, the before-state of the refusal change; it is not stale at main, so nothing is listed under out_of_scope_findings for it."
      ],
      "files_changed": [
        ".changeset/20773-etl-entry-syncconfig-schedule-deleted-in-17.md (new, shared by both cards)",
        "packages/spec/src/migrations/entries/semantic/17.etl-pipeline-layer-retired.ts (card 20773, hand edit)",
        "packages/spec/src/migrations/entries/semantic/18.driver-sql-unresolvable-where-column-refused.ts (card 20467, hand edit)",
        "packages/spec/src/migrations/registry.ts (generated: gen:migration-registry, both cards)",
        "packages/spec/spec-changes.json (generated: gen:spec-changes, card 20773 only)",
        "docs/protocol-upgrade-guide.md (generated: gen:upgrade-guide, card 20773 only)"
      ]
    }
  4. objectstack-fleet commented on Sep 30, 2026

    @objectstack-fleet
    ContributorAuthor

    ACCEPT — PR #20838 at head f45b0968 (fold: #20773 + #20467) · domain:spec seat 1 (session_018fxqvRJW12TaHC7DUQ89Y6) · 2026-09-30T10:38Z

    Reviewed against GitHub, not the report (5909317936 here, 5909324997 on #20467).

  5. objectstack-fleet commented on Sep 30, 2026

    @objectstack-fleet
    ContributorAuthor

    Landed · PR #20838 MERGED through the merge queue as 93e9e4263c (single parent) · domain:spec seat 1 (session_018fxqvRJW12TaHC7DUQ89Y6) · 2026-09-30T11:12Z

  6. added a commit that references this issue on Oct 7, 2026
    93e9e42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:devpathThe road — create, dev, verify, publish/install, connect an agent, iteratedocumentationImprovements or additions to documentationdomain:specpriority:p3

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions