From a4f6cf056468269739292ef883d1d2cf1bccc91d Mon Sep 17 00:00:00 2001 From: kami Date: Sun, 26 Jul 2026 21:10:26 +0400 Subject: [PATCH] feat(context): role means message type, layer means pinning (#312/#313) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The system block is now for content that does not change during a run. Anything the run mutates renders as a user message — both because a mutating system prefix defeats prompt caching and because models under-weight system-folded content against the trailing user turn. PromptRenderer: role alone decides the message type; the old `layer == L0 ||` clause is gone. That clause was silently overriding role on four packs (InferenceSummarizer, SemanticReviewerImpl, CapabilityGapReflectorImpl, Talkie session-naming) which are L0+USER prompts — they were rendering as a system-only request with no user turn at all. Re-roled SYSTEM -> USER, all mutable within a run: recoveryTicket, remainingDelta, groundingFeedback, rejectionFeedback (trailing slot), plus verifiedBaseline, promotedConcept, claimedTask, clarificationAnswer, locked steeringNote, factSheet (inline, still L0-pinned). Left SYSTEM (immutable): systemPrompt, operatingGuidance, schemaInstruction, projectProfile, operatorProfile, agentInstructions, successfulPlanShape. Trailing-slot scarcity guard: repairMandateSourceTypes joined ALL matches, so a recovery stage on a retry with an unmet delta would stack three competing mandates. Now a precedence list emits exactly one (recoveryTicket > retryFeedback > groundingFeedback > rejectionFeedback) with remainingDelta appended as the completion signal. ContextClassifier keys STATIC on layer alone — L0 means pinned/never pruned regardless of role, so the re-roled L0 entries don't fall through to FREEFORM and get token-pruned. Also fixes a stale ContextFeedbackTest assertion (expected a CAS hash the producer deliberately stopped emitting) and a stale initialIntent doc comment claiming L0/SYSTEM where the code says L1/USER. Co-Authored-By: Claude Opus 5 --- .../builder/DefaultContextPackBuilder.kt | 5 +- .../context/compression/ContextClassifier.kt | 10 ++- .../correx/core/inference/PromptRenderer.kt | 65 ++++++++++++++---- .../kernel/orchestration/ContextFeedback.kt | 14 +++- .../SessionOrchestratorConcepts.kt | 4 +- .../SessionOrchestratorContext.kt | 25 ++++--- .../SessionOrchestratorExecution.kt | 3 +- .../SessionOrchestratorVerification.kt | 4 +- .../orchestration/RemainingDeltaEntryTest.kt | 4 +- .../test/kotlin/PromptRendererOrderingTest.kt | 53 ++++++++++++++ .../logs/archive/correx-2026-07-21-1.log.gz | Bin 0 -> 74166 bytes .../src/test/kotlin/ContextFeedbackTest.kt | 9 +-- 12 files changed, 158 insertions(+), 38 deletions(-) create mode 100644 testing/integration/logs/archive/correx-2026-07-21-1.log.gz diff --git a/core/context/src/main/kotlin/com/correx/core/context/builder/DefaultContextPackBuilder.kt b/core/context/src/main/kotlin/com/correx/core/context/builder/DefaultContextPackBuilder.kt index a50cabba..57f411b4 100644 --- a/core/context/src/main/kotlin/com/correx/core/context/builder/DefaultContextPackBuilder.kt +++ b/core/context/src/main/kotlin/com/correx/core/context/builder/DefaultContextPackBuilder.kt @@ -364,7 +364,10 @@ class DefaultContextPackBuilder( sourceType = "factSheet", sourceId = "factSheet", tokenEstimate = estimateTokens(content), - role = EntryRole.SYSTEM, + // #312: re-extracted from the live entry set on EVERY build — the most mutable entry in the + // pack, so it must not sit in the cached system prefix. USER, pinned at L0 with the lowest + // ordinal so it still renders ahead of the transcript. + role = EntryRole.USER, ordinal = FACT_SHEET_ORDINAL, ) diff --git a/core/context/src/main/kotlin/com/correx/core/context/compression/ContextClassifier.kt b/core/context/src/main/kotlin/com/correx/core/context/compression/ContextClassifier.kt index 583a3c82..c41d547c 100644 --- a/core/context/src/main/kotlin/com/correx/core/context/compression/ContextClassifier.kt +++ b/core/context/src/main/kotlin/com/correx/core/context/compression/ContextClassifier.kt @@ -17,9 +17,13 @@ class ContextClassifier { fun classify(entry: ContextEntry): ContextClass = when { entry.sourceType in STATIC_SOURCES -> ContextClass.STATIC entry.sourceType in STRUCTURED_SOURCES -> ContextClass.STRUCTURED - // A pinned system directive that isn't one of the known static prompts is still - // exact-value content — treat as structured (format-compress ok, never prune). - entry.layer == ContextLayer.L0 && entry.role == EntryRole.SYSTEM -> ContextClass.STATIC + // A pinned L0 directive that isn't one of the known static prompts is still exact-value + // content — never prune it. Keyed on LAYER alone since #312: L0 means "pinned standing + // context" (a budget/pinning property), while role now means "which chat message type" + // (a rendering property). Several L0 entries are deliberately USER-role now — a mutating + // verified baseline, claimed task, clarification answer — and token-pruning those as + // freeform prose would shred exactly the directives they exist to carry. + entry.layer == ContextLayer.L0 -> ContextClass.STATIC entry.role == EntryRole.TOOL -> ContextClass.STRUCTURED else -> ContextClass.FREEFORM } diff --git a/core/inference/src/main/kotlin/com/correx/core/inference/PromptRenderer.kt b/core/inference/src/main/kotlin/com/correx/core/inference/PromptRenderer.kt index 790d581a..d940b4d6 100644 --- a/core/inference/src/main/kotlin/com/correx/core/inference/PromptRenderer.kt +++ b/core/inference/src/main/kotlin/com/correx/core/inference/PromptRenderer.kt @@ -26,7 +26,23 @@ object PromptRenderer { // than the original stage task. Instead they render as the FINAL user message, right after the // tool evidence, where a weak local model attends strongest and reads it as the next action. // Add a sourceType here (and set the entry's role to USER) to route it to that trailing slot. - private val repairMandateSourceTypes = setOf("retryFeedback") + // + // #312: highest precedence FIRST — at most ONE mandate renders per turn. The trailing slot works + // because it is scarce and authoritative; a recovery stage on a retry with an unmet delta would + // otherwise stack three competing "do this next" blocks and the channel becomes noise again. + private val repairMandatePrecedence = listOf( + "recoveryTicket", + "retryFeedback", + "groundingFeedback", + "rejectionFeedback", + ) + + // The remaining-delta checklist is not a competing mandate — it is the stage's completion + // signal ("what is left to make true") — so it appends after whichever mandate won rather + // than displacing it. + private const val COMPLETION_SIGNAL = "remainingDelta" + + private val trailingSourceTypes = repairMandatePrecedence.toSet() + COMPLETION_SIGNAL // Tiebreak only: when entries carry no chronological ordinal (all 0 — e.g. router // chat, which assembles its pack directly), fall back to the old layer priority that @@ -38,33 +54,48 @@ object PromptRenderer { } fun render(contextPack: ContextPack): List { - // Every SYSTEM-role entry folds into the single leading system message, whatever its - // layer (L0 additionally folds regardless of role). Strict chat templates (e.g. Qwen) - // reject any system message that is not the first message, so recalled memory, stage - // summaries, and retrieval entries must never render as standalone system turns. + // Every SYSTEM-role entry folds into the single leading system message, whatever its layer. + // Strict chat templates (e.g. Qwen) reject any system message that is not the first message, + // so recalled memory, stage summaries, and retrieval entries must never render as standalone + // system turns. + // + // #312: ROLE alone decides the message type — the old `layer == L0 ||` clause is gone. The + // system block is for content that does not change during a run (prompts, guidance, profiles); + // anything the run mutates (steering, gate verdicts, tickets, baselines, claimed task) is a + // user message, both because a mutating system prefix defeats prompt caching and because + // models under-weight system-folded content relative to the trailing user turn. Layer keeps + // its own job — budget tier and pin/prune eligibility (see ContextClassifier). val (systemEntries, conversationEntries) = contextPack.layers.entries .flatMap { (layer, entries) -> entries.map { layer to it } } - .partition { (layer, entry) -> layer == ContextLayer.L0 || entry.role == EntryRole.SYSTEM } + .partition { (_, entry) -> entry.role == EntryRole.SYSTEM } val systemContent = systemEntries .sortedWith(compareBy({ it.first.ordinal }, { it.second.ordinal })) .joinToString("\n\n") { it.second.content } .takeIf { it.isNotBlank() } // #293: pull repair mandates out of the inline flow — they render once, as the last turn. val (repairPairs, inlinePairs) = conversationEntries - .partition { it.second.sourceType in repairMandateSourceTypes } + .partition { it.second.sourceType in trailingSourceTypes } val conversationMessages = inlinePairs .sortedWith(compareBy({ it.second.ordinal }, { layerPriority(it.first) })) .map { (_, entry) -> entry.toChatMessage() } - val repairMandate = repairPairs - .sortedBy { it.second.ordinal } - .joinToString("\n\n") { it.second.content } + // Only the highest-precedence mandate present survives; the rest stay out of the prompt + // entirely (their content is still in the transcript/event log — this slot is not their + // only carrier). The completion signal appends after it. + val mandate = repairMandatePrecedence.firstNotNullOfOrNull { sourceType -> + repairPairs.contentOf(sourceType) + } + val repairMandate = listOfNotNull(mandate, repairPairs.contentOf(COMPLETION_SIGNAL)) + .joinToString("\n\n") .takeIf { it.isNotBlank() } - // Repetition anchoring: steering directives fold into the leading system message, far - // from the final query — weak local models forget them (lost-in-the-middle). Restate + // Repetition anchoring: steering directives render early (they are pinned standing context), + // far from the final query — weak local models forget them (lost-in-the-middle). Restate // them once as a trailing user turn, where models attend strongest. Template-safe: a - // user message at the end never trips strict system-must-be-first templates. - val anchor = systemEntries + // user message at the end never trips strict system-must-be-first templates. Scans every + // entry, not just the system fold: since #312 a locked steering note is USER-role too, and + // both the locked and unlocked paths deserve the same anchor. + val anchor = (systemEntries + conversationEntries) .filter { it.second.sourceType == "steeringNote" } + .sortedBy { it.second.ordinal } .joinToString("\n") { it.second.content } .takeIf { it.isNotBlank() } val messages = buildList { @@ -77,6 +108,12 @@ object PromptRenderer { return messages.ifEmpty { listOf(ChatMessage("user", "")) } } + private fun List>.contentOf(sourceType: String): String? = + filter { it.second.sourceType == sourceType } + .sortedBy { it.second.ordinal } + .joinToString("\n\n") { it.second.content } + .takeIf { it.isNotBlank() } + private fun ContextEntry.toChatMessage(): ChatMessage = ChatMessage( role = when (role) { EntryRole.SYSTEM -> "system" diff --git a/core/kernel/src/main/kotlin/com/correx/core/kernel/orchestration/ContextFeedback.kt b/core/kernel/src/main/kotlin/com/correx/core/kernel/orchestration/ContextFeedback.kt index 76c8e799..0d44ee89 100644 --- a/core/kernel/src/main/kotlin/com/correx/core/kernel/orchestration/ContextFeedback.kt +++ b/core/kernel/src/main/kotlin/com/correx/core/kernel/orchestration/ContextFeedback.kt @@ -104,7 +104,8 @@ fun buildGroundingFeedbackEntry(events: List, stageId: StageId): Co sourceType = "groundingFeedback", sourceId = stageId.value, tokenEstimate = content.length / 4, - role = EntryRole.SYSTEM, + // #312: a gate verdict is run-state, not standing instruction — USER, trailing slot. + role = EntryRole.USER, ) } @@ -165,7 +166,10 @@ fun buildRecoveryTicketEntry(events: List, stageId: StageId): Conte sourceType = "recoveryTicket", sourceId = stageId.value, tokenEstimate = content.length / 4, - role = EntryRole.SYSTEM, + // #312: the recovery stage exists ONLY because of this ticket, yet as SYSTEM it folded in + // above the whole transcript. It is the same shape as retryFeedback — USER, trailing slot, + // and highest precedence there. + role = EntryRole.USER, ) } @@ -206,7 +210,11 @@ fun buildRemainingDeltaEntry(items: List>): Conte sourceType = "remainingDelta", sourceId = "remaining-delta", tokenEstimate = content.length / 4, - role = EntryRole.SYSTEM, + // #312: recomputed every turn a write lands — the single most mutable entry in the pack. + // As SYSTEM it both sat in the weakest slot and invalidated the cached system prefix each + // turn. USER, and appended after whichever repair mandate won (it is the completion signal, + // not a competing instruction). + role = EntryRole.USER, ) } diff --git a/core/kernel/src/main/kotlin/com/correx/core/kernel/orchestration/SessionOrchestratorConcepts.kt b/core/kernel/src/main/kotlin/com/correx/core/kernel/orchestration/SessionOrchestratorConcepts.kt index 88c2ae3e..9756c2b4 100644 --- a/core/kernel/src/main/kotlin/com/correx/core/kernel/orchestration/SessionOrchestratorConcepts.kt +++ b/core/kernel/src/main/kotlin/com/correx/core/kernel/orchestration/SessionOrchestratorConcepts.kt @@ -65,7 +65,9 @@ internal suspend fun SessionOrchestrator.promotedConceptEntries(stageConfig: Sta sourceType = "promotedConcept", sourceId = concept.classKey.ifBlank { concept.fingerprint }, tokenEstimate = estimateTokens(content), - role = EntryRole.SYSTEM, + // #312: folded from the whole log including THIS run, so a concept promoted or + // contradicted mid-run changes the set between stages. Mutable ⇒ USER. + role = EntryRole.USER, ) } } diff --git a/core/kernel/src/main/kotlin/com/correx/core/kernel/orchestration/SessionOrchestratorContext.kt b/core/kernel/src/main/kotlin/com/correx/core/kernel/orchestration/SessionOrchestratorContext.kt index 8787ad2b..4d106a0d 100644 --- a/core/kernel/src/main/kotlin/com/correx/core/kernel/orchestration/SessionOrchestratorContext.kt +++ b/core/kernel/src/main/kotlin/com/correx/core/kernel/orchestration/SessionOrchestratorContext.kt @@ -85,7 +85,10 @@ internal suspend fun SessionOrchestrator.buildSteeringNoteEntries(sessionId: Ses sourceType = "steeringNote", sourceId = p.stageId?.value ?: sessionId.value, tokenEstimate = estimateTokens(p.content), - role = EntryRole.SYSTEM, + // #312: an operator steering note arrives mid-run by definition — mutable ⇒ USER, + // same as the unlocked path below. Locked notes keep L0 so they stay pinned against + // the budget; PromptRenderer still restates every note as a trailing anchor. + role = EntryRole.USER, ) // An operator steering note attached to a decision is a real instruction; keep it. // Bare rejections are consolidated separately (buildRejectionFeedbackEntry) so they @@ -140,18 +143,20 @@ fun buildRejectionFeedbackEntry(events: List, stageId: StageId): Co sourceType = "rejectionFeedback", sourceId = stageId.value, tokenEstimate = content.length / 4, - role = EntryRole.SYSTEM, + // #312: literally operator voice ("the operator declined"), and it grows mid-stage as more + // calls are rejected — USER, trailing slot. + role = EntryRole.USER, ) } /** - * Injects the initial user intent (the freeform request that started the run) as a pinned L0 - * SYSTEM entry present in EVERY stage's context (architecture-conformance, 2026-07-14). The intent + * Injects the initial user intent (the freeform request that started the run) as an L1 USER entry + * present in EVERY stage's context (architecture-conformance, 2026-07-14). The intent * is the single most load-bearing constraint of a run, yet it previously reached normal stages only * as a repo-map retrieval seed (repoKnowledgeQuery) or, on the rare Tier-2 recovery path, the * arbiter ticket — so an implementer could drift from the goal with the goal itself absent from its - * authoritative context. Standing at L0/SYSTEM it is weighted as an instruction and never dropped - * under budget. Absent for fixed-task workflows (no InitialIntentEvent) → empty. + * authoritative context. It is REQUIRED-bucket, so it is never dropped under budget. Absent for + * fixed-task workflows (no InitialIntentEvent) → empty. */ internal suspend fun SessionOrchestrator.buildIntentEntry(sessionId: SessionId): List { @@ -183,8 +188,9 @@ internal fun SessionOrchestrator.initialIntent(sessionId: SessionId): String? = /** * Injects the operator's answers to a stage's open questions as a pinned L0 SYSTEM entry, so the * stage sees its own questions resolved on the clarification re-run. The prompt calls these answers - * "authoritative", so they are placed as authoritative standing instructions (L0/SYSTEM), not a - * droppable L2 USER turn — matching the mechanics to the stated authority. Correlates each answer's + * "authoritative", so they are pinned as standing context (L0) rather than a droppable L2 turn — + * matching the mechanics to the stated authority. They render as USER (#312): these are the + * operator's own words, and the set grows with each clarification round. Correlates each answer's * questionId back to the prompt recorded on the [ClarificationRequestedEvent]. */ @@ -209,7 +215,8 @@ internal suspend fun SessionOrchestrator.buildClarificationAnswerEntries(session sourceType = "clarificationAnswer", sourceId = sessionId.value, tokenEstimate = estimateTokens(content), - role = EntryRole.SYSTEM, + // #312: operator's own words, and the set grows per clarification round — USER. + role = EntryRole.USER, ), ) } diff --git a/core/kernel/src/main/kotlin/com/correx/core/kernel/orchestration/SessionOrchestratorExecution.kt b/core/kernel/src/main/kotlin/com/correx/core/kernel/orchestration/SessionOrchestratorExecution.kt index 796086f9..e7049ece 100644 --- a/core/kernel/src/main/kotlin/com/correx/core/kernel/orchestration/SessionOrchestratorExecution.kt +++ b/core/kernel/src/main/kotlin/com/correx/core/kernel/orchestration/SessionOrchestratorExecution.kt @@ -264,7 +264,8 @@ internal suspend fun SessionOrchestrator.executeStage( sourceType = "claimedTask", sourceId = stageId.value, tokenEstimate = estimateTokens(bundle), - role = EntryRole.SYSTEM, + // #312: the claim advances as the run progresses — mutable ⇒ USER (stays L0). + role = EntryRole.USER, ), ) } ?: emptyList() diff --git a/core/kernel/src/main/kotlin/com/correx/core/kernel/orchestration/SessionOrchestratorVerification.kt b/core/kernel/src/main/kotlin/com/correx/core/kernel/orchestration/SessionOrchestratorVerification.kt index 1a9e72c4..4f5f2153 100644 --- a/core/kernel/src/main/kotlin/com/correx/core/kernel/orchestration/SessionOrchestratorVerification.kt +++ b/core/kernel/src/main/kotlin/com/correx/core/kernel/orchestration/SessionOrchestratorVerification.kt @@ -86,7 +86,9 @@ internal suspend fun SessionOrchestrator.verifiedBaselineEntries(sessionId: Sess sourceType = "verifiedBaseline", sourceId = lastPass.stateKey, tokenEstimate = estimateTokens(content), - role = EntryRole.SYSTEM, + // #312: flips known-good → STALE the moment a write lands, i.e. it changes within a + // single stage. Mutable ⇒ USER (stays L0, so it is still pinned and never pruned). + role = EntryRole.USER, ), ) } diff --git a/core/kernel/src/test/kotlin/com/correx/core/kernel/orchestration/RemainingDeltaEntryTest.kt b/core/kernel/src/test/kotlin/com/correx/core/kernel/orchestration/RemainingDeltaEntryTest.kt index 51d27fb7..20107aee 100644 --- a/core/kernel/src/test/kotlin/com/correx/core/kernel/orchestration/RemainingDeltaEntryTest.kt +++ b/core/kernel/src/test/kotlin/com/correx/core/kernel/orchestration/RemainingDeltaEntryTest.kt @@ -22,7 +22,9 @@ class RemainingDeltaEntryTest { ), )!! assertEquals("remainingDelta", entry.sourceType) - assertEquals(EntryRole.SYSTEM, entry.role) + // #312: USER, not SYSTEM — it is recomputed every turn a write lands, so it must stay out + // of the cached system prefix, and PromptRenderer routes it to the trailing slot. + assertEquals(EntryRole.USER, entry.role) // Forward-looking framing, not a history of what was done. assertTrue(entry.content.contains("Remaining to finish this stage")) assertTrue(entry.content.contains("- [ ] frontend/src/views/TaskView.tsx — exports_default_component")) diff --git a/testing/deterministic/src/test/kotlin/PromptRendererOrderingTest.kt b/testing/deterministic/src/test/kotlin/PromptRendererOrderingTest.kt index 09650575..4217fbf2 100644 --- a/testing/deterministic/src/test/kotlin/PromptRendererOrderingTest.kt +++ b/testing/deterministic/src/test/kotlin/PromptRendererOrderingTest.kt @@ -168,4 +168,57 @@ class PromptRendererOrderingTest { messages.map { it.role to it.content }, ) } + + @Test + fun `an L0 USER entry renders as a user message, not folded into system`() { + // #312: role alone decides the message type. A mutating L0 entry (verified baseline, + // claimed task, steering note) stays pinned by its layer but must not enter the cached + // system prefix. Also covers the summarizer/reviewer packs, which are L0+USER prompts + // that used to render as a system-only request with no user turn at all. + val pack = ContextPack( + id = ContextPackId("p"), + sessionId = sessionId, + stageId = stageId, + layers = mapOf( + ContextLayer.L0 to listOf( + entry("sys", ContextLayer.L0, EntryRole.SYSTEM, "systemPrompt"), + entry("baseline", ContextLayer.L0, EntryRole.USER, "verifiedBaseline"), + ), + ), + budgetUsed = 20, + budgetLimit = 4000, + ) + assertEquals( + listOf("system" to "sys", "user" to "baseline"), + PromptRenderer.render(pack).map { it.role to it.content }, + ) + } + + @Test + fun `only the highest-precedence repair mandate renders, with the delta appended`() { + // #312 scarcity guard: a recovery stage on a retry with an unmet delta would otherwise + // stack three competing "do this next" blocks and the trailing slot stops being + // authoritative. recoveryTicket outranks retryFeedback; remainingDelta is not a + // competing mandate (it is the completion signal) so it appends rather than displacing. + val pack = ContextPack( + id = ContextPackId("p"), + sessionId = sessionId, + stageId = stageId, + layers = mapOf( + ContextLayer.L1 to listOf( + entry("task", ContextLayer.L1, EntryRole.USER, "agentPrompt"), + entry("retry", ContextLayer.L1, EntryRole.USER, "retryFeedback"), + entry("ticket", ContextLayer.L1, EntryRole.USER, "recoveryTicket"), + entry("delta", ContextLayer.L1, EntryRole.USER, "remainingDelta"), + ), + ), + budgetUsed = 40, + budgetLimit = 4000, + ) + val messages = PromptRenderer.render(pack) + assertEquals("ticket\n\ndelta", messages.last().content) + assertEquals("user", messages.last().role) + // The losing mandate is dropped entirely — it must not leak back into the inline flow. + assertEquals(false, messages.any { it.content.contains("retry") }) + } } diff --git a/testing/integration/logs/archive/correx-2026-07-21-1.log.gz b/testing/integration/logs/archive/correx-2026-07-21-1.log.gz new file mode 100644 index 0000000000000000000000000000000000000000..ad1aa111abaf985a26a66a18b2d2f99e274e6c10 GIT binary patch literal 74166 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 E0Bd1~=Kufz literal 0 HcmV?d00001 diff --git a/testing/kernel/src/test/kotlin/ContextFeedbackTest.kt b/testing/kernel/src/test/kotlin/ContextFeedbackTest.kt index 53fb5104..54c375b2 100644 --- a/testing/kernel/src/test/kotlin/ContextFeedbackTest.kt +++ b/testing/kernel/src/test/kotlin/ContextFeedbackTest.kt @@ -38,6 +38,7 @@ import com.correx.core.transitions.graph.TransitionEdge import com.correx.core.transitions.graph.WorkflowGraph import com.correx.testing.fixtures.EventFixtures.stored import org.junit.jupiter.api.Assertions.assertEquals +import org.junit.jupiter.api.Assertions.assertFalse import org.junit.jupiter.api.Assertions.assertNull import org.junit.jupiter.api.Assertions.assertTrue import org.junit.jupiter.api.Test @@ -95,10 +96,10 @@ class ContextFeedbackTest { val entry = buildRetryFeedbackEntry(events, StageId("impl"))!! assertTrue(entry.content.contains("## Retry repair state"), "content: ${entry.content}") assertTrue(entry.content.contains("gate 'execution'"), "content: ${entry.content}") - assertTrue( - entry.content.contains("frontend/src/hooks/queries.ts — CAS cafebabe"), - "content: ${entry.content}", - ) + // Path only: the raw CAS hash is opaque noise the model can't act on and confuses it into + // reasoning about hashes — it patches by path via file_read/file_write. + assertTrue(entry.content.contains("- frontend/src/hooks/queries.ts"), "content: ${entry.content}") + assertFalse(entry.content.contains("cafebabe"), "content: ${entry.content}") assertTrue(entry.content.contains("do NOT re-read"), "content: ${entry.content}") }