Skip to content

feat(rendering): slice 9 — ghost plane in the ledger pass + sidecar-tail e2e - #435

Merged
Juliusolsson05 merged 1 commit into
integration/rendering-pipelinefrom
feat/rendering-slice9-ghost-ledger
Jul 6, 2026
Merged

Juliusolsson05 merged 1 commit into
integration/rendering-pipelinefrom
feat/rendering-slice9-ghost-ledger

Conversation

@Juliusolsson05

Copy link
Copy Markdown
Owner

Stage 1, slice 9. The five-rule ghost predicate (#428) existed standalone — the ledger never consulted it. This wires the ghost plane end-to-end:

  • `LedgerInput` gains an optional `ghosts` plane (`GhostLedgerCandidate` = paintable candidate + predicate facts) and `ghostContext` (rules 3/4). Optional because most sessions never mint a ghost and opencode's supersede-less ghosts get gated out in the adapter, before the ledger.
  • Ghosts are decided last — lowest-trust source, they only fill gaps the authoritative planes left; survivors compete in ordering via the existing `ghost-fallback` SOURCE_RANK.
  • Identity-stability cache (D11) compares `ghostContext` field-wise (scalar tail + set reference), so adapters can mint the context object fresh each tick.
  • New e2e fixture `fixtures.sidecarTailGhost.test.ts` pins the dominant production trap: sidecar blurb and stuck tool_use ghost both pass rules 1–4; only the shape backstop separates them. Plus committed-catch-up kill and cache-identity-with-fresh-context tests.

Closes the "sidecar-tail e2e variant" item from the Stage 1 progress marker. 53/53 pipeline tests; tsc gate (node + web) clean on main + integration diff.

🤖 Generated with Claude Code

…idecar-tail e2e fixture

The five-rule ghost predicate existed standalone; the ledger never
consulted it. LedgerInput now carries an optional ghost plane (candidate +
predicate-input pairs, plus GhostPredicateContext for rules 3/4), decided
LAST so ghosts never influence committed/live ownership, with survivors
competing in ordering via the existing ghost-fallback SOURCE_RANK.

Identity-stability cache compares ghostContext FIELD-WISE (scalar tail +
set reference) so adapters can mint the context object fresh each tick
without busting the D11 contract.

e2e fixture pins the sidecar-tail trap end-to-end: rules 1-4 pass for both
a sidecar blurb and a genuinely stuck tool_use ghost; only the shape
backstop separates them. 53/53 pipeline tests.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@Juliusolsson05
Juliusolsson05 merged commit ea37983 into integration/rendering-pipeline Jul 6, 2026
@Juliusolsson05
Juliusolsson05 deleted the feat/rendering-slice9-ghost-ledger branch July 7, 2026 21:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant