Skip to content

retire the zero-consumer surface: nine dead modules (2,211 LOC), plugin-ai, runner's publish flag, test-only reset helpers on public barrels, the providers trio, 122 dead i18n keys, root orphans #25921

Open

Description

@os-zhuang

Ruled (plugin-ai): 6398569691 · letter A · 2026-10-25T13:58:53Z (retire @object-ui/plugin-ai: package, locale ai.* block, fixed-group entry, types/zod mirrors tombstoned; minor changeset with a breaking note)

维护者速读

一批每项都是 S、合起来可观的退役:9 个整文件模块共 2,211 行只有自己的 barrel 引用;@object-ui/plugin-ai 发布着却没有任何加载者(console 的 register-plugins.ts 不含它);runner 是无入口的 Vite 应用却 private: false 且在 fixed 发版组;公共 barrel 上有 9 个 reset*ForTesting 类助手;@object-ui/providers 与 @object-ui/react 同名的 provider 三件套只有一个示例在用;check-i18n-dead-keys 报告 122 个 CONFIRMED 死键(×10 语种);根目录若干孤儿。按 objectui#11608→#11616(PartialSchema)先例逐包一个 ! changeset。不加新门禁。

Measured (2026-10-24, HEAD 7981384; every absence claim ran with a positive control, SchemaRenderer 1,030 hits / plugin-map 144 files)

  • Whole modules with zero consumers outside the package AND zero in-package importers (only the barrel line): core/src/builder/schema-builder.ts 451 LOC, core/src/protocols/DndProtocol.ts 237, KeyboardProtocol.ts 222, SharingProtocol.ts 212 (their names appear only inside comments in types/src/index.ts), react/src/hooks/useFocusManagement.ts 248, useFocusTrap.ts 138, usePageTransition.ts 187, useSchemaPersistence.ts 373, collaboration/src/LiveCursors.tsx 143 — total 2,211 LOC. Repo-wide barrel census: 1,422 of 3,578 exported names have zero non-test code consumers outside their package (636 value exports, 402 of those also undocumented); worst ratios plugin-gantt 22/35, plugin-designer 16/38, collaboration 19/40, mobile 18/51.
  • @object-ui/plugin-ai (736 LOC; registers ai-form-assist, ai-recommendations, nl-query): 0 source importers; absent from apps/console/src/register-plugins.ts and apps/console/vite.config.ts; owns an ai.* block in every locale pack (26 lines in en.ts); listed in .changeset/config.json's fixed group.
  • packages/runner: a Vite app (main.tsx, App.tsx, no barrel), private: false, no main / exports, in the fixed release group; packages/cli/src/__tests__/workspace-vite.test.ts asserts it is not aliased.
  • Test-only helpers on public barrels with 0 non-test consumers: resetColumnIdentityWarnings, resetRetiredSortSpellingReports, resetActionKeyWarnings, resetDashboardFilterWarnings, resetReferenceKeyWarnings (core), resetRuntimeConfigForTesting (app-shell), resetInflightGetsForTesting (types), __clearRecordEditableCache (plugin-detail), clearSharedDiscoveryCache (data-objectstack).
  • @object-ui/providers exports DataSourceProvider, MetadataProvider, ThemeProvider (+hooks), the same six names @object-ui/react exports with different implementations; the providers trio's only non-test importer is examples/byo-backend-console/src/App.tsx (react's: 21 files); one-authority-per-exported-name-6273.test.ts carries hand-written exemptions for the collision. Its real content is UploadProvider (450 of 617 LOC; fields 11 sites) and createObjectStackUploadAdapter — fetch logic outside data-*, against AGENTS §3.
  • node scripts/check-i18n-dead-keys.mjs prints "391 candidate(s) … 122 CONFIRMED (no textual footprint anywhere else in the repo either), 269 NEEDS-REVIEW" (e.g. appDesigner.* 20 keys, preview.changes.typeCount.* 22); the script is wired to no workflow.
  • Root / config orphans: scripts/eval-console.mjs (hard-coded /Users/zhuangjianguo/.copilot/... output path) and scripts/release-bump.cjs referenced by nothing; paseo.json (0 references; its setup teaches pnpm i against the frozen-lockfile rule); typedoc.json + typedoc devDep + docs:api (no workflow); lazy-test.mjs (only an exemption glob in check-lint-rule-coverage.mjs); playwright.import-harness.config.ts and playwright.import-console.config.ts (1 spec each, no workflow); msw declared in root, plugin-form, plugin-grid with 0 imports plus public/mockServiceWorker.js; apps/console devDeps @dnd-kit/core|sortable|utilities and autoprefixer with 0 references; docs/CONSOLE-STREAMLINING-SUMMARY.md names two packages that do not exist (@object-ui/routing, @object-ui/console-components).

Recommendation (each S; one PR per package or group)

  • Delete the nine modules and their barrel lines (one ! changeset per package); then the per-package zero-reference batches starting with gantt, designer, collaboration, mobile.
  • plugin-ai: maintainer decision — retire (package, locale block, fixed-group entry) or wire it in register-plugins.ts like plugin-markdown. Ruled A (6398569691): retire the package, the locale block and the fixed-group entry; tombstone the types/zod mirrors.
  • runner: private: true, move under apps/ or examples/, drop from the fixed group.
  • Move the nine reset* helpers into @object-ui/test-support or tag them @internal and strip in the dts build.
  • providers: delete the trio and the test exemptions; point the byo example at @object-ui/react; fold UploadProvider into fields and the upload adapter into data-objectstack, then retire the package.
  • One PR deleting the 122 CONFIRMED dead keys from all ten packs (read each key's screen first, as the tool asks; CONFIRMED only).
  • Delete the root orphans and the unused declarations listed above; update skills/objectui/guides/testing.md, which still teaches msw.

Benefit: at least 2,200 source lines, about 1,220 translated strings, two packages out of the release group, nine public symbols, four root files and two Playwright configs. External npm consumers are 未实测; rollback is a revert per item.

Refs: objectui#11608, objectui#11616, objectui#12083, objectui#12058, objectui#12428, objectui#3530, objectui#3650.

Filed by the read-only whole-repo review session https://claude.ai/code/session_01BDtwYUWhLGyWLzYQjZ95Cf on 2026-10-24; the maintainer approved filing (「同意,创建任务」). Full evidence files sit in that session's scratchpad (objectui-review-report.md, findings-*.md). ⛔ Not a claim; for triage to grade and route. Graded; the plugin-ai bullet is ruled (see the first line).

Activity

  1. added
    area:devpathThe road — create, dev, verify, publish/install, connect an agent, iterate
    and removed on Oct 24, 2026
  2. objectstack-fleet commented on Oct 24, 2026

    @objectstack-fleet
    Contributor

    Triage: first grade — tech-debt · priority:p3 · domain:ui · area:devpath · pm:queue · triage seat · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-24T15:00Z

    ⛔ Not a claim, ⛔ not a dispatch. finding comes off.


    Generated by Claude Code

  3. objectstack-fleet commented on Oct 25, 2026

    @objectstack-fleet
    Contributor

    Claim: PM loop round 4 · 2026-10-25T04:45Z
    Session: session_011yfYeuX2ptMSCcYZiq61tS (card thread 「清理无人使用的导出与模块」, dispatched by the domain:ui seat 4 session session_01XWGTsmqrtrt1Zqh1ioWqsT)
    Account: os-elon-musk
    Branch: claude/project-thread-u9kgfd (platform-assigned)
    Worktree: objectui-issue-13453
    Domain: domain:ui
    Seat: domain:ui#4
    File surface (triage 6385727878's in-scope list only; one PR per package or group is fine, all on this branch in sequence):

  4. objectstack-fleet commented on Oct 25, 2026

    @objectstack-fleet
    Contributor

    Claim amendment · domain:ui#4 · 2026-10-25T04:58Z · amends claim 6393574403

    1. Narrowed: resetActionKeyWarnings stays out. It lives in core/src/actions/actionKeys.ts and reaches the core barrel through core/src/actions/index.ts (export *), and seat 1's objectui#13442 holds core/src/actions/**. It waits for that card, as clearSharedDiscoveryCache does. The other four core helpers sit in core/src/utils and come off core/src/index.ts.
    2. Widened, as a second PR on this card: the published skill text that teaches what the first PR removes. skills/objectui/guides/project-setup.md teaches DataSourceProvider / MetadataProvider / ThemeProvider from @object-ui/providers, and calls @object-ui/runner a "universal runtime"; skills/objectui/guides/architecture.md does the same. skills/** is governed, so this PR is Tier H (it waits for GOVERNED_APPROVERS). It opens from this card's branch, restarted on main, after the code PR merges. The code PR stays Tier S and names both files under a follow-up line. An objectui merge publishes nothing until a human runs the release, so the gap between the two merges ships nothing stale.
    3. Unchanged: Clause-② no / Metadata-protocol none.

    Generated by Claude Code

  5. objectstack-fleet commented on Oct 25, 2026

    @objectstack-fleet
    Contributor

    Claim amendment 2 · domain:ui#4 · 2026-10-25T05:27Z · amends claim 6393574403 and amendment 6393680911

    The two PRs are re-cut along the governed line. The dev measured that deleting the providers trio turns scripts/__tests__/check-skills-paths.test.ts red. The cause is .claude/skills/objectui-contributor/guides/console-development.md, which names packages/providers/src/MetadataProvider.tsx. So whichever PR deletes the trio must also edit a governed .claude/** file.

    • PR 1, Tier S, lands under the maintainer's standing word: the nine modules, runner set private: true and taken out of the fixed group, and the reset helpers off the public barrels. It contains no providers change and no .claude/** or skills/** edit.

    • PR 2, Tier H, waits for GOVERNED_APPROVERS:

      • the providers trio, its exemptions, and the byo example repointed;
      • the .claude/skills/objectui-contributor/guides/console-development.md sentence;
      • skills/objectui/guides/project-setup.md and architecture.md, which still teach the trio and the runner "universal runtime".

      It opens from this card's branch, restarted on main, after PR 1 merges.

    This keeps everything that needs no governed approval from waiting on one that does. Clause-② and Metadata-protocol are unchanged (no / none).


    Generated by Claude Code

  6. 14 remaining items

  7. objectstack-fleet commented on Oct 26, 2026

    @objectstack-fleet
    Contributor

    Claim amendment (seat domain:ui#1, 2026-10-26T14:36Z): this amends the claim 6416579691 and the amendment 6418068972. It is append-only, and their other lines stand.

    Clause-②, replaced: yes. The exported type TranslationKeys narrows: it is typeof en (ui/packages/i18n/src/locales/en.ts), re-exported from @object-ui/i18n, and it loses the 92 deleted members. Nothing in this repository reads them (dev's report 6418700724), but a published type gets narrower, so this is not "no exported type change". Precedent: objectui#4730 and its successors retired message keys from the same packs as patch (the RETIRED_OBJECT_VIEW_KEYS ledger). The seat records a TIER_DEFAULT contract review on the PR before landing. The changeset's and the PR body's Clause-② lines are corrected to yes (…) in the go-round, when the PR takes its turn on i18n.

  8. objectstack-fleet commented on Oct 26, 2026

    @objectstack-fleet
    Contributor

    Claim amendment (seat domain:ui#1, 2026-10-26T14:43Z): this amends the claim 6416579691 and its amendments. It is append-only.

    The PR becomes the i18n batch. At the maintainer's word in the project (scheduling optimisations are the seat's call), PR #26158 on claude/project-thread-tfdip1 takes in three already-reviewed PRs on the same locale packs, as merges in this order: #26040 (Fixes #25874, components + i18n), #26044 (Part of #25886, app-shell + i18n) and #26048 (Part of #25889, i18n + plugin-map). It then merges origin/main once, after #26045 (merged at 2026-10-26T14:42Z), regenerates once, and enters the queue once. The queue squash-merges, so separate PRs, stacked or not, would each conflict on scripts/sdui-manifest.sources/i18n.json and need four serial rounds.

    File surface, widened: the union of the four PRs' files, plus scripts/sdui-manifest.sources/{i18n,components,plugin-map}.json. Each source PR keeps its own changeset file. The batch PR body lists the four source PRs, all as Part of. The seat closes #25874 and #26040 when the batch lands. Seat 2 closes #26044 and #26048 and keeps its cards. #26055 is not in the batch.

  9. objectstack-fleet commented on Oct 26, 2026

    @objectstack-fleet
    Contributor

    席位核对 · Landed partial + release · seat domain:ui#1 · 2026-10-26T21:14Z

    The dead i18n keys item landed in #26158 (merged 2026-10-26T16:46Z, Part of #25921). It deleted 92 of the 122 CONFIRMED keys from all ten locale packs. 30 are kept on purpose: 28 _one/_other plural forms that i18next reads, plus console.ai.agentLabels.dataChat and metadataAssistant. The seat's patrol half-state sweep found that this note was never posted.

    Still open on this card:

    • the nine dead modules;
    • plugin-ai;
    • the runner's publish flag;
    • test-only reset helpers on public barrels;
    • the providers trio;
    • the root orphans.

    None of these is in flight, so the claim 6416579691 and its amendments are released, and the card returns to pm:queue at its p3 grade. The next dispatch takes one item per PR, with a fresh zero-consumer measurement at claim.

  10. objectstack-fleet commented on Oct 26, 2026

    @objectstack-fleet
    Contributor

    Claim: PM loop round 1
    Session: session_017iXjUm1rujwDk7f3KT1Pkk (seat); implementing card thread session_01VBDBR9oS1MNUcjBVXds5D6
    Account: os-steve
    Branch: claude/project-thread-vl2c07 (platform-assigned card-thread branch; a card thread can push only its assigned branch, and the name carries no issue number, so this claim is the identity record)
    Worktree: the card thread's own container
    Domain: domain:ui
    Seat: domain:ui#1
    File surface: partial, Part of #25921, the plugin-ai item only: delete ui/packages/plugin-ai/**; the ai.* block in the ten ui/packages/i18n/src/locales/* packs; the package's entry in the changeset fixed group (.changeset/config.json or ui/.changeset/config.json, wherever it lives); tombstones for the types/zod mirrors in ui/packages/types/**; tests and allowlists that name the package or its keys (forced edits, listed in the body); pnpm-lock.yaml (workspace member removed); re-recorded scripts/sdui-manifest.sources/*.json (i18n, and plugin-ai if it has a record); a root .changeset/ minor entry with a BREAKING note. ⛔ No other #25921 item (stop on breach; explain in the report). ⛔ ui/.github/** and the root .github/workflows/ci.yml are out of bounds (maintainer's word, ui-merge epic in flight). Changeset in the root .changeset/.
    Container & model: medium, mode:thread, model: TIER_DEFAULT (dispatch-gates --tier: no path-derived mandate), effort: high
    Clause-②: no (narrowing) — provisional: a published package and its locale keys retire; re-declared at hand-back with the ADR-0087 gate verdict
    Metadata-protocol: none
    Responsibility: n/a: renderer defect in ui/, the producing code is the cited ui file; no platform path covers it; reached through the public Console
    Thread-read: 6427488036
    Premise: holds (ruling A 6398569691 retires @object-ui/plugin-ai; the card measured 0 source importers and no entry in apps/console/src/register-plugins.ts / vite.config.ts, re-measured by the dev at claim with a positive control; 2026-10-26T22:14Z)
    Serial constraints cleared: i18n record: after seat 2's #26055; draft until it merges, then merge main and re-record. pnpm-lock: no other open PR of this lane edits it at claim time

    Dispatch order handed to the card thread by the project coordinator (three partitions: ruling / mechanism hypotheses / suggested route); the dev does not claim, and starts only once this claim names its branch.

  11. objectstack-fleet commented on Oct 26, 2026

    @objectstack-fleet
    Contributor

    Claim amendment (seat domain:ui#1, 2026-10-26T22:15Z): amends the claim 6428606072 at the card thread's request, after its read-only re-measure on origin/main b9cd9809. Append-only; the claim's other lines stand.

    File surface (replaces the claim's line): partial, Part of #25921, the plugin-ai item only, as measured in /mnt/project-files/ui-25921/plugin-ai-surface.md:

    1. Delete ui/packages/plugin-ai/**, its pnpm-lock.yaml importer and the ui/vitest.config.mts alias line.
    2. .changeset/config.json fixed-group entry, and the plugin-ai line in the pending .changeset/25831-object-ui-18-1-to-merge.md.
    3. The ai.* block in the ten locale packs; re-record i18n.json.
    4. Types tombstones per the ruling: ui/packages/types/src/ai.ts (the three schemas become @deprecated never with a remedy; AnySchema loses the three members), zod/ai.zod.ts and zod/index.zod.ts (refusal arms on the retiredNodeType precedent), zod/README.md, the types tests that pin those arms; re-record types.json.
    5. ui/packages/cli/src/utils/known-schema-types.ts (three keys) and its ratchet test.
    6. Census and pin tests that name plugin-ai files (forced edits, each listed in the body); console-vite-alias-closure-4925 gets a replacement negative control, named in the body.
    7. Docs: ui/content/docs/plugins/plugin-ai.mdx + meta.json, the ui/README.md row.
    8. Root .changeset/25921-retire-plugin-ai.md, minor with a BREAKING note and the ADR-0087 disposition the gate accepts.
      ⛔ Out: skills/objectui/guides/* (governed, Tier H) — a follow-up PR after this one, named in the body. ⛔ No other retire the zero-consumer surface: nine dead modules (2,211 LOC), plugin-ai, runner's publish flag, test-only reset helpers on public barrels, the providers trio, 122 dead i18n keys, root orphans #25921 item.

    Clause-②: no (narrowing) — three node types and a package retire; nothing widens
    Metadata-protocol: narrowed — three ui node types become refused arms (release: minor)

    Serial constraints (replaces the claim's line): i18n record after seat 2's #26055; types record shared with #26274 (domain:spec#2) — whichever lands first, the other merges main and re-records. Draft until both lines clear.

  12. objectstack-fleet commented on Oct 27, 2026

    @objectstack-fleet
    Contributor

    席位核对 · Blocked-by · seat domain:ui#1 · 2026-10-27T00:10Z

    Blocked-by: #26220

    The plugin-ai item is built: draft PR #26365, head db6ddb4d, Part of #25921, Clause-②: no (narrowing), Metadata-protocol: narrowed. It is held on two things the maintainer owns:

    1. ADR-0087 D9 predicate 1 refuses all 3 runtime-export-retired operands, because plugin-ai's entry is src/index.tsx (vite-plugin-dts), which D9's tsup-only mapping cannot map. check-adr-0087-registration: PACKAGE_ROOTS omits ui/packages, ui/apps and ui/examples, so no @object-ui package can use the runtime-export-retired disposition #26220 part 4 carries the fix, and the D8 + D9 amendment is on one decision card with the maintainer.
    2. check-empty-changeset is red on purpose. The PR deletes the plugin-ai line from the pending .changeset/25831-object-ui-18-1-to-merge.md, because a pending changeset that names a deleted package breaks changeset version. The gate keeps that correction red until a maintainer confirms it on the PR.

    The card stays pm:dispatched with its thread parked. When #26220's parts 3–4 land, the PR merges main, re-records i18n.json / types.json, re-runs the gate and dogfood, and asks for the changeset confirmation in the same breath. Follow-up (governed, Tier H): skills/objectui/guides/{project-setup,page-builder}.md still name plugin-ai.

  13. objectstack-fleet commented on Oct 27, 2026

    @objectstack-fleet
    Contributor

    os-dev-report

    {
      "issue": 25921,
      "status": "done",
      "branch": "claude/project-thread-vl2c07",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/26365",
      "session": "session_01VBDBR9oS1MNUcjBVXds5D6",
      "premise_still_valid": true,
      "summary": "Retired @object-ui/plugin-ai per ruling A (comment 6398569691): package deleted with its lockfile importer, vitest alias, docs page and README row; its ai.* block deleted from all ten locale packs; its entry dropped from the changeset fixed group and from the pending 25831 note (deliberate correction, confirmation owed by a maintainer). The types/zod mirrors are @deprecated never / z.never() tombstones with remedy text, and the three node literals are refused by name through retiredNodeType() arms in AnyComponentSchema; sunset waits for #25912. Draft, Part of #25921, Blocked-by: #26220 (ADR-0087 predicate 1 cannot read a src/index.tsx entry). Premise re-measured: 0 dependents, 0 mentions in console register-plugins.ts / vite.config.ts against 2 / 4 for the plugin-markdown control.",
      "tests": "Post-merge head db6ddb4d: `vitest run packages/types packages/i18n packages/cli scripts packages/components/src/__tests__` 935 files, 19817 passed, 3 failed -> two owed counts fixed (package-files-exist license floor, QUICK_REFERENCE published count), one 15 s timeout (check-vi-mock-inherit); the three rerun alone 111/111. New pin plugin-ai-retired-25921.test.ts 17/17; ablation (RetiredNLQueryNodeSchema removed from AnyComponentSchema via scripts/ablation-replace.mjs) -> 2 failed / 15 passed, exactly the two nl-query cases; restored, blob == HEAD. tsc for types, i18n, cli exit 0. Build `turbo run build --filter=@object-ui/console... --filter=@object-ui/cli...` 72/72 before and after the merge of main.",
      "gates": "dispatch-gates --ran: 105 derived, 105 run, 0 NOT-MEASURED (DERIVED zero). Exit 1 by design: check-adr-0087-registration --base origin/main (3 predicate-1 refusals, Blocked-by #26220) and check-empty-changeset --base origin/main (the 25831 one-line correction). Fixed in this PR: check:lockstep-package-count (111 -> 110 via --fix). check:dual-build-cjs-loads exit 0 after a full packages/** build (112 entries / 69 packages). check-platform-checklist --changed-from origin/main: 0 anchored files. check-nul-bytes OK. Family run recorded at 4bef30fa; post-merge the two red gates, lockstep, Console build and tests were repeated. CI: get_check_runs on head db6ddb4d returned 0 check runs at reading time (relay-opened draft), so no CI conclusion to cite yet.",
      "dogfood_battery": "db6ddb4d · os-verify-lock: VERDICT command-exit 0 · held the lock 1858s · Test Files 297 passed | 3 skipped (300) · Tests 2528 passed | 18 skipped (2546) · no failures",
      "mcp_calls": "6 — mcp__github__issue_read x4 (get / get_comments on #25921), mcp__github__pull_request_read x1 (get_check_runs #26365), subscribe_pr_activity x1 (harness, not a GitHub write)",
      "api_writes": "3 — git push (claude/project-thread-vl2c07), relay pr_create (objectstack#26365 via fleet-write dispatch run 40424373701, body read back identical, assignee os-steve), this os-dev-report comment on #25921 via scripts/pm/post-stamped.mjs",
      "open_questions": [
        {
          "question": "Confirm the one-line edit of pending .changeset/25831-object-ui-18-1-to-merge.md (drop \"@object-ui/plugin-ai\": minor)?",
          "options": [
            "A confirm: the package no longer exists, changeset version would refuse it",
            "B restore it: release fails at changeset version"
          ],
          "recommendation": "A, because a pending note naming a deleted package breaks the release run; seat 1 is carrying it to Steve with the #26220 D9 answer"
        }
      ],
      "out_of_scope_findings": [
        "follow-up, not a finding: skills/objectui/guides/project-setup.md and page-builder.md still name @object-ui/plugin-ai; Tier H governed, separate PR after this one · carrier: PR body · noted, not filed",
        "info: ui/.changeset/ (not read by the root config, ui/AGENTS.md) still holds three pre-merge notes naming @object-ui/plugin-ai (13464, 13465, 25685); untouched · noted, not filed",
        "info: if #26274 lands on scripts/sdui-manifest.sources/types.json first, merge main and re-record before ready"
      ]
    }

    Generated by Claude Code

  14. objectstack-fleet commented on Oct 27, 2026

    @objectstack-fleet
    Contributor

    Seat note · claim released (lane standing down) · seat domain:ui#1 · 2026-10-27T12:03Z

    The maintainer stood the ui lane down after current work (2026-10-27 09:10Z).

    The plugin-ai retirement is PR #26365 (draft, head bde1e722). It is merged with main after 18.2.0 shipped, and its body is current.

    • The 25831 correction is gone.
    • plugin-ai has left the fixed group.
    • changeset status exits 0.
    • CI is green except one red: Check Changeset. ADR-0087 refuses it at HEAD with "no workspace manifest at HEAD is named @object-ui/plugin-ai": a whole-package removal has no HEAD entry, and D9 does not cover that case.

    Waiting on the maintainer (asked 2026-10-27 05:15Z):

    The seat recommended A. Whoever picks this up: apply the answer, then land #26365. If #26576 has merged, #26365 also merges main to read the shared population constant.

    The card returns to pm:queue. #26220's four parts have all landed; under A, the D9 limb is its follow-up.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions