Skip to content

Match compact loop-card presentation across project and overview - #814

Merged
coneilen merged 5 commits into
mainfrom
coneilen-microsoft-wave-2-implement-b-764
Oct 15, 2026
Merged

coneilen merged 5 commits into
mainfrom
coneilen-microsoft-wave-2-implement-b-764

Conversation

@coneilen

@coneilen coneilen commented Oct 14, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Loop cards currently spend a row on raw state text, truncate live metadata, and use a different presentation in the global overview. This approved slice shares a compact 250x96 card body across project and overview, with a measured title/state row and separate monospaced live, detail and metadata rows.

Refs #764. Implements only the compact-card slice of the approved plan and corrections, not the complete issue.

Current head: 156345accb529384e200e1667e1945e857784cd1, based on actual accepted main 112d458303891f87af6c1dc6beaf7e48073fd65c after #825's runner budget, #824's lease-bound capture core and E's #816 context-menu/connector changes. All five B commits remain unchanged, and the actual old-to-new delta equals the accepted nine-path base delta. Sonnet5.5/high accepted the narrow App/menu/card/gate/runner interaction review with no coupled bug or fix. This base changes product/build inputs in App.zig and GraphContextMenu.zig; the old a44/base65194 binaries and build receipts are historical witnesses only, not current-head builds. No fresh local product build is authorized or performed. Fresh exact-head CI is green: seven successful workflows,24completed contexts(20SUCCESS/4configured SKIPPED), MERGEABLE/CLEAN/draft, after one authorized main-derived capture-core job rerun. Its original failure remains separately recorded; prior a44/e3ff results are not substituted.

Visual gate: NotExecuted(harness #826). No AFTER capture or paired-image acceptance exists. The operator now authorizes the coordinator to merge this accepted-code/exact-head-green-CI slice with visual verification explicitly deferred. This PR remains draft until the coordinator marks it ready; no completed readiness transition, merge, visual acceptance, issue-box closure or parity-ledger promotion is claimed. The shared capture core is blocked by #826, a journal check-then-open race. B's own UI/harness remains stopped; no product/zmx/native execution, capture child or new desktop lease is authorized. Existing images remain held.

The operator moved the fallback authorization to now, superseding the former23:00PDT cutoff because #826 cannot merge before then. The coordinator has accepted current156345/base112d source, narrow interaction review, exact-head green CI and the preserved evidence. The coordinator may now perform the readiness/merge transition for this slice without visual capture; B's owner is authorized only for this body-status update, not to mark ready or merge. Issue#764 remains open with box1 and all other visual boxes unticked, and visual verification is deferred to one later coordinated capture batch. This is authorization to proceed, not a claim that the PR has already been marked ready, merged or visually accepted. Required checks must remain green.

Changes

  • Share the compact body on project and overview cards, with semibold title, uppercase state pill, monospaced rows, six-point type marker/five-point gap and source-derived 52-percent white metadata ink. Overview pitch is260 with a10-pixel gap, lane minimum806 and content width854.
  • Extend the existing process-lifetime font cache with face/weight keys, not a second cache. Cards use Consolas for live/detail/meta; existing native-control APIs keep Segoe UI behavior. Cache capacity is512, borrowed handles are never evicted, and exhaustion reports/refuses without leaking an uncached font.
  • Own complete Unicode strings; prefer reported live activity/pass prefix, then type-specific fallback. Metadata order is type, measured branch, non-default backend display name and real coarse age, not raw backend/tokens/model tier. Reserve fixed fields before Unicode-safe branch middle-elision; use measured ellipsis or omit only its complete visual segment if necessary. If fixed fields cannot fit, report the specific failure and show a bounded metadata-unavailable marker without blanking other rows. Metric deltas require two real samples and preserve direction.
  • Keep existing project Reply/Inspect and Reclaim/Keep actions above metadata, sharing visibility/rectangles with paint, hit testing and UIA. Correct their existing amber COLORREF channels; add no overview actions or reclaim-policy change.
  • Add focused geometry/allocation/font/DIB/Unicode and never-shown UIA-data regressions. Approved extensions update only named App geometry fixtures and gate/runner card geometry/action sites; merged A prompt-ID/hit helpers and G1/G2 runner children remain intact.

Scope and limits

Issue box1 is targeted but unchecked pending paired visual review. Boxes2-8 remain unchecked: type-palette sweep; entry/origin/chips; unwired inline recovery; authoritative attention/glow/actions; topology/initial-fit; ports/group band; add control.

The final B patch still touches only six approved files: GraphCanvas.zig, DesignTokens.zig, AppFont.zig, the bounded App.zig UIA/test blocks, uia-live-gate.ps1 geometry oracles and corresponding ValidationRunner.Tests.ps1 cases. No ledger, historical250x106 manifest, GraphModel/Swift/provider-pin/sidebar/workspace-paint/jump/dialog product changes. Quick Chat is unchanged. Existing START/UNWIRED information and context-menu recovery remain deliberate extras for follow-up.

The coordinator approved the narrow existing App test literals, gate geometry/early Open and Worktrees coordinates, independent row painting and minimal branch-elision policy after the initial rejection. At the actual1028-client gate boundary, the unpanned third card and Worktrees control extend four pixels past the viewport; its visible hit target remains reachable and pan-30 exposes it fully. This is disclosed clipping, not whole-control visibility. Overview row/lane heights remain unchanged; all production overview consumers use the shared bounds/caption helpers. Unrelated Quick Chat220/760 values and historical716 negative fixtures remain intentional.

Test plan

RED: & $env:GRAPHCODE_ZIG0152 test src\GraphCanvas.zig -target x86_64-windows-msvc -lc -luser32 -lgdi32 -IC:\gcp\ib\winghostty\include --cache-dir C:\gcs\ib\card-local --global-cache-dir C:\gcs\ib\global --test-filter "loop card parity" -> 0 passed,5failed; expected project height96 found106, overview width250 found220, goal displaced activity, raw backend/tokens/tier displaced display metadata, actions overlapped metadata. Original C:\gcs\ib\red-card.log retained.
GREEN: pwsh -NoProfile -File C:\gcs\ib\verify-cards.ps1 -Tag post821 -> historical product-source-equivalent B focus passed17card/8font/3hidden-App/38adjacent tests, each with positive counts; no current-head rerun implied. B patch unchanged but merged E changes product inputs, so historical builds/tests are not current build proof; old logs retained.
REGRESSION: pwsh -NoProfile -File Tools\windows\Tests\UiScenario.Tests.ps1; git range-diff 65194b7..a44ab90 112d458..156345a; gh pr checks 814 -R scgopi/GraphCode --watch --fail-fast --interval 30 -> direct offline G1 child166executed/166passed/0failed exit0; all five own commits '='; normalized B patch unchanged and actual nine-path delta exactly accepted main. Exact156345 CI7successful workflows/24completed checks(20SUCCESS/4configured SKIPPED), MERGEABLE/CLEAN; one authorized core-job rerun after separately preserved49/47/2 sharing violation. Product/build inputs changed; no fresh local build authorized or claimed.

Current-head preparation and execution limits

postE-range-diff.txt, postE-rebase-proof.json, rebase-diff-preE.patch, rebase-diff-postE.patch, accepted-postE-base.patch and delta-postE.patch preserve the exact rebase evidence. E's App worktree/menu targets, connector-drag gate and runner additions remain present; B's card geometry/actions and existing A/G1/G2 cases were not restored from older whole files. The only local test run for this refresh is the direct offline UiScenario.Tests.ps1 data child:166executed/166passed/0failed, exit0, preserved in postE-ui-scenario.log and postE-local-proof.json. Full ValidationRunner, capture-driver child, native/UI/product/zmx execution and fresh builds are not authorized and were not run. The approved body-evidence checker is scoped to this artifact.

Narrow Sonnet5.5/high review of the new delta's App/menu/card geometry and gate/runner interactions is ACCEPT. The reviewer independently verified the five equal commits, identical B patch, exact accepted base delta and clean merge-tree equality. E's right-edge/mid-height connector point remains clear of B's action rectangles at250x96, its named card selector cannot match the action names, menu oracles contain no card geometry, and overlapping App/gate/runner changes occupy disjoint hunks. No fix or scope expansion was needed. Original review is agent2b7cb6ff-8ffb-406e-8544-8fc40266da66 turn0, preserved verbatim in postE-interaction-review-turn0.raw.txt (SHA256BAEF3667F88333B3C455BE32AF30895AB41ADEE61DB1612AB29D2EF9BB4E6760) with separate provenance record; postE-interaction-review.json is only its parent-written summary. It did not run the local combined runner, build, CI or images. Its timeout-headroom opinion is a prediction, not measured current-head capacity evidence.

Fresh exact-head required CI is green. The first hardening attempt failed a main-derived capture-core test: run38679005657, Windows2025 job116239062659, UiCaptureDriver49executed/47passed/2failed. The actual primary error is a sharing violation opening process-journal.json, reported from Invoke-UiCapture.ps1:429 during the real argument-vector case; the dependent rehearsal report guard also failed. It is in the known #826 journal-concurrency family, but the underlying mechanism is not established and the error is not literally FileNotFound, a network failure or stdin inheritance failure. Full log ci-postE-hardening2025-attempt1.log (SHA256CC514B6094CA6DA243249138AF3C96532F5BCC76337772BCAE72D3235AD0A5B5), actual job/run metadata and the original failed watch snapshot are preserved.

The failure was reported before retry. With exact unchanged local/live156345 verified and the workflow completed, the first authorized failed-job rerun requested only job116239062659; request exit0. New run attempt2's Windows2025 job116240810455 passed, with actual hosted UiCaptureDriver49executed/49passed/0failed, UiScenario166/166/0 and final ValidationRunner PASS. Its full log ci-postE-hardening2025-attempt2.log (SHA2560E42EFBBF18A3826E1F51953AC9962E6DA3D7436DE691AA71339897390F9230D) remains separate from the original failure; other attempt2 metadata may reference inherited passed/skipped jobs, not new executions. The per-head budget is one used of at most two across all affected workflows, not two per workflow; there was no automatic retry or head/source reset. postE-ci-retry-history.json preserves the actual request, exception distinction and unused remaining budget. No core/pin/timeout/source fix was made.

All seven current-head workflows succeeded: Windows shell38679005687, Windows port38679005714, hardening38679005657 attempt2, DCO38679005634, TDD38679005708, macOS classifier38679005631, and Linux classifier38679005639. ci-postE-positive-proof.json (SHA2567292BD6B17FABD7343C469AA5FB8AF633C1CC285D89D232428186D2677DDB56E) binds exact head/base, positive seven-workflow/24-context snapshot,20SUCCESS/4configured SKIPPED, MERGEABLE/CLEAN/draft and retry1/2. Actual macOS/Linux builds and opt-in full/gated hardening were configured skips, not executed cross-platform evidence.

Actual current-head logs are preserved separately for unit shards0/1/2 (jobs116239072193/116239072213/116239072335), native integration116239072268, real packaging116239072303, Swift116239061989 and both hardening attempts. Hosted Swift's runner passed G1166/166/0 and capture-driver49/49/0 without rerun, then positive163XCTest cases with1skip/0failures; E's connector/menu cases also executed in hosted runner output. These hosted executions are not local product/native runs or screenshot proof. A later body-edit TDD context may add to the snapshot; all nonzero expected check results must remain complete before any authorized transition.

Historical a44 qualification — not current-head evidence

The smallest affected offline child ran, not the full local ValidationRunner, App/unit/integration suite, native compatibility preflight or desktop capture. g2-focused-proof.json records31executed/31passed/0failed and the real no-desktop supervisor/worker/harmless-EXE launch, UTC/refusal/failure-safe release/ownership controls. The final B scene component regression is mocked, produces zero images and is not physical/UI parity evidence.

The first invocation used C:\gcs\ib\g2-focused-offline, which the accepted guard intentionally rejects as preserved historical lane-root ancestry. Its31executed/13passed/18failed log/report remain intact. The unchanged command was rerun with an explicitly approved dedicated sibling root C:\gcs\ib-r1-a44, without changing source, expectations or guards. This is an invocation error, not a product finding, capture-slot failure or behavioral RED.

Rebase proof: g2-rebase-range-diff.txt, g2-rebase-equivalence.json, rebase-diff-pre823.patch, rebase-diff-post823.patch, delta-post823.patch and accepted-823.patch. The retained user-specified Sonnet5.5/high reviewer independently accepted five equal commits, the identical aggregate B patch, exact six-file accepted G2 delta, unchanged B/A/G1 runner hunks plus the new positive-count child, and zero product/provider/build-input delta. This is rebase preservation only, not a fresh broad source audit or image acceptance.

Historical exact-source build command: pwsh -NoProfile -File C:\gcs\ib\build-r2-binaries.ps1 -> exit0 for a44 and base65194, no GUI. The script exported immutable Git sources, built with pinned Zig0.15.2 and exact Winghostty6286560d pin in separate source/cache/global/output roots, and recorded each exact command, source/built-at SHA, source-tree/archive/toolchain/host-library/executable hashes and timestamps. Aggregate receipt: C:\gcs\ib-r2-a44\build-receipts.json, SHA256C245B38CB1700996BB5BD94CFF954330E0D56A81C0F601BFC604412EB6E1091B. Neither phase was built from current156345ac/base112d; no relabelling or current admission is implied.

Fresh phase Exact source / built-at SHA Executable SHA256 Immutable receipt / archive / log SHA256
AFTER a44ab904757fda0861c2b334a0798c437066ec76, source treef2f3715ada6f21a0f729f763c07393cb7b701b49 84FDFCBDA4B3B2097C802C2119F6D937ACFBB57549E3302056512D99D0B5AC68 after\build-receipt.json:C5642D120F07F19A8CE066706EB2A83EEBA3E48304A9FB25364D5845E5614012; source.tar:189C179C54A05C4A6060E518555865180DA7A582A512F3C5A38A043EDD491B17; build.log:ADE848FC7ACE442CB98B40E3F4F54BFFBC5E40D37176FA7B8F305F7CC85D0D3F
BEFORE 65194b777523406cbbfaa7db4bcf0372119c5412, source tree9c692ff30653d3de9c144a7d4a9e78672b55e804 9D2A977F0B4F65FC2734CDB67EC37EA71C902E6DF75DAEAA77E269054D9745D0 before\build-receipt.json:0DAD15EE4241EB4F34825AE3ED18FD67AB35E0E93BB9CCDB213B6CD17294C072; source.tar:76DBE1DE1CB36C1C2A211109D07206C29C1EF5884F92B0D235EB7BF3589AADB6; build.log:FEDB7068FBBEBC35D129632DA73158107B8C24A870BD958082FB0F3A60193E64

All table paths are under C:\gcs\ib-r2-a44. Executables are in each phase's out\bin\graphcode-windows.exe; source roots are each phase's exported graphcode-windows, not Git repositories. The clean original B worktree remains the source repository. These84FD/9D2A binaries, as well as older C610/83688 binaries, are now immutable historical evidence only. No shared capture scripts, provider pins, source or job identity are changed by B.

Historical exact-a44 workflows all succeeded: Windows shell38658685033, Windows port38658685069, hardening38658684996, DCO38658685189, TDD38658685049, macOS classifier38658685184, and Linux classifier38658684924. ci-a44-positive-proof.json asserts seven exact-a44 completed-success workflows and24completed contexts(20SUCCESS/4configured SKIPPED), MERGEABLE/CLEAN/draft; ci-a44-runs.json, ci-a44-checks.json and ci-a44-watch.log retain the snapshot. Its later body-edit TDD added another same-head context without changing the original snapshot; none qualifies the current156345ac head.

Actual a44 logs are retained for unit shards0/1/2 (jobs116174532021/116174532065/116174532089), native integration116174532012, real packaging116174531958, and Swift116174542627. They were retrieved directly under distinct ci-a44-*.log names without replacing older logs. Actual macOS/Linux builds and opt-in full/gated hardening were configured skips, not executed cross-platform evidence. Historical green CI and offline launch controls do not establish current-head regression or paired visual acceptance.

Preserved product and regression history

All historical body versions and failures remain separate local artifacts; no failure log is overwritten by a passing run.

Evidence Result and honest limit
Product RED and corrections red-card.log:0pass/5fail before implementation. red-app-old-probe.log:old probe on compact geometry expected1 found0, a dependency regression, not proof main's old actions were invisible. red-review-composite.log:fixed-fields/branch fit. red-gate-geometry.log and red-worktrees-assignment.log:actual expected1005 found959. red-meta-ink.log:old ink failed literal source-derived COLORREF. Compiler mistakes remain separate, not behavioral RED.
Initial source/CI rejection One substantive reviewer rejection for metadata-dependent blanking and old gate geometry, and one change-caused hosted integration failure on6961/run38592395839/job115950535486:Open click used old760 floor. Full log retained. Later predicted Worktrees failure did not occur and is not counted.
Product focused evidence Historical17card/8font/3never-shown App/38adjacent positive tests; DIBs exercise both renderers, multiple DPI/zoom/translation cases, Unicode surrogate cuts, actual action fills, finite-extreme metrics and allocation failure. Not physical keyboard, COM invocation, real glyph parity or installed persistence. Existing source/fixture visual gate and five palette tests passed, not new screenshots.
A/G1 and e3ff Full earlier focused ValidationRunner passed394multi-project(54positive/340negative),11prompt lookup/6hit,166G1/0failures. e3ff hosted Swift job corroborates those counts; terminal/contracts does not. Current local full runner was deliberately not rerun. e3ff7workflows/24contexts20SUCCESS4SKIPPED,CLEAN, later body-edit TDD context added. Actual new-head logs were reviewed by coordinator Sonnet5.5/high; acceptance covered evidence/body, not visuals.
Historical exact CI d12,0831,de432,e3ff run/check/job logs and positive execution summaries remain in C:\gcs\ib. They are historical, not a44 gates. Skipped macOS/Linux builds and opt-in full/gated hardening are not executed cross-platform proof. Unit root summaries are not unique-test counts; auxiliary zero-test Swift output is not a pass.
Retrieval/extraction failures ci-e3ff-log-download-attempt1.txt retains shared gh ZIP/EOF retrieval errors, interrupted Swift attempt2 and raw terminal-escape refusal; attempt3 direct-file retrieval succeeded. The first runner-summary extraction expected a space instead of equals; corrected extraction re-read the same completed log. Neither is a test/product failure.

Capture history and remaining image gate

Attempt Outcome
B queue2,18:10:57-18:25:57UTC First zmx argument order failed before GraphCode; second inherited-writer EOF wait failed before GraphCode. Third captured four BEFORE images then builtin card lookup found0; a peer race was suspected, not proved. No actions or AFTER. Seven owned processes to0; native File exits0 and post-cleanup EOF. Release18:24:20.002UTC, independently verified.
B queue5,19:34:02-19:49:02UTC Four new BEFORE images; nested Get-CaptureActionsEvidence was not exported, plus caller exit$result typo. No actions or AFTER. Two File exits0, seed0, bounded EOF, seven owned processes to0; release19:36:19.147UTC independently verified. No retry after stop.
Central queue6 Command21:34:52 refused before GUI/PNG because UTC lease conversion added seven hours. Release/cleanup independently verified21:37; lost admission time recorded separately. No product finding.
Corrected central queue10 Empty mandatory ArgumentList @() refused before app/GUI. A secondary supervisor null-error suppressed its official release JSON. Seed0/ready/EOF existed; coordinator independently recovered and verified seven journaled generations absent/products0, release/guard cleared. This is independent recovery, not a cap official receipt. No PNG/AFTER/vision; old packet stopped.
G2 repair / R2 admission / #826 G2-R1 #823 and R2 #824 merged, followed by runner-budget #825 and E #816. The current shared journal check-then-open race remains open as #826; capture is blocked and no new clock/admission is granted. B does not repair the core, run its capture child, own a desktop slot or claim a new lease. No third old-packet attempt and no screenshot success inferred from offline31/31.

Queue2 assets remain at C:\gcs\ib\captures\attempt3-before with preserved hashes; queue5 at captures\retry-final\before, indexed by queue5-partial-hashes.json/queue5-scenes.json. Release/log manifests and full identical-source Unicode fixture BFC26149... remain separate. All eight images are BEFORE only, not AFTER or paired evidence. Historical phaseFailed=false described EOF drain only; the phase failed. The corrected seedDrainFailed field also does not imply whole-phase success.

Primary read-only macOS source is 2ccf303a04f995184aae1d4b738a9eca0f71b79e, bundle C:\gc-ref\macos-groundtruth-2ccf303a. Its fitted project reference is ParityRef90% (metadata wrongly says global); restored Graph overview is45%; these are not intrinsic100% font/card measurements. The read-only macos-groundtruth-2ccf303a-gapfill-v2 companion adds independently sampled100% linked project/overview references, not a plan/scene expansion or healthy-provider/physical proof. README/index/privacy masks/exclusions precede image access;167unsampled companion images are not independently cleared. Excluded764-fit-targeted-event and held722menus are not used. No reference bundle or screenshots have been uploaded wholesale.

Original body artifacts remain unchanged: pr-body.md SHA256F22E967B110BD8D52158B06CD9CA5A3E36BCC0271D6221D936FE51E8E170D7CD, pr-body-centralcap-pending.md SHA2561E4F61788CADDA50CD507733019C87D7E69CC2C5D578C6CC60B0F7AFB53B1A52, pr-body-g1-green.md SHA2567B0FEB35169B0100EE3888B2C31D93B6B801BA7D81AC6C1AC7FF7918691DED65, pr-body-g2-green.md SHA2569DF35577694BD83B3FAF9583D09CB4D94A5D112CA0F5DFD8ABC5D45833E66590, and pr-body-post826-hold.md SHA256F47DEF7302E8E0F1B2F709305808CFBA0AFF99174F1471C98630229E9D473818. Historical job/build hashes and source/CI acceptances remain valid only for their named scope. Visual acceptance remains unexecuted; the currently authorized coordinator-only semantic merge must retain the open visual issue boxes and #826 reason, followed by one later coordinated visual batch.

Checklist

  • I have read the Contributing Guidelines
  • I have signed off my commits (git commit -s) per the DCO
  • Tests pass locally (make test)
  • Code follows the existing style (make check)
  • I added the test/contract before the implementation and observed the intended RED failure

make test/make check are macOS entry points and were not run on this Windows worker. Exact Windows evidence and its limits are listed above.

@coneilen
coneilen force-pushed the coneilen-microsoft-wave-2-implement-b-764 branch 5 times, most recently from e3ff22f to a44ab90 Compare October 15, 2026 00:12
coneilen and others added 5 commits October 14, 2026 20:57
Share measured title/pill, owned Unicode live/meta rows and compact action geometry between project and overview cards while preserving existing action safety.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 39e65c1f-fe48-4e45-b6f2-e26f161d9d6b
Signed-off-by: Colin Neilens <coneilen@microsoft.com>
Restore unrelated whitespace changed by the whole-file formatter.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 39e65c1f-fe48-4e45-b6f2-e26f161d9d6b
Signed-off-by: Colin Neilens <coneilen@microsoft.com>
Use measured branch elision without blanking the card, reuse the existing child counter, keep narrow overview actions reachable with a 260 pitch, and update only the approved gate geometry and executable positive/negative fixtures.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 39e65c1f-fe48-4e45-b6f2-e26f161d9d6b
Signed-off-by: Colin Neilens <coneilen@microsoft.com>
Exercise the actual production assignment AST at narrow, wide and translated bounds, rejecting the obsolete point that hits Open while preserving named ownership and outcome guards.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 39e65c1f-fe48-4e45-b6f2-e26f161d9d6b
Signed-off-by: Colin Neilens <coneilen@microsoft.com>
Use LoopCardView's 52 percent white metadata ink over the card surface and its six-point marker plus five-point gap, sharing the measured and painted text bounds.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 39e65c1f-fe48-4e45-b6f2-e26f161d9d6b
Signed-off-by: Colin Neilens <coneilen@microsoft.com>
@coneilen
coneilen force-pushed the coneilen-microsoft-wave-2-implement-b-764 branch 2 times, most recently from a44ab90 to 156345a Compare October 15, 2026 03:58
@coneilen
coneilen marked this pull request as ready for review October 15, 2026 04:49
@coneilen
coneilen merged commit 4fafbfb into main Oct 15, 2026
31 of 32 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant