Skip to content

Views cutover steps C to G, landed together - #1039

Open
aft-alfonso[bot] wants to merge 76 commits into
mainfrom
land/views-steps-c-to-g
Open

aft-alfonso[bot] wants to merge 76 commits into
mainfrom
land/views-steps-c-to-g

Conversation

@aft-alfonso

@aft-alfonso aft-alfonso Bot commented Oct 27, 2026

Copy link
Copy Markdown

The stacked views PRs land as one PR so they need one queue run instead of seven sequential rebase-and-queue cycles. Each step was reviewed and staged on its own PR; this branch is that stack rebased onto main without conflicts:

With views off, every route is unchanged, so the search-quality descriptor is engine_unwired (ranked rows byte-identical to the reference). Build server: warnings-as-errors compile of tests and bins on Linux and the Windows target.

The stacked PRs will be closed with a pointer here once this lands.

ualtinok and others added 30 commits October 27, 2026 07:55
…robe

Adds the base_refs, base_builds, strict_rebuild, base_sweeps and sweep_state
tables as registry format/schema 2/2 (reserved for slice 4 in
docs/design/views-v3-format.md), installed only by an exact-predecessor
upgrade from 1/1 after the registry reader floor is raised to 2. Registries
created by the 3a copy path stay 1/1. views_v3_registry is now advertised as
readable at 2, so reader_floor's advertisement test and the v3 newer-format
refusal test (which used 2 as 'newer') move to 2 and 3 respectively.

Also: barrier-only registry opens (no covering measurement), a plane-row
sweep over the family's v3 plane stores, LedgerReader member/read helpers,
and GetDiskFreeSpaceExW for the non-unix free-space probe, which 3a left
unsupported.

Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
Base identity: tagged, length-prefixed BLAKE3 digests of a base manifest's
membership and content (readiness excluded; head_tree and git_oid refused,
slice 4 bases are membership-keyed) and of its effective identity (family,
producers, ignore fingerprint, platform family, membership). The base scope
name derives from the identity digest. resolve_base pins the base's current
generation with a read marker, re-verifies pointer and member row, and
recomputes both digests from the pinned manifest; only that
AuthenticatedBase validates a BaseHeader (bound_generation stays diagnostic).

Worker side: publish_worker runs the insertion barrier (BaseRefMarker with a
per-acquisition nonce plus an intent row in one IMMEDIATE transaction under
the reservation lock), authenticates the base after the barrier, rebinds the
delta to the authenticated header, verify_held and a base re-check right
before the pointer CAS, then ReferrerPublished. Conflict/EquivalentWinner and
failed verifies delete only their own intent row under the barrier before
the marker drops; a CAS that may have landed is published, never cleaned up.
open_foreign_v3 (and read::open_foreign_v3_generation) does the dual
pin-then-verify with three attempts and owns both markers.

read::open_foreign_generation keeps refusing a base header, now because a v2
view can never hold an authenticatable base reference (rule 6); its test
asserts the new reason.

Sweep: marking of current, read-marked and pinned generations under the
reservation lock, exact edges, dangling edges counted and recorded in
strict_rebuild without aborting, bounded reconciliation (256 rows / 25 ms,
updated_epoch < S only, wrap-around position), repair of valid edges,
Hold::Referenced via eviction::v3_base_hold, the two-sweep reclaim, and the
plane-row sweep. The retention collector runs it per v3 family visit and
deletes a deregistered worker's rows with its member row.

DurabilityStep gains the seven base-path boundaries (BASE_PATH); the v2 kill
test's step list excludes them. Tests use injected EIO/EXDEV/ENOSPC at each
boundary through contracts::inject_fault_at.

Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
base_builds claim with the owner-token CAS: insert when absent, Busy while
the owner lives (running, stopped or uncertain), takeover of a dead owner
with attempt+1 and a fresh token, after which the dead attempt's
staging/a<attempt>-<token>-* directories are removed. Staging and derived
names carry (attempt, owner_token). The live-base cap (64 per family,
counting claimed-but-unregistered bases) refuses new claims and counts the
hit in sweep_state.live_base_cap_hits. plan_binder: only the claim owner
builds; others wait (ACK + direct scan) and go strict only on a failed claim,
the cap, or the ruled 600 s wait.

initial_reservation implements the ruled formula with the 1 GiB cap.
DiskBudget::admit_v3/extend_v3 admit v3 reservations against the family hard
limit (refused as storage_gap:v3_family_hard_limit, no legacy fallback) and
flag usage over the 2 GiB target; RegistryWriter::extend grows a live
reservation under the floor and namespace checks. No limit or budget
constant changes.

Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
build_base reads the walker's membership with stability-checked reads (equal
size, mtime and device/inode before and after, three attempts), builds a
membership-keyed manifest (head_tree None, no git_oid), claims the base,
admits the ruled initial reservation through DiskBudget::admit_v3 (a refusal
releases the claim and returns the storage gap for the strict path),
registers the base, writes the lexical plane into the v3 trigram store
(trigram::materialize_v3, keys protected by a v3 live pin first) and
first-publishes with graph and semantic planes pending. publish_successor
lets only the live claim owner publish monotone readiness successors; a
model outage is recorded as Failed while lexical serving continues.

v3 generations carry no trigram segment: v3 has no segment rows or segment
collection yet, so readers build from payloads.

Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
- G7: two child binders (one SIGSTOPped with its intent row across two
  sweeps, then killed) plus in-process binds with one aborting; the base is
  never counted, the stopped owner's intent is kept, then orphaned, then
  retired, and published references keep the base.
- Kill test: a child parks at each DurabilityStep::BASE_PATH boundary (the
  child refuses unknown or non-base step names; the parent checks the ready
  file names the step), is SIGKILLed, and a fresh process sweeps: dead
  reservations are released, every published reference resolves, a dead
  BaseClaimed claim is taken over with attempt 2, and nothing appears under
  <storage>/views/v3.
- Delete main, kill main's daemon, run GC in a standalone process, restart
  the worker: it composes over its base with correct contents.

Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
… format doc

Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
…m the republication row test

The republication test now runs its sweep with a 60 s reconciliation time
budget: under a loaded test runner the ruled 25 ms budget could end the
pass before its final empty batch, which marks the pass incomplete without
changing the rows the test asserts.

Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
…callgraph planes

Storage route: a generation opened or published in the v3 namespace carries
a V3Route (storage, family, member scope); ViewAccess::route(generation)
returns StorageRoute::V2 or ::V3, and ViewRegistration::v3_route names a
checkout's v3 member. Routing is per generation rather than per access
because one checkout reads both v2 and v3 generations during the switch.
resolve_base, publish_worker and open_foreign_v3 set the route.

- v3 store API: PlaneReader::contains, Publication::put_or_touch and
  Publication::touch (missing keys reported), PayloadSource for PlaneReader.
- Trigram: a v3 generation has no segment file. The adapter assembles the
  base generation's segment in memory from the base's stored payloads
  (cached per base generation) and overlays the worker's changed entries
  from the v3 store. No new on-disk rows. materialize_v3_observed writes a
  worker delta's payloads from attachments or verified reads.
- Semantic: SemanticStore (v2 FamilyStore or v3 route) carries
  put_or_touch/touch/get/reader for fills; v3 writes go through
  v3::publish, fills of a v3 generation protect keys in a v3 live pin
  (LivePin::create_v3), and verified-run markers are skipped on v3. The arena
  reads runs through a RunSource trait (v2 reader or v3 PlaneReader).
  SemanticPlane::materialize_v3 applies the existing readiness rules with v3
  presence checks and touches.
- Callgraph: CompositePlane::materialize_v3/finish_generation_v3. The bridge
  puts delta blobs into v3 and builds the composed generation's derived DB in
  the worker's v3 member directory once the projection is complete;
  CallgraphPlane::open_generation reads a v3 generation's derived DB from its
  member directory. Base successors build
  derived-<gen>-a<attempt>-<token>.sqlite named by derived-<gen>.ref.
- publish_worker_with runs a step with the final generation name before the
  CAS (for derived renames).

Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
(cherry picked from commit 50757b3b99fc5881775c636377d92a316b14266b)
…hrough v3

The base-header branch of build_own_generation no longer refuses. It
authenticates the named base (pin-then-verify, digests recomputed; a header
that names no registered base is refused before any write), then folds the
cut into a sparse delta against it. A path whose bytes equal the base's
inherits the base entry, with its readiness patch as an override; a deleted
base path is a tombstone; only changed paths are entries. The plane delta
keys are materialized into v3 under a v3 live pin, and a private staging name
is pinned in the checkout's v3 member directory. Publication goes through
base_refs::publish_worker_with, whose pre-CAS step runs each plane's
finish_generation_v3. Wold is the installed v3 generation or the durable v3
pointer. Published opens the generation's readers for installation; Lost
(Conflict/EquivalentWinner) and failed or possibly landed publications set
the retry flag and return CHECKOUT_CHANGED_BEFORE_INSTALL, the existing
revalidate path. No v1/v2 row, manifest or pointer is written.

A plane without v3 storage now leaves its delta entries pending, instead of
refusing.

unwired_worker_publication_refuses_before_any_legacy_write is replaced:
a_base_referencing_worker_publishes_a_sparse_v3_generation_readable_after_restart
checks that the generation is sparse (entries = changed paths, tombstone
for the deleted base path, nothing inherited copied), names the
authenticated base, leaves the v2 pointer untouched, and composes correctly
for a fresh reader after the driver is dropped. Its refusal half survives as
a_worker_header_naming_an_unknown_base_is_refused_before_any_write.

Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
(cherry picked from commit 6eb0522ec0ca0e74b79af075eaa17f5ddfbb89cb)
…segments

Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
(cherry picked from commit c26f1c23821947845961d0f6b686efa836893f0e)
Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
…e v3-only symbol plane

Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
(cherry picked from commit b25f98bc736c63bd411c933b779bfc3c458ce3b0)
…staged bundles

Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
(cherry picked from commit d18ea48005e640c55aa3333a8671a76a6f3e7c9f)
…resume and storage-gap release

Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
(cherry picked from commit e4424f60f21a63dcab0860b53e7f7697210e1e97)
Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
(cherry picked from commit 59f5b5c4ac7f0039d05fafd8a88da29e652931fc)
…on, prune-legacy consults v3 ledgers and base builds

Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
(cherry picked from commit 2a0960762595a330762eb6773ebf6cccbe324774)
…r and symbol plane format text

Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
(cherry picked from commit d559a9a292ec464d4f983b35ebf8086ee15cbd62)
…r closes under a live connection; assert exact imported path sets

Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
(cherry picked from commit 8ca96e51a2e3d76fde3e3d69cd5e3fefd5a234d6)
Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
(cherry picked from commit 2f67e55)
The large bidirectional-pump golden test exposed BrokenPipe because check-attr --stdin treats arguments after -- as forbidden pathnames, not attribute names. Keep the fixed conversion attribute names before any pathname separator. The initial module run passed the other 19 tests; the corrected query test passes on Linux. Windows tests compile with warnings denied.

Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
(cherry picked from commit 32d1489)
Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
(cherry picked from commit 9f8edb6)
Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
(cherry picked from commit ffd2761)
Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
…tokens

Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
…tion

Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
ualtinok and others added 30 commits October 27, 2026 07:57
Preserve views-off startup when a descendant cannot be listed or watched. Initial coverage now names gaps on the retained native handle; v3 trust refuses incomplete or opaque handles. This intentionally replaces the temporary whole-watcher-refusal test with partial-service and strict-v3 controls, per the compatibility ruling. Configure's generic attachment API is unchanged.

Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
Fresh bootstrap is lexical-only until the G/H base completion coordinators exist; typed preflight refuses unsupported planes before reads or claims. Existing bases remain plane-independent. Reuse the source stamp already taken before the read instead of adding a duplicate stat, and preserve resolution-input metadata on cached callgraph attachments.

Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
Registry format 3 is now supported. Probe the compiled maximum plus one so the existing newer-format refusal assertion remains a newer-format test rather than schema drift within a supported version.

Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
Missing paths intentionally cost zero bytes, so the earlier missing-file fixture could not distinguish a skipped probe. Keep the same assertions but use a directory at the live file path: the probe must classify it as large after an intent, and must not run for an already reconciled delta.

Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
… parity

The initial strict loader folded no-base generations through v2. Refuse that constructor until the v3-only bind source is connected; test snapshot sources use the existing v3 base builder. Add public same-tree legacy parity, edits, restart, forced-kill handshake and writer-stop coverage without changing the views-off contract.

Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
Revoke only on views-on configuration publication. Keep final rename and its ledger credit under a shared publication permit; normal views-off workers may still publish after reconfigure or unbind. Deterministic channel hooks cover both orders without sleeps.

Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
Stack on step D e59e131. Use new_v3/access/verified_bind and real production acquisition in public parity, restart and kill fixtures. Forward watcher overflow and cookies to the lexical slot. Verified bind currently takes D's strict fallback; platform fast-path enablement and performance measurements remain deferred.

Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
…dary probes

Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
…tabase

Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
A sealed donor is a private, fully built derived graph switched to
journal_mode=DELETE, checkpointed and synced, with no -wal/-shm/-journal
sibling, plus an atomically published <db>-seal record (fingerprint, size,
journal mode). Readers open sealed files with immutable=1; IdentityConnection
refuses write opens while the seal record exists. clone_sealed verifies the
seal and copies into a fresh, never-reused name with clonefile (APFS), FICLONE
(Linux) or a logged plain copy; a live (unsealed) database is refused. The
generation sweep reclaims seal records with their database.

Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
(cherry picked from commit 4da050bd3d2a68effe2d0e2aa90ff7bbede9b7d5)
…one sealed donors for workers

Fresh v3 bootstrap now accepts planes that complete their own base entries
(CompositePlane::completes_fresh_base / complete_v3_base). CallgraphBridge
completes a fresh base from the bootstrap's strict-reconciliation attachments
under the base build claim (taking over a dead builder's claim, refusing a
live one), publishes a readiness successor whose derived graph is sealed as
the base's donor, and the claim is released after the worker publishes.
Semantic producers and other nonlexical planes stay refused.

Base entries now carry resolution_input before the base identity is computed
(base_builder::base_entry, used by build_base and the bootstrap's expected
identity), and with a registered graph producer only call-graph inputs start
pending, so a completed base projects.

A v3 worker graph is a fresh clone of the base's sealed donor patched with the
manifest diff (apply_manifest_diff_from_blob_reader); a cold build happens
only for a reason from donor::ColdReason and is recorded.

Fix: deleting a file a worker added (absent from the base) produced a
tombstone for a non-inherited path, which ComposedGeneration::compose refuses;
such paths are now dropped from the delta without a tombstone.

Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
(cherry picked from commit 27584ea4496e88dbacc4d889b98e8413f468c9b8)
With views on (and the call graph enabled, a heavy-work root and an
available cache), callgraph_store_for_ops and its no-wait variant acquire a
reader from a CallgraphView: a v3-only CheckoutDriver with the lexical and
call-graph planes under its own member scope (<scope>.callgraph). Each
acquisition verified-binds, publishes pending edits as a new worker generation
before its single install, refuses uncertain snapshots (pending intent,
unhealthy watcher, unpublished changes) and never falls back to the legacy
store or a v1 view. The reader is pinned once per pinned request. Status,
zoom, inspect's graph-backed categories and the borrowed-graph disclosure
follow the route; warming never binds on the transport loop. An explicitly
installed CheckoutQueryRuntime keeps precedence. Views off is unchanged.

Fix (views-on): view-materialized graphs store the call-graph blob key as a
file's content hash, so source-line freshness checks marked every view answer
stale (approximate, no call_expression). The adapter now also accepts the
current bytes' derived blob key.

Parity tests compare callers/impact/call_tree/trace_to output with a cold
legacy store over the same files on a plain clone and a linked worktree,
across edits, a deletion, an overflow and a restart; a refused acquisition
never answers from a resident legacy store.

Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
(cherry picked from commit 57a9c36ab4d1a796f1146c43c1af6c7c23607ac8)
With views on, every call-graph read now goes through the checkout's v3
view, so tests that pinned a v1 view and asserted the old route's answers
are ported to the same contracts on the new route, or retired when the old
route itself was their subject:

Ported (contract kept, assertions as strict):
- views_keyed_generation_{answers_building,zoom_reports_building,
  inspect_reports_pending}_while_derived_store_is_busy: a SQLite lock on the
  view database opening is reported as busy/building/pending, never as an
  absent graph. The view route now carries a typed busy flag
  (CallgraphViewError) and inspect observes it from the request's access.
- views_pending_head_callers_... -> views_changed_head_callers_answer_the_
  current_tree_not_the_stale_legacy_store: never serve stale rows.
- views_publication_skips_a_non_utf8_callgraph_source_and_completes: now
  also passes on the view route because call-graph attachment gives a
  non-UTF-8 source an empty graph, as checkout assembly does (fix).
- publication_build_does_not_delay_same_root_bind_and_read: the read still
  completes while a publication is held, and answers the current tree.
- callgraph_worktree_published_owner_assembles_its_own_changed_source and
  callgraph_unindexed_path_differs_from_missing_symbol: a worktree answers
  from its own source at once; a new file is indexed, not 'not_in_generation'.
- scoped_inspect_views_worktree_reports_checkout_only_dead_function: an edit
  after binding is reflected rather than reported unavailable.
- views_removed_callgraph_blob_store_and_view_rebuild_on_restart: the v1
  checkpoint-contention section is dropped (the view route no longer reads
  the v1 database); rebuild, parity and edit checks remain.
- blob_removal_stop waits (bounded) for v3 session-end/checkpoint threads.

Added: views_callgraph_index_off_answers_off_without_binding_a_view.

Retired (subject was the v1 route):
- views_keyless_generation_answers_disabled_while_derived_store_is_busy and
  per_checkout_9::callgraph_ops_report_a_keyless_view_generation_as_disabled:
  a v1 generation published with the call graph off; v3 keyless refusal
  stays covered by per_checkout_callgraph keyless tests.
- generation_sweep_waits_for_the_last_query_handle: v1 QueryPin vs v1 sweep;
  the v3 equivalent (a held reader keeps its generation) is asserted in
  views::callgraph::tests.
- inspect_view_pending_reply_names_publication_not_changed_sources: wording
  of the v1 'view pending' reply.
- inspect_views_owner_persists_and_reuses_tier2_contributions: the
  writer-backed reuse pipeline read the v1 published view; v3-routed dead
  code is projected per request from the pinned view (no contribution reuse).

Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
(cherry picked from commit 7773c24d17f3c4e26c12a9a038a524a0f9371857)
…out view route

The on-demand worktree tests asserted the v1 route: answering from the
main checkout's published graph, reporting building until a lazy v1 build
finished. On the view route a worktree always answers at once from its own
v3 view (the shared base's sealed donor avoids rebuilding it).

Ported: linked_worktree_{with_its_own_commit_is_never_answered_from_main_graph,
stops_answering_from_main_graph_after_main_moves, with_a_graph_from_an_earlier_
process_defers_its_next_publication, defers_and_builds_on_first_query_when_main_
is_not_bound} now assert an immediate answer from the worktree's own view
equal to a cold build (lazy_query_builds_own_graph); edit_reports_building_then_
answers_from_its_own_graph -> linked_worktree_edit_answers_from_its_own_view_at_
once; concurrent_first_queries_start_one_call_graph_build asserts both answer
and one sealed base build; main_checkout_still_builds_its_call_graph_at_bind
and busy_readiness_defers_revalidation_without_a_cold_rebuild keep their v1
publication assertions and read the view route; views_restart_dirty_source_
reports_working_tree_refresh_until_publication -> views_restart_dirty_source_
answers_the_working_tree_at_once.

Retired (the old route itself): linked_worktree_answers_from_main_graph_
without_building_its_own and linked_worktree_waits_for_a_locked_main_graph_
instead_of_building, with their unused helpers (lazy_lock_derived,
lazy_wait_for_own_graph, inspect current_view_projection_store_for_test).

Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
(cherry picked from commit dbdd5480bdc6af8a67e95042ee8f88b4ad8cf605)
Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
(cherry picked from commit f3c935edb548a56d523b24ce4263582e584cd53a)
(cherry picked from commit 7d2bc52)
Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
(cherry picked from commit 775d4d79aa7b2c4bd5a82d7a2e111abe475d2990)
(cherry picked from commit 9883ddd)
…p, untested)

Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
(cherry picked from commit 3362271a7a4527309ca2a8b8aa316364a46ca631)
(cherry picked from commit 46dfb79)
Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
(cherry picked from commit ed0172f1483cc180e4fe0a0fe789b4d25e556ff8)
(cherry picked from commit 857d122)
Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
(cherry picked from commit 1fd271284572f785def2ecd7ba687ded8706018d)
(cherry picked from commit 799e1a0)
Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
(cherry picked from commit 21536e8dceaf1fd798d813853f2216b81cbc33b1)
(cherry picked from commit 7fd67ef)
Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
(cherry picked from commit 9ee68f4a022572214d60cbc3df9dffb7632244d3)
(cherry picked from commit 7a5d796)
Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
(cherry picked from commit eb65b7e2034f962d24ccc2e173ef7ab670d1994b)
(cherry picked from commit 0d9c4bc)
Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
(cherry picked from commit 12c67f8)
Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
Co-authored-by: alfonso-aft <289616620+alfonso-aft@users.noreply.github.com>
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