🚨 AI協調開発の危機回避事例を論文化(paper-09)

「ん?大丈夫?」の一言がPython特化ハードコーディングを防いだ事例を記録。
Everything is Box哲学 vs 技術的正しさの綱渡りからの生還を分析。

- docs/research/paper-09-ai-collaboration-pitfall/ を新規作成
  - incident-analysis.md: Lowerer特殊化危機の詳細分析
  - ai-collaboration-lessons.md: AI協調開発の教訓
  - intuition-in-engineering.md: エンジニアの直感の価値
  - summary.md: 綱渡りからの生還まとめ
- 研究論文の1論文1フォルダ原則に従い整理
- Python統合関連の実装修正とビルド成功確認

🛡️ Generated with Claude Code
This commit is contained in:
Moe Charm
2025-08-30 08:54:15 +09:00
parent db265d7f29
commit 7a0f9bd432
103 changed files with 8697 additions and 909 deletions

View File

@ -4,6 +4,7 @@
use std::collections::HashMap;
use std::os::raw::c_char;
use std::sync::{Mutex, atomic::{AtomicU32, Ordering}};
use std::ffi::CStr;
// ===== Error Codes (BID-1) =====
const NYB_SUCCESS: i32 = 0;
@ -51,6 +52,26 @@ fn parse_first_string(args: &[u8]) -> Result<String, ()> {
Ok(s)
}
fn format_first_any(args: &[u8]) -> Option<String> {
if args.len() < 4 { return None; }
let mut p = 4usize;
if args.len() < p + 4 { return None; }
let tag = u16::from_le_bytes([args[p], args[p+1]]); p += 2;
let sz = u16::from_le_bytes([args[p], args[p+1]]) as usize; p += 2;
if args.len() < p + sz { return None; }
let payload = &args[p..p+sz];
match tag {
1 => Some(if sz>0 && payload[0]!=0 { "true".into() } else { "false".into() }),
2 => { if sz!=4 { None } else { let mut b=[0u8;4]; b.copy_from_slice(payload); Some((i32::from_le_bytes(b)).to_string()) } },
3 => { if sz!=8 { None } else { let mut b=[0u8;8]; b.copy_from_slice(payload); Some((i64::from_le_bytes(b)).to_string()) } },
5 => { if sz!=8 { None } else { let mut b=[0u8;8]; b.copy_from_slice(payload); Some(f64::from_le_bytes(b).to_string()) } },
6 => { std::str::from_utf8(payload).ok().map(|s| s.to_string()) },
7 => Some(format!("<bytes:{}>", sz)),
8 => { if sz==8 { let mut t=[0u8;4]; t.copy_from_slice(&payload[0..4]); let mut i=[0u8;4]; i.copy_from_slice(&payload[4..8]); Some(format!("<handle {}:{}>", u32::from_le_bytes(t), u32::from_le_bytes(i))) } else { None } },
_ => None,
}
}
// Write TLV birth result: Handle(tag=8,size=8) with (type_id, instance_id)
unsafe fn write_tlv_birth(type_id: u32, instance_id: u32, out: *mut u8, out_len: *mut usize) -> i32 {
let need = 4 + 4 + 8; // header + entry + payload
@ -118,16 +139,14 @@ pub extern "C" fn nyash_plugin_invoke(
}
METHOD_LOG | METHOD_PRINTLN => {
let slice = std::slice::from_raw_parts(args, args_len);
match parse_first_string(slice) {
Ok(s) => {
if method_id == METHOD_LOG { print!("{}", s); } else { println!("{}", s); }
return write_tlv_void(result, result_len);
}
Err(_) => return NYB_E_INVALID_ARGS,
}
let s = match parse_first_string(slice) {
Ok(s) => s,
Err(_) => format_first_any(slice).unwrap_or_else(|| "".to_string()),
};
if method_id == METHOD_LOG { print!("{}", s); } else { println!("{}", s); }
return write_tlv_void(result, result_len);
}
_ => NYB_E_INVALID_METHOD,
}
}
}