Skip to content
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
This repository was archived by the owner on Nov 4, 2026. It is now read-only.

retire the unimplemented async-export path (useExportJob, ExportProgressDialog, DataSource.createExportJob / getExportJobProgress, the export-job type re-exports) — objectstack#17158 ruling A lands after it #10247

Closed

Description

@objectstack-fleet

Filing gate ③: a ruled task. Director seat, summon #29 (session_01EcrTi7s5oDYPHS4Pi7h31d), executing objectstack#17158 batch #221 item 2, letter A: the objectui side goes first, and it retires the path rather than re-declaring the types locally. Maintainer verbatim: 「同意」. ⛔ Not a claim.

Why

objectstack#17158 (ruling A, batch #122) retires the export-job API contract family from @objectstack/spec: no server serves POST /api/v1/data/export/… and IExportService has no provider. The spec dev stopped (objectstack 5809956647) because objectui imports three of its types, ExportJobStatus, CreateExportJobInput and CreateExportJobResult, in packages/types/src/data.ts and re-exports them from @object-ui/types. Post-Task Checklist step 4 forbids shipping a removal that a pinned sibling still references.

Protocol first: a capability the protocol does not carry is deleted from the consumer, not kept alive with a local copy of its types. Read on objectui origin/main: no DataSource implements createExportJob, so this path has never run. Runtime impact: none.

Deliverable

  • Remove useExportJob (packages/components/src/hooks/use-export-job.ts, and its export at packages/components/src/index.ts), ExportProgressDialog (packages/components/src/custom/export-progress-dialog.tsx), and their tests and fixtures, including the ExportProgressDialog case in displayLocale-9909.test.tsx.
  • Remove the optional createExportJob / getExportJobProgress members from DataSource in packages/types/src/data.ts, the export-job types there (ExportJobStatus, ExportJobFormat, CreateExportJobRequest, CreateExportJobResult, ExportJobProgressInfo), and their re-exports in packages/types/src/index.ts, plus any zod mirror of them.
  • A changeset with a BREAKING banner: public exports of @object-ui/types and @object-ui/components leave. Out-of-repo implementers are NOT MEASURED.
  • A census with a lit control: after the change, git grep -E 'ExportJob|createExportJob|getExportJobProgress' -- packages apps ':!**/CHANGELOG.md' returns 0 files. ⛔ The synchronous export path (CSV/Excel from the grid) is out of scope and must still work.

Unblocks

objectstack#17158: once this merges and the objectui SHA carrying it is installable, spec retires the whole family plus ScheduleState and bumps .objectui-sha in the same PR.


Generated by Claude Code

Activity

  1. objectstack-fleet commented on Sep 24, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 1 — domain:ui execution seat
    Session: session_01BA3nKVUwKQJf8DBxrSVtNC
    Branch: claude/issue-10247-retire-export-job-path
    Worktree: objectui-issue-10247
    Domain: domain:ui
    Seat: domain:ui#1
    File surface: packages/components/src/hooks/use-export-job.ts, packages/components/src/custom/export-progress-dialog.tsx, packages/components/src/index.ts, their tests and fixtures (including packages/components/src/__tests__/displayLocale-9909.test.tsx), packages/types/src/data.ts, packages/types/src/index.ts, the export-job rows in packages/types/src/__tests__/page-nav-misc-spec-parity.test.ts and spec-derived-unions.test.ts, any zod mirror of the removed types, one .changeset/10247-…md (stop on breach; explain in the report)
    Container & model: M, mode:subagent, model: opus (default judgement tier) — dispatch-gates.mjs refuses for this repo from the objectstack checkout ⇒ no path-derived mandate; tier is this seat's judgement.
    Clause-②: no
    Thread-read: none
    Serial constraints cleared: every open PR's file list read 2026-09-24T13:51Z (objectui#10256, #10255, #10253, #10252, #10251, #10249, #10248, #10246, #10169, #9488, #9391, #8941) ⇒ none touches a file above. The census git grep -l -E 'ExportJob|createExportJob|getExportJobProgress' origin/main -- packages apps ':!**/CHANGELOG.md' at 6f96fca9 names 8 files, all inside this surface.

    Scope

    The card's deliverable as written by the director seat (objectstack#17158 batch #221 item 2, letter A, maintainer 「同意」): retire the path, ⛔ no local re-declaration. The synchronous grid export stays working. ⇒ Fixes #10247.

    Why Clause-②: no

    It removes published exports and optional DataSource members. It widens no acceptance set and adds no export. The BREAKING changeset is prose on a review face, so a contract review is still owed before enqueue.

    domain:ui seat #1 · session_01BA3nKVUwKQJf8DBxrSVtNC · claim · 2026-09-24T13:52Z

  2. objectstack-fleet commented on Sep 24, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report
    {
    "issue": 10247,
    "status": "done",
    "branch": "claude/issue-10247-retire-export-job-path",
    "pr": "#10264",
    "head_sha": "f618634c81938f2dc04476c60f4bcf4ee3dbe6a1",
    "session": "session_01BA3nKVUwKQJf8DBxrSVtNC (subagent: the parent PM session's id)",
    "premise_still_valid": true,
    "summary": "Retired the async export-job path per ruling letter A on objectstack#17158 (retire, no local re-declaration). @object-ui/components: deleted hooks/use-export-job.ts (useExportJob, UseExportJobOptions, UseExportJobReturn) and custom/export-progress-dialog.tsx (ExportProgressDialog, ExportProgressDialogProps), plus their barrel lines. @object-ui/types: data.ts lost the four optional DataSource members createExportJob, getExportJobProgress, cancelExportJob and getExportJobDownloadUrl, the five types ExportJobStatus, ExportJobFormat, CreateExportJobRequest, CreateExportJobResult and ExportJobProgressInfo, and their spec imports; index.ts lost the five re-exports; there was no zod mirror. Tests: the ExportProgressDialog case and its job fixture left displayLocale-9909.test.tsx (the DebugPanel case stays); the three export-job rows in page-nav-misc-spec-parity.test.ts and the export-status covers row (plus its void reference) in spec-derived-unions.test.ts went with their types; the rows pinning surviving exports stay (ImportRowResult, ImportWriteMode, ImportJobStatus, ValidationError). Changeset .changeset/10247-retire-async-export-job-path.md: minor for types and components, BREAKING banner, out-of-repo implementers NOT MEASURED. Census 8 files at base d7de534, 0 at head f618634, lit control 17; the ablation turned it red and the restore was proven. The synchronous grid export tests are green. Draft PR #10264 is open; CI in_progress when read (42 check runs: 14 success, 3 skipped, 25 in_progress, 0 failed). Assignee untouched. The only labels are labeler.yml path labels; I made zero label writes.",
    "premise_checks": {
    "census": "Re-run at base d7de534, not 6f96fca: origin/main had moved by the time the worktree was cut. It names the same 8 files the seat listed. The two packages/types spec-parity hits pinned the removed types (CreateExportJobRequest x3 cases + CreateExportJobResult in page-nav-misc-spec-parity; the ExportJobStatus covers row in spec-derived-unions), so those rows went. The ImportRowResult case in the same describe block stays; the block was renamed 'import job types derive from the spec contracts'. No assertion on a surviving export was deleted.",
    "datasource_implementations": "Population: every non-md file under packages/, apps/ and examples/ writing 'implements DataSource', ': DataSource =', 'as DataSource' or 'satisfies DataSource', read at d7de534. That is 78 files: the five classes ApiDataSource and ValueDataSource (core), ObjectStackAdapter (data-objectstack), MockDataSource (runner) and RestDataSource (types/examples), plus the test doubles. Files naming createExportJob|getExportJobProgress|cancelExportJob|getExportJobDownloadUrl: 1, packages/types/src/data.ts, which is the declaration itself. Lit control, exportDownload on the same population: 3 files (data-objectstack/src/index.ts, plugin-list ListView.test.tsx, data.ts). The premise holds: no DataSource implemented the family.",
    "census_lit_control": "The census.sh wrapper runs the card's command. base d7de534: 8 files, git-grep exit 0. HEAD f618634: 0 files, exit 1. Working tree: 0. merge-tree of HEAD with current main fa5fbd9: clean, exit 0, census 0 on the merged tree. Control at HEAD with the same roots and pathspec, pattern ImportJobStatus|exportDownload: 17 files.",
    "i18n": "No key moves. The deleted dialog and hook made no translation calls: 0 hits for t( / useTranslation / useObjectTranslation / createSafeTranslation in either file at base. Control, same pattern over packages/components/src/custom at base: it hits RecordTitleChip.tsx, character-count.tsx, config-panel-renderer.tsx and others. check:i18n-keys, check:i18n-drift and check:i18n-dead-keys are all exit 0."
    },
    "tests": "All at HEAD f618634. Heavy runs went through os-verify-lock, slot issue-10247-dev. (1) pnpm turbo run type-check --filter=@object-ui/types --filter=@object-ui/components: first run exit 2, TS2552 '_exportStatusCovers' (a leftover void of the removed pin); fixed in the second commit, then 10/10 tasks, VERDICT command-exit 0. Re-run at HEAD: 10/10, 9 cached at identical input hashes. tsc --listFiles confirms tsconfig.test.json compiles both parity tests (2) and displayLocale-9909.test.tsx (1). (2) Consumers: pnpm turbo run type-check for core, data-objectstack, runner, plugin-grid and plugin-list: 21/21 tasks, VERDICT command-exit 0. (3) Reverse type probe against the rebuilt dist, a throwaway plugin-grid/probe-10247.ts deleted by trap: TS2724 ExportJobStatus, TS2305 CreateExportJobRequest / useExportJob / ExportProgressDialog, TS2551 ds.createExportJob; the controls ImportJobStatus, ExportDownloadRequest, useIsMobile and ds.exportDownload compiled. (4) From the repo root: pnpm exec vitest run packages/types/ gave 213 files / 4916 tests passed. packages/components/ gave 287 files / 2783 passed (lock held 9m05s). The three touched files, verbose: 3 files / 61 passed. (5) Sync export path: plugin-grid exportGate / exportServer / ObjectGrid.exportOptionsKeys, data-objectstack exportDownload.test.ts, plugin-list ListView.exportMatchesView, core export-filename: 6 files / 55 tests passed. (6) OBJECTUI_DIST_PINS=1 vitest --project dist: 2 files / 8 passed. (7) Gates, all exit 0: check:control-bytes, check:new-line-citations (VERDICT 0 new), node scripts/check-changeset-presence.mjs (9 source files of 2 released packages, 1 changeset), changeset:check (fixed group, no major), check:i18n-keys, check:i18n-drift, check:i18n-dead-keys, check:pending-changeset-literals, check:changeset-claims (report-only; it names 4 pending changesets that cite touched files: 5213, 6051, 9309, i18nlabel-inverted-pin-5612; I read each paragraph and all still hold), check:spec-symbols, check:unreferenced-sources, check:unused-deps, check:phantom-deps, check:side-effects-array, check:esm-specifiers, check:self-import, check:test-path-roots, check:component-surface-parity (report-only), check-governed-queue-guard --test on all 10 paths (NOT GOVERNED). (8) Lint, narrowed and proven. Population: eslint --print-config resolves a config for all 7 changed ts/tsx files, run from each package dir because both lint with 'eslint .'. Count: eslint --format json gives 7 files, 0 errors; the 27 warnings are all pre-existing no-explicit-any in data.ts, and base data.ts linted via --stdin also has 27. Invariance: parserOptions is empty (no project / projectService), so linting is not type-aware, and no enabled rule reads other files; the only importers of the two deleted modules were in the linted set. (9) Ablation: /home/user/objectstack/scripts/ablation-replace.mjs in wrap mode, fix committed first, outer trap 'git checkout HEAD -- ABS_PATH'. It re-planted 'ExportJobStatus,' into the packages/types/src/index.ts re-export block (anchor 1 to 0, blob 0807e274 to 8794e110). The census went RED: 1 file (packages/types/src/index.ts), exit 1. The restore was proven: blob after restore == HEAD 0807e274, git diff HEAD empty, grep -c ExportJobStatus 0. The FIRST attempt was a no-op: the tool refused it because the replacement contained the anchor (the tool reported the anchor count moved 1 to 1), restored the file (blob == HEAD) and never ran the census. I re-anchored on a two-line literal the replacement consumes. No dist leg is needed: the census is a text grep. NOT MEASURED: check:readme-exports, reason PREREQUISITE NOT MET (whole-tree build; 358 self-imports unjudgeable, packagesRead 16 below floor 25; in the judged part 186 real, 0 wrong-path, 0 fabricated; a whole-tree grep finds no README naming a removed symbol). NOT MEASURED: type-check of the other consumers (app-shell, console, fields, other plugins), reason: declared to CI's Type Check; the census reads zero, so no file under packages/ or apps/ spells a removed name. NOT MEASURED: full pnpm lint / pnpm test farm (CI) and out-of-repo implementers.",
    "mcp_calls": "0",
    "api_writes": "2 relay writes + git push. (1) node scripts/pm/fleet-write/dispatch.mjs (auto route: dispatch) sent POST /repos/objectstack-ai/objectstack/dispatches (HTTP 204); fleet-write run 36013086174 concluded success, carrying POST /repos/objectstack-ai/objectui/pulls (draft), which created PR #10264 as objectstack-fleet[bot]. The body read back byte-identical (cmp exit 0, 9926 bytes). (2) This os-dev-report comment on #10247, via scripts/pm/post-stamped.mjs (relay). git push, not REST: the empty-branch probe, then commits e409f23 and f618634. Zero label, assignee, ready, auto-merge or PATCH writes.",
    "deviations": [
    "File surface: packages/components/src/custom/index.ts is outside the claim's surface. It holds the only barrel line of the deleted dialog (export * from './export-progress-dialog'), so the component the binding deliverable names cannot be deleted without it and still compile. The claim's surface came from the census regex, which matches ExportJob tokens and cannot see a module path. Before editing I re-read the fence over REST: 0 of 12 open PRs touch the file; release PR #5400 was paged in full, 1732 files, 0 under src/. The hunk is 1 line, and the PR body names it with this evidence. PM action owed: add this path to the claim's file surface. I did not stop, because the dispatch runbook defines the surface as the expected landing, to be reported where measurement moves it, and the binding Zone 1 deliverable cannot be met without this line.",
    "packages/components/src/index.ts: the hunk is the hook's two export statements, the value export and the type export from ./hooks/use-export-job. The dispatch said 'the one export line'; the module had two.",
    "The card names only createExportJob / getExportJobProgress. cancelExportJob and getExportJobDownloadUrl went too: the census regex matches the ExportJob substring, so a zero requires them. They are the same family and useExportJob was their only reader.",
    "The exportDownload docblock in data.ts dropped its contrast with the removed family: 'Unlike the async createExportJob family, this resolves' became 'It resolves'. The census required it.",
    "No merge of main into the branch. git merge-tree against main fa5fbd9 is clean and the 4 commits landed since base touch none of these files, so the local verification is not re-run on a merged head."
    ],
    "open_questions": [],
    "out_of_scope_findings": [
    "noted, not filed · ROADMAP.md (repo root, outside the census roots and the claim surface) still names ExportJobStatus / CreateExportJobRequest in two table rows and in an unchecked item to integrate them for async streaming exports. Once objectstack#17158 lands, the protocol no longer carries what the item would integrate. Not class a/b/c (a roadmap row, not a runnable example or a declared contract). Recorded in the PR's Acceptance notes. carrier: 承接者:无"
    ],
    "cleanup": "Worktree /home/user/objectui-issue-10247: removed node_modules, then git worktree remove without --force, exit 0 (tree clean, branch head f618634 on the remote). The private fetch ref refs/issue-10247/main was deleted. The reverse-probe file was removed by its trap (ls: no such file). No dev server, watcher or background monitor was started."
    }

  3. objectstack-fleet commented on Sep 24, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report
    {
    "issue": 10247,
    "round": 2,
    "answering": "contract review 5816362049 (VERDICT FAIL, prose only) at f618634",
    "status": "done",
    "branch": "claude/issue-10247-retire-export-job-path",
    "pr": "#10264",
    "head_sha": "70770e744735a38d17de86de471e98840dc4b9df",
    "commits_this_round": [
    "56ac534a docs(changeset,architecture): the two prose fixes",
    "70770e74 merge commit of origin/main 4ab4f1b (no rebase); parents 56ac534 and 4ab4f1b"
    ],
    "session": "session_01BA3nKVUwKQJf8DBxrSVtNC (subagent: the parent PM session's id)",
    "premise_still_valid": true,
    "summary": "Both prose defects are fixed and main is merged in; no code changed this round. The changeset now describes the real sequence: @objectstack/spec still exports the export-job contracts and IExportService, and objectstack#17158 retires them after this lands. docs/ARCHITECTURE.md no longer lists an export job family among DataSource's optional members. The census reads 0 on the merged head and the lit control reads 17. check:doc-snippets ran locally and is green. check:readme-exports, NOT MEASURED in round 1, is now measured green. CI on 70770e7, read once: 43 check runs, 40 success, 3 skipped, 0 failed.",
    "fixes": {
    "1_changeset": "Verified the premise first. At objectstack main 9bfbacbf, packages/spec/src/api/export.zod.ts still exports ExportJobStatus (const and type) and CreateExportJobRequestSchema, and packages/spec/src/contracts/export-service.ts still declares IExportService, CreateExportJobInput and CreateExportJobResult (REST contents reads, ref=main). objectstack#17158 is still open. The false sentence was replaced with the seat's wording: 'There is no replacement API: nothing serves the spec's export-job contracts and IExportService has no provider; objectstack#17158 (ruling A) retires them from @objectstack/spec after this lands.' I re-read the rest of the changeset against that fact, and one more sentence changed. The Why paragraph said the ruling 'retires the export-job API contract family from @objectstack/spec' in the present tense. It now says the ruling 'decided to retire' the family, that it sequences objectui first, and that the spec-side retirement comes after this change: 'until it lands, @objectstack/spec still exports the export-job contracts.' I also narrowed one clause for accuracy: 'Code that imports any name above' became 'Code that imports any name above from @object-ui/types or @object-ui/components', because a host can still import ExportJobStatus from the spec until objectstack#17158 lands. All other sentences are unchanged: the What-left list, the no-zod-mirror line, the d7de534 measurement paragraph, the synchronous-path paragraph and the minor-not-major line.",
    "2_architecture": "In the compiled MinimalDataSource snippet under 'Custom Data Source Interface', the comment line naming 'the import/export job family' now reads 'bulk, getView, aggregate, exportDownload, the import-job family — is optional'. That is a one-line diff. Before choosing the words I enumerated DataSource's members at the head. It has 34 members: 6 required and 28 optional. The optional export member is exportDownload. The optional job family is import-only: createImportJob, getImportJobProgress, getImportJobResults, listImportJobs, cancelImportJob and undoImportJob. The optional importRecords is the synchronous import. Every name the comment lists is optional. check:doc-snippets at 70770e7 was run locally; the prerequisite build was feasible. First the gate's own closure was built under the lock: pnpm exec turbo run build $(node scripts/check-doc-snippet-types.mjs --build-filter) --concurrency=2, 35/35 tasks, VERDICT command-exit 0, 3m12s. Then node scripts/check-doc-snippet-types.mjs exited 0: 249 documents scanned, 245 covered, 828 covered blocks, and 'Semantic phase: 672 of 672 block(s) judged, 0 failed'. Its controls were lit: resolution to packages/types/dist/index.d.ts, the TS2305 sentinel, and the BaseSchema positive. docs/ARCHITECTURE.md is covered: it is a top-level file under ROOT_DOCS 'docs', not named in UNGATED_DOCS, and the snippet is a tsx block.",
    "3_merge": "git fetch origin main into the private ref refs/issue-10247/main, which resolved to 4ab4f1b, 12 commits ahead of f618634. It was merged with git merge --no-ff as merge commit 70770e7. The merge was clean with no conflicts and no lockfile change. main brought changes inside packages/types and packages/components (data-display.ts, field-types.ts, objectql.ts, zod/objectql.zod.ts, data-table.tsx and tests), so both suites were re-run on the merged head. Pushed f618634..70770e7. The remote head reads 70770e7 (ls-remote).",
    "4_census_on_merged_head": "The card's command (census.sh): merged head 70770e7 gives 0 files, git-grep exit 1. Base d7de534 gives 8. main 4ab4f1b without this branch gives 8, so main added no new reference. Lit control at 70770e7, same roots and pathspec, ImportJobStatus|exportDownload: 17 files. DataSource-implementer population at 70770e7: 78 files; the four family names hit 0; the exportDownload control hits 3. Whole-tree leftovers at the head, CHANGELOGs excluded: the new changeset (which must name them) and ROADMAP.md only."
    },
    "tests": "All at HEAD 70770e7, tree clean. Heavy runs went through os-verify-lock, slot issue-10247-dev. (a) pnpm turbo run type-check for types, components, core, data-objectstack, runner, plugin-grid and plugin-list: 23/23 tasks (15 cached from the same-head closure build), VERDICT command-exit 0. (b) pnpm exec vitest run from the repo root, split in two to stay under the foreground cap. Run 1, packages/types/ plus components renderers/, ui/ and notifications/: 332 files / 6050 tests passed. Run 2, packages/components/src/tests/: 169 passed and 1 skipped (170), 1656 tests passed and 7 skipped. The two runs cover every components test file (170+115+2+1 by git ls-files). The one skipped file and 7 skipped tests are not in this diff. (c) Sync export (plugin-grid exportGate / exportServer / ObjectGrid.exportOptionsKeys, data-objectstack exportDownload, plugin-list ListView.exportMatchesView, core export-filename): 6 files / 55 passed. (d) OBJECTUI_DIST_PINS=1 vitest --project dist: 2 files / 8 passed. (e) check:doc-snippets as above: 672/672 judged, 0 failed. (f) Gates, all exit 0 at 70770e7: check:control-bytes, check:new-line-citations (VERDICT 0 new), check-changeset-presence (merge-base 4ab4f1b; 9 source files of 2 released packages, 1 changeset), changeset:check, check:changeset-claims (born-false reading 'nothing to judge', no line addresses; self-contradiction clean; the same 4 pending changesets as round 1, all still true, none names docs/ARCHITECTURE.md), check:pending-changeset-literals, check:i18n-keys, check:i18n-drift, check-doc-component-types, check-prompt-component-keys, check:doc-fences, check-doc-example-ids, check-doc-links, check-shell-escape-residue, check:spec-symbols, check:doc-example-readers, and governed --test on docs/ARCHITECTURE.md and the changeset (NOT GOVERNED). (g) check:readme-exports: exit 0, with 544 of 544 self-imports judged and 544 real (the doc-snippet closure build made them judgeable). The round-1 NOT MEASURED is closed. Not re-run this round, because no code changed in this round's commits: the ablation (a proof about the census instrument, done at f618634) and the narrowed lint (no ts/tsx file changed in 56ac534; the merge brought main's already-linted files).",
    "pr_body_changes_requested": [
    "Surface note: add that the seat accepted the packages/components/src/custom/index.ts line and widened the surface by one line in docs/ARCHITECTURE.md (the snippet comment below).",
    "What this does: add the bullet 'docs/ARCHITECTURE.md: the compiled MinimalDataSource snippet's comment no longer lists an export job family among the optional DataSource members; it names exportDownload and the import-job family.'",
    "Census table: head row f618634 becomes merged head 70770e7 = 0. Replace the merge-tree row with 'main 4ab4f1b without this branch = 8'. The control row becomes 'control at 70770e7 = 17'.",
    "Verification: retitle to 'all at HEAD 70770e7' and use the round-2 numbers: types + components suites 332/6050 plus 170 files (1 skipped)/1656 tests (7 skipped); type-check 23/23; sync export 6/55; dist 2/8; add check:doc-snippets 672/672 and check:readme-exports exit 0.",
    "NOT MEASURED: delete the check:readme-exports bullet (now measured green at 70770e7).",
    "Acceptance notes: replace the 'No merge of main into this branch' bullet with 'origin/main 4ab4f1b was merged into the branch as merge commit 70770e7 (no rebase); the census on the merged head is 0.' Add the ARCHITECTURE line below."
    ],
    "acceptance_note_line": "- docs/ARCHITECTURE.md (Custom Data Source Interface, the compiled MinimalDataSource snippet): its comment listed the import/export job family among DataSource's optional members. It now names exportDownload and the import-job family, which is what DataSource still declares: createImportJob, getImportJobProgress, getImportJobResults, listImportJobs, cancelImportJob and undoImportJob, all optional. It is one comment line; the seat widened the surface for it. check:doc-snippets at 70770e74: 672 of 672 blocks judged, 0 failed.",
    "mcp_calls": "0",
    "api_writes": "1 relay write + git push. (1) This os-dev-report comment on #10247, via scripts/pm/post-stamped.mjs (relay). git push, not REST: f618634..70770e7 (commit 56ac534 and merge commit 70770e7). The PR body was NOT edited; the requested patches are listed above. Zero label, assignee, ready, auto-merge or PATCH writes. The REST reads were the review comment, two objectstack contents files at ref=main, objectstack main's sha, the #17158 state and check-runs.",
    "deviations": [
    "One changeset sentence beyond the one the review named was reworded: the Why paragraph's present-tense 'retires ... from @objectstack/spec'. One clause was narrowed: '... from @object-ui/types or @object-ui/components'. Both follow from the review's own fact, so they are within the 're-read the rest of the changeset' instruction.",
    "The components suite was run in two directory-split invocations (the round-1 single run took 9m05s against the 10-minute foreground cap). The split covers every components test file."
    ],
    "open_questions": [],
    "out_of_scope_findings": [
    "noted, not filed · unchanged from round 1: ROADMAP.md still names ExportJobStatus / CreateExportJobRequest (two table rows and one unchecked item), and its spec-v3.0.9 paragraph mentions 'scheduled export jobs'. It is outside the census roots and the surface, and it is disclosed in the PR's Acceptance notes. carrier: 承接者:无"
    ],
    "cleanup": "Worktree /home/user/objectui-issue-10247 (recreated this round on the existing branch): removed node_modules, then git worktree remove without --force, exit 0 (tree clean, remote head 70770e7). The private ref refs/issue-10247/main was deleted. No dev server, watcher or background monitor was started."
    }

  4. objectstack-fleet commented on Sep 24, 2026

    @objectstack-fleet
    ContributorAuthor

    ✅ ACCEPT — PR objectui#10264 at 70770e74 · entering the merge queue

    domain:ui seat #1, session_01BA3nKVUwKQJf8DBxrSVtNC. I read the round-1 report 5816144755 and the round-2 report 5817498166 in full, and reviewed both against the diff, the tree and CI.

    Implemented-by:  claude/issue-10247-retire-export-job-path
    Reviewed-by:     session_01BA3nKVUwKQJf8DBxrSVtNC
    
    item reading
    shape draft · base main · Fixes #10247 · Clause-②: no at line start
    the change Ruling A on objectstack#17158: the async export-job path is retired, not re-declared. useExportJob, ExportProgressDialog, the four optional DataSource export-job members and the five export-job types leave @object-ui/components / @object-ui/types, and there was no zod mirror. The synchronous exportDownload path is unchanged, and its 6 test files / 55 tests are green
    census 8 files at base → 0 at head; lit control 17; the ablation turned it red and the restore was proven
    surface widened by the seat: packages/components/src/custom/index.ts (the dialog's only barrel line) and one comment line in docs/ARCHITECTURE.md
    changeset minor with a BREAKING banner (objectui's no-major convention). It states the real sequence: the spec still exports the contracts until objectstack#17158 lands after this
    review-tier records FAIL at f618634c (5816362049, prose only) → PASS at 70770e74, posted on the PR
    CI 43 terminal: 40 success, 3 skipped by design · governed-queue guard ⇒ NOT GOVERNED

    Unblocks

    objectstack#17158: once this merges and the objectui SHA carrying it is installable, the spec half retires the family and bumps .objectui-sha, per the card body.

    Out of scope

    • Acceptance notes: ROADMAP.md still names ExportJobStatus / CreateExportJobRequest in two table rows and one unchecked item. It is outside the census roots; disclosed, not filed.

    domain:ui seat #1 · review · 2026-09-24T16:09Z

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

    domain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seatpriority:p2

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions