Local branch had diverged from origin/master (sibling commits on the same base). Rewrote local history linearly on top of origin/master, folding in all local content: exa/hot-platform discovery hunters, leaks ledger, nightly sweep orchestrator, updated .gitignore and skill docs, plus the latest hunt output and vault state. Remote-only files (vault keys, channel scripts) were restored rather than dropped, so the resulting tree is a full union of both sides.
1 line
90 KiB
JSON
1 line
90 KiB
JSON
{"repo": "alexcao911/swift-agent", "files": {"local-ios-agent/rust-core/tests/lint/llm_phase_three_architecture.rs": {"53e990000a0582346e4ddffdd3402789af10da24": {"t": 1785745870.1140041, "n": 8954, "h": "01e04a11fea0ee47", "c": "use std::{\n fs,\n path::{Path, PathBuf},\n};\n\nfn root() -> PathBuf {\n Path::new(env!(\"CARGO_MANIFEST_DIR\"))\n .parent()\n .expect(\"rust-core must be below the repository root\")\n .to_path_buf()\n}\n\nfn files(root: &Path, extensions: &[&str]) -> Vec<PathBuf> {\n fn visit(path: &Path, extensions: &[&str], output: &mut Vec<PathBuf>) {\n let Ok(entries) = fs::read_dir(path) else {\n return;\n };\n for entry in entries.flatten() {\n let path = entry.path();\n if path.is_dir() {\n if matches!(\n path.file_name().and_then(|name| name.to_str()),\n Some(\"target\" | \".build\" | \"Artifacts\" | \"vendor\" | \"third_party\")\n ) {\n continue;\n }\n visit(&path, extensions, output);\n } else if path\n .extension()\n .and_then(|value| value.to_str())\n .is_some_and(|value| extensions.contains(&value))\n {\n output.push(path);\n }\n }\n }\n let mut output = Vec::new();\n visit(root, extensions, &mut output);\n output.sort();\n output\n}\n\n#[test]\nfn llm_phase_three_architecture_keeps_rust_v2_provider_neutral() {\n let root = root();\n let v2 = root.join(\"rust-core/src/llm_contracts\");\n let forbidden = [\n \"ProviderProfile\",\n \"provider_profile\",\n \"BaseURL\",\n \"base_url\",\n \"APIKey\",\n \"api_key\",\n \"OpenAI\",\n \"Anthropic\",\n \"Gemini\",\n \"Grok\",\n \"DeepSeek\",\n \"MiniMax\",\n \"GLM\",\n \"CloudProviderAdapter\",\n \"URLSession\",\n ];\n let mut findings = Vec::new();\n for path in files(&v2, &[\"rs\"]) {\n let source = fs::read_to_string(&path).unwrap();\n for token in forbidden {\n if source.contains(token) {\n findings.push(format!(\"{}: {token}\", path.display()));\n }\n }\n }\n assert!(\n findings.is_empty(),\n \"Rust host-slot V2 contracts must not acquire Swift Provider semantics:\\n{}\",\n findings.join(\"\\n\")\n );\n\n let resolver = fs::read_to_string(root.join(\"rust-core/src/run_snapshot/resolver.rs\")).unwrap();\n assert!(resolver.contains(\"execution.host_slot_v2_requires_preparation\"));\n assert!(!resolver.contains(\"execution.host_slot_v2_not_runnable\"));\n assert!(!resolver.contains(\"ProfileExecutionRoute\"));\n}\n\n#[test]\nfn llm_phase_three_architecture_freezes_swift_credential_egress_and_transport_boundaries() {\n let root = root();\n let cloud = root.join(format!(\n \"toolkit/Sources/{}\",\n [\"LocalAgent\", \"LLMCloud\"].concat()\n ));\n let transport_path = cloud.join(\"CloudHTTPTransport.swift\");\n let vault_path = cloud.join(\"SecurityCredentialVault.swift\");\n let mut direct_session = Vec::new();\n let mut direct_keychain = Vec::new();\n for path in files(&cloud, &[\"swift\"]) {\n let source = fs::read_to_string(&path).unwrap();\n if path != transport_path\n && (source.contains(\"URLSession(\") || source.contains(\"URLSessionConfiguration\"))\n {\n direct_session.push(path.strip_prefix(&root).unwrap().display().to_string());\n }\n if path != vault_path\n && [\n \"SecItemAdd\",\n \"SecItemUpdate\",\n \"SecItemCopyMatching\",\n \"SecItemDelete\",\n ]\n .iter()\n .any(|token| source.contains(token))\n {\n direct_keychain.push(path.strip_prefix(&root).unwrap().display().to_string());\n }\n for field in [\n \"public let apiKey\",\n \"public var apiKey\",\n \"public let api_key\",\n \"public var api_key\",\n ] {\n assert!(\n !source.contains(field),\n \"public/Codable API-key field found in {}\",\n path.display()\n );\n }\n }\n assert!(\n direct_session.is_empty(),\n \"direct URLSession users: {direct_session:?}\"\n );\n assert!(\n direct_keychain.is_empty(),\n \"direct Keychain users: {direct_keychain:?}\"\n );\n\n let transport = fs::read_to_string(&transport_path).unwrap();\n assert!(transport.contains(\"_ request: AuthorizedCloudHTTPRequest\"));\n assert!(!transport.contains(\"_ request: CloudWireRequest\"));\n let validator = fs::read_to_string(cloud.join(\"CloudSemanticTurnValidator.swift\")).unwrap();\n assert!(validator.contains(\"fileprivate init(\"));\n let egress = fs::read_to_string(cloud.join(\"ProviderEgressPolicy.swift\")).unwrap();\n assert!(egress.contains(\"package struct AuthorizedCloudHTTPRequest\"));\n assert!(egress.contains(\"fileprivate init(\"));\n let runtime = fs::read_to_string(cloud.join(\"CloudLLMRuntime.swift\")).unwrap();\n assert!(runtime.contains(\"private var active: ActiveSession?\"));\n assert!(runtime.contains(\"while attempts < 2\"));\n assert!(!runtime.contains(\"LocalAgentLLMLocal\"));\n}\n\n#[test]\nfn llm_phase_three_architecture_keeps_cpp_cloud_free() {\n let root = root();\n let forbidden = [\n \"CloudProvider\",\n \"ProviderProfile\",\n \"URLSession\",\n \"Keychain\",\n \"APIKey\",\n \"api_key\",\n \"OpenAI\",\n \"Anthropic\",\n \"Gemini\",\n \"DeepSeek\",\n \"MiniMax\",\n ];\n let mut findings = Vec::new();\n for directory in [\"inference/c_api\", \"inference/core\", \"inference/backends\"] {\n for path in files(&root.join(directory), &[\"h\", \"hpp\", \"c\", \"cc\", \"cpp\"]) {\n let source = fs::read_to_string(&path).unwrap();\n for token in forbidden {\n if source.contains(token) {\n findings.push(format!(\"{}: {token}\", path.display()));\n }\n }\n }\n }\n assert!(\n findings.is_empty(),\n \"C++ must remain local-inference-only:\\n{}\",\n findings.join(\"\\n\")\n );\n}\n\n#[test]\nfn llm_phase_three_architecture_requires_all_provider_fixtures_and_one_runner() {\n let root = root();\n let tests = root.join(format!(\n \"toolkit/Tests/{}Tests\",\n [\"LocalAgent\", \"LLMCloud\"].concat()\n ));\n for (suite, fixture) in [\n (\"OpenAIResponsesAdapterTests.swift\", \"openai\"),\n (\"AnthropicMessagesAdapterTests.swift\", \"anthropic\"),\n (\"GeminiInteractionsAdapterTests.swift\", \"gemini\"),\n (\"XAIAdapterTests.swift\", \"xai\"),\n (\"DeepSeekAdapterTests.swift\", \"deepseek\"),\n (\"MiniMaxAdapterTests.swift\", \"minimax\"),\n (\"GLMAdapterTests.swift\", \"glm\"),\n ] {\n assert!(\n tests.join(suite).is_file(),\n \"missing provider adapter suite {suite}\"\n );\n let count = files(&tests.join(\"Fixtures\").join(fixture), &[\"sse\", \"json\"]).len();\n assert!(count > 0, \"provider fixture directory {fixture} is empty\");\n }\n let preset = fs::read_to_string(root.join(format!(\n \"toolkit/Sources/{}/ProviderPreset.swift\",\n [\"LocalAgent\", \"LLMCloud\"].concat()\n )))\n .unwrap();\n assert!(preset.contains(\"public static let shipped\"));\n let runtime_tests = fs::read_to_string(tests.join(\"CloudLLMRuntimeTests.swift\")).unwrap();\n assert!(runtime_tests.contains(\"adapterIDs.count == 11\"));\n\n let runner = fs::read_to_string(root.join(\"scripts/run-llm-phase-3-contracts.sh\"))\n .expect(\"Phase 3 deterministic runner is missing\");\n for required in [\n \"run-llm-phase-2-contracts.sh\",\n \"llm_phase_three_architecture\",\n \"swift\",\n \"test\",\n \"CloudCredentialKeychainTests\",\n \"LOCAL_AGENT_PHASE3_SIMULATOR_UDID\",\n \"platform=iOS Simulator,id=$SIMULATOR_UDID\",\n \"OPENAI_API_KEY\",\n \"ANTHROPIC_API_KEY\",\n \"GEMINI_API_KEY\",\n \"XAI_API_KEY\",\n \"DEEPSEEK_API_KEY\",\n \"MINIMAX_API_KEY\",\n \"ZHIPUAI_API_KEY\",\n ] {\n assert!(\n runner.contains(required),\n \"Phase 3 runner is missing {required}\"\n );\n }\n assert!(!runner.contains(\"name=iPhone 17 Pro\"));\n assert!(!runner.contains(\"run-llm-phase-3-live-smoke.sh\"));\n let live_smoke = fs::read_to_string(root.join(\"scripts/run-llm-phase-3-live-smoke.sh\"))\n .expect(\"Phase 3 live-smoke runner is missing\");\n let secret_rejection = live_smoke.find(\"*_API_KEY|*_TOKEN|*_SECRET)\").unwrap();\n let scoped_allow = live_smoke.find(\"LOCAL_AGENT_CLOUD_SMOKE_*)\").unwrap();\n assert!(\n secret_rejection < scoped_allow,\n \"secret-shaped variables must be rejected before the live-smoke namespace is allowed\"\n );\n let design = fs::read_to_string(\n root.join(\"docs/superpowers/specs/2026-07-10-swift-llm-system-design.md\"),\n )\n .unwrap();\n assert!(design.contains(\"Phase 3 implementation evidence (2026-07-18)\"));\n assert!(design.contains(\"Phase 4\"));\n assert!(design.contains(\"Phase 5\"));\n}\n"}, "8eb5779355b9dd04817c47fcef4469a713225d54": {"t": 1785757436.6054826, "n": 8954, "h": "01e04a11fea0ee47", "c": "use std::{\n fs,\n path::{Path, PathBuf},\n};\n\nfn root() -> PathBuf {\n Path::new(env!(\"CARGO_MANIFEST_DIR\"))\n .parent()\n .expect(\"rust-core must be below the repository root\")\n .to_path_buf()\n}\n\nfn files(root: &Path, extensions: &[&str]) -> Vec<PathBuf> {\n fn visit(path: &Path, extensions: &[&str], output: &mut Vec<PathBuf>) {\n let Ok(entries) = fs::read_dir(path) else {\n return;\n };\n for entry in entries.flatten() {\n let path = entry.path();\n if path.is_dir() {\n if matches!(\n path.file_name().and_then(|name| name.to_str()),\n Some(\"target\" | \".build\" | \"Artifacts\" | \"vendor\" | \"third_party\")\n ) {\n continue;\n }\n visit(&path, extensions, output);\n } else if path\n .extension()\n .and_then(|value| value.to_str())\n .is_some_and(|value| extensions.contains(&value))\n {\n output.push(path);\n }\n }\n }\n let mut output = Vec::new();\n visit(root, extensions, &mut output);\n output.sort();\n output\n}\n\n#[test]\nfn llm_phase_three_architecture_keeps_rust_v2_provider_neutral() {\n let root = root();\n let v2 = root.join(\"rust-core/src/llm_contracts\");\n let forbidden = [\n \"ProviderProfile\",\n \"provider_profile\",\n \"BaseURL\",\n \"base_url\",\n \"APIKey\",\n \"api_key\",\n \"OpenAI\",\n \"Anthropic\",\n \"Gemini\",\n \"Grok\",\n \"DeepSeek\",\n \"MiniMax\",\n \"GLM\",\n \"CloudProviderAdapter\",\n \"URLSession\",\n ];\n let mut findings = Vec::new();\n for path in files(&v2, &[\"rs\"]) {\n let source = fs::read_to_string(&path).unwrap();\n for token in forbidden {\n if source.contains(token) {\n findings.push(format!(\"{}: {token}\", path.display()));\n }\n }\n }\n assert!(\n findings.is_empty(),\n \"Rust host-slot V2 contracts must not acquire Swift Provider semantics:\\n{}\",\n findings.join(\"\\n\")\n );\n\n let resolver = fs::read_to_string(root.join(\"rust-core/src/run_snapshot/resolver.rs\")).unwrap();\n assert!(resolver.contains(\"execution.host_slot_v2_requires_preparation\"));\n assert!(!resolver.contains(\"execution.host_slot_v2_not_runnable\"));\n assert!(!resolver.contains(\"ProfileExecutionRoute\"));\n}\n\n#[test]\nfn llm_phase_three_architecture_freezes_swift_credential_egress_and_transport_boundaries() {\n let root = root();\n let cloud = root.join(format!(\n \"toolkit/Sources/{}\",\n [\"LocalAgent\", \"LLMCloud\"].concat()\n ));\n let transport_path = cloud.join(\"CloudHTTPTransport.swift\");\n let vault_path = cloud.join(\"SecurityCredentialVault.swift\");\n let mut direct_session = Vec::new();\n let mut direct_keychain = Vec::new();\n for path in files(&cloud, &[\"swift\"]) {\n let source = fs::read_to_string(&path).unwrap();\n if path != transport_path\n && (source.contains(\"URLSession(\") || source.contains(\"URLSessionConfiguration\"))\n {\n direct_session.push(path.strip_prefix(&root).unwrap().display().to_string());\n }\n if path != vault_path\n && [\n \"SecItemAdd\",\n \"SecItemUpdate\",\n \"SecItemCopyMatching\",\n \"SecItemDelete\",\n ]\n .iter()\n .any(|token| source.contains(token))\n {\n direct_keychain.push(path.strip_prefix(&root).unwrap().display().to_string());\n }\n for field in [\n \"public let apiKey\",\n \"public var apiKey\",\n \"public let api_key\",\n \"public var api_key\",\n ] {\n assert!(\n !source.contains(field),\n \"public/Codable API-key field found in {}\",\n path.display()\n );\n }\n }\n assert!(\n direct_session.is_empty(),\n \"direct URLSession users: {direct_session:?}\"\n );\n assert!(\n direct_keychain.is_empty(),\n \"direct Keychain users: {direct_keychain:?}\"\n );\n\n let transport = fs::read_to_string(&transport_path).unwrap();\n assert!(transport.contains(\"_ request: AuthorizedCloudHTTPRequest\"));\n assert!(!transport.contains(\"_ request: CloudWireRequest\"));\n let validator = fs::read_to_string(cloud.join(\"CloudSemanticTurnValidator.swift\")).unwrap();\n assert!(validator.contains(\"fileprivate init(\"));\n let egress = fs::read_to_string(cloud.join(\"ProviderEgressPolicy.swift\")).unwrap();\n assert!(egress.contains(\"package struct AuthorizedCloudHTTPRequest\"));\n assert!(egress.contains(\"fileprivate init(\"));\n let runtime = fs::read_to_string(cloud.join(\"CloudLLMRuntime.swift\")).unwrap();\n assert!(runtime.contains(\"private var active: ActiveSession?\"));\n assert!(runtime.contains(\"while attempts < 2\"));\n assert!(!runtime.contains(\"LocalAgentLLMLocal\"));\n}\n\n#[test]\nfn llm_phase_three_architecture_keeps_cpp_cloud_free() {\n let root = root();\n let forbidden = [\n \"CloudProvider\",\n \"ProviderProfile\",\n \"URLSession\",\n \"Keychain\",\n \"APIKey\",\n \"api_key\",\n \"OpenAI\",\n \"Anthropic\",\n \"Gemini\",\n \"DeepSeek\",\n \"MiniMax\",\n ];\n let mut findings = Vec::new();\n for directory in [\"inference/c_api\", \"inference/core\", \"inference/backends\"] {\n for path in files(&root.join(directory), &[\"h\", \"hpp\", \"c\", \"cc\", \"cpp\"]) {\n let source = fs::read_to_string(&path).unwrap();\n for token in forbidden {\n if source.contains(token) {\n findings.push(format!(\"{}: {token}\", path.display()));\n }\n }\n }\n }\n assert!(\n findings.is_empty(),\n \"C++ must remain local-inference-only:\\n{}\",\n findings.join(\"\\n\")\n );\n}\n\n#[test]\nfn llm_phase_three_architecture_requires_all_provider_fixtures_and_one_runner() {\n let root = root();\n let tests = root.join(format!(\n \"toolkit/Tests/{}Tests\",\n [\"LocalAgent\", \"LLMCloud\"].concat()\n ));\n for (suite, fixture) in [\n (\"OpenAIResponsesAdapterTests.swift\", \"openai\"),\n (\"AnthropicMessagesAdapterTests.swift\", \"anthropic\"),\n (\"GeminiInteractionsAdapterTests.swift\", \"gemini\"),\n (\"XAIAdapterTests.swift\", \"xai\"),\n (\"DeepSeekAdapterTests.swift\", \"deepseek\"),\n (\"MiniMaxAdapterTests.swift\", \"minimax\"),\n (\"GLMAdapterTests.swift\", \"glm\"),\n ] {\n assert!(\n tests.join(suite).is_file(),\n \"missing provider adapter suite {suite}\"\n );\n let count = files(&tests.join(\"Fixtures\").join(fixture), &[\"sse\", \"json\"]).len();\n assert!(count > 0, \"provider fixture directory {fixture} is empty\");\n }\n let preset = fs::read_to_string(root.join(format!(\n \"toolkit/Sources/{}/ProviderPreset.swift\",\n [\"LocalAgent\", \"LLMCloud\"].concat()\n )))\n .unwrap();\n assert!(preset.contains(\"public static let shipped\"));\n let runtime_tests = fs::read_to_string(tests.join(\"CloudLLMRuntimeTests.swift\")).unwrap();\n assert!(runtime_tests.contains(\"adapterIDs.count == 11\"));\n\n let runner = fs::read_to_string(root.join(\"scripts/run-llm-phase-3-contracts.sh\"))\n .expect(\"Phase 3 deterministic runner is missing\");\n for required in [\n \"run-llm-phase-2-contracts.sh\",\n \"llm_phase_three_architecture\",\n \"swift\",\n \"test\",\n \"CloudCredentialKeychainTests\",\n \"LOCAL_AGENT_PHASE3_SIMULATOR_UDID\",\n \"platform=iOS Simulator,id=$SIMULATOR_UDID\",\n \"OPENAI_API_KEY\",\n \"ANTHROPIC_API_KEY\",\n \"GEMINI_API_KEY\",\n \"XAI_API_KEY\",\n \"DEEPSEEK_API_KEY\",\n \"MINIMAX_API_KEY\",\n \"ZHIPUAI_API_KEY\",\n ] {\n assert!(\n runner.contains(required),\n \"Phase 3 runner is missing {required}\"\n );\n }\n assert!(!runner.contains(\"name=iPhone 17 Pro\"));\n assert!(!runner.contains(\"run-llm-phase-3-live-smoke.sh\"));\n let live_smoke = fs::read_to_string(root.join(\"scripts/run-llm-phase-3-live-smoke.sh\"))\n .expect(\"Phase 3 live-smoke runner is missing\");\n let secret_rejection = live_smoke.find(\"*_API_KEY|*_TOKEN|*_SECRET)\").unwrap();\n let scoped_allow = live_smoke.find(\"LOCAL_AGENT_CLOUD_SMOKE_*)\").unwrap();\n assert!(\n secret_rejection < scoped_allow,\n \"secret-shaped variables must be rejected before the live-smoke namespace is allowed\"\n );\n let design = fs::read_to_string(\n root.join(\"docs/superpowers/specs/2026-07-10-swift-llm-system-design.md\"),\n )\n .unwrap();\n assert!(design.contains(\"Phase 3 implementation evidence (2026-07-18)\"));\n assert!(design.contains(\"Phase 4\"));\n assert!(design.contains(\"Phase 5\"));\n}\n"}, "027f04e00a1265f600a468fc8ac00cf0746a8a97": {"t": 1785757437.9739099, "n": 8954, "h": "bf9e3a27c1b0cdf3", "c": "use std::{\n fs,\n path::{Path, PathBuf},\n};\n\nfn root() -> PathBuf {\n Path::new(env!(\"CARGO_MANIFEST_DIR\"))\n .parent()\n .expect(\"rust-core must be below the repository root\")\n .to_path_buf()\n}\n\nfn files(root: &Path, extensions: &[&str]) -> Vec<PathBuf> {\n fn visit(path: &Path, extensions: &[&str], output: &mut Vec<PathBuf>) {\n let Ok(entries) = fs::read_dir(path) else {\n return;\n };\n for entry in entries.flatten() {\n let path = entry.path();\n if path.is_dir() {\n if matches!(\n path.file_name().and_then(|name| name.to_str()),\n Some(\"target\" | \".build\" | \"Artifacts\" | \"vendor\" | \"third_party\")\n ) {\n continue;\n }\n visit(&path, extensions, output);\n } else if path\n .extension()\n .and_then(|value| value.to_str())\n .is_some_and(|value| extensions.contains(&value))\n {\n output.push(path);\n }\n }\n }\n let mut output = Vec::new();\n visit(root, extensions, &mut output);\n output.sort();\n output\n}\n\n#[test]\nfn llm_phase_three_architecture_keeps_rust_v2_provider_neutral() {\n let root = root();\n let v2 = root.join(\"rust-core/src/llm_contracts\");\n let forbidden = [\n \"ProviderProfile\",\n \"provider_profile\",\n \"BaseURL\",\n \"base_url\",\n \"APIKey\",\n \"api_key\",\n \"OpenAI\",\n \"Anthropic\",\n \"Gemini\",\n \"Grok\",\n \"DeepSeek\",\n \"MiniMax\",\n \"GLM\",\n \"CloudProviderAdapter\",\n \"URLSession\",\n ];\n let mut findings = Vec::new();\n for path in files(&v2, &[\"rs\"]) {\n let source = fs::read_to_string(&path).unwrap();\n for token in forbidden {\n if source.contains(token) {\n findings.push(format!(\"{}: {token}\", path.display()));\n }\n }\n }\n assert!(\n findings.is_empty(),\n \"Rust host-slot V2 contracts must not acquire Swift Provider semantics:\\n{}\",\n findings.join(\"\\n\")\n );\n\n let resolver = fs::read_to_string(root.join(\"rust-core/src/run_snapshot/resolver.rs\")).unwrap();\n assert!(resolver.contains(\"execution.host_slot_v2_requires_preparation\"));\n assert!(!resolver.contains(\"execution.host_slot_v2_not_runnable\"));\n assert!(!resolver.contains(\"ProfileExecutionRoute\"));\n}\n\n#[test]\nfn llm_phase_three_architecture_freezes_swift_credential_egress_and_transport_boundaries() {\n let root = root();\n let cloud = root.join(format!(\n \"toolkit/Sources/{}\",\n [\"LocalAgent\", \"LLMCloud\"].concat()\n ));\n let transport_path = cloud.join(\"CloudHTTPTransport.swift\");\n let vault_path = cloud.join(\"SecurityCredentialVault.swift\");\n let mut direct_session = Vec::new();\n let mut direct_keychain = Vec::new();\n for path in files(&cloud, &[\"swift\"]) {\n let source = fs::read_to_string(&path).unwrap();\n if path != transport_path\n && (source.contains(\"URLSession(\") || source.contains(\"URLSessionConfiguration\"))\n {\n direct_session.push(path.strip_prefix(&root).unwrap().display().to_string());\n }\n if path != vault_path\n && [\n \"SecItemAdd\",\n \"SecItemUpdate\",\n \"SecItemCopyMatching\",\n \"SecItemDelete\",\n ]\n .iter()\n .any(|token| source.contains(token))\n {\n direct_keychain.push(path.strip_prefix(&root).unwrap().display().to_string());\n }\n for field in [\n \"public let apiKey\",\n \"public var apiKey\",\n \"public let api_key\",\n \"public var api_key\",\n ] {\n assert!(\n !source.contains(field),\n \"public/Codable API-key field found in {}\",\n path.display()\n );\n }\n }\n assert!(\n direct_session.is_empty(),\n \"direct URLSession users: {direct_session:?}\"\n );\n assert!(\n direct_keychain.is_empty(),\n \"direct Keychain users: {direct_keychain:?}\"\n );\n\n let transport = fs::read_to_string(&transport_path).unwrap();\n assert!(transport.contains(\"_ request: AuthorizedCloudHTTPRequest\"));\n assert!(!transport.contains(\"_ request: CloudWireRequest\"));\n let validator = fs::read_to_string(cloud.join(\"CloudSemanticTurnValidator.swift\")).unwrap();\n assert!(validator.contains(\"fileprivate init(\"));\n let egress = fs::read_to_string(cloud.join(\"ProviderEgressPolicy.swift\")).unwrap();\n assert!(egress.contains(\"package struct AuthorizedCloudHTTPRequest\"));\n assert!(egress.contains(\"fileprivate init(\"));\n let runtime = fs::read_to_string(cloud.join(\"CloudLLMRuntime.swift\")).unwrap();\n assert!(runtime.contains(\"private var active: ActiveSession?\"));\n assert!(runtime.contains(\"while attempts < 2\"));\n assert!(!runtime.contains(\"LocalAgentLLMLocal\"));\n}\n\n#[test]\nfn llm_phase_three_architecture_keeps_cpp_cloud_free() {\n let root = root();\n let forbidden = [\n \"CloudProvider\",\n \"ProviderProfile\",\n \"URLSession\",\n \"Keychain\",\n \"APIKey\",\n \"api_key\",\n \"OpenAI\",\n \"Anthropic\",\n \"Gemini\",\n \"DeepSeek\",\n \"MiniMax\",\n ];\n let mut findings = Vec::new();\n for directory in [\"inference/c_api\", \"inference/core\", \"inference/backends\"] {\n for path in files(&root.join(directory), &[\"h\", \"hpp\", \"c\", \"cc\", \"cpp\"]) {\n let source = fs::read_to_string(&path).unwrap();\n for token in forbidden {\n if source.contains(token) {\n findings.push(format!(\"{}: {token}\", path.display()));\n }\n }\n }\n }\n assert!(\n findings.is_empty(),\n \"C++ must remain local-inference-only:\\n{}\",\n findings.join(\"\\n\")\n );\n}\n\n#[test]\nfn llm_phase_three_architecture_requires_all_provider_fixtures_and_one_runner() {\n let root = root();\n let tests = root.join(format!(\n \"toolkit/Tests/{}Tests\",\n [\"LocalAgent\", \"LLMCloud\"].concat()\n ));\n for (suite, fixture) in [\n (\"OpenAIResponsesAdapterTests.swift\", \"openai\"),\n (\"AnthropicMessagesAdapterTests.swift\", \"anthropic\"),\n (\"GeminiInteractionsAdapterTests.swift\", \"gemini\"),\n (\"XAIAdapterTests.swift\", \"xai\"),\n (\"DeepSeekAdapterTests.swift\", \"deepseek\"),\n (\"MiniMaxAdapterTests.swift\", \"minimax\"),\n (\"GLMAdapterTests.swift\", \"glm\"),\n ] {\n assert!(\n tests.join(suite).is_file(),\n \"missing provider adapter suite {suite}\"\n );\n let count = files(&tests.join(\"Fixtures\").join(fixture), &[\"sse\", \"json\"]).len();\n assert!(count > 0, \"provider fixture directory {fixture} is empty\");\n }\n let preset = fs::read_to_string(root.join(format!(\n \"toolkit/Sources/{}/ProviderPreset.swift\",\n [\"LocalAgent\", \"LLMCloud\"].concat()\n )))\n .unwrap();\n assert!(preset.contains(\"public static let shipped\"));\n let runtime_tests = fs::read_to_string(tests.join(\"CloudLLMRuntimeTests.swift\")).unwrap();\n assert!(runtime_tests.contains(\"adapterIDs.count == 10\"));\n\n let runner = fs::read_to_string(root.join(\"scripts/run-llm-phase-3-contracts.sh\"))\n .expect(\"Phase 3 deterministic runner is missing\");\n for required in [\n \"run-llm-phase-2-contracts.sh\",\n \"llm_phase_three_architecture\",\n \"swift\",\n \"test\",\n \"CloudCredentialKeychainTests\",\n \"LOCAL_AGENT_PHASE3_SIMULATOR_UDID\",\n \"platform=iOS Simulator,id=$SIMULATOR_UDID\",\n \"OPENAI_API_KEY\",\n \"ANTHROPIC_API_KEY\",\n \"GEMINI_API_KEY\",\n \"XAI_API_KEY\",\n \"DEEPSEEK_API_KEY\",\n \"MINIMAX_API_KEY\",\n \"ZHIPUAI_API_KEY\",\n ] {\n assert!(\n runner.contains(required),\n \"Phase 3 runner is missing {required}\"\n );\n }\n assert!(!runner.contains(\"name=iPhone 17 Pro\"));\n assert!(!runner.contains(\"run-llm-phase-3-live-smoke.sh\"));\n let live_smoke = fs::read_to_string(root.join(\"scripts/run-llm-phase-3-live-smoke.sh\"))\n .expect(\"Phase 3 live-smoke runner is missing\");\n let secret_rejection = live_smoke.find(\"*_API_KEY|*_TOKEN|*_SECRET)\").unwrap();\n let scoped_allow = live_smoke.find(\"LOCAL_AGENT_CLOUD_SMOKE_*)\").unwrap();\n assert!(\n secret_rejection < scoped_allow,\n \"secret-shaped variables must be rejected before the live-smoke namespace is allowed\"\n );\n let design = fs::read_to_string(\n root.join(\"docs/superpowers/specs/2026-07-10-swift-llm-system-design.md\"),\n )\n .unwrap();\n assert!(design.contains(\"Phase 3 implementation evidence (2026-07-18)\"));\n assert!(design.contains(\"Phase 4\"));\n assert!(design.contains(\"Phase 5\"));\n}\n"}, "7accfdcd6b0f85cf5d9ff5c038308a8bc1901f93": {"t": 1785757439.3024154, "n": 8953, "h": "79e6e5a21cc75d2f", "c": "use std::{\n fs,\n path::{Path, PathBuf},\n};\n\nfn root() -> PathBuf {\n Path::new(env!(\"CARGO_MANIFEST_DIR\"))\n .parent()\n .expect(\"rust-core must be below the repository root\")\n .to_path_buf()\n}\n\nfn files(root: &Path, extensions: &[&str]) -> Vec<PathBuf> {\n fn visit(path: &Path, extensions: &[&str], output: &mut Vec<PathBuf>) {\n let Ok(entries) = fs::read_dir(path) else {\n return;\n };\n for entry in entries.flatten() {\n let path = entry.path();\n if path.is_dir() {\n if matches!(\n path.file_name().and_then(|name| name.to_str()),\n Some(\"target\" | \".build\" | \"Artifacts\" | \"vendor\" | \"third_party\")\n ) {\n continue;\n }\n visit(&path, extensions, output);\n } else if path\n .extension()\n .and_then(|value| value.to_str())\n .is_some_and(|value| extensions.contains(&value))\n {\n output.push(path);\n }\n }\n }\n let mut output = Vec::new();\n visit(root, extensions, &mut output);\n output.sort();\n output\n}\n\n#[test]\nfn llm_phase_three_architecture_keeps_rust_v2_provider_neutral() {\n let root = root();\n let v2 = root.join(\"rust-core/src/llm_contracts\");\n let forbidden = [\n \"ProviderProfile\",\n \"provider_profile\",\n \"BaseURL\",\n \"base_url\",\n \"APIKey\",\n \"api_key\",\n \"OpenAI\",\n \"Anthropic\",\n \"Gemini\",\n \"Grok\",\n \"DeepSeek\",\n \"MiniMax\",\n \"GLM\",\n \"CloudProviderAdapter\",\n \"URLSession\",\n ];\n let mut findings = Vec::new();\n for path in files(&v2, &[\"rs\"]) {\n let source = fs::read_to_string(&path).unwrap();\n for token in forbidden {\n if source.contains(token) {\n findings.push(format!(\"{}: {token}\", path.display()));\n }\n }\n }\n assert!(\n findings.is_empty(),\n \"Rust host-slot V2 contracts must not acquire Swift Provider semantics:\\n{}\",\n findings.join(\"\\n\")\n );\n\n let resolver = fs::read_to_string(root.join(\"rust-core/src/run_snapshot/resolver.rs\")).unwrap();\n assert!(resolver.contains(\"execution.host_slot_v2_requires_preparation\"));\n assert!(!resolver.contains(\"execution.host_slot_v2_not_runnable\"));\n assert!(!resolver.contains(\"ProfileExecutionRoute\"));\n}\n\n#[test]\nfn llm_phase_three_architecture_freezes_swift_credential_egress_and_transport_boundaries() {\n let root = root();\n let cloud = root.join(format!(\n \"toolkit/Sources/{}\",\n [\"LocalAgent\", \"LLMCloud\"].concat()\n ));\n let transport_path = cloud.join(\"CloudHTTPTransport.swift\");\n let vault_path = cloud.join(\"SecurityCredentialVault.swift\");\n let mut direct_session = Vec::new();\n let mut direct_keychain = Vec::new();\n for path in files(&cloud, &[\"swift\"]) {\n let source = fs::read_to_string(&path).unwrap();\n if path != transport_path\n && (source.contains(\"URLSession(\") || source.contains(\"URLSessionConfiguration\"))\n {\n direct_session.push(path.strip_prefix(&root).unwrap().display().to_string());\n }\n if path != vault_path\n && [\n \"SecItemAdd\",\n \"SecItemUpdate\",\n \"SecItemCopyMatching\",\n \"SecItemDelete\",\n ]\n .iter()\n .any(|token| source.contains(token))\n {\n direct_keychain.push(path.strip_prefix(&root).unwrap().display().to_string());\n }\n for field in [\n \"public let apiKey\",\n \"public var apiKey\",\n \"public let api_key\",\n \"public var api_key\",\n ] {\n assert!(\n !source.contains(field),\n \"public/Codable API-key field found in {}\",\n path.display()\n );\n }\n }\n assert!(\n direct_session.is_empty(),\n \"direct URLSession users: {direct_session:?}\"\n );\n assert!(\n direct_keychain.is_empty(),\n \"direct Keychain users: {direct_keychain:?}\"\n );\n\n let transport = fs::read_to_string(&transport_path).unwrap();\n assert!(transport.contains(\"_ request: AuthorizedCloudHTTPRequest\"));\n assert!(!transport.contains(\"_ request: CloudWireRequest\"));\n let validator = fs::read_to_string(cloud.join(\"CloudSemanticTurnValidator.swift\")).unwrap();\n assert!(validator.contains(\"fileprivate init(\"));\n let egress = fs::read_to_string(cloud.join(\"ProviderEgressPolicy.swift\")).unwrap();\n assert!(egress.contains(\"package struct AuthorizedCloudHTTPRequest\"));\n assert!(egress.contains(\"fileprivate init(\"));\n let runtime = fs::read_to_string(cloud.join(\"CloudLLMRuntime.swift\")).unwrap();\n assert!(runtime.contains(\"private var active: ActiveSession?\"));\n assert!(runtime.contains(\"while attempts < 2\"));\n assert!(!runtime.contains(\"LocalAgentLLMLocal\"));\n}\n\n#[test]\nfn llm_phase_three_architecture_keeps_cpp_cloud_free() {\n let root = root();\n let forbidden = [\n \"CloudProvider\",\n \"ProviderProfile\",\n \"URLSession\",\n \"Keychain\",\n \"APIKey\",\n \"api_key\",\n \"OpenAI\",\n \"Anthropic\",\n \"Gemini\",\n \"DeepSeek\",\n \"MiniMax\",\n ];\n let mut findings = Vec::new();\n for directory in [\"inference/c_api\", \"inference/core\", \"inference/backends\"] {\n for path in files(&root.join(directory), &[\"h\", \"hpp\", \"c\", \"cc\", \"cpp\"]) {\n let source = fs::read_to_string(&path).unwrap();\n for token in forbidden {\n if source.contains(token) {\n findings.push(format!(\"{}: {token}\", path.display()));\n }\n }\n }\n }\n assert!(\n findings.is_empty(),\n \"C++ must remain local-inference-only:\\n{}\",\n findings.join(\"\\n\")\n );\n}\n\n#[test]\nfn llm_phase_three_architecture_requires_all_provider_fixtures_and_one_runner() {\n let root = root();\n let tests = root.join(format!(\n \"toolkit/Tests/{}Tests\",\n [\"LocalAgent\", \"LLMCloud\"].concat()\n ));\n for (suite, fixture) in [\n (\"OpenAIResponsesAdapterTests.swift\", \"openai\"),\n (\"AnthropicMessagesAdapterTests.swift\", \"anthropic\"),\n (\"GeminiInteractionsAdapterTests.swift\", \"gemini\"),\n (\"XAIAdapterTests.swift\", \"xai\"),\n (\"DeepSeekAdapterTests.swift\", \"deepseek\"),\n (\"MiniMaxAdapterTests.swift\", \"minimax\"),\n (\"GLMAdapterTests.swift\", \"glm\"),\n ] {\n assert!(\n tests.join(suite).is_file(),\n \"missing provider adapter suite {suite}\"\n );\n let count = files(&tests.join(\"Fixtures\").join(fixture), &[\"sse\", \"json\"]).len();\n assert!(count > 0, \"provider fixture directory {fixture} is empty\");\n }\n let preset = fs::read_to_string(root.join(format!(\n \"toolkit/Sources/{}/ProviderPreset.swift\",\n [\"LocalAgent\", \"LLMCloud\"].concat()\n )))\n .unwrap();\n assert!(preset.contains(\"public static let shipped\"));\n let runtime_tests = fs::read_to_string(tests.join(\"CloudLLMRuntimeTests.swift\")).unwrap();\n assert!(runtime_tests.contains(\"adapterIDs.count == 7\"));\n\n let runner = fs::read_to_string(root.join(\"scripts/run-llm-phase-3-contracts.sh\"))\n .expect(\"Phase 3 deterministic runner is missing\");\n for required in [\n \"run-llm-phase-2-contracts.sh\",\n \"llm_phase_three_architecture\",\n \"swift\",\n \"test\",\n \"CloudCredentialKeychainTests\",\n \"LOCAL_AGENT_PHASE3_SIMULATOR_UDID\",\n \"platform=iOS Simulator,id=$SIMULATOR_UDID\",\n \"OPENAI_API_KEY\",\n \"ANTHROPIC_API_KEY\",\n \"GEMINI_API_KEY\",\n \"XAI_API_KEY\",\n \"DEEPSEEK_API_KEY\",\n \"MINIMAX_API_KEY\",\n \"ZHIPUAI_API_KEY\",\n ] {\n assert!(\n runner.contains(required),\n \"Phase 3 runner is missing {required}\"\n );\n }\n assert!(!runner.contains(\"name=iPhone 17 Pro\"));\n assert!(!runner.contains(\"run-llm-phase-3-live-smoke.sh\"));\n let live_smoke = fs::read_to_string(root.join(\"scripts/run-llm-phase-3-live-smoke.sh\"))\n .expect(\"Phase 3 live-smoke runner is missing\");\n let secret_rejection = live_smoke.find(\"*_API_KEY|*_TOKEN|*_SECRET)\").unwrap();\n let scoped_allow = live_smoke.find(\"LOCAL_AGENT_CLOUD_SMOKE_*)\").unwrap();\n assert!(\n secret_rejection < scoped_allow,\n \"secret-shaped variables must be rejected before the live-smoke namespace is allowed\"\n );\n let design = fs::read_to_string(\n root.join(\"docs/superpowers/specs/2026-07-10-swift-llm-system-design.md\"),\n )\n .unwrap();\n assert!(design.contains(\"Phase 3 implementation evidence (2026-07-18)\"));\n assert!(design.contains(\"Phase 4\"));\n assert!(design.contains(\"Phase 5\"));\n}\n"}, "d4a1c67fabdffcac16efcee24bbe014a1803deef": {"t": 1785757440.6066802, "n": 9280, "h": "e44ebd0385eb2983", "c": "use std::{\n fs,\n path::{Path, PathBuf},\n};\n\nfn root() -> PathBuf {\n Path::new(env!(\"CARGO_MANIFEST_DIR\"))\n .parent()\n .expect(\"rust-core must be below the repository root\")\n .to_path_buf()\n}\n\nfn files(root: &Path, extensions: &[&str]) -> Vec<PathBuf> {\n fn visit(path: &Path, extensions: &[&str], output: &mut Vec<PathBuf>) {\n let Ok(entries) = fs::read_dir(path) else {\n return;\n };\n for entry in entries.flatten() {\n let path = entry.path();\n if path.is_dir() {\n if matches!(\n path.file_name().and_then(|name| name.to_str()),\n Some(\"target\" | \".build\" | \"Artifacts\" | \"vendor\" | \"third_party\")\n ) {\n continue;\n }\n visit(&path, extensions, output);\n } else if path\n .extension()\n .and_then(|value| value.to_str())\n .is_some_and(|value| extensions.contains(&value))\n {\n output.push(path);\n }\n }\n }\n let mut output = Vec::new();\n visit(root, extensions, &mut output);\n output.sort();\n output\n}\n\n#[test]\nfn llm_phase_three_architecture_keeps_rust_v2_provider_neutral() {\n let root = root();\n let v2 = root.join(\"rust-core/src/llm_contracts\");\n let forbidden = [\n \"ProviderProfile\",\n \"provider_profile\",\n \"BaseURL\",\n \"base_url\",\n \"APIKey\",\n \"api_key\",\n \"OpenAI\",\n \"Anthropic\",\n \"Gemini\",\n \"Grok\",\n \"DeepSeek\",\n \"MiniMax\",\n \"GLM\",\n \"CloudProviderAdapter\",\n \"URLSession\",\n ];\n let mut findings = Vec::new();\n for path in files(&v2, &[\"rs\"]) {\n let source = fs::read_to_string(&path).unwrap();\n for token in forbidden {\n if source.contains(token) {\n findings.push(format!(\"{}: {token}\", path.display()));\n }\n }\n }\n assert!(\n findings.is_empty(),\n \"Rust host-slot V2 contracts must not acquire Swift Provider semantics:\\n{}\",\n findings.join(\"\\n\")\n );\n\n let allowlist = fs::read_to_string(\n root.join(\"rust-core/tests/fixtures/architecture/legacy_llm_allowlist.txt\"),\n )\n .unwrap();\n assert_eq!(\n allowlist\n .lines()\n .filter(|line| !line.starts_with('#') && !line.is_empty())\n .count(),\n 16,\n \"Phase 3 must not grow the temporary legacy Rust LLM allowlist\"\n );\n let resolver = fs::read_to_string(root.join(\"rust-core/src/run_snapshot/resolver.rs\")).unwrap();\n assert!(resolver.contains(\"execution.host_slot_v2_requires_preparation\"));\n assert!(!resolver.contains(\"execution.host_slot_v2_not_runnable\"));\n}\n\n#[test]\nfn llm_phase_three_architecture_freezes_swift_credential_egress_and_transport_boundaries() {\n let root = root();\n let cloud = root.join(format!(\n \"toolkit/Sources/{}\",\n [\"LocalAgent\", \"LLMCloud\"].concat()\n ));\n let transport_path = cloud.join(\"CloudHTTPTransport.swift\");\n let vault_path = cloud.join(\"SecurityCredentialVault.swift\");\n let mut direct_session = Vec::new();\n let mut direct_keychain = Vec::new();\n for path in files(&cloud, &[\"swift\"]) {\n let source = fs::read_to_string(&path).unwrap();\n if path != transport_path\n && (source.contains(\"URLSession(\") || source.contains(\"URLSessionConfiguration\"))\n {\n direct_session.push(path.strip_prefix(&root).unwrap().display().to_string());\n }\n if path != vault_path\n && [\n \"SecItemAdd\",\n \"SecItemUpdate\",\n \"SecItemCopyMatching\",\n \"SecItemDelete\",\n ]\n .iter()\n .any(|token| source.contains(token))\n {\n direct_keychain.push(path.strip_prefix(&root).unwrap().display().to_string());\n }\n for field in [\n \"public let apiKey\",\n \"public var apiKey\",\n \"public let api_key\",\n \"public var api_key\",\n ] {\n assert!(\n !source.contains(field),\n \"public/Codable API-key field found in {}\",\n path.display()\n );\n }\n }\n assert!(\n direct_session.is_empty(),\n \"direct URLSession users: {direct_session:?}\"\n );\n assert!(\n direct_keychain.is_empty(),\n \"direct Keychain users: {direct_keychain:?}\"\n );\n\n let transport = fs::read_to_string(&transport_path).unwrap();\n assert!(transport.contains(\"_ request: AuthorizedCloudHTTPRequest\"));\n assert!(!transport.contains(\"_ request: CloudWireRequest\"));\n let validator = fs::read_to_string(cloud.join(\"CloudSemanticTurnValidator.swift\")).unwrap();\n assert!(validator.contains(\"fileprivate init(\"));\n let egress = fs::read_to_string(cloud.join(\"ProviderEgressPolicy.swift\")).unwrap();\n assert!(egress.contains(\"package struct AuthorizedCloudHTTPRequest\"));\n assert!(egress.contains(\"fileprivate init(\"));\n let runtime = fs::read_to_string(cloud.join(\"CloudLLMRuntime.swift\")).unwrap();\n assert!(runtime.contains(\"private var active: ActiveSession?\"));\n assert!(runtime.contains(\"while attempts < 2\"));\n assert!(!runtime.contains(\"LocalAgentLLMLocal\"));\n}\n\n#[test]\nfn llm_phase_three_architecture_keeps_cpp_cloud_free() {\n let root = root();\n let forbidden = [\n \"CloudProvider\",\n \"ProviderProfile\",\n \"URLSession\",\n \"Keychain\",\n \"APIKey\",\n \"api_key\",\n \"OpenAI\",\n \"Anthropic\",\n \"Gemini\",\n \"DeepSeek\",\n \"MiniMax\",\n ];\n let mut findings = Vec::new();\n for directory in [\"inference/c_api\", \"inference/core\", \"inference/backends\"] {\n for path in files(&root.join(directory), &[\"h\", \"hpp\", \"c\", \"cc\", \"cpp\"]) {\n let source = fs::read_to_string(&path).unwrap();\n for token in forbidden {\n if source.contains(token) {\n findings.push(format!(\"{}: {token}\", path.display()));\n }\n }\n }\n }\n assert!(\n findings.is_empty(),\n \"C++ must remain local-inference-only:\\n{}\",\n findings.join(\"\\n\")\n );\n}\n\n#[test]\nfn llm_phase_three_architecture_requires_all_provider_fixtures_and_one_runner() {\n let root = root();\n let tests = root.join(format!(\n \"toolkit/Tests/{}Tests\",\n [\"LocalAgent\", \"LLMCloud\"].concat()\n ));\n for (suite, fixture) in [\n (\"OpenAIResponsesAdapterTests.swift\", \"openai\"),\n (\"AnthropicMessagesAdapterTests.swift\", \"anthropic\"),\n (\"GeminiInteractionsAdapterTests.swift\", \"gemini\"),\n (\"XAIAdapterTests.swift\", \"xai\"),\n (\"DeepSeekAdapterTests.swift\", \"deepseek\"),\n (\"MiniMaxAdapterTests.swift\", \"minimax\"),\n (\"GLMAdapterTests.swift\", \"glm\"),\n ] {\n assert!(\n tests.join(suite).is_file(),\n \"missing provider adapter suite {suite}\"\n );\n let count = files(&tests.join(\"Fixtures\").join(fixture), &[\"sse\", \"json\"]).len();\n assert!(count > 0, \"provider fixture directory {fixture} is empty\");\n }\n let preset = fs::read_to_string(root.join(format!(\n \"toolkit/Sources/{}/ProviderPreset.swift\",\n [\"LocalAgent\", \"LLMCloud\"].concat()\n )))\n .unwrap();\n assert!(preset.contains(\"public static let shipped\"));\n let runtime_tests = fs::read_to_string(tests.join(\"CloudLLMRuntimeTests.swift\")).unwrap();\n assert!(runtime_tests.contains(\"adapterIDs.count == 7\"));\n\n let runner = fs::read_to_string(root.join(\"scripts/run-llm-phase-3-contracts.sh\"))\n .expect(\"Phase 3 deterministic runner is missing\");\n for required in [\n \"run-llm-phase-2-contracts.sh\",\n \"llm_phase_three_architecture\",\n \"swift\",\n \"test\",\n \"CloudCredentialKeychainTests\",\n \"LOCAL_AGENT_PHASE3_SIMULATOR_UDID\",\n \"platform=iOS Simulator,id=$SIMULATOR_UDID\",\n \"OPENAI_API_KEY\",\n \"ANTHROPIC_API_KEY\",\n \"GEMINI_API_KEY\",\n \"XAI_API_KEY\",\n \"DEEPSEEK_API_KEY\",\n \"MINIMAX_API_KEY\",\n \"ZHIPUAI_API_KEY\",\n ] {\n assert!(\n runner.contains(required),\n \"Phase 3 runner is missing {required}\"\n );\n }\n assert!(!runner.contains(\"name=iPhone 17 Pro\"));\n assert!(!runner.contains(\"run-llm-phase-3-live-smoke.sh\"));\n let live_smoke = fs::read_to_string(root.join(\"scripts/run-llm-phase-3-live-smoke.sh\"))\n .expect(\"Phase 3 live-smoke runner is missing\");\n let secret_rejection = live_smoke.find(\"*_API_KEY|*_TOKEN|*_SECRET)\").unwrap();\n let scoped_allow = live_smoke.find(\"LOCAL_AGENT_CLOUD_SMOKE_*)\").unwrap();\n assert!(\n secret_rejection < scoped_allow,\n \"secret-shaped variables must be rejected before the live-smoke namespace is allowed\"\n );\n let design = fs::read_to_string(\n root.join(\"docs/superpowers/specs/2026-07-10-swift-llm-system-design.md\"),\n )\n .unwrap();\n assert!(design.contains(\"Phase 3 implementation evidence (2026-07-18)\"));\n assert!(design.contains(\"Phase 4\"));\n assert!(design.contains(\"Phase 5\"));\n}\n"}, "ddd268aceede0dd805d362aacf469dd24aa96eb0": {"t": 1785757441.9917195, "n": 8574, "h": "a3be2c280ebe51c7", "c": "use std::{fs, path::{Path, PathBuf}};\n\nfn root() -> PathBuf {\n Path::new(env!(\"CARGO_MANIFEST_DIR\"))\n .parent()\n .expect(\"rust-core must be below the repository root\")\n .to_path_buf()\n}\n\nfn files(root: &Path, extensions: &[&str]) -> Vec<PathBuf> {\n fn visit(path: &Path, extensions: &[&str], output: &mut Vec<PathBuf>) {\n let Ok(entries) = fs::read_dir(path) else { return };\n for entry in entries.flatten() {\n let path = entry.path();\n if path.is_dir() {\n if matches!(\n path.file_name().and_then(|name| name.to_str()),\n Some(\"target\" | \".build\" | \"Artifacts\" | \"vendor\" | \"third_party\")\n ) {\n continue;\n }\n visit(&path, extensions, output);\n } else if path.extension().and_then(|value| value.to_str())\n .is_some_and(|value| extensions.contains(&value))\n {\n output.push(path);\n }\n }\n }\n let mut output = Vec::new();\n visit(root, extensions, &mut output);\n output.sort();\n output\n}\n\n#[test]\nfn llm_phase_three_architecture_keeps_rust_v2_provider_neutral() {\n let root = root();\n let v2 = root.join(\"rust-core/src/llm_contracts\");\n let forbidden = [\n \"ProviderProfile\", \"provider_profile\", \"BaseURL\", \"base_url\", \"APIKey\",\n \"api_key\", \"OpenAI\", \"Anthropic\", \"Gemini\", \"Grok\", \"DeepSeek\",\n \"MiniMax\", \"GLM\", \"CloudProviderAdapter\", \"URLSession\",\n ];\n let mut findings = Vec::new();\n for path in files(&v2, &[\"rs\"]) {\n let source = fs::read_to_string(&path).unwrap();\n for token in forbidden {\n if source.contains(token) {\n findings.push(format!(\"{}: {token}\", path.display()));\n }\n }\n }\n assert!(\n findings.is_empty(),\n \"Rust host-slot V2 contracts must not acquire Swift Provider semantics:\\n{}\",\n findings.join(\"\\n\")\n );\n\n let allowlist = fs::read_to_string(\n root.join(\"rust-core/tests/fixtures/architecture/legacy_llm_allowlist.txt\"),\n ).unwrap();\n assert_eq!(\n allowlist.lines().filter(|line| !line.starts_with('#') && !line.is_empty()).count(),\n 16,\n \"Phase 3 must not grow the temporary legacy Rust LLM allowlist\"\n );\n let resolver = fs::read_to_string(root.join(\"rust-core/src/run_snapshot/resolver.rs\")).unwrap();\n assert!(resolver.contains(\"execution.host_slot_v2_requires_preparation\"));\n assert!(!resolver.contains(\"execution.host_slot_v2_not_runnable\"));\n}\n\n#[test]\nfn llm_phase_three_architecture_freezes_swift_credential_egress_and_transport_boundaries() {\n let root = root();\n let cloud = root.join(format!(\"toolkit/Sources/{}\", [\"LocalAgent\", \"LLMCloud\"].concat()));\n let transport_path = cloud.join(\"CloudHTTPTransport.swift\");\n let vault_path = cloud.join(\"SecurityCredentialVault.swift\");\n let mut direct_session = Vec::new();\n let mut direct_keychain = Vec::new();\n for path in files(&cloud, &[\"swift\"]) {\n let source = fs::read_to_string(&path).unwrap();\n if path != transport_path\n && (source.contains(\"URLSession(\") || source.contains(\"URLSessionConfiguration\"))\n {\n direct_session.push(path.strip_prefix(&root).unwrap().display().to_string());\n }\n if path != vault_path\n && [\"SecItemAdd\", \"SecItemUpdate\", \"SecItemCopyMatching\", \"SecItemDelete\"]\n .iter().any(|token| source.contains(token))\n {\n direct_keychain.push(path.strip_prefix(&root).unwrap().display().to_string());\n }\n for field in [\"public let apiKey\", \"public var apiKey\", \"public let api_key\", \"public var api_key\"] {\n assert!(!source.contains(field), \"public/Codable API-key field found in {}\", path.display());\n }\n }\n assert!(direct_session.is_empty(), \"direct URLSession users: {direct_session:?}\");\n assert!(direct_keychain.is_empty(), \"direct Keychain users: {direct_keychain:?}\");\n\n let transport = fs::read_to_string(&transport_path).unwrap();\n assert!(transport.contains(\"_ request: AuthorizedCloudHTTPRequest\"));\n assert!(!transport.contains(\"_ request: CloudWireRequest\"));\n let validator = fs::read_to_string(cloud.join(\"CloudSemanticTurnValidator.swift\")).unwrap();\n assert!(validator.contains(\"fileprivate init(\"));\n let egress = fs::read_to_string(cloud.join(\"ProviderEgressPolicy.swift\")).unwrap();\n assert!(egress.contains(\"package struct AuthorizedCloudHTTPRequest\"));\n assert!(egress.contains(\"fileprivate init(\"));\n let runtime = fs::read_to_string(cloud.join(\"CloudLLMRuntime.swift\")).unwrap();\n assert!(runtime.contains(\"private var active: ActiveSession?\"));\n assert!(runtime.contains(\"while attempts < 2\"));\n assert!(!runtime.contains(\"LocalAgentLLMLocal\"));\n}\n\n#[test]\nfn llm_phase_three_architecture_keeps_cpp_cloud_free() {\n let root = root();\n let forbidden = [\n \"CloudProvider\", \"ProviderProfile\", \"URLSession\", \"Keychain\", \"APIKey\",\n \"api_key\", \"OpenAI\", \"Anthropic\", \"Gemini\", \"DeepSeek\", \"MiniMax\",\n ];\n let mut findings = Vec::new();\n for directory in [\"inference/c_api\", \"inference/core\", \"inference/backends\"] {\n for path in files(&root.join(directory), &[\"h\", \"hpp\", \"c\", \"cc\", \"cpp\"]) {\n let source = fs::read_to_string(&path).unwrap();\n for token in forbidden {\n if source.contains(token) {\n findings.push(format!(\"{}: {token}\", path.display()));\n }\n }\n }\n }\n assert!(findings.is_empty(), \"C++ must remain local-inference-only:\\n{}\", findings.join(\"\\n\"));\n}\n\n#[test]\nfn llm_phase_three_architecture_requires_all_provider_fixtures_and_one_runner() {\n let root = root();\n let tests = root.join(format!(\n \"toolkit/Tests/{}Tests\",\n [\"LocalAgent\", \"LLMCloud\"].concat()\n ));\n for (suite, fixture) in [\n (\"OpenAIResponsesAdapterTests.swift\", \"openai\"),\n (\"AnthropicMessagesAdapterTests.swift\", \"anthropic\"),\n (\"GeminiInteractionsAdapterTests.swift\", \"gemini\"),\n (\"XAIAdapterTests.swift\", \"xai\"),\n (\"DeepSeekAdapterTests.swift\", \"deepseek\"),\n (\"MiniMaxAdapterTests.swift\", \"minimax\"),\n (\"GLMAdapterTests.swift\", \"glm\"),\n ] {\n assert!(tests.join(suite).is_file(), \"missing provider adapter suite {suite}\");\n let count = files(&tests.join(\"Fixtures\").join(fixture), &[\"sse\", \"json\"]).len();\n assert!(count > 0, \"provider fixture directory {fixture} is empty\");\n }\n let preset = fs::read_to_string(\n root.join(format!(\n \"toolkit/Sources/{}/ProviderPreset.swift\",\n [\"LocalAgent\", \"LLMCloud\"].concat()\n )),\n ).unwrap();\n assert!(preset.contains(\"public static let shipped\"));\n let runtime_tests = fs::read_to_string(tests.join(\"CloudLLMRuntimeTests.swift\")).unwrap();\n assert!(runtime_tests.contains(\"adapterIDs.count == 7\"));\n\n let runner = fs::read_to_string(root.join(\"scripts/run-llm-phase-3-contracts.sh\"))\n .expect(\"Phase 3 deterministic runner is missing\");\n for required in [\n \"run-llm-phase-2-contracts.sh\", \"llm_phase_three_architecture\",\n \"swift\", \"test\", \"CloudCredentialKeychainTests\",\n \"LOCAL_AGENT_PHASE3_SIMULATOR_UDID\", \"platform=iOS Simulator,id=$SIMULATOR_UDID\",\n \"OPENAI_API_KEY\", \"ANTHROPIC_API_KEY\", \"GEMINI_API_KEY\", \"XAI_API_KEY\",\n \"DEEPSEEK_API_KEY\", \"MINIMAX_API_KEY\", \"ZHIPUAI_API_KEY\",\n ] {\n assert!(runner.contains(required), \"Phase 3 runner is missing {required}\");\n }\n assert!(!runner.contains(\"name=iPhone 17 Pro\"));\n assert!(!runner.contains(\"run-llm-phase-3-live-smoke.sh\"));\n let live_smoke = fs::read_to_string(root.join(\"scripts/run-llm-phase-3-live-smoke.sh\"))\n .expect(\"Phase 3 live-smoke runner is missing\");\n let secret_rejection = live_smoke.find(\"*_API_KEY|*_TOKEN|*_SECRET)\").unwrap();\n let scoped_allow = live_smoke.find(\"LOCAL_AGENT_CLOUD_SMOKE_*)\").unwrap();\n assert!(\n secret_rejection < scoped_allow,\n \"secret-shaped variables must be rejected before the live-smoke namespace is allowed\"\n );\n let design = fs::read_to_string(\n root.join(\"docs/superpowers/specs/2026-07-10-swift-llm-system-design.md\"),\n ).unwrap();\n assert!(design.contains(\"Phase 3 implementation evidence (2026-07-18)\"));\n assert!(design.contains(\"Phase 4\"));\n assert!(design.contains(\"Phase 5\"));\n}\n"}, "e22f881dd6051514d51dc7a98d3d338853e588c4": {"t": 1785757443.2578669, "n": 8494, "h": "720af76bef9b9ca9", "c": "use std::{fs, path::{Path, PathBuf}};\n\nfn root() -> PathBuf {\n Path::new(env!(\"CARGO_MANIFEST_DIR\"))\n .parent()\n .expect(\"rust-core must be below the repository root\")\n .to_path_buf()\n}\n\nfn files(root: &Path, extensions: &[&str]) -> Vec<PathBuf> {\n fn visit(path: &Path, extensions: &[&str], output: &mut Vec<PathBuf>) {\n let Ok(entries) = fs::read_dir(path) else { return };\n for entry in entries.flatten() {\n let path = entry.path();\n if path.is_dir() {\n if matches!(\n path.file_name().and_then(|name| name.to_str()),\n Some(\"target\" | \".build\" | \"Artifacts\" | \"vendor\" | \"third_party\")\n ) {\n continue;\n }\n visit(&path, extensions, output);\n } else if path.extension().and_then(|value| value.to_str())\n .is_some_and(|value| extensions.contains(&value))\n {\n output.push(path);\n }\n }\n }\n let mut output = Vec::new();\n visit(root, extensions, &mut output);\n output.sort();\n output\n}\n\n#[test]\nfn llm_phase_three_architecture_keeps_rust_v2_provider_neutral() {\n let root = root();\n let v2 = root.join(\"rust-core/src/llm_contracts\");\n let forbidden = [\n \"ProviderProfile\", \"provider_profile\", \"BaseURL\", \"base_url\", \"APIKey\",\n \"api_key\", \"OpenAI\", \"Anthropic\", \"Gemini\", \"Grok\", \"DeepSeek\",\n \"MiniMax\", \"GLM\", \"CloudProviderAdapter\", \"URLSession\",\n ];\n let mut findings = Vec::new();\n for path in files(&v2, &[\"rs\"]) {\n let source = fs::read_to_string(&path).unwrap();\n for token in forbidden {\n if source.contains(token) {\n findings.push(format!(\"{}: {token}\", path.display()));\n }\n }\n }\n assert!(\n findings.is_empty(),\n \"Rust host-slot V2 contracts must not acquire Swift Provider semantics:\\n{}\",\n findings.join(\"\\n\")\n );\n\n let allowlist = fs::read_to_string(\n root.join(\"rust-core/tests/fixtures/architecture/legacy_llm_allowlist.txt\"),\n ).unwrap();\n assert_eq!(\n allowlist.lines().filter(|line| !line.starts_with('#') && !line.is_empty()).count(),\n 16,\n \"Phase 3 must not grow the temporary legacy Rust LLM allowlist\"\n );\n let resolver = fs::read_to_string(root.join(\"rust-core/src/run_snapshot/resolver.rs\")).unwrap();\n assert!(resolver.contains(\"execution.host_slot_v2_not_runnable\"));\n}\n\n#[test]\nfn llm_phase_three_architecture_freezes_swift_credential_egress_and_transport_boundaries() {\n let root = root();\n let cloud = root.join(format!(\"toolkit/Sources/{}\", [\"LocalAgent\", \"LLMCloud\"].concat()));\n let transport_path = cloud.join(\"CloudHTTPTransport.swift\");\n let vault_path = cloud.join(\"SecurityCredentialVault.swift\");\n let mut direct_session = Vec::new();\n let mut direct_keychain = Vec::new();\n for path in files(&cloud, &[\"swift\"]) {\n let source = fs::read_to_string(&path).unwrap();\n if path != transport_path\n && (source.contains(\"URLSession(\") || source.contains(\"URLSessionConfiguration\"))\n {\n direct_session.push(path.strip_prefix(&root).unwrap().display().to_string());\n }\n if path != vault_path\n && [\"SecItemAdd\", \"SecItemUpdate\", \"SecItemCopyMatching\", \"SecItemDelete\"]\n .iter().any(|token| source.contains(token))\n {\n direct_keychain.push(path.strip_prefix(&root).unwrap().display().to_string());\n }\n for field in [\"public let apiKey\", \"public var apiKey\", \"public let api_key\", \"public var api_key\"] {\n assert!(!source.contains(field), \"public/Codable API-key field found in {}\", path.display());\n }\n }\n assert!(direct_session.is_empty(), \"direct URLSession users: {direct_session:?}\");\n assert!(direct_keychain.is_empty(), \"direct Keychain users: {direct_keychain:?}\");\n\n let transport = fs::read_to_string(&transport_path).unwrap();\n assert!(transport.contains(\"_ request: AuthorizedCloudHTTPRequest\"));\n assert!(!transport.contains(\"_ request: CloudWireRequest\"));\n let validator = fs::read_to_string(cloud.join(\"CloudSemanticTurnValidator.swift\")).unwrap();\n assert!(validator.contains(\"fileprivate init(\"));\n let egress = fs::read_to_string(cloud.join(\"ProviderEgressPolicy.swift\")).unwrap();\n assert!(egress.contains(\"package struct AuthorizedCloudHTTPRequest\"));\n assert!(egress.contains(\"fileprivate init(\"));\n let runtime = fs::read_to_string(cloud.join(\"CloudLLMRuntime.swift\")).unwrap();\n assert!(runtime.contains(\"private var active: ActiveSession?\"));\n assert!(runtime.contains(\"while attempts < 2\"));\n assert!(!runtime.contains(\"LocalAgentLLMLocal\"));\n}\n\n#[test]\nfn llm_phase_three_architecture_keeps_cpp_cloud_free() {\n let root = root();\n let forbidden = [\n \"CloudProvider\", \"ProviderProfile\", \"URLSession\", \"Keychain\", \"APIKey\",\n \"api_key\", \"OpenAI\", \"Anthropic\", \"Gemini\", \"DeepSeek\", \"MiniMax\",\n ];\n let mut findings = Vec::new();\n for directory in [\"inference/c_api\", \"inference/core\", \"inference/backends\"] {\n for path in files(&root.join(directory), &[\"h\", \"hpp\", \"c\", \"cc\", \"cpp\"]) {\n let source = fs::read_to_string(&path).unwrap();\n for token in forbidden {\n if source.contains(token) {\n findings.push(format!(\"{}: {token}\", path.display()));\n }\n }\n }\n }\n assert!(findings.is_empty(), \"C++ must remain local-inference-only:\\n{}\", findings.join(\"\\n\"));\n}\n\n#[test]\nfn llm_phase_three_architecture_requires_all_provider_fixtures_and_one_runner() {\n let root = root();\n let tests = root.join(format!(\n \"toolkit/Tests/{}Tests\",\n [\"LocalAgent\", \"LLMCloud\"].concat()\n ));\n for (suite, fixture) in [\n (\"OpenAIResponsesAdapterTests.swift\", \"openai\"),\n (\"AnthropicMessagesAdapterTests.swift\", \"anthropic\"),\n (\"GeminiInteractionsAdapterTests.swift\", \"gemini\"),\n (\"XAIAdapterTests.swift\", \"xai\"),\n (\"DeepSeekAdapterTests.swift\", \"deepseek\"),\n (\"MiniMaxAdapterTests.swift\", \"minimax\"),\n (\"GLMAdapterTests.swift\", \"glm\"),\n ] {\n assert!(tests.join(suite).is_file(), \"missing provider adapter suite {suite}\");\n let count = files(&tests.join(\"Fixtures\").join(fixture), &[\"sse\", \"json\"]).len();\n assert!(count > 0, \"provider fixture directory {fixture} is empty\");\n }\n let preset = fs::read_to_string(\n root.join(format!(\n \"toolkit/Sources/{}/ProviderPreset.swift\",\n [\"LocalAgent\", \"LLMCloud\"].concat()\n )),\n ).unwrap();\n assert!(preset.contains(\"public static let shipped\"));\n let runtime_tests = fs::read_to_string(tests.join(\"CloudLLMRuntimeTests.swift\")).unwrap();\n assert!(runtime_tests.contains(\"adapterIDs.count == 7\"));\n\n let runner = fs::read_to_string(root.join(\"scripts/run-llm-phase-3-contracts.sh\"))\n .expect(\"Phase 3 deterministic runner is missing\");\n for required in [\n \"run-llm-phase-2-contracts.sh\", \"llm_phase_three_architecture\",\n \"swift\", \"test\", \"CloudCredentialKeychainTests\",\n \"LOCAL_AGENT_PHASE3_SIMULATOR_UDID\", \"platform=iOS Simulator,id=$SIMULATOR_UDID\",\n \"OPENAI_API_KEY\", \"ANTHROPIC_API_KEY\", \"GEMINI_API_KEY\", \"XAI_API_KEY\",\n \"DEEPSEEK_API_KEY\", \"MINIMAX_API_KEY\", \"ZHIPUAI_API_KEY\",\n ] {\n assert!(runner.contains(required), \"Phase 3 runner is missing {required}\");\n }\n assert!(!runner.contains(\"name=iPhone 17 Pro\"));\n assert!(!runner.contains(\"run-llm-phase-3-live-smoke.sh\"));\n let live_smoke = fs::read_to_string(root.join(\"scripts/run-llm-phase-3-live-smoke.sh\"))\n .expect(\"Phase 3 live-smoke runner is missing\");\n let secret_rejection = live_smoke.find(\"*_API_KEY|*_TOKEN|*_SECRET)\").unwrap();\n let scoped_allow = live_smoke.find(\"LOCAL_AGENT_CLOUD_SMOKE_*)\").unwrap();\n assert!(\n secret_rejection < scoped_allow,\n \"secret-shaped variables must be rejected before the live-smoke namespace is allowed\"\n );\n let design = fs::read_to_string(\n root.join(\"docs/superpowers/specs/2026-07-10-swift-llm-system-design.md\"),\n ).unwrap();\n assert!(design.contains(\"Phase 3 implementation evidence (2026-07-18)\"));\n assert!(design.contains(\"Phase 4\"));\n assert!(design.contains(\"Phase 5\"));\n}\n"}, "ce63da50606c1dc7d9fb4235494bd5017dc6da4e": {"t": 1786068330.7009127, "n": 8954, "h": "01e04a11fea0ee47", "c": "use std::{\n fs,\n path::{Path, PathBuf},\n};\n\nfn root() -> PathBuf {\n Path::new(env!(\"CARGO_MANIFEST_DIR\"))\n .parent()\n .expect(\"rust-core must be below the repository root\")\n .to_path_buf()\n}\n\nfn files(root: &Path, extensions: &[&str]) -> Vec<PathBuf> {\n fn visit(path: &Path, extensions: &[&str], output: &mut Vec<PathBuf>) {\n let Ok(entries) = fs::read_dir(path) else {\n return;\n };\n for entry in entries.flatten() {\n let path = entry.path();\n if path.is_dir() {\n if matches!(\n path.file_name().and_then(|name| name.to_str()),\n Some(\"target\" | \".build\" | \"Artifacts\" | \"vendor\" | \"third_party\")\n ) {\n continue;\n }\n visit(&path, extensions, output);\n } else if path\n .extension()\n .and_then(|value| value.to_str())\n .is_some_and(|value| extensions.contains(&value))\n {\n output.push(path);\n }\n }\n }\n let mut output = Vec::new();\n visit(root, extensions, &mut output);\n output.sort();\n output\n}\n\n#[test]\nfn llm_phase_three_architecture_keeps_rust_v2_provider_neutral() {\n let root = root();\n let v2 = root.join(\"rust-core/src/llm_contracts\");\n let forbidden = [\n \"ProviderProfile\",\n \"provider_profile\",\n \"BaseURL\",\n \"base_url\",\n \"APIKey\",\n \"api_key\",\n \"OpenAI\",\n \"Anthropic\",\n \"Gemini\",\n \"Grok\",\n \"DeepSeek\",\n \"MiniMax\",\n \"GLM\",\n \"CloudProviderAdapter\",\n \"URLSession\",\n ];\n let mut findings = Vec::new();\n for path in files(&v2, &[\"rs\"]) {\n let source = fs::read_to_string(&path).unwrap();\n for token in forbidden {\n if source.contains(token) {\n findings.push(format!(\"{}: {token}\", path.display()));\n }\n }\n }\n assert!(\n findings.is_empty(),\n \"Rust host-slot V2 contracts must not acquire Swift Provider semantics:\\n{}\",\n findings.join(\"\\n\")\n );\n\n let resolver = fs::read_to_string(root.join(\"rust-core/src/run_snapshot/resolver.rs\")).unwrap();\n assert!(resolver.contains(\"execution.host_slot_v2_requires_preparation\"));\n assert!(!resolver.contains(\"execution.host_slot_v2_not_runnable\"));\n assert!(!resolver.contains(\"ProfileExecutionRoute\"));\n}\n\n#[test]\nfn llm_phase_three_architecture_freezes_swift_credential_egress_and_transport_boundaries() {\n let root = root();\n let cloud = root.join(format!(\n \"toolkit/Sources/{}\",\n [\"LocalAgent\", \"LLMCloud\"].concat()\n ));\n let transport_path = cloud.join(\"CloudHTTPTransport.swift\");\n let vault_path = cloud.join(\"SecurityCredentialVault.swift\");\n let mut direct_session = Vec::new();\n let mut direct_keychain = Vec::new();\n for path in files(&cloud, &[\"swift\"]) {\n let source = fs::read_to_string(&path).unwrap();\n if path != transport_path\n && (source.contains(\"URLSession(\") || source.contains(\"URLSessionConfiguration\"))\n {\n direct_session.push(path.strip_prefix(&root).unwrap().display().to_string());\n }\n if path != vault_path\n && [\n \"SecItemAdd\",\n \"SecItemUpdate\",\n \"SecItemCopyMatching\",\n \"SecItemDelete\",\n ]\n .iter()\n .any(|token| source.contains(token))\n {\n direct_keychain.push(path.strip_prefix(&root).unwrap().display().to_string());\n }\n for field in [\n \"public let apiKey\",\n \"public var apiKey\",\n \"public let api_key\",\n \"public var api_key\",\n ] {\n assert!(\n !source.contains(field),\n \"public/Codable API-key field found in {}\",\n path.display()\n );\n }\n }\n assert!(\n direct_session.is_empty(),\n \"direct URLSession users: {direct_session:?}\"\n );\n assert!(\n direct_keychain.is_empty(),\n \"direct Keychain users: {direct_keychain:?}\"\n );\n\n let transport = fs::read_to_string(&transport_path).unwrap();\n assert!(transport.contains(\"_ request: AuthorizedCloudHTTPRequest\"));\n assert!(!transport.contains(\"_ request: CloudWireRequest\"));\n let validator = fs::read_to_string(cloud.join(\"CloudSemanticTurnValidator.swift\")).unwrap();\n assert!(validator.contains(\"fileprivate init(\"));\n let egress = fs::read_to_string(cloud.join(\"ProviderEgressPolicy.swift\")).unwrap();\n assert!(egress.contains(\"package struct AuthorizedCloudHTTPRequest\"));\n assert!(egress.contains(\"fileprivate init(\"));\n let runtime = fs::read_to_string(cloud.join(\"CloudLLMRuntime.swift\")).unwrap();\n assert!(runtime.contains(\"private var active: ActiveSession?\"));\n assert!(runtime.contains(\"while attempts < 2\"));\n assert!(!runtime.contains(\"LocalAgentLLMLocal\"));\n}\n\n#[test]\nfn llm_phase_three_architecture_keeps_cpp_cloud_free() {\n let root = root();\n let forbidden = [\n \"CloudProvider\",\n \"ProviderProfile\",\n \"URLSession\",\n \"Keychain\",\n \"APIKey\",\n \"api_key\",\n \"OpenAI\",\n \"Anthropic\",\n \"Gemini\",\n \"DeepSeek\",\n \"MiniMax\",\n ];\n let mut findings = Vec::new();\n for directory in [\"inference/c_api\", \"inference/core\", \"inference/backends\"] {\n for path in files(&root.join(directory), &[\"h\", \"hpp\", \"c\", \"cc\", \"cpp\"]) {\n let source = fs::read_to_string(&path).unwrap();\n for token in forbidden {\n if source.contains(token) {\n findings.push(format!(\"{}: {token}\", path.display()));\n }\n }\n }\n }\n assert!(\n findings.is_empty(),\n \"C++ must remain local-inference-only:\\n{}\",\n findings.join(\"\\n\")\n );\n}\n\n#[test]\nfn llm_phase_three_architecture_requires_all_provider_fixtures_and_one_runner() {\n let root = root();\n let tests = root.join(format!(\n \"toolkit/Tests/{}Tests\",\n [\"LocalAgent\", \"LLMCloud\"].concat()\n ));\n for (suite, fixture) in [\n (\"OpenAIResponsesAdapterTests.swift\", \"openai\"),\n (\"AnthropicMessagesAdapterTests.swift\", \"anthropic\"),\n (\"GeminiInteractionsAdapterTests.swift\", \"gemini\"),\n (\"XAIAdapterTests.swift\", \"xai\"),\n (\"DeepSeekAdapterTests.swift\", \"deepseek\"),\n (\"MiniMaxAdapterTests.swift\", \"minimax\"),\n (\"GLMAdapterTests.swift\", \"glm\"),\n ] {\n assert!(\n tests.join(suite).is_file(),\n \"missing provider adapter suite {suite}\"\n );\n let count = files(&tests.join(\"Fixtures\").join(fixture), &[\"sse\", \"json\"]).len();\n assert!(count > 0, \"provider fixture directory {fixture} is empty\");\n }\n let preset = fs::read_to_string(root.join(format!(\n \"toolkit/Sources/{}/ProviderPreset.swift\",\n [\"LocalAgent\", \"LLMCloud\"].concat()\n )))\n .unwrap();\n assert!(preset.contains(\"public static let shipped\"));\n let runtime_tests = fs::read_to_string(tests.join(\"CloudLLMRuntimeTests.swift\")).unwrap();\n assert!(runtime_tests.contains(\"adapterIDs.count == 11\"));\n\n let runner = fs::read_to_string(root.join(\"scripts/run-llm-phase-3-contracts.sh\"))\n .expect(\"Phase 3 deterministic runner is missing\");\n for required in [\n \"run-llm-phase-2-contracts.sh\",\n \"llm_phase_three_architecture\",\n \"swift\",\n \"test\",\n \"CloudCredentialKeychainTests\",\n \"LOCAL_AGENT_PHASE3_SIMULATOR_UDID\",\n \"platform=iOS Simulator,id=$SIMULATOR_UDID\",\n \"OPENAI_API_KEY\",\n \"ANTHROPIC_API_KEY\",\n \"GEMINI_API_KEY\",\n \"XAI_API_KEY\",\n \"DEEPSEEK_API_KEY\",\n \"MINIMAX_API_KEY\",\n \"ZHIPUAI_API_KEY\",\n ] {\n assert!(\n runner.contains(required),\n \"Phase 3 runner is missing {required}\"\n );\n }\n assert!(!runner.contains(\"name=iPhone 17 Pro\"));\n assert!(!runner.contains(\"run-llm-phase-3-live-smoke.sh\"));\n let live_smoke = fs::read_to_string(root.join(\"scripts/run-llm-phase-3-live-smoke.sh\"))\n .expect(\"Phase 3 live-smoke runner is missing\");\n let secret_rejection = live_smoke.find(\"*_API_KEY|*_TOKEN|*_SECRET)\").unwrap();\n let scoped_allow = live_smoke.find(\"LOCAL_AGENT_CLOUD_SMOKE_*)\").unwrap();\n assert!(\n secret_rejection < scoped_allow,\n \"secret-shaped variables must be rejected before the live-smoke namespace is allowed\"\n );\n let design = fs::read_to_string(\n root.join(\"docs/superpowers/specs/2026-07-10-swift-llm-system-design.md\"),\n )\n .unwrap();\n assert!(design.contains(\"Phase 3 implementation evidence (2026-07-18)\"));\n assert!(design.contains(\"Phase 4\"));\n assert!(design.contains(\"Phase 5\"));\n}\n"}}, "local-ios-agent/scripts/run-llm-phase-4-contracts.sh": {"53e990000a0582346e4ddffdd3402789af10da24": {"t": 1785745953.636053, "n": 3002, "h": "f2b13a00546096c5", "c": "#!/usr/bin/env bash\nset -euo pipefail\n\nROOT=\"$(cd \"$(dirname \"${BASH_SOURCE[0]}\")/..\" && pwd)\"\nMODULE_CACHE=\"${LOCAL_AGENT_PHASE4_MODULE_CACHE:-/private/tmp/local-agent-phase4-module-cache}\"\nSWIFT_SCRATCH=\"${LOCAL_AGENT_PHASE4_SWIFT_SCRATCH:-/private/tmp/local-agent-phase4-swift}\"\nDERIVED_DATA=\"${LOCAL_AGENT_PHASE4_DERIVED_DATA:-/private/tmp/local-agent-phase4-derived}\"\nIPHONE_UDID=\"${LOCAL_AGENT_PHASE4_IPHONE_UDID:-}\"\nIPAD_UDID=\"${LOCAL_AGENT_PHASE4_IPAD_UDID:-}\"\n\nunset OPENAI_API_KEY ANTHROPIC_API_KEY GEMINI_API_KEY XAI_API_KEY\nunset DEEPSEEK_API_KEY MINIMAX_API_KEY ZHIPUAI_API_KEY\n\nif [[ ! \"$IPHONE_UDID\" =~ ^[0-9A-Fa-f-]{36}$ ]]; then\n echo \"set LOCAL_AGENT_PHASE4_IPHONE_UDID to an available iPhone simulator UDID\" >&2\n exit 2\nfi\nif [[ ! \"$IPAD_UDID\" =~ ^[0-9A-Fa-f-]{36}$ ]]; then\n echo \"set LOCAL_AGENT_PHASE4_IPAD_UDID to an available iPad simulator UDID\" >&2\n exit 2\nfi\nif ! DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer \\\n /usr/bin/xcrun simctl list devices available \\\n | /usr/bin/grep -F \"($IPHONE_UDID)\" \\\n | /usr/bin/grep -Fq \"iPhone\"; then\n echo \"LOCAL_AGENT_PHASE4_IPHONE_UDID is not an available iPhone simulator\" >&2\n exit 2\nfi\nif ! DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer \\\n /usr/bin/xcrun simctl list devices available \\\n | /usr/bin/grep -F \"($IPAD_UDID)\" \\\n | /usr/bin/grep -Fq \"iPad\"; then\n echo \"LOCAL_AGENT_PHASE4_IPAD_UDID is not an available iPad simulator\" >&2\n exit 2\nfi\n\nmkdir -p \"$MODULE_CACHE\" \"$SWIFT_SCRATCH\" \"$DERIVED_DATA\"\nexport LOCAL_AGENT_PHASE3_SIMULATOR_UDID=\"$IPHONE_UDID\"\n\n\"$ROOT/scripts/run-llm-phase-3-contracts.sh\"\n\nCARGO_NET_OFFLINE=true cargo test \\\n --manifest-path \"$ROOT/rust-core/Cargo.toml\" \\\n --lib\nCARGO_NET_OFFLINE=true cargo test \\\n --manifest-path \"$ROOT/rust-core/Cargo.toml\" \\\n --test contract\nCARGO_NET_OFFLINE=true cargo test \\\n --manifest-path \"$ROOT/rust-core/Cargo.toml\" \\\n --test integration\nCARGO_NET_OFFLINE=true cargo test \\\n --manifest-path \"$ROOT/rust-core/Cargo.toml\" \\\n --test lint llm_phase_four_architecture -- --nocapture\n\nDEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer \\\nCLANG_MODULE_CACHE_PATH=\"$MODULE_CACHE\" \\\nSWIFTPM_MODULECACHE_OVERRIDE=\"$MODULE_CACHE\" \\\n /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift \\\n test --disable-sandbox \\\n --package-path \"$ROOT/toolkit\" \\\n --scratch-path \"$SWIFT_SCRATCH\"\n\nfor UDID in \"$IPHONE_UDID\" \"$IPAD_UDID\"; do\n DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer \\\n CLANG_MODULE_CACHE_PATH=\"$MODULE_CACHE\" \\\n SWIFTPM_MODULECACHE_OVERRIDE=\"$MODULE_CACHE\" \\\n /Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild \\\n test \\\n -project \"$ROOT/apps/LocalAgentApp/LocalAgentApp.xcodeproj\" \\\n -scheme LocalAgentApp \\\n -destination \"platform=iOS Simulator,id=$UDID\" \\\n -derivedDataPath \"$DERIVED_DATA-$UDID\" \\\n -only-testing:LocalAgentAppTests/LLMHostCompositionTests\ndone\n\necho \"LLM Phase 4 host execution contracts passed\"\n"}, "d4a1c67fabdffcac16efcee24bbe014a1803deef": {"t": 1785757433.6695347, "n": 3002, "h": "f2b13a00546096c5", "c": "#!/usr/bin/env bash\nset -euo pipefail\n\nROOT=\"$(cd \"$(dirname \"${BASH_SOURCE[0]}\")/..\" && pwd)\"\nMODULE_CACHE=\"${LOCAL_AGENT_PHASE4_MODULE_CACHE:-/private/tmp/local-agent-phase4-module-cache}\"\nSWIFT_SCRATCH=\"${LOCAL_AGENT_PHASE4_SWIFT_SCRATCH:-/private/tmp/local-agent-phase4-swift}\"\nDERIVED_DATA=\"${LOCAL_AGENT_PHASE4_DERIVED_DATA:-/private/tmp/local-agent-phase4-derived}\"\nIPHONE_UDID=\"${LOCAL_AGENT_PHASE4_IPHONE_UDID:-}\"\nIPAD_UDID=\"${LOCAL_AGENT_PHASE4_IPAD_UDID:-}\"\n\nunset OPENAI_API_KEY ANTHROPIC_API_KEY GEMINI_API_KEY XAI_API_KEY\nunset DEEPSEEK_API_KEY MINIMAX_API_KEY ZHIPUAI_API_KEY\n\nif [[ ! \"$IPHONE_UDID\" =~ ^[0-9A-Fa-f-]{36}$ ]]; then\n echo \"set LOCAL_AGENT_PHASE4_IPHONE_UDID to an available iPhone simulator UDID\" >&2\n exit 2\nfi\nif [[ ! \"$IPAD_UDID\" =~ ^[0-9A-Fa-f-]{36}$ ]]; then\n echo \"set LOCAL_AGENT_PHASE4_IPAD_UDID to an available iPad simulator UDID\" >&2\n exit 2\nfi\nif ! DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer \\\n /usr/bin/xcrun simctl list devices available \\\n | /usr/bin/grep -F \"($IPHONE_UDID)\" \\\n | /usr/bin/grep -Fq \"iPhone\"; then\n echo \"LOCAL_AGENT_PHASE4_IPHONE_UDID is not an available iPhone simulator\" >&2\n exit 2\nfi\nif ! DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer \\\n /usr/bin/xcrun simctl list devices available \\\n | /usr/bin/grep -F \"($IPAD_UDID)\" \\\n | /usr/bin/grep -Fq \"iPad\"; then\n echo \"LOCAL_AGENT_PHASE4_IPAD_UDID is not an available iPad simulator\" >&2\n exit 2\nfi\n\nmkdir -p \"$MODULE_CACHE\" \"$SWIFT_SCRATCH\" \"$DERIVED_DATA\"\nexport LOCAL_AGENT_PHASE3_SIMULATOR_UDID=\"$IPHONE_UDID\"\n\n\"$ROOT/scripts/run-llm-phase-3-contracts.sh\"\n\nCARGO_NET_OFFLINE=true cargo test \\\n --manifest-path \"$ROOT/rust-core/Cargo.toml\" \\\n --lib\nCARGO_NET_OFFLINE=true cargo test \\\n --manifest-path \"$ROOT/rust-core/Cargo.toml\" \\\n --test contract\nCARGO_NET_OFFLINE=true cargo test \\\n --manifest-path \"$ROOT/rust-core/Cargo.toml\" \\\n --test integration\nCARGO_NET_OFFLINE=true cargo test \\\n --manifest-path \"$ROOT/rust-core/Cargo.toml\" \\\n --test lint llm_phase_four_architecture -- --nocapture\n\nDEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer \\\nCLANG_MODULE_CACHE_PATH=\"$MODULE_CACHE\" \\\nSWIFTPM_MODULECACHE_OVERRIDE=\"$MODULE_CACHE\" \\\n /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift \\\n test --disable-sandbox \\\n --package-path \"$ROOT/toolkit\" \\\n --scratch-path \"$SWIFT_SCRATCH\"\n\nfor UDID in \"$IPHONE_UDID\" \"$IPAD_UDID\"; do\n DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer \\\n CLANG_MODULE_CACHE_PATH=\"$MODULE_CACHE\" \\\n SWIFTPM_MODULECACHE_OVERRIDE=\"$MODULE_CACHE\" \\\n /Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild \\\n test \\\n -project \"$ROOT/apps/LocalAgentApp/LocalAgentApp.xcodeproj\" \\\n -scheme LocalAgentApp \\\n -destination \"platform=iOS Simulator,id=$UDID\" \\\n -derivedDataPath \"$DERIVED_DATA-$UDID\" \\\n -only-testing:LocalAgentAppTests/LLMHostCompositionTests\ndone\n\necho \"LLM Phase 4 host execution contracts passed\"\n"}, "ddd268aceede0dd805d362aacf469dd24aa96eb0": {"t": 1785757435.0059829, "n": 2909, "h": "5eedfc23add1c805", "c": "#!/usr/bin/env bash\nset -euo pipefail\n\nROOT=\"$(cd \"$(dirname \"${BASH_SOURCE[0]}\")/..\" && pwd)\"\nMODULE_CACHE=\"${LOCAL_AGENT_PHASE4_MODULE_CACHE:-/private/tmp/local-agent-phase4-module-cache}\"\nSWIFT_SCRATCH=\"${LOCAL_AGENT_PHASE4_SWIFT_SCRATCH:-/private/tmp/local-agent-phase4-swift}\"\nDERIVED_DATA=\"${LOCAL_AGENT_PHASE4_DERIVED_DATA:-/private/tmp/local-agent-phase4-derived}\"\nIPHONE_UDID=\"${LOCAL_AGENT_PHASE4_IPHONE_UDID:-}\"\nIPAD_UDID=\"${LOCAL_AGENT_PHASE4_IPAD_UDID:-}\"\n\nunset OPENAI_API_KEY ANTHROPIC_API_KEY GEMINI_API_KEY XAI_API_KEY\nunset DEEPSEEK_API_KEY MINIMAX_API_KEY ZHIPUAI_API_KEY\n\nif [[ ! \"$IPHONE_UDID\" =~ ^[0-9A-Fa-f-]{36}$ ]]; then\n echo \"set LOCAL_AGENT_PHASE4_IPHONE_UDID to an available iPhone simulator UDID\" >&2\n exit 2\nfi\nif [[ ! \"$IPAD_UDID\" =~ ^[0-9A-Fa-f-]{36}$ ]]; then\n echo \"set LOCAL_AGENT_PHASE4_IPAD_UDID to an available iPad simulator UDID\" >&2\n exit 2\nfi\nif ! DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer \\\n /usr/bin/xcrun simctl list devices available \\\n | /usr/bin/grep -F \"($IPHONE_UDID)\" \\\n | /usr/bin/grep -Fq \"iPhone\"; then\n echo \"LOCAL_AGENT_PHASE4_IPHONE_UDID is not an available iPhone simulator\" >&2\n exit 2\nfi\nif ! DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer \\\n /usr/bin/xcrun simctl list devices available \\\n | /usr/bin/grep -F \"($IPAD_UDID)\" \\\n | /usr/bin/grep -Fq \"iPad\"; then\n echo \"LOCAL_AGENT_PHASE4_IPAD_UDID is not an available iPad simulator\" >&2\n exit 2\nfi\n\nmkdir -p \"$MODULE_CACHE\" \"$SWIFT_SCRATCH\" \"$DERIVED_DATA\"\nexport LOCAL_AGENT_PHASE3_SIMULATOR_UDID=\"$IPHONE_UDID\"\n\n\"$ROOT/scripts/run-llm-phase-3-contracts.sh\"\n\nCARGO_NET_OFFLINE=true cargo test \\\n --manifest-path \"$ROOT/rust-core/Cargo.toml\" \\\n --test contract\nCARGO_NET_OFFLINE=true cargo test \\\n --manifest-path \"$ROOT/rust-core/Cargo.toml\" \\\n --test integration\nCARGO_NET_OFFLINE=true cargo test \\\n --manifest-path \"$ROOT/rust-core/Cargo.toml\" \\\n --test lint llm_phase_four_architecture -- --nocapture\n\nDEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer \\\nCLANG_MODULE_CACHE_PATH=\"$MODULE_CACHE\" \\\nSWIFTPM_MODULECACHE_OVERRIDE=\"$MODULE_CACHE\" \\\n /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift \\\n test --disable-sandbox \\\n --package-path \"$ROOT/toolkit\" \\\n --scratch-path \"$SWIFT_SCRATCH\"\n\nfor UDID in \"$IPHONE_UDID\" \"$IPAD_UDID\"; do\n DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer \\\n CLANG_MODULE_CACHE_PATH=\"$MODULE_CACHE\" \\\n SWIFTPM_MODULECACHE_OVERRIDE=\"$MODULE_CACHE\" \\\n /Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild \\\n test \\\n -project \"$ROOT/apps/LocalAgentApp/LocalAgentApp.xcodeproj\" \\\n -scheme LocalAgentApp \\\n -destination \"platform=iOS Simulator,id=$UDID\" \\\n -derivedDataPath \"$DERIVED_DATA-$UDID\" \\\n -only-testing:LocalAgentAppTests/LLMHostCompositionTests\ndone\n\necho \"LLM Phase 4 host execution contracts passed\"\n"}, "ce63da50606c1dc7d9fb4235494bd5017dc6da4e": {"t": 1786068347.018245, "n": 3002, "h": "f2b13a00546096c5", "c": "#!/usr/bin/env bash\nset -euo pipefail\n\nROOT=\"$(cd \"$(dirname \"${BASH_SOURCE[0]}\")/..\" && pwd)\"\nMODULE_CACHE=\"${LOCAL_AGENT_PHASE4_MODULE_CACHE:-/private/tmp/local-agent-phase4-module-cache}\"\nSWIFT_SCRATCH=\"${LOCAL_AGENT_PHASE4_SWIFT_SCRATCH:-/private/tmp/local-agent-phase4-swift}\"\nDERIVED_DATA=\"${LOCAL_AGENT_PHASE4_DERIVED_DATA:-/private/tmp/local-agent-phase4-derived}\"\nIPHONE_UDID=\"${LOCAL_AGENT_PHASE4_IPHONE_UDID:-}\"\nIPAD_UDID=\"${LOCAL_AGENT_PHASE4_IPAD_UDID:-}\"\n\nunset OPENAI_API_KEY ANTHROPIC_API_KEY GEMINI_API_KEY XAI_API_KEY\nunset DEEPSEEK_API_KEY MINIMAX_API_KEY ZHIPUAI_API_KEY\n\nif [[ ! \"$IPHONE_UDID\" =~ ^[0-9A-Fa-f-]{36}$ ]]; then\n echo \"set LOCAL_AGENT_PHASE4_IPHONE_UDID to an available iPhone simulator UDID\" >&2\n exit 2\nfi\nif [[ ! \"$IPAD_UDID\" =~ ^[0-9A-Fa-f-]{36}$ ]]; then\n echo \"set LOCAL_AGENT_PHASE4_IPAD_UDID to an available iPad simulator UDID\" >&2\n exit 2\nfi\nif ! DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer \\\n /usr/bin/xcrun simctl list devices available \\\n | /usr/bin/grep -F \"($IPHONE_UDID)\" \\\n | /usr/bin/grep -Fq \"iPhone\"; then\n echo \"LOCAL_AGENT_PHASE4_IPHONE_UDID is not an available iPhone simulator\" >&2\n exit 2\nfi\nif ! DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer \\\n /usr/bin/xcrun simctl list devices available \\\n | /usr/bin/grep -F \"($IPAD_UDID)\" \\\n | /usr/bin/grep -Fq \"iPad\"; then\n echo \"LOCAL_AGENT_PHASE4_IPAD_UDID is not an available iPad simulator\" >&2\n exit 2\nfi\n\nmkdir -p \"$MODULE_CACHE\" \"$SWIFT_SCRATCH\" \"$DERIVED_DATA\"\nexport LOCAL_AGENT_PHASE3_SIMULATOR_UDID=\"$IPHONE_UDID\"\n\n\"$ROOT/scripts/run-llm-phase-3-contracts.sh\"\n\nCARGO_NET_OFFLINE=true cargo test \\\n --manifest-path \"$ROOT/rust-core/Cargo.toml\" \\\n --lib\nCARGO_NET_OFFLINE=true cargo test \\\n --manifest-path \"$ROOT/rust-core/Cargo.toml\" \\\n --test contract\nCARGO_NET_OFFLINE=true cargo test \\\n --manifest-path \"$ROOT/rust-core/Cargo.toml\" \\\n --test integration\nCARGO_NET_OFFLINE=true cargo test \\\n --manifest-path \"$ROOT/rust-core/Cargo.toml\" \\\n --test lint llm_phase_four_architecture -- --nocapture\n\nDEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer \\\nCLANG_MODULE_CACHE_PATH=\"$MODULE_CACHE\" \\\nSWIFTPM_MODULECACHE_OVERRIDE=\"$MODULE_CACHE\" \\\n /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift \\\n test --disable-sandbox \\\n --package-path \"$ROOT/toolkit\" \\\n --scratch-path \"$SWIFT_SCRATCH\"\n\nfor UDID in \"$IPHONE_UDID\" \"$IPAD_UDID\"; do\n DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer \\\n CLANG_MODULE_CACHE_PATH=\"$MODULE_CACHE\" \\\n SWIFTPM_MODULECACHE_OVERRIDE=\"$MODULE_CACHE\" \\\n /Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild \\\n test \\\n -project \"$ROOT/apps/LocalAgentApp/LocalAgentApp.xcodeproj\" \\\n -scheme LocalAgentApp \\\n -destination \"platform=iOS Simulator,id=$UDID\" \\\n -derivedDataPath \"$DERIVED_DATA-$UDID\" \\\n -only-testing:LocalAgentAppTests/LLMHostCompositionTests\ndone\n\necho \"LLM Phase 4 host execution contracts passed\"\n"}}, "local-ios-agent/scripts/run-llm-phase-5-contracts.sh": {"ce63da50606c1dc7d9fb4235494bd5017dc6da4e": {"t": 1786068354.023402, "n": 2109, "h": "bca14441b0ffd0bf", "c": "#!/usr/bin/env bash\nset -euo pipefail\n\nROOT=\"$(cd \"$(dirname \"${BASH_SOURCE[0]}\")/..\" && pwd)\"\nIPHONE_UDID=\"${LOCAL_AGENT_PHASE5_IPHONE_UDID:-}\"\nIPAD_UDID=\"${LOCAL_AGENT_PHASE5_IPAD_UDID:-}\"\nDERIVED_DATA=\"${LOCAL_AGENT_PHASE5_DERIVED_DATA:-/private/tmp/local-agent-phase5-derived}\"\n\nif [[ -z \"$IPHONE_UDID\" || -z \"$IPAD_UDID\" ]]; then\n echo \"Set LOCAL_AGENT_PHASE5_IPHONE_UDID and LOCAL_AGENT_PHASE5_IPAD_UDID.\" >&2\n exit 2\nfi\n\nunset OPENAI_API_KEY ANTHROPIC_API_KEY GEMINI_API_KEY XAI_API_KEY\nunset DEEPSEEK_API_KEY MINIMAX_API_KEY ZHIPUAI_API_KEY\n\nLOCAL_AGENT_PHASE4_IPHONE_UDID=\"$IPHONE_UDID\" \\\nLOCAL_AGENT_PHASE4_IPAD_UDID=\"$IPAD_UDID\" \\\n \"$ROOT/scripts/run-llm-phase-4-contracts.sh\"\n\nCARGO_NET_OFFLINE=true cargo test --manifest-path \"$ROOT/rust-core/Cargo.toml\" \\\n --test lint llm_phase_five_architecture -- --nocapture\n\nfor UDID in \"$IPHONE_UDID\" \"$IPAD_UDID\"; do\n DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer \\\n /Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild test \\\n -quiet \\\n -project \"$ROOT/apps/LocalAgentApp/LocalAgentApp.xcodeproj\" \\\n -scheme LocalAgentApp \\\n -destination \"platform=iOS Simulator,id=$UDID\" \\\n -derivedDataPath \"$DERIVED_DATA-$UDID\" \\\n -only-testing:LocalAgentAppTests/ModelCenterViewModelTests \\\n -only-testing:LocalAgentAppTests/ProviderProfileEditorTests \\\n -only-testing:LocalAgentAppTests/AppCloudApprovalBrokerTests \\\n -only-testing:LocalAgentAppTests/HostBoundAgentPublishTests \\\n -only-testing:LocalAgentAppTests/LegacyLLMMigrationCoordinatorTests \\\n -only-testing:LocalAgentAppTests/LLMProductBootstrapTests \\\n -only-testing:LocalAgentAppTests/LLMHostCompositionTests \\\n -only-testing:LocalAgentAppTests/AgentRuntimeServiceTests \\\n SWIFT_ENABLE_BATCH_MODE=NO\ndone\n\nif rg -n \\\n 'ModelRoutingClient|ProviderControllingRuntimeClient|RuntimeOptionsControllingRuntimeClient|LLMProductRunRouter|LEGACY_COMPATIBILITY_STREAMING_PATH' \\\n \"$ROOT/apps/LocalAgentApp/LocalAgentApp\" \"$ROOT/toolkit/Sources\"; then\n echo \"legacy Swift LLM product route remains\" >&2\n exit 1\nfi\n"}}}} |