chore: promote staging to staging-promote/3ac8e5f7-24538841293 (2026-04-17 04:57 UTC)#2565
Conversation
…start (#2561) * fix: owner_id was stored as string when recovered from settings on restart Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * test: add regression test for owner_id type on restart Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * chore: use existing function --------- Co-authored-by: Guillermo Alejandro Gallardo Diez <gagdiez@iR2.local> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Code reviewFound 8 issues:
// Also reject any name that collides with an already-registered
// channel to prevent a WASM module from shadowing a channel that
// was registered earlier in the startup sequence.
if registered_channel_names
.iter()
.any(|n| n.to_ascii_lowercase() == name_lower)
if let Some(owner_actor_id) = owner_actor_id {
let owner_id_value = owner_actor_id
.parse::<i64>()
.map(serde_json::Value::from)
.unwrap_or_else(|_| serde_json::Value::String(owner_actor_id.to_string()));
let startup_active_channel_names = if let Some(ref ext_mgr) = components.extension_manager {
ext_mgr
.load_startup_active_channels(
&config.owner_id,
config.channels.configured_wasm_channels.clone(),
)
.await
} else {
normalize_extension_names(config.channels.configured_wasm_channels.clone())
};
if seen.insert(name.clone()) {
normalized.push(name);
}
Err(error) => {
tracing::warn!(
channel = %name,
error = %error,
"Skipping invalid startup channel name"
);
}
/// Names of channels that are currently running in the process.
///
/// For WASM channels this is no longer seeded from on-disk discovery at
/// boot; startup only records channels that were actually restored.
No security vulnerabilities or logic bugs detected. The architecture properly separates fallback config from runtime state and handles the owner_id type conversion correctly for both numeric and string cases (though the implicit type inference could be clearer). |
Auto-promotion from staging CI
Batch range:
a53eac5c2dec6b6cd5c08189086093fde64aa9cb..fe5cdceeb2f596532350ca228c2888b2cdc28589Promotion branch:
staging-promote/fe5cdcee-24548466471Base:
staging-promote/3ac8e5f7-24538841293Triggered by: Staging CI batch at 2026-04-17 04:57 UTC
Commits in this batch (62):
ironclaw profile listsubcommand (feat(cli): addironclaw profile listsubcommand #2288)reasoning_contentfields in chat completions response (fix: duplicatereasoning_contentfields in chat completions response #2493)Current commits in this promotion (2)
Current base:
staging-promote/3ac8e5f7-24538841293Current head:
staging-promote/fe5cdcee-24548466471Current range:
origin/staging-promote/3ac8e5f7-24538841293..origin/staging-promote/fe5cdcee-24548466471Auto-updated by staging promotion metadata workflow
Waiting for gates:
Auto-created by staging-ci workflow