You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Compaction rendering has split ownership between condition strip, semantic stream, and committed rows #343
There should be one ownership rule for compaction rendering. If any reliable signal says compaction is active, raw synthesis content should be suppressed in the feed.
Linking this back to #172. This issue is directly about render ownership: compaction currently has separate condition-strip, semantic-stream, and committed-row render paths that can disagree.
The #172 rendering engine work should give compaction a single owner in the ordered feed plan. After #172 lands, this issue should be re-tested and either closed as covered or narrowed to any remaining provider-specific compaction signal problems.
Closing as resolved by the 2026-07 ownership-ledger rewrite (PR #555, merged 2026-07-18).
This issue describes split compaction ownership across three painters — the condition strip, the semantic stream, and committed rows. That architecture no longer exists. Verified on current main:
One model.src/providers/shared/renderer/protocols/compaction/model.ts defines a single CompactionRenderModel.
One painter.CompactionView.tsx renders every compaction state (boundary, progress, summary) from that model. There is no longer a separate condition-strip rendering of compaction competing with a feed row.
One ownership decision. The ledger carries compact-boundary and compact-summary row kinds (rendering/model/types.ts:62-63) and a compaction-synthesisRenderReason (types.ts:173). Visibility is decided in the ledger, not by each painter.
The general fix was structural: the rewrite collapsed all visibility/ownership decisions into one decision point, which is exactly what this issue asked for. Per the rendering design principles, ownership is now decided per block with a recorded reason for every candidate.
If compaction rendering misbehaves again, it will be a different defect against the current pipeline — please file it fresh with a debug bundle or session recording rather than reopening this one, since the code it describes is gone.
Activity
Juliusolsson05 commentedon Jun 22, 2026
Linking this back to #172. This issue is directly about render ownership: compaction currently has separate condition-strip, semantic-stream, and committed-row render paths that can disagree.
The #172 rendering engine work should give compaction a single owner in the ordered feed plan. After #172 lands, this issue should be re-tested and either closed as covered or narrowed to any remaining provider-specific compaction signal problems.
Juliusolsson05 commentedon Aug 30, 2026
Closing as resolved by the 2026-07 ownership-ledger rewrite (PR #555, merged 2026-07-18).
This issue describes split compaction ownership across three painters — the condition strip, the semantic stream, and committed rows. That architecture no longer exists. Verified on current
main:src/providers/shared/renderer/protocols/compaction/model.tsdefines a singleCompactionRenderModel.CompactionView.tsxrenders every compaction state (boundary,progress,summary) from that model. There is no longer a separate condition-strip rendering of compaction competing with a feed row.compact-boundaryandcompact-summaryrow kinds (rendering/model/types.ts:62-63) and acompaction-synthesisRenderReason(types.ts:173). Visibility is decided in the ledger, not by each painter.protocols/compaction/compaction.renderer.test.tsx.The general fix was structural: the rewrite collapsed all visibility/ownership decisions into one decision point, which is exactly what this issue asked for. Per the rendering design principles, ownership is now decided per block with a recorded reason for every candidate.
If compaction rendering misbehaves again, it will be a different defect against the current pipeline — please file it fresh with a debug bundle or session recording rather than reopening this one, since the code it describes is gone.