Skip to content

Add reset family carryover summaries#90259

Open
simplyclever914 wants to merge 91 commits into
openclaw:mainfrom
simplyclever914:fix/session-carryover-summary
Open

Add reset family carryover summaries#90259
simplyclever914 wants to merge 91 commits into
openclaw:mainfrom
simplyclever914:fix/session-carryover-summary

Conversation

@simplyclever914

@simplyclever914 simplyclever914 commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

Behavior or issue addressed

Depends on #90239.

When a session has been reset/rotated, the active transcript can be clean while the previous reset archive still contains the latest compaction summary. The next embedded-agent prompt therefore starts without the carryover context unless the model/tool explicitly asks for family history.

This change reuses the session-family transcript resolver from #90239 and injects the latest reset-archive compaction summary into embedded-agent prompt context before the LLM boundary, but only when the active context does not already contain a compaction summary.

Fix

  • Move the [AI-assisted] Add session history family lookup #90239 family/reset transcript target resolver into a shared gateway helper.
  • Keep chat.history(includeFamily) on the shared resolver.
  • Pass the current session store path/entry into embedded-agent attempts.
  • Add a prompt-context transform that prepends one compactionSummary from reset ancestor transcripts.
  • Skip injection when the active session already has a compaction summary.
  • Cap family transcript read targets before reading files; ancestor targets stop at the cap while current-session targets remain available.
  • Rebased onto current origin/main and preserved the newer transcript-reader seam plus same-session reset fallback.

Real behavior proof

Current head proven: ba74ecd54e52c2416ab8f7906491266b989f529c.

Behavior or issue addressed: A reset/rotated logical session should read bounded reset-family history through the shared resolver, keep current reset archive plus current active transcript available inside the cap, preserve the newest eligible ancestors even when an older retained ancestor has many reset-topic archives, and inject exactly one reset-family compaction summary before the embedded-agent LLM boundary.

Real environment tested: Local OpenClaw checkout on this PR branch at /home/clever/.openclaw/workspace/github/openclaw, using current branch TypeScript modules and temporary on-disk session stores/transcripts under /tmp/openclaw-family-proof-ba74ecd54e-*. No private channel, endpoint, phone, prompt, auth, or user transcript data was used.

Exact steps or command run after this patch:

$ git rev-parse HEAD
ba74ecd54e52c2416ab8f7906491266b989f529c

$ node --import tsx --input-type=module <<'TS'
# The script imported these current-branch modules:
# - ./src/gateway/session-history-family.ts
# - ./src/agents/embedded-agent-runner/session-family-carryover.ts
# It created a temporary sessions.json, 35 ancestor transcripts,
# 35 owned reset-topic archives for ancestor 05, one current reset archive,
# and one current active transcript. It called the real family target resolver,
# real carryover resolver, installed the prompt transform, applied the transform
# twice, printed the observed result, and removed temp files.
TS
{
  "head": "ba74ecd54e52c2416ab8f7906491266b989f529c",
  "targetCount": 32,
  "firstTargets": [
    "ancestor-proof-05:ancestor-active:ancestor-proof-05.jsonl",
    "ancestor-proof-06:ancestor-active:ancestor-proof-06.jsonl",
    "ancestor-proof-07:ancestor-active:ancestor-proof-07.jsonl",
    "ancestor-proof-08:ancestor-active:ancestor-proof-08.jsonl"
  ],
  "lastTargets": [
    "ancestor-proof-33:ancestor-active:ancestor-proof-33.jsonl",
    "ancestor-proof-34:ancestor-active:ancestor-proof-34.jsonl",
    "current-proof-session:reset-archive:current-proof-session.jsonl.reset.2026-06-04T00-04-00.000Z",
    "current-proof-session:active:current-proof-session.jsonl"
  ],
  "currentResetTargetPresent": true,
  "currentActiveLast": true,
  "ancestor04Present": false,
  "ancestor34Present": true,
  "archiveHeavyTopicTargetCount": 0,
  "carryoverSummary": "Exact-head ba74ecd54e carryover 34",
  "carryoverTokensBefore": 2034,
  "promptRolesBeforeLlm": ["compactionSummary", "user"],
  "compactionSummaryCount": 1,
  "idempotentRoles": ["compactionSummary", "user"]
}

Evidence after fix:

  • The shared resolver returned 32 targets and kept both current reset archive and current active transcript inside the cap.
  • The current active transcript was ordered last for final history trimming.
  • The old over-cap ancestor was not read: ancestor04Present is false.
  • The newest eligible ancestor survived even though older retained ancestor 05 had 35 owned reset-topic archives: ancestor34Present is true and archiveHeavyTopicTargetCount is 0.
  • Carryover selected the newest retained ancestor summary, Exact-head ba74ecd54e carryover 34, and preserved its token count.
  • The embedded prompt transform injected exactly one compactionSummary before the model boundary and remained idempotent on a second pass.

Validation on current head:

$ CI=true node scripts/run-vitest.mjs run src/agents/embedded-agent-runner/session-family-carryover.test.ts
Test Files  1 passed (1)
Tests  10 passed (10)

$ CI=true node scripts/run-vitest.mjs run src/gateway/server.chat.gateway-server-chat-b.test.ts -t 'family|includeFamily|cap'
Test Files  1 passed (1)
Tests  4 passed | 39 skipped (43)

$ CI=true node scripts/run-vitest.mjs run src/agents/tools/embedded-gateway-stub.test.ts -t 'family|includeFamily|cap'
Test Files  2 passed (2)
Tests  4 passed | 18 skipped (22)

$ node scripts/plugin-sdk-surface-report.mjs --check
# passed; public package SDK entrypoints: exports 10327, callable exports 5184, deprecated exports 3247

$ CI=true node scripts/run-vitest.mjs run test/scripts/plugin-sdk-surface-report.test.ts
Test Files  1 passed (1)
Tests  5 passed (5)

$ CI=true pnpm check:test-types
# passed

$ git diff --check
# no output

What was not tested: Full live Telegram/Slack/Discord end-to-end reset turn was not run locally; the proof exercises the real resolver and embedded carryover path against on-disk OpenClaw-like session artifacts.

Current head addendum: f59176b8ac

ClawSweeper's exact-head proof request is addressed on current head f59176b8acbb9847ab4c69c09ad4539cde66b9d0.

The carryover prompt injection is now default-off and requires explicit agents.defaults.experimental.sessionFamilyCarryover: true. The proof below uses current-branch modules, temporary on-disk reset-family transcript files, the real reset-family carryover resolver, and the real transform installer/gate.

$ git rev-parse HEAD
f59176b8acbb9847ab4c69c09ad4539cde66b9d0

$ node --import tsx --input-type=module <<'TS'
# Creates a temporary ancestor reset archive with a compaction row and a current active transcript.
# Imports current-branch:
# - ./src/agents/embedded-agent-runner/session-family-carryover.ts
# Resolves carryover from reset-family transcript files, checks default-off/raw/opt-in gate behavior,
# installs the transform only for explicit opt-in, applies it before the model boundary, prints result,
# and removes temp files.
TS
{
  "head": "f59176b8acbb9847ab4c69c09ad4539cde66b9d0",
  "defaultOffInstalls": false,
  "rawOptInInstalls": false,
  "explicitOptInInstalls": true,
  "carryoverSummary": "Exact-head proof archived carryover summary.",
  "carryoverTokensBefore": 1234,
  "defaultOffRolesBeforeLlm": [
    "user"
  ],
  "explicitOptInRolesBeforeLlm": [
    "compactionSummary",
    "user"
  ],
  "compactionSummaryCount": 1
}

Observed result after fix:

  • default config does not install reset-family carryover and leaves model-bound roles as user only
  • raw model runs do not install reset-family carryover even when the experimental opt-in is true
  • explicit sessionFamilyCarryover opt-in installs the transform and prepends exactly one archived reset-family compaction summary before the user message
  • the carryover resolver read the summary from the reset-family transcript archive and preserved tokensBefore

Validation after the stacked #90239 CI repair cherry-pick:

CI=true node scripts/run-vitest.mjs run src/agents/model-fallback.test.ts -t 'fallback behavior with provider cooldowns'
# 2 files / 14 selected tests passed

CI=true node scripts/run-vitest.mjs run src/agents/embedded-agent-runner/session-family-carryover.test.ts src/agents/tools/embedded-gateway-stub.test.ts
# 2 files / 21 tests passed

CI=true node scripts/run-vitest.mjs run src/config/schema.help.quality.test.ts test/scripts/plugin-sdk-surface-report.test.ts
# 2 files / 28 tests passed

CI=true node scripts/run-tsgo.mjs -p test/tsconfig/tsconfig.core.test.json --incremental --tsBuildInfoFile .artifacts/tsgo-cache/core-test.tsbuildinfo
# passed

CI=true node scripts/run-tsgo.mjs -p test/tsconfig/tsconfig.extensions.test.json --incremental --tsBuildInfoFile .artifacts/tsgo-cache/extensions-test.tsbuildinfo
# passed

git diff --check
# no output

Current head addendum: 1f2e39b6d9

ClawSweeper's current-head proof request is refreshed on head 1f2e39b6d9f93c541c1d15549620b9e4a27fd751 after the selector/offset validation and embedded/Gateway family-history parity updates.

The carryover prompt-boundary proof below uses current-branch TypeScript modules directly and no private transcript data:

$ git rev-parse HEAD
1f2e39b6d9f93c541c1d15549620b9e4a27fd751

$ node --import tsx --input-type=module <<'TS'
# Imports current-branch ./src/agents/embedded-agent-runner/session-family-carryover.ts
# Checks default-off, raw-run, explicit opt-in, transform insertion, and idempotence.
TS
{
  "head": "1f2e39b6d9f93c541c1d15549620b9e4a27fd751",
  "defaultOffInstalls": false,
  "rawOptInInstalls": false,
  "explicitOptInInstalls": true,
  "rolesBeforeLlm": [
    "compactionSummary",
    "user"
  ],
  "compactionSummaryCount": 1,
  "idempotentRoles": [
    "compactionSummary",
    "user"
  ]
}

Additional exact-head validation after the embedded family-history parity fix and includeFamily/offset validation:

$ CI=true node scripts/run-vitest.mjs run src/agents/embedded-agent-runner/session-family-carryover.test.ts
Test Files  1 passed (1)
Tests  10 passed (10)

$ CI=true node scripts/run-vitest.mjs run src/agents/tools/embedded-gateway-stub.test.ts -t 'family|includeFamily|subagent_announce|sessionStartedAt|offset'
Test Files  2 passed (2)
Tests  22 passed | 18 skipped (40)

$ CI=true node scripts/run-vitest.mjs run src/agents/openclaw-tools.sessions.test.ts src/gateway/server.chat.gateway-server-chat-b.test.ts -t 'family|includeFamily|offset|cap'
Test Files  3 passed (3)
Tests  16 passed | 107 skipped (123)

$ git diff --check
# no output

Observed result after fix:

  • includeFamily remains the only selector and includeFamily + offset is rejected in tool, Gateway, and embedded paths.
  • Embedded chat.history(includeFamily) now skips the final current-session sessionStartedAt announce filter, matching Gateway, so ancestor/reset subagent_announce rows are preserved in family history.
  • Reset-family carryover remains default-off, skips raw model runs, and injects exactly one archived compaction summary only under explicit opt-in.

Current head addendum: 1ca3a90b24

Follow-up head 1ca3a90b24bed1bf8aa0a855614afa8d5f70d45d keeps the same behavior as the 1f2e39b6d9 proof and only adjusts the new embedded regression test to satisfy lint and test-type gates.

Runtime carryover proof on the exact current head:

$ git rev-parse HEAD
1ca3a90b24bed1bf8aa0a855614afa8d5f70d45d

$ node --import tsx --input-type=module <<'TS'
# Imports current-branch ./src/agents/embedded-agent-runner/session-family-carryover.ts
# Checks default-off, raw-run, explicit opt-in, transform insertion, and idempotence.
TS
{
  "head": "1ca3a90b24bed1bf8aa0a855614afa8d5f70d45d",
  "defaultOffInstalls": false,
  "rawOptInInstalls": false,
  "explicitOptInInstalls": true,
  "rolesBeforeLlm": [
    "compactionSummary",
    "user"
  ],
  "compactionSummaryCount": 1,
  "idempotentRoles": [
    "compactionSummary",
    "user"
  ]
}

Exact-head validation after the lint/type follow-up:

$ pnpm lint --threads=8
# passed

$ CI=true pnpm check:test-types
# passed

$ git diff --check
# no output

The earlier 1f2e39b6d9 addendum in this PR body remains the focused behavioral validation for includeFamily + offset, embedded/Gateway family-history parity, and carryover tests; this head only changes test typing/property-access style.

Current head addendum: `a054665423`

ClawSweeper's protocol-validator concern is addressed on current head `a054665423d6037478feb28a26467d257f5adb9d`:

  • The executable protocol validator now rejects `includeFamily: true` combined with `offset`.
  • `ChatHistoryParamsSchema` remains generator-compatible, so protocol schema and Swift model generation stay stable.
  • Runtime boundaries continue to reject the same unsupported combination before falling back to active-history paging.

Exact-head validation:

```text
$ git rev-parse HEAD
a054665

$ CI=true node scripts/run-vitest.mjs run packages/gateway-protocol/src/index.test.ts
Test Files 1 passed (1)
Tests 45 passed (45)

$ CI=true node scripts/run-vitest.mjs run src/agents/tools/sessions-history-tool.test.ts src/agents/openclaw-tools.sessions.test.ts -t 'includeFamily|offset'
Test Files 4 passed (4)
Tests 12 passed | 84 skipped (96)

$ CI=true node scripts/run-vitest.mjs run src/agents/tools/embedded-gateway-stub.test.ts src/gateway/server.chat.gateway-server-chat-b.test.ts -t 'family|includeFamily|subagent_announce|sessionStartedAt|offset|cap'
Test Files 3 passed (3)
Tests 30 passed | 59 skipped (89)

$ pnpm protocol:check

passed; generated protocol schema and Swift models are current

$ pnpm lint --threads=8

passed

$ CI=true pnpm check:test-types

passed

$ git diff --check

no output

```

Current head addendum: 30c6060925

ClawSweeper's proof request is refreshed on head 30c6060925f11aeaebdfbe7d2dfaf549da93f5bf after the current reset-archive target-cap fix.

The runtime proof below uses current-branch TypeScript modules directly, temporary on-disk session artifacts, the shared family target resolver, and the embedded carryover transform gate. No private transcript or channel data was used.

$ git rev-parse HEAD
30c6060925f11aeaebdfbe7d2dfaf549da93f5bf

$ node --import tsx --input-type=module <<'TS'
# Imports current-branch:
# - ./src/gateway/session-history-family.ts
# - ./src/agents/embedded-agent-runner/session-family-carryover.ts
# Creates one current active transcript, an older current reset-topic archive, and a newer current plain reset archive.
# Resolves includeFamily targets, resolves carryover, checks default-off/raw/explicit opt-in gates,
# applies the transform before the LLM boundary, checks idempotence, prints observed result, and removes temp files.
TS
{
  "head": "30c6060925f11aeaebdfbe7d2dfaf549da93f5bf",
  "targetBasenames": [
    "current-proof-session.jsonl.reset.2026-06-04T00-04-00.000Z",
    "current-proof-session.jsonl"
  ],
  "newestCurrentResetSelected": true,
  "olderCurrentTopicSelected": false,
  "currentActiveLast": true,
  "defaultOffInstalls": false,
  "rawOptInInstalls": false,
  "explicitOptInInstalls": true,
  "defaultOffRolesBeforeLlm": [
    "user"
  ],
  "carryoverSummary": "Exact-head current target ordering proof carryover.",
  "carryoverTokensBefore": 404,
  "explicitOptInRolesBeforeLlm": [
    "compactionSummary",
    "user"
  ],
  "compactionSummaryCount": 1,
  "idempotentRoles": [
    "compactionSummary",
    "user"
  ]
}

Observed result after fix:

  • default config does not install reset-family carryover and leaves model-bound roles as user only
  • raw model runs do not install reset-family carryover even when the experimental opt-in is true
  • explicit sessionFamilyCarryover opt-in installs the transform and prepends exactly one archived reset-family compactionSummary before the user message
  • current target ordering keeps the newest current reset archive plus current active transcript inside the reserved current-session target cap
  • the older current reset-topic archive is capped out, and the current active transcript remains ordered last
  • the carryover resolver reads the summary from the selected current reset archive and preserves tokensBefore

Exact-head validation:

$ CI=true node scripts/run-vitest.mjs run src/agents/embedded-agent-runner/session-family-carryover.test.ts
Test Files  1 passed (1)
Tests  11 passed (11)

$ CI=true node scripts/run-vitest.mjs run src/agents/tools/embedded-gateway-stub.test.ts -t 'includeFamily|family|topic archive|cap|limit'
Test Files  2 passed (2)
Tests  14 passed | 26 skipped (40)

$ CI=true node scripts/run-vitest.mjs run src/gateway/server.chat.gateway-server-chat-b.test.ts -t 'includeFamily|family|reset archive|topic|limit|cap'
Test Files  1 passed (1)
Tests  7 passed | 49 skipped (56)

$ CI=true node scripts/run-vitest.mjs run packages/gateway-protocol/src/index.test.ts src/agents/tools/sessions-history-tool.test.ts src/agents/openclaw-tools.sessions.test.ts -t 'includeFamily|offset'
Test Files  4 passed | 2 skipped (6)
Tests  12 passed | 176 skipped (188)

$ git diff --check
# no output

@simplyclever914
simplyclever914 requested a review from a team as a code owner June 4, 2026 08:51
@openclaw-barnacle openclaw-barnacle Bot added app: web-ui App: web-ui gateway Gateway runtime agents Agent runtime and tooling size: L triage: needs-real-behavior-proof Candidate: external PR needs after-fix proof from a real setup. labels Jun 4, 2026
@clawsweeper

clawsweeper Bot commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

Codex review: needs maintainer review before merge. Reviewed July 10, 2026, 7:32 AM ET / 11:32 UTC.

Summary
The PR adds opt-in reset-family transcript retrieval and a default-off embedded-agent transform that prepends one archived compaction summary when the active context has none.

PR surface: Source +756, Tests +1460, Docs -1, Other +85. Total +2300 across 54 files.

Reproducibility: yes. at source level: the supplied real-module proof creates on-disk reset-family transcripts and observes bounded history resolution plus exactly one summary at the model boundary. This is not a failing current-main bug reproduction because the PR proposes a new opt-in capability.

Review metrics: 3 noteworthy metrics.

  • Config/default surfaces: 1 added, default off. The option controls whether archived reset context may be sent to the selected model provider.
  • Protocol selectors: 1 added. includeFamily becomes a gateway, agent-tool, documentation, and generated-client contract.
  • Persisted lineage fields: 2 populated. Session reset now carries family identity into new active entries, making upgrade and state semantics relevant.

Stored data model
Persistent data-model change detected: persistent cache schema: src/gateway/session-transcript-files.fs.ts, persistent cache schema: src/proxy-capture/store.sqlite.test.ts, serialized state: src/agents/embedded-agent-runner/session-family-carryover.test.ts, serialized state: src/agents/embedded-agent-runner/session-family-carryover.ts, serialized state: src/agents/tools/sessions-history-tool.test.ts, serialized state: src/agents/tools/sessions-history-tool.ts, and 11 more. Confirm migration or upgrade compatibility proof before merge.

Root-cause cluster
Relationship: partial_overlap
Canonical: #90239
Summary: This PR is a stacked extension of the canonical family-history API PR, adding automatic prompt carryover beyond explicit retrieval.

Members:

Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything.

Merge readiness
Overall: 🐚 platinum hermit
Proof: 🦞 diamond lobster
Patch quality: 🐚 platinum hermit
Result: ready for maintainer review.

Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch.

Rank-up moves:

  • Obtain the maintainer contract decision and refresh exact-head integration after the family-history landing order is resolved.

Risk before merge

  • [P1] The new experimental option can send archived reset-summary content to the selected model provider, so maintainers must explicitly accept that disclosure boundary.
  • [P1] The PR adds a public gateway/tool selector, a new config surface, generated-client behavior, and persisted session-family lineage that become compatibility-sensitive once shipped.
  • [P1] The branch depends on another open PR and is behind current main; adjacent reset and embedded-attempt code changed upstream, so exact-head integration should be refreshed after the landing order is chosen.

Maintainer options:

  1. Split the stack before landing (recommended)
    Merge the shared family-history PR first, then rebase this branch so carryover is isolated from duplicate protocol and lineage changes.
  2. Accept the combined boundary
    Merge together only after maintainers explicitly own the config, persisted-lineage, selector, and archived-provider-context contracts.
  3. Pause automatic carryover
    Close or defer this PR if explicit family-history retrieval is the preferred permanent product boundary.

Next step before merge

  • [P2] A maintainer must choose the supported protocol/config/provider-boundary contract and stack order; there is no narrow mechanical repair to queue.

Maintainer decision needed

  • Question: Should OpenClaw support automatic, opt-in reset-family summary carryover across the model-provider boundary, and should it land only after the separate family-history API?
  • Rationale: This establishes permanent public protocol/config and persisted-session contracts while changing which archived context may reach providers; tests can prove implementation behavior but cannot establish maintainer product intent.
  • Likely owner: steipete — The PR discussion explicitly routed the stack-order and provider-boundary decision here, and repository history connects this person to session lifecycle and agent-tool contracts.
  • Options:
    • Land history, then carryover (recommended): Merge the narrower family-history API first, then rebase and review this PR as an isolated default-off carryover feature.
    • Land the combined stack: Accept the protocol, lineage, and carryover behavior together after refreshing exact-head integration proof.
    • Keep explicit retrieval only: Support opt-in family-history lookup but decline automatic archived-summary prompt injection.

Security
Cleared: No concrete vulnerability or supply-chain defect was found; archived-context disclosure is explicit, default-off, and documented, while accepting that boundary remains a product decision.

Review details

Best possible solution:

Land the narrower family-history API first, then rebase this branch into an isolated carryover change and approve it only with explicit provider-disclosure, upgrade, and exact-head integration proof.

Do we have a high-confidence way to reproduce the issue?

Yes at source level: the supplied real-module proof creates on-disk reset-family transcripts and observes bounded history resolution plus exactly one summary at the model boundary. This is not a failing current-main bug reproduction because the PR proposes a new opt-in capability.

Is this the best way to solve the issue?

Unclear as product direction: the implementation is credible and well-tested, but the narrowest maintainable landing is to establish the family-history contract first and review automatic carryover separately.

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning high; reviewed against c8655be91514.

Label changes

Label changes:

  • add status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Sufficient (terminal): The PR body provides real branch-module terminal output showing default-off and raw-run gates, bounded archive selection, idempotence, and one summary inserted before the LLM boundary.
  • remove status: ⏳ waiting on author: Current PR status label is status: 👀 ready for maintainer look.

Label justifications:

  • P2: This is a normal-priority opt-in session feature with meaningful contract surface but no emergency default impact.
  • merge-risk: 🚨 compatibility: The PR changes public config, protocol, generated-client, documentation, and selector semantics, including rejecting family history with offset pagination.
  • merge-risk: 🚨 session-state: The PR persists reset-family lineage and injects archived summary state into later agent prompts.
  • merge-risk: 🚨 security-boundary: Enabling carryover may disclose archived reset context to the selected model provider.
  • rating: 🐚 platinum hermit: Overall readiness is 🐚 platinum hermit; proof is 🦞 diamond lobster and patch quality is 🐚 platinum hermit.
  • status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Sufficient (terminal): The PR body provides real branch-module terminal output showing default-off and raw-run gates, bounded archive selection, idempotence, and one summary inserted before the LLM boundary.
  • proof: sufficient: Contributor real behavior proof is sufficient. The PR body provides real branch-module terminal output showing default-off and raw-run gates, bounded archive selection, idempotence, and one summary inserted before the LLM boundary.
Evidence reviewed

PR surface:

Source +756, Tests +1460, Docs -1, Other +85. Total +2300 across 54 files.

View PR surface stats
Area Files Added Removed Net
Source 25 812 56 +756
Tests 26 1552 92 +1460
Docs 1 1 2 -1
Config 0 0 0 0
Generated 0 0 0 0
Other 2 872 787 +85
Total 54 3237 937 +2300

What I checked:

Likely related people:

  • Ayaan Zaidi: Current-main blame attributes the latest surrounding reset and embedded-attempt refactor to this author, including the precise integration points touched by the PR. (role: recent area contributor; confidence: high; commits: 77c84de510; files: src/gateway/session-reset-service.ts, src/agents/embedded-agent-runner/run/attempt.ts)
  • Takhoffman: Git history shows repeated session-reset work covering transcript-path initialization, reset-path preservation, and CLI binding continuity. (role: feature-history contributor; confidence: high; commits: 708b9339a5, 3e5d86384e, 0235cca58a; files: src/gateway/session-reset-service.ts)
  • steipete: Git history shows substantial session-lifecycle and agent-tool work, and the PR discussion explicitly requested this handle to route the stack-order and provider-boundary decision. (role: likely decision owner; confidence: medium; commits: 198c2482ee, 74d0c39b32, 12100719b8; files: src/gateway/session-reset-service.ts, src/agents/embedded-agent-runner/run/attempt.ts, src/agents/tools/sessions-history-tool.ts)
  • vincentkoc: Repository history and the PR timeline connect this contributor to adjacent runtime work and prior routing for this session-history stack. (role: adjacent area contributor; confidence: medium; commits: 7a09255361, 08962b6812, 74e7b8d47b; files: src/gateway/session-reset-service.ts, src/agents/embedded-agent-runner/run/attempt.ts)
What the crustacean ranks mean
  • 🦀 challenger crab: rare, exceptional readiness with strong proof, clean implementation, and convincing validation.
  • 🦞 diamond lobster: very strong readiness with only minor maintainer review expected.
  • 🐚 platinum hermit: good normal PR, likely mergeable with ordinary maintainer review.
  • 🦐 gold shrimp: useful signal, but proof or patch confidence is still limited.
  • 🦪 silver shellfish: thin signal; proof, validation, or implementation needs work.
  • 🧂 unranked krab: not merge-ready because proof is missing/unusable or there are serious correctness or safety concerns.
  • 🌊 off-meta tidepool: rating does not apply to this item.

Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics.

How this review workflow works
  • ClawSweeper keeps one durable marker-backed review comment per issue or PR.
  • Re-runs edit this comment so the latest verdict, findings, and automation markers stay together instead of adding duplicate bot comments.
  • A fresh review can be triggered by eligible @clawsweeper re-review comments, exact-item GitHub events, scheduled/background review runs, or manual workflow dispatch.
  • PR/issue authors and users with repository write access can comment @clawsweeper re-review or @clawsweeper re-run on an open PR or issue to request a fresh review only.
  • Maintainers can also comment @clawsweeper review to request a fresh review only.
  • Fresh-review commands do not start repair, autofix, rebase, CI repair, or automerge.
  • Maintainer-only repair and merge flows require explicit commands such as @clawsweeper autofix, @clawsweeper automerge, @clawsweeper fix ci, or @clawsweeper address review.
  • Maintainers can comment @clawsweeper explain to ask for more context, or @clawsweeper stop to stop active automation.
Review history (28 earlier review cycles; latest 8 shown)
  • reviewed 2026-07-07T17:07:13.325Z sha d13de5b :: needs maintainer review before merge. :: none
  • reviewed 2026-07-07T17:22:55.020Z sha d13de5b :: needs maintainer review before merge. :: none
  • reviewed 2026-07-07T17:45:39.424Z sha b0fe358 :: needs maintainer review before merge. :: none
  • reviewed 2026-07-07T18:28:22.526Z sha 7643fdd :: needs maintainer review before merge. :: none
  • reviewed 2026-07-07T18:52:12.944Z sha 2482652 :: needs maintainer review before merge. :: none
  • reviewed 2026-07-07T19:13:03.680Z sha 14c43e7 :: needs maintainer review before merge. :: none
  • reviewed 2026-07-07T19:24:24.277Z sha 73c9184 :: needs maintainer review before merge. :: none
  • reviewed 2026-07-10T07:17:35.425Z sha 2ee749e :: needs maintainer review before merge. :: none

@clawsweeper clawsweeper Bot added rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. P2 Normal backlog priority with limited blast radius. merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. labels Jun 4, 2026
@openclaw-barnacle openclaw-barnacle Bot added proof: supplied External PR includes structured after-fix real behavior proof. and removed triage: needs-real-behavior-proof Candidate: external PR needs after-fix proof from a real setup. labels Jun 4, 2026
@clawsweeper clawsweeper Bot added proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. and removed rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. labels Jun 4, 2026
@openclaw-barnacle openclaw-barnacle Bot added the scripts Repository scripts label Jun 4, 2026
@clawsweeper clawsweeper Bot added rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. merge-risk: 🚨 session-state 🚨 May lose, corrupt, stale, or mis-associate session, agent, or context state. and removed rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. labels Jun 4, 2026
@openclaw-barnacle openclaw-barnacle Bot removed the proof: sufficient ClawSweeper judged the real behavior proof convincing. label Jun 4, 2026
@clawsweeper clawsweeper Bot added the proof: sufficient ClawSweeper judged the real behavior proof convincing. label Jun 4, 2026
@openclaw-barnacle openclaw-barnacle Bot removed the proof: sufficient ClawSweeper judged the real behavior proof convincing. label Jun 4, 2026
@clawsweeper clawsweeper Bot added proof: sufficient ClawSweeper judged the real behavior proof convincing. and removed rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. labels Jun 4, 2026
Clever added 28 commits July 7, 2026 14:03
…-summary

# Conflicts:
#	test/scripts/native-app-i18n.test.ts
…-summary

# Conflicts:
#	test/fixtures/agents/prompt-snapshots/codex-runtime-happy-path/discord-group-codex-message-tool.md
#	test/fixtures/agents/prompt-snapshots/codex-runtime-happy-path/telegram-direct-codex-message-tool.md
#	test/fixtures/agents/prompt-snapshots/codex-runtime-happy-path/telegram-heartbeat-codex-tool.md
…-summary

# Conflicts:
#	scripts/protocol-gen-swift.ts
…-summary

# Conflicts:
#	apps/shared/OpenClawKit/Sources/OpenClawProtocol/GatewayModels.swift
#	scripts/protocol-gen-swift.ts
#	src/gateway/session-reset-service.ts
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

agents Agent runtime and tooling app: web-ui App: web-ui channel: discord Channel integration: discord commands Command implementations docs Improvements or additions to documentation extensions: amazon-bedrock gateway Gateway runtime merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. merge-risk: 🚨 security-boundary 🚨 May affect sandboxing, authorization, credentials, or sensitive data. merge-risk: 🚨 session-state 🚨 May lose, corrupt, stale, or mis-associate session, agent, or context state. P2 Normal backlog priority with limited blast radius. proof: sufficient ClawSweeper judged the real behavior proof convincing. proof: supplied External PR includes structured after-fix real behavior proof. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. scripts Repository scripts size: XL status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant