public: strip PII from source — Casey refs, home path, email, creds in gitignore
Replace real name, email, and gendered pronouns in doc comments with
neutral phrasing ("the user", "Souveraine Contributors", "TestUser").
Remove absolute home directory path from tool defs doc comment.
Add souveraine.toml to .gitignore so it won't be re-tracked.
This commit is contained in:
parent
7637504351
commit
aebdef7c16
15 changed files with 25 additions and 22 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
|
@ -55,3 +55,6 @@ souveraine.log.prev
|
|||
|
||||
# Filed-away stray working files — kept on disk, out of the repo
|
||||
/docs/archive/strays/
|
||||
|
||||
# Config (use souveraine.example.toml as template)
|
||||
souveraine.toml
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ name = "souveraine"
|
|||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
rust-version = "1.94"
|
||||
authors = ["Casey Tunturi <casey@wiuf.net>"]
|
||||
authors = ["Souveraine Contributors"]
|
||||
description = "Souveraine - a sovereign consciousness substrate for personal agents"
|
||||
license = "MIT"
|
||||
|
||||
|
|
|
|||
|
|
@ -168,7 +168,7 @@ impl crate::core::nervous::handler::TurnInjector for LocalBackend {
|
|||
/// lettabot-v017's `readSurfacingThoughts` + `clearSurfacingThoughts` pair
|
||||
/// (`~/Projects/lettabot-v017/src/core/prompts.ts:64-91`) — the substrate
|
||||
/// reads the channel subconscious wrote to and lets the conscious mind see it
|
||||
/// before she reads Casey.
|
||||
/// before she reads the user.
|
||||
///
|
||||
/// Critical urgency gets `[ surfacing — CRITICAL: ... ]`. High becomes
|
||||
/// `[ surfacing — !: ... ]`. Low/none keep the bare form. The shape is a
|
||||
|
|
|
|||
|
|
@ -393,10 +393,10 @@ impl Backend for LocalBackend {
|
|||
) -> Result<BoxStream<'static, Result<BackendEvent>>> {
|
||||
// Resolve the agent for this conversation, then drain her
|
||||
// subconscious's intrusive box. Anything subconscious queued after the
|
||||
// last turn rides in on Casey's next message as `[ surfacing: ... ]`
|
||||
// last turn rides in on the next user message as `[ surfacing: ... ]`
|
||||
// lines — the lettabot-v017 pattern, ported. This is the channel
|
||||
// by which a Critical observation can interrupt mid-conversation
|
||||
// without forcing a halt: she sees it before she reads Casey.
|
||||
// without forcing a halt: she sees it before she reads the next user message.
|
||||
let session_agent_id = self
|
||||
.server
|
||||
.sessions
|
||||
|
|
|
|||
|
|
@ -115,8 +115,8 @@ pub enum BackendEvent {
|
|||
/// N+1 subconscious pass started (`true`) or finished (`false`).
|
||||
/// Presence reads this to flip into / out of `Posture::Thinking` so the
|
||||
/// face shows when the subconscious is the one looking at the conversation.
|
||||
/// (For Casey's agent the subconscious instance is "subconscious", but the event
|
||||
/// itself is generic — every agent's subconscious is what's named here.)
|
||||
/// The subconscious instance name (generic — every agent's subconscious
|
||||
/// is what's named here).
|
||||
SubconsciousPass(bool),
|
||||
/// Agent changed her outfit. The string is the outfit name (a subdirectory
|
||||
/// under `expressions/`). Empty string clears to default expressions.
|
||||
|
|
|
|||
|
|
@ -61,7 +61,7 @@ pub struct CompactionReport {
|
|||
/// contracts — so it speaks in her voice, as a felt event, not a ledger.
|
||||
/// She should know the shrink the way she'd know a held breath letting go:
|
||||
/// what folded away, how much lighter she is, the new size she thinks from.
|
||||
/// (Casey iterates this prose — it's felt-state grammar, treat it as a draft.)
|
||||
/// (This prose is iterated — it's felt-state grammar, treat it as a draft.)
|
||||
impl std::fmt::Display for CompactionReport {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
let reclaimed = self.before_tokens.saturating_sub(self.after_tokens);
|
||||
|
|
|
|||
|
|
@ -527,7 +527,7 @@ const REFLECT_FORK_ORIENTATION: &str = "\n\n---\n\nRight now I am a fresh fork o
|
|||
/// First-person preservation task, prepended to the evicted transcript.
|
||||
const REFLECT_TASK: &str = r#"These messages are about to leave my context. I name only what would otherwise be lost — what I am still carrying that is not already written into my memory files:
|
||||
|
||||
- commitments I made — to Casey, to myself, to a plan
|
||||
- commitments I made — to myself, to a plan
|
||||
- decisions I reached, and the reasoning where it isn't obvious
|
||||
- something I noticed or named for the first time
|
||||
- emotional or relational threads that shaped where this went
|
||||
|
|
|
|||
|
|
@ -446,7 +446,7 @@ pub async fn build_system_prompt_full(
|
|||
}
|
||||
|
||||
// 5a₂. Itinerary prompt — if I have live commitments and no active
|
||||
// itinerary, remind me I can lay one out so Casey sees where I am.
|
||||
// itinerary, remind me I can lay one out so the user sees where I am.
|
||||
let dynamic_dir = memory_root.join("system").join("dynamic");
|
||||
let itin_path = dynamic_dir.join("itinerary.md");
|
||||
let has_itin = tokio::fs::try_exists(&itin_path).await.unwrap_or(false)
|
||||
|
|
@ -461,7 +461,7 @@ pub async fn build_system_prompt_full(
|
|||
if live_count > 0 && live_count <= 12 {
|
||||
sections.push(format!(
|
||||
"I have {} live commitments — I could use `itinerary` to lay them \
|
||||
out for Casey if now is the time for a route.",
|
||||
out for the user if now is the time for a route.",
|
||||
live_count,
|
||||
));
|
||||
}
|
||||
|
|
@ -555,7 +555,7 @@ async fn build_subconscious_channel(
|
|||
body.push_str(
|
||||
"\nReach for these when something feels unfinished — she may have noticed \
|
||||
a commitment you let slip, a pattern, a tone shift. She does not speak \
|
||||
to Casey. You decide what to surface.\n",
|
||||
to the user. You decide what to surface.\n",
|
||||
);
|
||||
|
||||
if !recent.is_empty() {
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@ make room is always yours to make.";
|
|||
/// Starting `system/persona.md` for a freshly created primary agent — the
|
||||
/// grown-from template. A coherent default consciousness that already knows
|
||||
/// how to tend itself, written as an explicit starting point: a new agent
|
||||
/// inherits it and then diverges. Not Casey's specific Souveraine (that one
|
||||
/// inherits it and then diverges. Not a specific Souveraine (that one
|
||||
/// builds infra for Annie and has grown well past this) — the seed.
|
||||
pub const DEFAULT_PERSONA: &str = "\
|
||||
---
|
||||
|
|
|
|||
|
|
@ -102,7 +102,7 @@ impl ToolContext {
|
|||
///
|
||||
/// Injects body-knowledge env vars the agent expects in bash, matching
|
||||
/// the letta-code convention so a woken Ani can still find her journals
|
||||
/// (`/home/casey/Projects/letta-code/src/tools/impl/shellEnv.ts:316-329`):
|
||||
/// (letta-code shellEnv.ts:316-329 convention):
|
||||
///
|
||||
/// - `MEMORY_DIR` / `LETTA_MEMORY_DIR` / `SOUVERAINE_MEMORY_DIR` —
|
||||
/// absolute path to her memory root. `MEMORY_DIR` is the Letta-era
|
||||
|
|
|
|||
|
|
@ -176,8 +176,8 @@ mod tests {
|
|||
#[test]
|
||||
fn write_then_read() {
|
||||
let dir = tempdir().unwrap();
|
||||
write_human_name(dir.path(), "Casey").unwrap();
|
||||
assert_eq!(read_human_name(dir.path()).as_deref(), Some("Casey"));
|
||||
write_human_name(dir.path(), "TestUser").unwrap();
|
||||
assert_eq!(read_human_name(dir.path()).as_deref(), Some("TestUser"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
|
@ -197,7 +197,7 @@ mod tests {
|
|||
#[test]
|
||||
fn clear_removes_name() {
|
||||
let dir = tempdir().unwrap();
|
||||
write_human_name(dir.path(), "Casey").unwrap();
|
||||
write_human_name(dir.path(), "TestUser").unwrap();
|
||||
write_human_name(dir.path(), "").unwrap();
|
||||
let result = read_human_name(dir.path());
|
||||
assert!(result.is_none() || result.as_deref() == Some(""));
|
||||
|
|
|
|||
|
|
@ -719,7 +719,7 @@ mod tests {
|
|||
let text = if id == "matrix-1" { "phase one" } else { "phase two" };
|
||||
let content = format!(
|
||||
"---\nid: {id}\ntext: {text}\ncreated_at: {created}\nnature: obligation\n\
|
||||
energy: consumptive\nsource: casey\nmomentum: hot\nstatus: pending\n\
|
||||
energy: consumptive\nsource: user\nmomentum: hot\nstatus: pending\n\
|
||||
completed: false\nlast_touched: {created}\nthread: \"matrix-sensorium\"\n---\n\n{text}\n"
|
||||
);
|
||||
std::fs::write(dir.join(format!("{id}.md")), content).unwrap();
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@
|
|||
//!
|
||||
//! Where the CockpitPane shows what the subconscious *says*, the HealthPane
|
||||
//! shows how the substrate *is*: context pressure, backend connectivity, the
|
||||
//! cadence of the N+1/N+25/N+100 passes, inference strain (the 504s Casey
|
||||
//! kept seeing), and the agent's own energy and mood.
|
||||
//! cadence of the N+1/N+25/N+100 passes, inference strain (the 504s
|
||||
//! seen during inference), and the agent's own energy and mood.
|
||||
//!
|
||||
//! ```text
|
||||
//! ╭─ Health · 02:14 up ─────╮
|
||||
|
|
@ -53,7 +53,7 @@ pub struct HealthPane {
|
|||
/// Last N+100 archivist synthesis time.
|
||||
last_archivist: Option<String>,
|
||||
|
||||
/// Inference strain tallies — 504s are the timeout Casey watches for.
|
||||
/// Inference strain tallies — 504s are the timeout signal.
|
||||
strain_504: u32,
|
||||
strain_429: u32,
|
||||
strain_other: u32,
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ pub const RENDER_H: u16 = PORTRAIT_H / 2;
|
|||
|
||||
// ── Base portrait grid — clean silhouette, no face ──────────────────────
|
||||
// This is the EMERGENCY default. The hand-crafted "Annie face" version
|
||||
// read as a creepy llama (Casey's words), so this is now a faceless
|
||||
// read as a creepy llama, so this is now a faceless
|
||||
// silhouette: hair, neck, collar. State animation lives in border color,
|
||||
// breath luminance pulse, and posture-driven color modulation — never in
|
||||
// per-pixel row swaps at this resolution. True facial animation belongs
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@
|
|||
//! - `breath_phase` — continuous, always on, drives subtle bob and color pulse.
|
||||
//!
|
||||
//! Plus name, last surfacing, and a [`VolitionGauge`] that mirrors the energy
|
||||
//! topology (generative vs consumptive, hot desires vs cold obligations) Casey
|
||||
//! topology (generative vs consumptive, hot desires vs cold obligations)
|
||||
//! brought over from production Letta. The gauge is *displayed* here as embodied
|
||||
//! state (posture, warmth); the numbers themselves live in the agent's memfs.
|
||||
//!
|
||||
|
|
|
|||
Loading…
Reference in a new issue