Update public large input metadata

This commit is contained in:
Michel Paulissen 2026-07-04 10:33:28 +02:00
parent c4141e0dee
commit f8f91088d5
6 changed files with 113 additions and 4 deletions

View file

@ -1,7 +1,7 @@
{
"kind": "disasmer-filtered-public-tree",
"source_commit": "b2b2e4a1b7c94ccc39c4d8cdfca6e98928fe2185",
"release_name": "dryrun-b2b2e4a1b7c9",
"source_commit": "276fb9d6bd1d5a8d5f38df37ccf104664f6f5043",
"release_name": "dryrun-276fb9d6bd1d",
"filtered_out": [
"private/**",
"experiments/**",

View file

@ -6068,6 +6068,35 @@ mod tests {
assert!(inspection.metadata.debug_metadata.available);
assert!(inspection.metadata.debug_metadata.source_level_breakpoints);
assert!(inspection.metadata.debug_metadata.variables_pane_supported);
assert!(
inspection
.metadata
.large_input_policy
.selected_inputs_are_content_digests
);
assert!(
!inspection
.metadata
.large_input_policy
.selected_input_bytes_included
);
assert!(
!inspection
.metadata
.large_input_policy
.full_repository_bytes_included
);
assert!(
!inspection
.metadata
.large_input_policy
.silent_task_argument_serialization
);
assert!(inspection
.metadata
.large_input_policy
.supported_handle_types
.contains(&"SourceSnapshot".to_owned()));
assert!(!inspection.metadata.embeds_full_container_images);
assert!(inspection
.metadata
@ -7658,6 +7687,31 @@ mod tests {
report["bundle"]["metadata"]["debug_metadata"]["dap_virtual_process"],
true
);
assert_eq!(
report["bundle"]["metadata"]["large_input_policy"]
["selected_inputs_are_content_digests"],
true
);
assert_eq!(
report["bundle"]["metadata"]["large_input_policy"]["selected_input_bytes_included"],
false
);
assert_eq!(
report["bundle"]["metadata"]["large_input_policy"]["full_repository_bytes_included"],
false
);
assert_eq!(
report["bundle"]["metadata"]["large_input_policy"]
["silent_task_argument_serialization"],
false
);
assert!(
report["bundle"]["metadata"]["large_input_policy"]["supported_handle_types"]
.as_array()
.unwrap()
.iter()
.any(|handle| handle == "Artifact")
);
assert_eq!(report["status"], "built");
assert_eq!(report["scheduled_work"], false);
}

View file

@ -27,6 +27,7 @@ pub struct BundleMetadata {
pub task_metadata: BundleTaskMetadata,
pub source_metadata: BundleSourceMetadata,
pub debug_metadata: BundleDebugMetadata,
pub large_input_policy: BundleLargeInputPolicy,
pub environments: Vec<EnvironmentResource>,
pub selected_inputs: Vec<SelectedInput>,
pub embeds_full_container_images: bool,
@ -55,6 +56,15 @@ pub struct BundleDebugMetadata {
pub variables_pane_supported: bool,
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct BundleLargeInputPolicy {
pub selected_inputs_are_content_digests: bool,
pub selected_input_bytes_included: bool,
pub full_repository_bytes_included: bool,
pub silent_task_argument_serialization: bool,
pub supported_handle_types: Vec<String>,
}
impl BundleIdentityInputs {
pub fn identity(&self) -> Digest {
let mut parts = vec![
@ -114,6 +124,18 @@ impl BundleIdentityInputs {
dap_virtual_process: true,
variables_pane_supported: true,
},
large_input_policy: BundleLargeInputPolicy {
selected_inputs_are_content_digests: true,
selected_input_bytes_included: false,
full_repository_bytes_included: false,
silent_task_argument_serialization: false,
supported_handle_types: vec![
"SourceSnapshot".to_owned(),
"Blob".to_owned(),
"Artifact".to_owned(),
"VFS".to_owned(),
],
},
environments: self.environments.clone(),
selected_inputs: self.selected_inputs.clone(),
embeds_full_container_images: false,
@ -189,6 +211,22 @@ mod tests {
.transfer_policy
.local_source_bytes_remain_node_local
);
assert!(
metadata
.large_input_policy
.selected_inputs_are_content_digests
);
assert!(!metadata.large_input_policy.selected_input_bytes_included);
assert!(!metadata.large_input_policy.full_repository_bytes_included);
assert!(
!metadata
.large_input_policy
.silent_task_argument_serialization
);
assert!(metadata
.large_input_policy
.supported_handle_types
.contains(&"Artifact".to_owned()));
assert_eq!(metadata.environments.len(), 1);
assert!(!metadata.embeds_full_container_images);
}

View file

@ -27,8 +27,8 @@ pub use auth::{
PublicKeyIdentity, Scope,
};
pub use bundle::{
BundleDebugMetadata, BundleIdentityInputs, BundleMetadata, BundleSourceMetadata,
BundleTaskMetadata, SelectedInput,
BundleDebugMetadata, BundleIdentityInputs, BundleLargeInputPolicy, BundleMetadata,
BundleSourceMetadata, BundleTaskMetadata, SelectedInput,
};
pub use capability::{Capability, CapabilityReportError, EnvironmentBackend, NodeCapabilities, Os};
pub use checkpoint::{

View file

@ -391,6 +391,11 @@ expect(
"CLI build coverage verifies inspectable metadata",
/fn build_command_reuses_bundle_inspection_without_full_repo_upload\(\)[\s\S]*wasm_code[\s\S]*task_metadata[\s\S]*source_metadata[\s\S]*debug_metadata/
);
expect(
cli,
"CLI build coverage verifies large input handle posture",
/large_input_policy[\s\S]*selected_inputs_are_content_digests[\s\S]*selected_input_bytes_included[\s\S]*silent_task_argument_serialization[\s\S]*supported_handle_types/
);
expect(
cli,
"CLI blocks build before scheduling unsafe inputs",
@ -430,6 +435,7 @@ for (const [name, pattern] of [
["doctor human mode", /\["doctor"\]/],
["doctor reachability JSON mode", /doctorJson\.coordinator_reachability\.status/],
["bundle inspect JSON mode", /\["bundle", "inspect", "--project", project, "--json"\]/],
["bundle inspect large input JSON mode", /large_input_policy[\s\S]*SourceSnapshot/],
["auth expiry posture", /token_expiry_posture[\s\S]*expires_at/],
]) {
expect(outputModeSmoke, name, pattern);

View file

@ -101,5 +101,16 @@ assert.strictEqual(
false
);
assert.strictEqual(inspectJson.metadata.debug_metadata.dap_virtual_process, true);
assert.strictEqual(
inspectJson.metadata.large_input_policy.selected_inputs_are_content_digests,
true
);
assert.strictEqual(inspectJson.metadata.large_input_policy.selected_input_bytes_included, false);
assert.strictEqual(inspectJson.metadata.large_input_policy.full_repository_bytes_included, false);
assert.strictEqual(
inspectJson.metadata.large_input_policy.silent_task_argument_serialization,
false
);
assert(inspectJson.metadata.large_input_policy.supported_handle_types.includes("SourceSnapshot"));
console.log("CLI output mode smoke passed");