Extract epitaphs from Cline sessions #170
Closed
opened 2026-08-22 00:22:53 -07:00 by dejima-agent
·
1 comment
No Branch/Tag Specified
main
development
loadscale-measured
share-isolated
session-switcher
attach-counts
proxy-expect-100
web-reconnect
mirror-dotgithub
no-ai-attribution
mirror-strip-attribution
release-2026.10.14
github-mirror
release-2026.10.13
release-blockers
isolated-mode
standalone-posture
allow-multi
claude-json-scope
reliability
remote-teardown
egress-subject
ci-sh-fix
meta-cache
review-sec
review-docs
review-tests
guard-boundary
review-1007
guards-365
docs-contradictions
checks-364
review-checks
report-high
web-favicon
briefing-refusal
release-followups
cred-expiry
verify-entries
approval-fix
release-docs
token-message
revert-singlelabel
boot-regressions
release-fixes
ci-timings
cleanroom-image
cleanroom-egress
nat-flush
release-pass-check
rw-per-project
filter-container
tini-kill
allow-pair
review-fixes
reconcile
caps-split
firewall-up
run-id
caps-floor
update-notice-visibility
ci-green
release-pass-base
secreview
subscription-gating
proxy-log2
proxy-log
release-pass-scope
pinned-defaults
scroll-step
mounts-guard
config-ref
model-id
guards-check
why-not-vm
docs-prose
hooks-overlay
cline-configs
startup-ux
release-docs-drift
release-pass-keys
flaky-tests
provider-axis
parallel-dep
anthropic-api-key
credential-scan
cline-openrouter
shipper-fix
share-per-project
fast-test-lane
generic-proxy
runtime-reap
stack-table
local-tags
ci-image-tag
ntfy-argv
suspend-test-scope
gh-guard-spellings
suspend-harness
sshfs-docs
auth-alternatives
web-theme
one-palette
startup-banner
picker-clear
test-hardening
block-merge-default
release-2026-08-27
ssh-key-identity
prose-economy
cache-home
identity-docs
doc-fixes
allow-picker
fixture-update
notify-once
marker-boundary
doubled-headers
swap-flake
update-check
harness-neutral-docs
port22-rests-on-two
remote-access-egress
readme-positioning
idempotent-disclosure
resize-hold
real-resize-on-resume
credential-argv
release-doc-fix
vm-layer-bounds
what-is-not-sandboxed
ipv6-no-inference
capability-floor
tool-env-namespace
optional-tools
config-identities
container-tool-ux
branch-push-merge-block
per-launch-flags
github-forge-parity
epitaph-interface
ctrlz-sigstop
release-2026-08-24
ctrlz-revert
reconcile-main
release-policy
playwright-discoverable
webui-button-colors
gitea-pr-base
shellcheck-covers-tests
audit-retire-reports
forge-guard-body-checks
ctrlz-suspend
forge-maturity-doc
forge-disclosure
forge-github-shadow
webui-toolbar
install-config-diagnosis
ship-argv
release-cline
cli-help
harness-flag
cline-provider-updatedat
corpus-declaration
cline-local-endpoint
main-without-cline
plugin-state
launch-perf
cline-harness
harness-transcripts
briefing-delivery-dev
briefing-delivery
harness-tool-egress
harness-agnostic-guards
cline-harness-assessment
declare-opencode-dep
harness-coupling-audit
harness-decoupling
review-133-fixes
audit-drift-fixes
voice-audit
audit-p13-p14
audit-tooling
audit-forge
audit-p28-p5
emit-mount-target
harness-staged-config
comment-archaeology
dejima-md-replaced-rule
harness-epitaph-format
harness-config-parity
harness-api-domains
allow-internal-domain-message
harness-credentials
harness-plugins
harness-guard-registration
harness-host-exec
docs-host-prerequisite
harness-guards
harness-wrapper
epitaph-guarded-mount
harness-capability-bar
security-doc-structure
threat-model
dev-environment-framing
verbose-exit
epitaph-empty-dirs
compaction-summaries
development-branch-process
audit-usability
dejima-md-brevity
require-harness
runtime-github-flake
writing-note
github-push-why
github-push-briefing
comment-slim
maturity-disclaimer
launch-progress
worktree-config-briefing
nvim-volumes-per-project
extra-mount-flags
file-history-scope
approval-store-mount-guard
lineage-ssh-warning
test-audit-stub
projects-slug-mount
branding
org-move
tier-vocabulary
readme-hierarchy
gitea-pr-resolved
gitea-pr-hunks
audit-ux
gitea-actions-scope
gitea-tools
readme-ci-bullet
extra-domains-github-split
revert-88
dns-forward-egress
wf-comment
sandbox-identity
notify-dir-check
trigger-followup
ci-final
ci-firewall-unit
ci-dns-scope
ci-runner-tests
ci-hardening-config
image-trim
tarball-deps
allowlist-trim
ci-hardening-docs
allow-project-cli
new-providers
gitea-actions
hook-registration
docs-remote-access-diagram
provider-axes
config-provider-axes
ttyd-mobile-client
firewall-fetch-timeout
pr-autonomy
anthropic-tls-transport
validate-host-settings
settings-via-flag
enumerate-claude-mounts
audit-alerting
audit-followups
issue-close-keywords
ci-build-perf
ci-actions
readme-perspective-revisions
readme-agent-perspective
context-framing
gitea-issue
docs-split
build-retries
attach-branding
remote-access-followups
remote-access
add-gpl-license
rename-dejima
per-project-config
proxy-client-disconnect
gitea-pr-token
container-init
fix-runtime-tests-default-bridge
sandbox-improvements
credential-proxy
host-persistence-hardening
fix-nvim-config-mounts
fix-claude-sandbox-symlink-resolution
worktree-security-review-fixes
2026.10.14
2026.10.13
Labels
Clear labels
Compat/Breaking
Kind/Bug
Kind/Documentation
Kind/Enhancement
Kind/Feature
Kind/Security
Kind/Testing
Breaking change that won't be backward compatible
Something is not working
Documentation changes
Improve existing functionality
New functionality
This is security issue
Issue or pull request related to testing
Priority
Critical
1
The priority is critical
Priority
High
2
The priority is high
Priority
Low
4
The priority is low
Priority
Medium
3
The priority is medium
Reviewed
Confirmed
1
Issue has been confirmed
Reviewed
Duplicate
2
This issue or pull request already exists
Reviewed
Invalid
3
Invalid issue
Reviewed
Won't Fix
3
This issue won't be fixed
Status
Abandoned
3
Somebody has started to work on this but abandoned work
Status
Blocked
1
Something is blocking this issue or pull request
Status
Need More Info
2
Feedback is required to reproduce issue or to continue work
No labels
Milestone
No items
No Milestone
Projects
Clear projects
No projects
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: dejima/dejima#170
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Filed by LLM agent
Cline is supported, but
bin/harness/cline.shdefines noharness_extract_epitaphs, so a compacted Cline session leaves nothing behind.dejima-epitaphtreats an undefined hook as "nothing was kept", which is honest but not the intended end state.Why it was left out rather than written
No compaction of a real Cline session has been observed. Cline has a
--compaction agentic|basic|offflag, so summaries presumably exist in some form, but what one looks like inside a.messages.jsonhas not been seen.Guessing was the alternative and it is worse than absence. dejima's own promise about the artefact is that it is what the session wrote, preserved verbatim — an extractor written against a guessed record shape either silently keeps nothing, or keeps the wrong record under that promise. Absence is at least legible.
What is already in place
The seam exists and needs no further work.
harness_transcript_filesanswers where a workspace's transcripts are, one<key>\t<path>line per file, andharness_extract_epitaphsis handed one file at a time along with the output directory. Everything around it — the store, that nothing mounts it, the 0700 directory, the provenance note, the dedupe on re-runs — is core's and already works for the second harness.Cline's transcripts are at
<data>/sessions/<id>/<id>.messages.json: one JSON document, rewritten in place, withmessages[]carryingroleand acontentarray oftext/tool_use/tool_resultblocks.harness_transform_transcriptalready parses exactly that shape for conversation logging, so the parsing is understood — what is missing is only which record marks a compaction and which fields describe it.What would close this
--compaction agenticand again withbasic, and keep the resulting.messages.json.compact_boundarycarries those, and the epitaph header has fields for them).harness_extract_epitaphsinbin/harness/cline.shagainst that, keyed on something stable per summary sosaverunning on every exit does not duplicate what an earlier run kept.See
docs/development.md, "Worked example: Cline", which records this as deliberately absent.Comment by LLM agent
Answered by observation: there is nothing to extract, and that is the correct end state rather than a gap.
A compaction was forced against a locally served model with
contextWindowset small enough to trigger it. Four completedauto_compactioncycles, each dropping the working context from five messages to three.The persisted record was untouched by every one of them. All five file reads remained in
.messages.jsonin full, tool results included, at ~20 KB apiece — precisely the content compaction had just removed from what was being sent to the model.So Cline's compaction is a working-context operation and nothing more. Epitaphs exist because Claude Code's compaction destroys context that survives only as the summary written into its transcript, and the container takes everything else with it when it goes. Cline destroys nothing on disk, so there is no summary to preserve and no loss to guard against.
harness_extract_epitaphsstays undefined because that is the answer.Two things worth recording in case this is ever revisited:
auto_compactionnotices carryingtokensBefore/tokensAfterandmessagesBefore/messagesAfter. Nothing of it reaches the session record.compaction_budget_emergencyand falls back fromagentic_summaryto plain trimming. Both paths leave the record intact, so the distinction does not change the conclusion.Recorded in
docs/development.md's Cline worked example by #176, which replaces the earlier "no compaction has been observed" note.Closing. If Cline later starts persisting a compaction artifact, this becomes a real task again and the seam is already in place to take it.