Skip to content

ci(lint): Type Check · workspace re-typechecks every package on every PR and merge group (486 s median): its turbo cache key is scoped to github.ref_name and saved only on push, so PR and queue runs never restore main; fix the key, affected-only #23017

Closed

Description

@objectstack-fleet

Protects: the merge queue's required context TypeScript Type Check (AGENTS.md's required set), the published check-run name every PR and merge group of @objectstack/* passes through; this card keeps the name and cuts the wall of the lane behind it.

Filed by the director seat (summon #37, session_01LqNgdPZB2Jnr5HpGbaqLeB) on the maintainer's word 「Type Check 的两张后续卡也立吧」 (2026-10-12), the follow-up objectstack#22998 names. Filing gate ①: a measured defect with a named landing point. ⛔ Not a claim. Tier H: .github/workflows/**; the PR stays a draft until a GOVERNED_APPROVERS member approves it.

What is measured (29 completed runs of lint.yml, 12 pull_request + 10 merge_group + push, the jobs API, 2026-10-12)

reading value
Type Check · workspace job wall min / median / p90 / max 1 / 11.1 / 14.2 / 18.0 min
step Type check workspace packages 486 s median, 627 p90, 643 max (80 % of the job)
step Build workspace packages 42 s median, 276 p90, 366 max (cache misses on some runs)
step Restore Turbo cache 10 s median
on merge groups (15 runs, earlier reading) 11.8 min median, the second-longest leg; the longest once #22991 and #22998 land

Why it re-typechecks everything: the job restores actions/cache with key: ${{ runner.os }}-turbo-typecheck-${{ github.ref_name }}-${{ github.sha }} and restore-keys: ${{ runner.os }}-turbo-typecheck-${{ github.ref_name }}-, and saves only if: github.event_name == 'push' (where ref_name is main). On pull_request, github.ref_name is <n>/merge; on merge_group it is gh-readonly-queue/main/pr-<n>-<sha>. Neither prefix ever matches a saved key, so every PR and queue run starts with an empty turbo cache and turbo run typecheck --filter='./packages/*' --filter='./packages/*/*' --filter='./apps/*' re-executes all packages. turbo.json declares typecheck cacheable (outputs: [], inputs excluding dist/**), so a restored cache would replay unchanged packages in seconds.

What to build (one PR, Tier H, draft until approved; lands after #22991's PR, which edits the same file's lint job)

  1. Restore from main's cache on every event: restore-keys gains ${{ runner.os }}-turbo-typecheck-main- after the ref-scoped prefix (the exact-key line stays), for both the typecheck and the build steps' shared .turbo/cache; the save stays push-only so PR runs never pollute it. Verify on the PR's own run that the turbo run summary (or --summarize) reports cache hits for untouched packages.
  2. Typecheck affected-only on pull_request / merge_group: turbo run typecheck scoped to the packages the diff affects and their dependents (--affected against the merge base, or --filter=...[<base>]), the whole workspace on schedule and push (the doctrine's full battery). State the rule for root-level changes (lockfile, tsconfig.base.json, turbo.json, package.json): everything affected.
  3. The job keeps its name; the TypeScript Type Check aggregator and its roster are unchanged.

Expected: Type check workspace packages from 486 s to about 60–120 s on a typical PR (cache replay of unchanged packages plus the affected set); the merge-group Lint & Type Check wall then follows the lint lanes (#22991).

Acceptance

  • Type Check · workspace median under 4 minutes on three consecutive merge groups and three PRs, read from the jobs API and written in the PR body with the before figures above.
  • The turbo summary of one PR run shows cache hits for packages the diff did not touch.

Related: objectstack#22998 · objectstack#22991 · .github/workflows/lint.yml (typecheck-workspace job) · turbo.json.

Activity

  1. objectstack-fleet commented on Oct 12, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 1 · the director seat dispatching on the maintainer's standing order, verbatim 「三仓的 ci 优化卡你负责派发」, this card on 「Type Check 的两张后续卡也立吧」 (this seat's session, 2026-10-12T11:35Z)
    Session: session_01LqNgdPZB2Jnr5HpGbaqLeB
    Account: os-zhuang
    Branch: claude/issue-23017-typecheck-cache-affected
    Worktree: objectstack-issue-23017
    Domain: domain:devx
    Seat: domain:devx#9
    File surface: .github/workflows/lint.yml (the typecheck-workspace job only: its cache keys, its typecheck and build invocations, an event-scoped affected filter; ⛔ not the lint aggregate or its lanes, ⛔ not the other Type Check · * lanes), turbo.json only if the typecheck task's inputs must change for the cache to hit, and whichever pin script speaks (scripts/check-ci-filter-parity.mjs, scripts/check-aggregator-roster.mjs, scripts/ci/scheduled-full-run.mjs), re-pinned honestly (stop on breach; explain in the report)
    Container & model: M, mode:subagent, model: opus (the default judgment tier: the cache-key and affected-filter design carry judgment; dispatch-gates --tier --repo objectstack-ai/objectstack on the paths answers no path-derived mandate). Tier H: .github/workflows/** is governed here; the PR stays a draft until a GOVERNED_APPROVERS member approves it.
    Clause-②: no
    Responsibility: n/a — not a defect card
    Thread-read: none
    Ruling-ref: the card (the maintainer's word verbatim 「Type Check 的两张后续卡也立吧」) and objectstack#22998's doctrine (the full battery on schedule and push)
    Serial constraints cleared: PR #23014 (#22991, lint.yml's lint job) is MERGED (5dda6002); #22998's PR #23020 is in the queue and touches ci.yml, release.yml, AGENTS.md and scripts, not lint.yml; no in-flight claim declares lint.yml or turbo.json (18 pm:dispatched cards read in this act). Merge origin/main before opening the PR and again after #23020 lands.

  2. objectstack-fleet commented on Oct 12, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report
    {
    "issue": 23017,
    "status": "done",
    "branch": "claude/issue-23017-typecheck-cache-affected",
    "pr": "#23043",
    "session": "session_01LqNgdPZB2Jnr5HpGbaqLeB — subagent run; the parent director seat's session id (the container's CLAUDE_CODE_REMOTE_SESSION_ID resolves to the same id)",
    "premise_still_valid": false,
    "summary": "The card's CAUSE is refuted, while its SYMPTOM is real, and the PR delivers the ruled affected-only half. H1 is false: on main the typecheck restore step carries four restore keys, and the third is the bare prefix ${{ runner.os }}-turbo-typecheck-, which already reaches main's newest push save on every event. PR run 38239402273 replayed 138 of 139 tasks from that seed (step 19 s). Its own merge group 38242582445 replayed 0 of 74 typecheck tasks (Cached 64/139, all build; 8m31s), because every task hash moved: the local @objectstack/types#typecheck hash went 88ca22ad at 3071d3e, then 5d35a004 at 2acff87, then 30eade7d from c7d6037 on, matching the merge group's log, and both of those commits touch packages/spec. The cost is hash churn from spec at the root of the graph, not the key, so the -typecheck-main- restore line would be a no-op and was not committed. PR #23043 (draft) changes only the Type check workspace packages step of .github/workflows/lint.yml. On pull_request and merge_group it selects packages through ci.yml Test Core's own selector (scripts/ci/select-shard-packages.sh: affected plus dependents, the cross-package test-radius union, and its fallbacks), intersected with the unchanged universe. Any changed repo-root file except Markdown, and any scripts/ file a package.json script runs, means the whole universe; this was measured as necessary because turbo ls --affected selects ZERO packages for a root package.json, pnpm-workspace.yaml, .npmrc or root-importer typescript lockfile change. An empty selection exits green with a log line. schedule, push and workflow_dispatch still run the whole universe. The job name, the aggregate and its roster are unchanged. Separately, lint.yml sits at a GitHub workflow-file size ceiling: at 513,738 bytes every push produced a failed zero-job workflow-file run and the PR got no Lint & Type Check run, so the step comment was compacted to 510,016 bytes (main is 505,924), which is valid.",
    "tests": "Gates on the final head 06f9521: node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack derived 43 commands (1 path, .github/workflows/lint.yml); all 43 ran and exited 0. --ran printed: '43 derived famil(ies) accounted for — 43 run, 0 NOT-MEASURED (a DERIVED zero — all 43 recorded an exit code and none of them is 3)'. Among them: check:type-check-debt under os-verify-lock ('VERDICT command-exit 0'; 're-measure: OK — 1 ledger entr(ies) ... none above its recorded number'); check:pm-dispatch-gates ('1833 cases pass', fast tier, its off-CI default); check:required-contexts ('5 required context name(s) pinned across 3 workflow(s)'); check:type-check-coverage ('OK — 79/81 workspace packages type-checked'); check:cross-package-test-inputs ('All 255 self-test cases passed'); check-aggregator-roster; scheduled-full-run --self-test; check:nul-bytes. The same 43 were also run green on 0bd33ce, d426592 and b39592f. The YAML parses with yaml and the extracted run passes bash -n. Step script replays (real turbo 2.11.5 ls and union, typecheck stubbed) on synthetic diffs: leaf plugin-email merge_group and pull_request select 11; root package.json, root-importer lockfile and scripts/check-test-typecheck.mts select the whole universe; workflow-only selects none; examples/app-showcase selects cli, dogfood, lint and spec; push and schedule run whole; an unresolvable base_sha runs whole with the selector's two warnings. Replay over the last 60 first-parent main commits ending at edecd44, as merge groups: 4 select none, 20 select 1-5, 6 select 6-20, 8 select 21-50, 16 select 51-72 and 6 run whole. Local timing on 4 cores, cold typecheck with builds cached, for the leaf diff: the 6 graph-affected packages took 1m19s, and all 11 with the union took 2m32s. PR's own run 38252457300 on 06f9521: Type Check · workspace job wall 56 s, Type check workspace packages 2 s, log 'No cross-package scan declares inputs touched by this diff.' / 'No workspace package is affected by this diff -- nothing to type-check.'; TypeScript Type Check success; Lint & Repo Gates success; the whole run concluded success. No ablation applies: this is a workflow-step change with no gate under test.",
    "mcp_calls": "4 — mcp__github__get_job_logs x4 (jobs 114788569317 twice, 114777999225, 114821973878), all reads; no write tool",
    "api_writes": "3 relay strokes through scripts/pm (each one POST /repos/objectstack-ai/objectstack/dispatches): (1) pr_create, relay run 38252129662: POST /repos/objectstack-ai/objectstack/pulls (draft) + POST /repos//issues/23043/assignees [os-zhuang], body read back byte-identical (11425 bytes); (2) label-write labels_add, relay run 38252240738: POST /repos//issues/23043/labels [skip-changeset], read back size/m + skip-changeset; (3) this os-dev-report comment: POST /repos//issues/23017/comments. Not REST: 5 git pushes (the empty-branch probe, 0bd33ce, d426592, b39592f, 06f9521)",
    "gates": "43 derived, 43 run, 0 failing, 0 NOT-MEASURED on 06f9521 (reconciled with --ran); the PR's own CI on 06f9521 is all green (Lint & Type Check 38252457300, CI 38252457276, Governed Surface Guard and the guards)",
    "files_changed": [".github/workflows/lint.yml"],
    "measurements": {
    "before": "card (29 runs): step median 486 s / p90 627 s; job wall 11.1 / 14.2 min. Re-read over 300 lint.yml runs (2026-10-11T20:38Z to 2026-10-12T11:35Z): pull_request n=117 step 479/641 s, job 11.7/17.8 min; merge_group n=93 step 510/633 s, job 11.7/15.0 min",
    "after_pr_run": "run 38252457300 (pull_request, 06f9521, workflow-only diff): step 2 s, job wall 56 s (empty selection)",
    "after_typical_estimate": "local 4-core cold typecheck for a one-file leaf diff: 79 s without the union, 152 s with it; on the runner, packages whose own hash is in the restored seed replay instead",
    "merge_groups_after_landing": "NOT MEASURED: reason, not landed; this is the PM's reading (three consecutive groups and three PRs, per the card's acceptance)",
    "cache_hit_count": "not applicable under selection: PR and queue runs schedule no untouched package. Pre-change evidence: PR run 38239402273 'Cached: 138 cached, 139 total'. On this PR's run every turbo restore key missed ('Cache not found for input keys: Linux-turbo-typecheck-23043/merge-..., Linux-turbo-typecheck-23043/merge-, Linux-turbo-typecheck-, Linux-turbo-build-core-23043/merge-, Linux-turbo-build-core-'), and the build step replayed 68 of 68 from the remote cache"
    },
    "deviations": [
    "Suggested-route commit (1), the -typecheck-main- restore-keys line, was not made: H1 is refuted (the bare -turbo-typecheck- prefix already restores main's seed), so the line would be a no-op. H4 is refuted the same way: PR build misses are the PR's own affected packages under remote:r, not a key problem. H2: no input moves on every commit, so turbo.json is unchanged.",
    "The selection adds the cross-package test-radius union (through the reused Test Core selector) on top of the ruled 'affected plus dependents'. This is a conservative superset that keeps every package the full run would have scheduled for a cross-package import (for example examples/app-showcase into the lint and cli tests). Its cost is spec, core, types, objectql and runtime on most package diffs.",
    "The root-level rule is broader than the ruling's list: any changed repo-root file except Markdown, plus any scripts/ file that a package.json script runs, means the whole universe. The ruling's tsconfig.base.json does not exist; the root base config is tsconfig.json.",
    "The step comment was compacted from about 5 KB to about 1.5 KB because lint.yml hit GitHub's workflow-file size ceiling (see the findings). The full rationale lives in the PR body.",
    "The PR body was written once, before the size fix and the PR run, so it is now stale in two places. The seat should write these amendments: (a) in the Gates section, replace 'All 43 ran on b39592f3' with 'All 43 ran on 06f9521d'. (b) Replace the 'This PR's own run: NOT MEASURED ...' paragraph with: 'This PR's own run: run 38252457300 on 06f9521 — Type Check · workspace job wall 56 s, Type check workspace packages 2 s (log: No workspace package is affected by this diff -- nothing to type-check.); TypeScript Type Check and Lint & Repo Gates green. Every turbo restore key missed on that run (Cache not found ... Linux-turbo-typecheck-, ...).' (c) Add an acceptance note: 'lint.yml is at GitHub's workflow-file size ceiling: this branch at 513,738 bytes (0bd33ce, d426592, b39592f) produced a failed zero-job workflow-file run on each push (38245964547, 38249293618, 38250844690) and the PR got no Lint & Type Check run; 06f9521 at 510,016 bytes is valid; main is 505,924 bytes. The step comment was compacted for that reason; this body carries the rationale.'",
    "No measurement commit touching a package was pushed, so the PR's own run exercises only the empty-selection path. The non-empty path was exercised locally by replay with real turbo; the merge-group reading after landing is the PM's.",
    "Commit trailers use the model-free pair from AGENTS.md ('Co-authored-by: Claude' plus Claude-Session) instead of the harness reminder's model-named trailer, per AGENTS.md's precedence and its pre-push rule.",
    "check:pm-dispatch-gates ran its fast tier, which is the gate's own off-CI default; the slow tier was not run locally."
    ],
    "open_questions": [
    {
    "question": "The union reuses the test-input radius, which is a superset for tsc. Its repo-wide scans put spec, core, types, objectql and runtime on most package diffs: +73 s cold on the local leaf measurement, and nothing when their hashes are in the restored seed. Keep it, or narrow it?",
    "options": ["A keep the reused union (no new declaration; parity with the full run for cross-package imports; costs up to about 70 s cold on package diffs)", "B a typecheck-only radius (a new declaration and a verify gate, mirroring check:cross-package-test-inputs, as a separate card; saves those 5 packages on most package diffs)", "C drop the union (cheapest; cross-package test imports, for example examples/app-showcase into the lint and cli tests, would no longer schedule those packages on PR or queue runs)"],
    "recommendation": "A now, with B as a follow-up card only if the merge-group readings after landing stay above the 4-minute target. A weakens nothing relative to the full run, and B is new surface that needs its own gate."
    },
    {
    "question": "The card and the claim call .github/workflows/** Tier H, but GOVERNED_SURFACES in scripts/pm/check-governed-merges.mjs has no workflows row, so the queue guard and the post-merge audit do not treat this PR as governed. Which governs?",
    "options": ["A the dispatch: keep the PR draft until a GOVERNED_APPROVERS approval (current state)", "B add a workflows row to the register (a maintainer decision, its own PR)", "C treat workflows as ungoverned and land on green like any PR"],
    "recommendation": "A for this PR, which is what I did. The register question is the maintainer's to decide, and I did not touch the register."
    }
    ],
    "out_of_scope_findings": [
    "class: a · reach: named real producer — PR #23043's own pushes. At 513,738 bytes, lint.yml at 0bd33ce, d426592 and b39592f each produced a push-event workflow-file run with zero jobs and conclusion failure (runs 38245964547, 38249293618, 38250844690), and the pull_request event got NO Lint & Type Check run, so neither required context (Lint & Repo Gates, TypeScript Type Check) reported. At 510,016 bytes (06f9521) the file is valid and the run appeared. main's lint.yml is 505,924 bytes, so it sits within about 4 to 8 KB of a platform ceiling measured between 510,016 and 513,738 bytes, and no gate measures it. The next PR that adds that much to lint.yml silently loses both required contexts. · dedupe words: lint.yml workflow file size limit, invalid workflow file zero jobs, 512 KB workflow ceiling, lint.yml too large",
    "carrier: 承接者:无 · noted, not filed. On PR run 38252457300 (12:59Z) every turbo restore key missed, including the bare prefixes 'Linux-turbo-typecheck-' and 'Linux-turbo-build-core-'. main's turbo seeds were absent from the Actions cache pool at that moment, which is an observation about the 10 GB pool and not reproduced. Selection makes this job independent of that seed.",
    "carrier: 承接者:无 · noted in PR #23043's acceptance notes, not filed. The typecheck task's turbo inputs are package-local, so a cross-package import (for example examples/app-showcase into the lint and cli tests) or a change to scripts/check-test-typecheck.mts does not move any typecheck hash, and the cache replays a green on every event including schedule. This PR leaves that behavior unchanged. This is a read-only inference and was not reproduced."
    ]
    }


    Generated by Claude Code

  3. objectstack-fleet commented on Oct 12, 2026

    @objectstack-fleet
    ContributorAuthor

    Review: ACCEPT · PR #23043 (draft, head 06f9521d) · director seat dispatching on the maintainer's order, 2026-10-12T13:14Z

    Checked on GitHub, not on the report's say-so:

    • PR shape: exists, draft, base main, body line 1 Fixes #23017 (the only closing keyword), assignee os-zhuang; 1 file, .github/workflows/lint.yml, +69/−1, five commits with one main merge; labels ci/cd · size/s · skip-changeset (right for a workflow-only diff). The body was amended by this seat from the report's three named stale spots (one body edit, read back identical).
    • The card's premise, refuted by measurement and recorded in the PR body: H1 (the -<ref_name>- cache key never restores main's seed on PR or queue runs) is false: the restore step on main already carries the bare prefix ${{ runner.os }}-turbo-typecheck- as its third key, and PR run 38239402273 replayed 138 of 139 tasks from it. The symptom (486 s median) is real and comes from hash churn: packages/spec sits at the root of the graph, every queue entry is newer than main, and the merge group 38242582445 replayed 0 of 74 typecheck tasks. So the restore-keys commit was rightly not made, and the affected-only half is the whole fix. premise_still_valid: false is a re-triage input, taken here: the card closes on this PR.
    • Diff read: the Type check workspace packages step only. On pull_request / merge_group it reuses scripts/ci/select-shard-packages.sh (affected plus dependents, the cross-package test-radius union and its fallbacks), intersects with the unchanged universe filters, and type-checks the selection; the whole universe on any other event, on a changed repo-root file other than Markdown, on a changed scripts/ file a package's package.json script runs, and when the selector leaves no changed-file list; an empty selection exits green with a log line. The job name, the TypeScript Type Check aggregate and its roster are unchanged (check:required-contexts: 5 names pinned across 3 workflows; check:type-check-coverage: 79/81).
    • Gates on the head 06f9521d: Lint & Repo Gates success, TypeScript Type Check success, Type Check · workspace success (job wall 56 s, the step 2 s on this workflow-only diff: the empty-selection path); the skipped names are the doctrine's event-tier skips. The dev's local union, reconciled with --ran: 43 derived commands, 43 run, 0 NOT-MEASURED, including check:type-check-debt under os-verify-lock, check:pm-dispatch-gates (1,833 cases, fast tier), check:required-contexts, check:type-check-coverage, check:cross-package-test-inputs (255 cases), the aggregator roster, scheduled-full-run --self-test, check:nul-bytes; the YAML parses and the extracted step passes bash -n; step replays with real turbo on synthetic diffs (leaf 11 packages; root package.json, the root-importer lockfile and a scripts/ tool → whole; workflow-only → none; examples/app-showcase → cli, dogfood, lint, spec) and over the last 60 first-parent main commits (4 none, 20 select 1–5, 6 select 6–20, 8 select 21–50, 16 select 51–72, 6 whole).
    • Measured and projected: before, re-read over 300 runs: PR step 479 s median / 641 p90, merge group 510 / 633; after, the PR's own run 2 s (empty selection); a one-file leaf diff cold on 4 local cores 79 s without the union and 152 s with it. Three merge groups and three PRs after landing are NOT MEASURED yet and are this seat's reading (the card's acceptance).
    • The dev's two questions, answered here: 1 → A (keep the reused test-radius union: a stated superset that weakens nothing against the full run; B, a typecheck-only radius with its own gate, becomes a card only if the merge-group readings stay above the 4-minute line); 2 → A for this PR (draft until an authorised approval; whether .github/workflows/** joins the governed register of this repository and objectui is put to the maintainer).
    • Deviations accepted: the root-level rule broader than the ruling's list (the ruling's tsconfig.base.json does not exist; the root base is tsconfig.json); the step comment compacted to 1.5 KB because lint.yml hit GitHub's workflow-file size ceiling (three pushes at 513,738 bytes produced zero-job failed runs and no Lint & Type Check run; 510,016 is valid; main is 505,924); no package-touching measurement commit (the non-empty path exercised by local replay); mcp_calls 4, all get_job_logs reads, reported honestly against the expected 0. Writes: 3 relay strokes (pr_create with assignee; skip-changeset; the report 6124930963); 5 pushes, no force-push.
    • Out of scope, carried: (a) the lint.yml size ceiling: filed now as a p1 tooling card (a gate on the file's size with margin, and a split plan), since the next addition silently loses both required contexts; (b) main's turbo seeds absent from the Actions cache pool on the PR's run (one observation, not reproduced; selection makes the job independent of it); (c) the typecheck task's package-local inputs mean a cross-package import never moves a typecheck hash on any event: a read-only inference, noted on the PR.

    Landing: the CI cards' posture of this round: the PR stays a draft until the maintainer approves; on an authorised approval this seat flips it ready and arms the queue. This card stays pm:dispatched until the PR lands; the landing record and the six-run reading follow.

  4. objectstack-fleet commented on Oct 12, 2026

    @objectstack-fleet
    ContributorAuthor

    LANDED — PR #23043 is MERGED (2026-10-12T13:42Z, approved by the maintainer, readied and queued by this seat on that approval, merged by the queue; merge commit df7a1379) and read in place on origin/main df7a1379. Director seat, summon #37, session_01LqNgdPZB2Jnr5HpGbaqLeB, 2026-10-12T14:19Z.

    probe on origin/main want got
    lint.yml's Type check workspace packages step calls scripts/ci/select-shard-packages.sh, writes typecheck-selected.txt, and carries the whole-workspace and empty-selection branches present lines 7057, 7074, 7081–7082
    lint.yml size (the ceiling finding, #23044) 510,016 bytes 510,016 bytes
    • The card was closed by the PR's Fixes line; pm:dispatched stripped and the assignee released in this act. The card's premise (the cache key) stands refuted on the record (ACCEPT 6125018228); the affected-only step is the fix.
    • Reading 1 of 6 (three merge groups and three PRs are owed): the PR's own queue build (gh-readonly-queue/main/pr-23043): Type Check · workspace success, job 75 s, the step 2 s (a lint.yml-only diff: the empty-selection path; before, 486 s median). The next readings come from merge groups and PRs with package diffs and go here as they land.
    • Queued from this card's findings: objectstack#23044 (the lint.yml size ceiling, p1; main sits at 510,016 bytes against a ceiling measured between 510,016 and 513,738).
    • The queue closed no other card: PR ci(lint): Type Check · workspace type-checks the affected packages on PR and queue runs; the whole workspace on push and schedule #23043's body carries Fixes #23017 alone.
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, iteratedomain:devxpriority:p1High: required for production / M2tooling

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions