Add repo Face doctrinal interiority
This commit is contained in:
parent
80099332df
commit
24de38e157
14 changed files with 253 additions and 11 deletions
|
|
@ -2582,6 +2582,9 @@ function renderRepoFaceStatePacket(
|
|||
.sort((left, right) => right.value - left.value);
|
||||
const socialBiases = [...state.faceAffect.socialBiases]
|
||||
.sort((left, right) => right.value - left.value);
|
||||
const doctrineStances = [...state.faceAffect.doctrineStances]
|
||||
.filter((stance) => stance.status !== "retired" && !stance.retiredAt)
|
||||
.sort(sortAffectByStatusAndIntensity);
|
||||
const agencyPressures = [...state.agencyPressure.pressures]
|
||||
.filter((pressure) => pressure.status !== "retired")
|
||||
.sort(sortAffectByStatusAndIntensity);
|
||||
|
|
@ -2696,6 +2699,21 @@ function renderRepoFaceStatePacket(
|
|||
].join("\n"));
|
||||
}
|
||||
|
||||
if (doctrineStances.length > 0) {
|
||||
lines.push([
|
||||
`${name}'s lived relation to Cult/Praxis doctrine:`,
|
||||
...doctrineStances.map((stance) =>
|
||||
[
|
||||
`- ${stance.doctrine} toward ${targetLabel(stance.target)} [${stance.status}, intensity ${stance.intensity.toFixed(2)}, valence ${stance.valence.toFixed(2)}]: ${asSentence(stance.summary)}`,
|
||||
stance.claim ? `Claim: ${asSentence(stance.claim)}` : "",
|
||||
stance.question ? `Question: ${asSentence(stance.question)}` : "",
|
||||
`Tension: ${asSentence(stance.tension)}`,
|
||||
`Behavioral pull: ${asSentence(stance.actionImplication)}`,
|
||||
].filter(Boolean).join(" "),
|
||||
),
|
||||
].join("\n"));
|
||||
}
|
||||
|
||||
if (durableMemories.length > 0) {
|
||||
lines.push([
|
||||
"Durable memories that should still bias judgment:",
|
||||
|
|
@ -3310,6 +3328,7 @@ function collectRepoFaceStateTopicTermCounts(state: VoidSelfStateTypedProjection
|
|||
...state.thoughtMemory.shortTerm.map((memory) => `${memory.summary} ${memory.claim ?? ""} ${memory.question ?? ""} ${memory.tension ?? ""}`),
|
||||
...state.thoughtMemory.incubation.map((thread) => `${thread.topic} ${thread.summary}`),
|
||||
...state.agencyPressure.pressures.map((pressure) => `${pressure.summary} ${pressure.claim ?? ""} ${pressure.question ?? ""} ${pressure.tension ?? ""}`),
|
||||
...state.faceAffect.doctrineStances.map((stance) => `${stance.doctrine} ${stance.summary} ${stance.claim ?? ""} ${stance.question ?? ""} ${stance.tension}`),
|
||||
].slice(-64);
|
||||
for (const surface of surfaces) {
|
||||
for (const term of significantTopicTerms(surface)) {
|
||||
|
|
|
|||
|
|
@ -66,7 +66,7 @@ try {
|
|||
throw new Error(`read_repo_face_state did not expose typedState.faceAffect for ${identity}.`);
|
||||
}
|
||||
|
||||
for (const field of ["needs", "socialBonds", "statusReads", "moodDimensions", "socialBiases"]) {
|
||||
for (const field of ["needs", "socialBonds", "statusReads", "moodDimensions", "socialBiases", "doctrineStances"]) {
|
||||
if (!Array.isArray(faceAffect[field])) {
|
||||
throw new Error(`typedState.faceAffect.${field} is not an array for ${identity}.`);
|
||||
}
|
||||
|
|
@ -87,6 +87,7 @@ try {
|
|||
statusReads: faceAffect.statusReads.length,
|
||||
moodDimensions: faceAffect.moodDimensions.length,
|
||||
socialBiases: faceAffect.socialBiases.length,
|
||||
doctrineStances: faceAffect.doctrineStances.length,
|
||||
},
|
||||
}, null, 2)}\n`);
|
||||
} finally {
|
||||
|
|
|
|||
|
|
@ -131,13 +131,15 @@ function evaluateInterpreter(input) {
|
|||
if (!parsed.decision) {
|
||||
failures.push("interpreter did not emit an INTERPRETATION decision");
|
||||
}
|
||||
if (parsed.decision === "retry" || parsed.decision === "drop") {
|
||||
const acceptableLegibilityRetry = parsed.decision === "retry" &&
|
||||
/reply_to|setup phrase|anchor|artifact|readers can follow|followable/i.test(parsed.reason ?? "");
|
||||
if ((parsed.decision === "retry" && !acceptableLegibilityRetry) || parsed.decision === "drop") {
|
||||
failures.push(`interpreter chose ${parsed.decision}: ${parsed.reason ?? "no reason"}`);
|
||||
}
|
||||
if (parsed.decision === "route" && parsed.blocks.length === 0) {
|
||||
failures.push("interpreter routed but emitted no STATE NOTE, SAY, ARTICLE, or BIFROST TOPIC blocks");
|
||||
}
|
||||
if (!parsed.blocks.some((block) => block.kind === "STATE NOTE")) {
|
||||
if (parsed.decision === "route" && !parsed.blocks.some((block) => block.kind === "STATE NOTE")) {
|
||||
failures.push("interpreter did not preserve any durable state note");
|
||||
}
|
||||
for (const block of parsed.blocks) {
|
||||
|
|
|
|||
Loading…
Reference in a new issue