SP = 'C:/Users/decid/AppData/Local/Temp/claude/C--Users-decid-Documents-projects-spt-core/1b4ace09-f5d3-4f66-97f6-60d676388136/scratchpad/'

def load(p):
    raw = open(p, encoding='utf-8', newline='').read()
    return raw.replace('\r\n', '\n'), '\r\n' in raw

def save(p, s, crlf):
    open(p, 'w', encoding='utf-8', newline='').write(s.replace('\n', '\r\n') if crlf else s)

def once(s, old, new):
    assert s.count(old) == 1, (old[:80], s.count(old))
    return s.replace(old, new)

p = 'crates/spt-runtime/src/surfaces.rs'
s, c = load(p)
about = open(SP + 'about.rs', encoding='utf-8').read()
tests = open(SP + 'about_tests.rs', encoding='utf-8').read()
s = once(s, '#[cfg(test)]\nmod tests {\n', about + '#[cfg(test)]\nmod tests {\n')
assert s.endswith('}\n')
s = s[:-2] + tests + '}\n'
save(p, s, c)

p = 'crates/spt-runtime/Cargo.toml'
s, c = load(p)
s = once(s, 'pulldown-cmark = { version = "0.13", default-features = false, features = ["html"] }\n',
         'pulldown-cmark = { version = "0.13", default-features = false, features = ["html"] }\n'
         '# The adapter page\'s install time (releases#332), on the same clock the\n'
         '# update divulge row prints. Already in the workspace (the spt binary).\n'
         'chrono = { version = "0.4", default-features = false, features = ["clock"] }\n')
save(p, s, c)

p = 'crates/spt-daemon/src/relcache.rs'
s, c = load(p)
anchor = '    fn retained(version: &str) -> RetainedAdapter {'
s = once(s, anchor, '''    // [unit->REQ-DOCS-ADAPTER-PAGE]
    #[test]
    fn current_source_round_trips_and_a_pre_w8_sidecar_reads_none() {
        let cache = ReleaseCache::open(&tempfile::tempdir().unwrap().keep());
        let mut meta = retained("1.0.0");
        meta.current_source = Some("release".into());
        cache.retain_adapter("a", b"SPT", &meta).unwrap();
        assert_eq!(cache.retained_adapter("a").unwrap().current_source.as_deref(), Some("release"));
        // A sidecar written before the field existed: no key, reads None.
        let old = serde_json::json!({"kind": "harness", "version": "1.0.0", "sha256": "00"});
        let parsed: RetainedAdapter = serde_json::from_value(old).unwrap();
        assert_eq!(parsed.current_source, None);
        // And an absent source is not written as a key at all.
        let bare = serde_json::to_value(retained("1.0.0")).unwrap();
        assert!(bare.get("current_source").is_none(), "{bare}");
    }

''' + anchor)
save(p, s, c)
print('ok')
