Skip to content

blockifier: sha512 syscall#14072

Open
dorimedini-starkware wants to merge 1 commit into
05-26-release_upgrade_cairo_native_proving-utilsfrom
05-17-blockifier_sha512_syscall
Open

blockifier: sha512 syscall#14072
dorimedini-starkware wants to merge 1 commit into
05-26-release_upgrade_cairo_native_proving-utilsfrom
05-17-blockifier_sha512_syscall

Conversation

@dorimedini-starkware
Copy link
Copy Markdown
Collaborator

No description provided.

@reviewable-StarkWare
Copy link
Copy Markdown

This change is Reviewable

Copy link
Copy Markdown
Collaborator Author

dorimedini-starkware commented May 19, 2026

Warning

This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more

This stack of pull requests is managed by Graphite. Learn more about stacking.

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 19, 2026

@dorimedini-starkware dorimedini-starkware force-pushed the 05-17-blockifier_sha512_syscall branch from b11ea68 to f15fa30 Compare May 25, 2026 14:40
@dorimedini-starkware dorimedini-starkware changed the base branch from main to graphite-base/14072 May 26, 2026 10:56
@dorimedini-starkware dorimedini-starkware force-pushed the 05-17-blockifier_sha512_syscall branch from f15fa30 to 6249aad Compare May 26, 2026 10:56
@dorimedini-starkware dorimedini-starkware changed the base branch from graphite-base/14072 to 05-26-release_upgrade_cairo_native_proving-utils May 26, 2026 10:56
@dorimedini-starkware dorimedini-starkware force-pushed the 05-17-blockifier_sha512_syscall branch from 6249aad to be74220 Compare May 26, 2026 11:04
@dorimedini-starkware dorimedini-starkware self-assigned this May 26, 2026
@dorimedini-starkware dorimedini-starkware marked this pull request as ready for review May 26, 2026 11:06
@cursor
Copy link
Copy Markdown

cursor Bot commented May 26, 2026

PR Summary

High Risk
Touches Starknet OS program hashes, virtual OS allowlist, and core syscall execution—consensus- and proving-sensitive; incorrect hashing or gas would be protocol-breaking.

Overview
Adds SHA-512 process-block syscall support end-to-end, mirroring the existing SHA-256 path: new Sierra libfuncs (sha512_*), blockifier VM/native execution via sha2::compress512, OS Cairo dispatch and execute_sha512_process_block, a sha512 non-selectable builtin with finalize_sha512 / RelocateSha512Segment / Sha512Finalize hints, and syscall gas (SHA512_PROCESS_BLOCK_GAS_COST ≈ 2.4M).

OS / proving: program_hash.json and allowed virtual OS program hash are updated; bytecode length expectations rise. Versioned constants gain Sha512ProcessBlock entries (non-zero OS step/builtin costs from 0.14.3 onward).

Tests & tooling: Contract test_sha512, blockifier syscall tests, flow/virtual OS coverage, allowed-libfunc lists (including pending-audit entries), and refreshed integration fixtures.

Reviewed by Cursor Bugbot for commit 7dd2592. Bugbot is set up for automated code reviews on this repo. Configure here.

Copy link
Copy Markdown

@cursor cursor Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit be74220. Configure here.

Comment thread crates/blockifier/resources/versioned_constants_diff_regression/0.13.3_0.13.4.txt Outdated
@dorimedini-starkware dorimedini-starkware force-pushed the 05-26-release_upgrade_cairo_native_proving-utils branch from 6ba9319 to f293605 Compare May 26, 2026 11:19
@dorimedini-starkware dorimedini-starkware force-pushed the 05-17-blockifier_sha512_syscall branch from be74220 to ad0c4b6 Compare May 26, 2026 11:19
Copy link
Copy Markdown
Collaborator

@Yoni-Starkware Yoni-Starkware left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Yoni-Starkware reviewed 19 files and all commit messages, and made 1 comment.
Reviewable status: 19 of 65 files reviewed, 1 unresolved discussion (waiting on dorimedini-starkware and liorgold2).


crates/blockifier/resources/blockifier_versioned_constants_0_14_3.json line 477 at r3 (raw file):

                    "bitwise_builtin": 2230
                }
            },

Not consistent with your slack message

Code quote:

            "Sha256ProcessBlock": {
                "n_steps": 1867,
                "n_memory_holes": 0,
                "builtin_instance_counter": {
                    "range_check_builtin": 65,
                    "bitwise_builtin": 1115
                }
            },
            "Sha512ProcessBlock": {
                "n_steps": 3734,
                "n_memory_holes": 0,
                "builtin_instance_counter": {
                    "range_check_builtin": 130,
                    "bitwise_builtin": 2230
                }
            },

Copy link
Copy Markdown
Collaborator

@Yoni-Starkware Yoni-Starkware left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you please add sha512 call in here? (virtual os e2e test)

let multi_call_args = create_multicall_calldata(&[

@Yoni-Starkware reviewed 7 files and made 1 comment.
Reviewable status: 26 of 65 files reviewed, 1 unresolved discussion (waiting on dorimedini-starkware and liorgold2).

Copy link
Copy Markdown
Collaborator

@Yoni-Starkware Yoni-Starkware left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You should add SHA512_PROCESS_BLOCK_GAS_COST to constants_test.rs

@Yoni-Starkware reviewed 1 file and made 1 comment.
Reviewable status: 27 of 65 files reviewed, 1 unresolved discussion (waiting on dorimedini-starkware and liorgold2).

Copy link
Copy Markdown
Collaborator

@Yoni-Starkware Yoni-Starkware left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Yoni-Starkware made 3 comments.
Reviewable status: 27 of 65 files reviewed, 4 unresolved discussions (waiting on dorimedini-starkware and liorgold2).


crates/starknet_os/src/hints/hint_implementation/execute_transactions/implementation.rs line 67 at r3 (raw file):

}

pub(crate) fn sha2_finalize(ctx: HintContext<'_>) -> OsHintResult {

(why not 256? nonblocking)

Code quote:

sha2_finalize(

crates/starknet_os/src/hints/hint_implementation/execute_transactions/implementation.rs line 68 at r3 (raw file):

pub(crate) fn sha2_finalize(ctx: HintContext<'_>) -> OsHintResult {
    let batch_size = &ctx.fetch_const(Const::ShaBatchSize)?.to_bigint();

Add a TODO to rename to Sha256BatchSize

Code quote:

ShaBatchSize

crates/starknet_os/src/hints/hint_implementation/execute_transactions/implementation.rs line 113 at r3 (raw file):

    let padding = calculate_sha512_padding(sha512_input_chunk_size_felts, number_of_missing_blocks);
    let sha512_ptr_end = ctx.get_ptr(Ids::Sha512PtrEnd)?;
    ctx.vm.load_data(sha512_ptr_end, &padding)?;

Please share this code with sha256

Code quote:

    let batch_size = &ctx.fetch_const(Const::Sha512BatchSize)?.to_bigint();
    let n = &ctx.get_integer(Ids::N)?.to_bigint();
    let number_of_missing_blocks = ((((-n) % batch_size) + batch_size) % batch_size)
        .to_u32()
        .expect("Failed to convert number of missing blocks to u32.");
    assert!(
        (0..N_MISSING_BLOCKS_BOUND).contains(&number_of_missing_blocks),
        "number_of_missing_blocks: {number_of_missing_blocks} is expected to be in the range [0, \
         {N_MISSING_BLOCKS_BOUND}). Got n: {n} and batch size: {batch_size}."
    );
    let sha512_input_chunk_size_felts =
        felt_to_usize(ctx.fetch_const(Const::Sha512InputChunkSize)?)?;
    assert!(
        (0..SHA256_INPUT_CHUNK_SIZE_BOUND).contains(&sha512_input_chunk_size_felts),
        "sha512_input_chunk_size_felts: {sha512_input_chunk_size_felts} is expected to be in the \
         range [0, {SHA256_INPUT_CHUNK_SIZE_BOUND})."
    );
    let padding = calculate_sha512_padding(sha512_input_chunk_size_felts, number_of_missing_blocks);
    let sha512_ptr_end = ctx.get_ptr(Ids::Sha512PtrEnd)?;
    ctx.vm.load_data(sha512_ptr_end, &padding)?;

Copy link
Copy Markdown
Collaborator

@Yoni-Starkware Yoni-Starkware left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Yoni-Starkware made 1 comment.
Reviewable status: 27 of 65 files reviewed, 5 unresolved discussions (waiting on dorimedini-starkware and liorgold2).


crates/starknet_os/src/hints/hint_implementation/execute_transactions/implementation.rs line 107 at r3 (raw file):

        felt_to_usize(ctx.fetch_const(Const::Sha512InputChunkSize)?)?;
    assert!(
        (0..SHA256_INPUT_CHUNK_SIZE_BOUND).contains(&sha512_input_chunk_size_felts),

Should be the same? if so, please add an alias so it would be clear

Suggestion:

SHA512_INPUT_CHUNK_SIZE_BOUND

Copy link
Copy Markdown
Collaborator

@Yoni-Starkware Yoni-Starkware left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Yoni-Starkware made 1 comment.
Reviewable status: 27 of 65 files reviewed, 6 unresolved discussions (waiting on dorimedini-starkware and liorgold2).


crates/starknet_os/src/hints/hint_implementation/execute_syscalls.rs line 65 at r3 (raw file):

    ctx.vm.add_relocation_rule(state_ptr, actual_out_state_ptr.into())?;
    Ok(())
}

Please share this code

Code quote:

pub(crate) fn relocate_sha512_segment<S: StateReader>(
    _hint_processor: &mut SnosHintProcessor<'_, S>,
    ctx: HintContext<'_>,
) -> OsHintResult {
    let state_ptr = ctx.get_nested_field_ptr(
        Ids::Response,
        CairoStruct::Sha512ProcessBlockResponsePtr,
        &["state_ptr"],
    )?;
    let actual_out_state_ptr = ctx.get_ptr(Ids::ActualOutState)?;

    // TODO(Nimrod): Use SHA256_STATE_SIZE_FELTS constant.
    let sha_state_size = 8;

    let data = ctx.vm.get_continuous_range(state_ptr, sha_state_size)?;
    ctx.vm.load_data(actual_out_state_ptr, &data)?;

    ctx.vm.add_relocation_rule(state_ptr, actual_out_state_ptr.into())?;
    Ok(())
}

Copy link
Copy Markdown
Collaborator

@Yoni-Starkware Yoni-Starkware left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Yoni-Starkware made 2 comments.
Reviewable status: 27 of 65 files reviewed, 8 unresolved discussions (waiting on dorimedini-starkware and liorgold2).


crates/starknet_os/src/hints/hint_implementation/execute_transactions/utils.rs line 24 at r3 (raw file):

];

pub(crate) fn calculate_padding(

Suggestion:

calculate_sha256_padding(

crates/starknet_os/src/hints/hint_implementation/execute_transactions/utils.rs line 68 at r3 (raw file):

    }
    padding
}

Please share, at least parts of it

Code quote:

pub(crate) fn calculate_sha512_padding(
    sha512_input_chunk_size_felts: usize,
    number_of_missing_blocks: u32,
) -> Vec<MaybeRelocatable> {
    let message = vec![0_u64; sha512_input_chunk_size_felts];
    let flat_message = sha2::digest::generic_array::GenericArray::from_exact_iter(
        message.iter().flat_map(|v| v.to_be_bytes()),
    )
    .expect("Failed to create a dummy message for sha512_finalize.");
    let mut state = SHA512_IV;
    sha2::compress512(&mut state, &[flat_message]);
    let padding_to_repeat: Vec<u64> =
        [message, SHA512_IV.to_vec(), state.to_vec()].into_iter().flatten().collect();

    let mut padding = vec![];
    let padding_extension =
        padding_to_repeat.iter().map(|x| MaybeRelocatable::from(Felt::from(*x)));
    for _ in 0..number_of_missing_blocks {
        padding.extend(padding_extension.clone());
    }
    padding
}

Copy link
Copy Markdown
Collaborator

@Yoni-Starkware Yoni-Starkware left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Yoni-Starkware reviewed 6 files and made 1 comment.
Reviewable status: 33 of 65 files reviewed, 9 unresolved discussions (waiting on dorimedini-starkware and liorgold2).


crates/starknet_os/src/hint_processor/snos_syscall_executor.rs line 385 at r3 (raw file):

        vm.load_data(temp_segment, state)?;
        Ok(temp_segment)
    }

Identical to the above, please share the code or rename the first func

Code quote:

    fn write_sha512_out_state(
        &mut self,
        state: &[MaybeRelocatable],
        vm: &mut VirtualMachine,
    ) -> Result<Relocatable, Self::Error> {
        let temp_segment = vm.add_temporary_segment();
        vm.load_data(temp_segment, state)?;
        Ok(temp_segment)
    }

@dorimedini-starkware dorimedini-starkware force-pushed the 05-17-blockifier_sha512_syscall branch 2 times, most recently from e063dae to 04f14e3 Compare May 26, 2026 13:03
@dorimedini-starkware dorimedini-starkware force-pushed the 05-26-release_upgrade_cairo_native_proving-utils branch from f293605 to e583f90 Compare May 26, 2026 13:03
Copy link
Copy Markdown
Collaborator Author

@dorimedini-starkware dorimedini-starkware left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@dorimedini-starkware made 6 comments.
Reviewable status: 30 of 68 files reviewed, 9 unresolved discussions (waiting on liorgold2 and Yoni-Starkware).


crates/blockifier/resources/blockifier_versioned_constants_0_14_3.json line 477 at r3 (raw file):

Previously, Yoni-Starkware (Yoni) wrote…

Not consistent with your slack message

Done.


crates/starknet_os/src/hint_processor/snos_syscall_executor.rs line 385 at r3 (raw file):

Previously, Yoni-Starkware (Yoni) wrote…

Identical to the above, please share the code or rename the first func

Done.


crates/starknet_os/src/hints/hint_implementation/execute_syscalls.rs line 65 at r3 (raw file):

Previously, Yoni-Starkware (Yoni) wrote…

Please share this code

Done.


crates/starknet_os/src/hints/hint_implementation/execute_transactions/implementation.rs line 107 at r3 (raw file):

Previously, Yoni-Starkware (Yoni) wrote…

Should be the same? if so, please add an alias so it would be clear

it's hard-coded as 100 in both cases, so just added another named constant.


crates/starknet_os/src/hints/hint_implementation/execute_transactions/implementation.rs line 113 at r3 (raw file):

Previously, Yoni-Starkware (Yoni) wrote…

Please share this code with sha256

Done.


crates/starknet_os/src/hints/hint_implementation/execute_transactions/utils.rs line 68 at r3 (raw file):

Previously, Yoni-Starkware (Yoni) wrote…

Please share, at least parts of it

Done.

@dorimedini-starkware dorimedini-starkware force-pushed the 05-17-blockifier_sha512_syscall branch 2 times, most recently from ea057fb to 3029639 Compare May 26, 2026 13:08
Copy link
Copy Markdown
Collaborator Author

@dorimedini-starkware dorimedini-starkware left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@dorimedini-starkware made 3 comments and resolved 3 discussions.
Reviewable status: 30 of 68 files reviewed, 6 unresolved discussions (waiting on liorgold2 and Yoni-Starkware).


crates/starknet_os/src/hints/hint_implementation/execute_transactions/implementation.rs line 67 at r3 (raw file):

Previously, Yoni-Starkware (Yoni) wrote…

(why not 256? nonblocking)

done, next PR in stack


crates/starknet_os/src/hints/hint_implementation/execute_transactions/implementation.rs line 68 at r3 (raw file):

Previously, Yoni-Starkware (Yoni) wrote…

Add a TODO to rename to Sha256BatchSize

done, next PR in stack


crates/starknet_os/src/hints/hint_implementation/execute_transactions/utils.rs line 24 at r3 (raw file):

];

pub(crate) fn calculate_padding(

done, next PR in stack

Copy link
Copy Markdown
Collaborator Author

@dorimedini-starkware dorimedini-starkware left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done, and here already

@dorimedini-starkware made 1 comment.
Reviewable status: 30 of 69 files reviewed, 6 unresolved discussions (waiting on liorgold2 and Yoni-Starkware).

@dorimedini-starkware dorimedini-starkware force-pushed the 05-17-blockifier_sha512_syscall branch 2 times, most recently from d198e92 to d16a453 Compare May 26, 2026 14:16
@dorimedini-starkware dorimedini-starkware force-pushed the 05-26-release_upgrade_cairo_native_proving-utils branch from e583f90 to 085f6c6 Compare May 26, 2026 14:47
@dorimedini-starkware dorimedini-starkware force-pushed the 05-17-blockifier_sha512_syscall branch from d16a453 to 014f2e5 Compare May 26, 2026 14:47
Copy link
Copy Markdown
Collaborator

@Yoni-Starkware Yoni-Starkware left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Yoni-Starkware reviewed 18 files and all commit messages, made 1 comment, and resolved 6 discussions.
Reviewable status: 48 of 72 files reviewed, 1 unresolved discussion (waiting on dorimedini-starkware and liorgold2).


crates/blockifier_test_utils/resources/feature_contracts/cairo1/test_contract.cairo line 684 at r6 (raw file):

    #[external(v0)]
    fn test_sha512(ref self: ContractState) {

Add a case with a non-trivial array

@dorimedini-starkware dorimedini-starkware force-pushed the 05-17-blockifier_sha512_syscall branch from 014f2e5 to bea1354 Compare May 26, 2026 16:01
Copy link
Copy Markdown
Collaborator Author

@dorimedini-starkware dorimedini-starkware left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@dorimedini-starkware resolved 1 discussion.
Reviewable status: 48 of 72 files reviewed, all discussions resolved (waiting on liorgold2).

@dorimedini-starkware dorimedini-starkware force-pushed the 05-17-blockifier_sha512_syscall branch from bea1354 to 8936907 Compare May 26, 2026 16:11
Copy link
Copy Markdown
Collaborator

@Yoni-Starkware Yoni-Starkware left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

:lgtm:

@Yoni-Starkware reviewed 7 files and all commit messages, and made 2 comments.
Reviewable status: 53 of 72 files reviewed, 1 unresolved discussion (waiting on dorimedini-starkware and liorgold2).


crates/blockifier/src/execution/syscalls/vm_syscall_utils.rs line 570 at r6 (raw file):

        Ok(())
    }
}

Duplication of the above. You can just rename Sha256 -> SharedSha and delete this one
nonblocking

Code quote:

// Sha512ProcessBlock syscall.
#[derive(Debug, Eq, PartialEq)]
pub struct Sha512ProcessBlockRequest {
    pub state_ptr: Relocatable,
    pub input_start: Relocatable,
}

impl SyscallRequest for Sha512ProcessBlockRequest {
    fn read(
        vm: &VirtualMachine,
        ptr: &mut Relocatable,
    ) -> SyscallBaseResult<Sha512ProcessBlockRequest> {
        let state_start = vm.get_relocatable(*ptr)?;
        *ptr = (*ptr + 1)?;
        let input_start = vm.get_relocatable(*ptr)?;
        *ptr = (*ptr + 1)?;
        Ok(Sha512ProcessBlockRequest { state_ptr: state_start, input_start })
    }
}

#[derive(Debug, Eq, PartialEq)]
pub struct Sha512ProcessBlockResponse {
    pub state_ptr: Relocatable,
}

impl SyscallResponse for Sha512ProcessBlockResponse {
    fn write(self, vm: &mut VirtualMachine, ptr: &mut Relocatable) -> WriteResponseResult {
        write_maybe_relocatable(vm, ptr, self.state_ptr)?;
        Ok(())
    }
}

@dorimedini-starkware dorimedini-starkware force-pushed the 05-17-blockifier_sha512_syscall branch from 8936907 to d2c4983 Compare May 26, 2026 16:27
Copy link
Copy Markdown
Collaborator Author

@dorimedini-starkware dorimedini-starkware left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@dorimedini-starkware made 1 comment and resolved 1 discussion.
Reviewable status: 52 of 72 files reviewed, all discussions resolved (waiting on liorgold2 and Yoni-Starkware).


crates/blockifier/src/execution/syscalls/vm_syscall_utils.rs line 570 at r6 (raw file):

Previously, Yoni-Starkware (Yoni) wrote…

Duplication of the above. You can just rename Sha256 -> SharedSha and delete this one
nonblocking

done in top PR

@dorimedini-starkware dorimedini-starkware force-pushed the 05-17-blockifier_sha512_syscall branch from d2c4983 to 3b71060 Compare May 26, 2026 16:42
Copy link
Copy Markdown
Collaborator

@Yoni-Starkware Yoni-Starkware left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Yoni-Starkware reviewed 4 files and all commit messages.
Reviewable status: 54 of 73 files reviewed, all discussions resolved (waiting on liorgold2).

@dorimedini-starkware dorimedini-starkware force-pushed the 05-17-blockifier_sha512_syscall branch from 3b71060 to 94e61a4 Compare May 26, 2026 16:46
Copy link
Copy Markdown
Collaborator

@Yoni-Starkware Yoni-Starkware left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Yoni-Starkware reviewed 1 file.
Reviewable status: 55 of 74 files reviewed, all discussions resolved (waiting on liorgold2).

@dorimedini-starkware dorimedini-starkware force-pushed the 05-17-blockifier_sha512_syscall branch from 94e61a4 to 7dd2592 Compare May 26, 2026 18:00
Copy link
Copy Markdown
Collaborator

@Yoni-Starkware Yoni-Starkware left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Yoni-Starkware reviewed 1 file and all commit messages.
Reviewable status: 56 of 75 files reviewed, all discussions resolved (waiting on liorgold2).

Copy link
Copy Markdown
Collaborator

@Yoni-Starkware Yoni-Starkware left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

:lgtm:

@Yoni-Starkware made 1 comment.
Reviewable status: 56 of 75 files reviewed, all discussions resolved (waiting on liorgold2).

Copy link
Copy Markdown
Collaborator Author

@dorimedini-starkware dorimedini-starkware left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@dorimedini-starkware reviewed 56 files and all commit messages.
Reviewable status: 56 of 75 files reviewed, all discussions resolved (waiting on liorgold2).

Copy link
Copy Markdown
Collaborator Author

@dorimedini-starkware dorimedini-starkware left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@dorimedini-starkware partially reviewed 25 files.
Reviewable status: :shipit: complete! all files reviewed, all discussions resolved (waiting on liorgold2).

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.

3 participants