Skip to content

Bridge invariant warning when unordered list is immediately followed by bold-label paragraph #456

Description

@iphixit

Summary

I found a reproducible Markdown edge case that can emit OpenKnowledge bridge warnings when a bullet list is immediately followed by a bold-label paragraph with no blank line between them.

Adding a blank line between the list and the bold-label paragraph appears to avoid the warning.

Environment

  • OpenKnowledge: v0.24.0 (latest published at time of filing)
  • Install/run path: npx -y @inkeep/open-knowledge
  • Init flags: ok init --no-mcp --local-only --content-dir content
  • Run flags: OK_MCP_AUTOSTART=0 OK_RECLAIM_DISABLE=1 ok start --host 127.0.0.1
  • Content: local Markdown files only
  • Browser: headless Chrome against local editor

Minimal Reproduction

Create a markdown file with this shape:

# Bridge warning reproduction

## Example

**Why not now:**
- First bullet
- Second bullet
- Third bullet
**Trigger to revisit:** This bold-label paragraph immediately follows the list.

Open the file in the OpenKnowledge editor, then stop OpenKnowledge.

Observed warning family:

bridge-split-brain-rederive
bridge-invariant-violation

The exact warning in my local minimized sandbox included:

{"event":"bridge-split-brain-rederive","doc.name":"_stage6c/watchlist-local-143-146-bullets-trigger","site":"post-merge"}
{"event":"bridge-invariant-violation","site":"persistence","doc.name":"_stage6c/watchlist-local-143-146-bullets-trigger","tolerance-class-attempted":"untracked","normalize-equal-modulo-tolerance":false}

Expected Behavior

OpenKnowledge should either:

  • parse the Markdown without bridge invariant warnings, or
  • normalize this CommonMark-adjacent ambiguity without reporting a split-brain / invariant violation.

Actual Behavior

The bridge warning appears when a bullet list is immediately followed by a bold-label paragraph with no blank line.

Confirmed Workaround

Insert one blank line between the list and the bold-label paragraph:

# Bridge warning reproduction

## Example

**Why not now:**
- First bullet
- Second bullet
- Third bullet

**Trigger to revisit:** This bold-label paragraph is separated by a blank line.

With that blank line inserted, I saw only tolerance messages such as:

commonmark-escape
emphasis-around-code
list-indent-canonical
blank-line-collapse

No bridge-split-brain-rederive or bridge-invariant-violation appeared in the normalized-copy pass.

Isolation Notes

This was tested in /private/tmp sandboxes only.

Controls that did not trigger the invariant warning:

  • individual bullet lines
  • bullet lists alone
  • bold-label plus bullet list without the following bold-label paragraph
  • full normalized copy with blank lines inserted before the following bold-label paragraphs

The warning appeared to require the multi-line list plus the immediately following bold-label paragraph.

Why This Might Matter

This Markdown pattern is common in notes and knowledge bases:

**Decision:** ...
- reason one
- reason two
**Next step:** ...

If OpenKnowledge's Markdown renderer and CRDT/bridge layer parse that boundary differently, users may see noisy invariant warnings even when no file is being intentionally edited.

Additional Candidate Reproduction

A second minimized pattern also reproduced a bridge invariant warning in my local sandbox:

# Wrapped list continuation reproduction

- Also read at session start: [[Team Knowledge/ai-agent-context]] — operating rules,
project status, and input source paths (cross-tool context shared by all hosts).

Observed warning:

{"event":"bridge-split-brain-rederive","doc.name":"_agents_stage9b/agents-foldermap-086-087-wrapped-continuation","site":"post-merge"}
{"event":"bridge-invariant-violation","site":"persistence","doc.name":"_agents_stage9b/agents-foldermap-086-087-wrapped-continuation","tolerance-class-attempted":"untracked","normalize-equal-modulo-tolerance":false}

This appears related to an unindented wrapped continuation line after a bullet item. Mini fixed variants did not trigger when the continuation line was indented or when the wrapped text was joined onto the same bullet line.

- Also read at session start: [[Team Knowledge/ai-agent-context]] — operating rules,
  project status, and input source paths (cross-tool context shared by all hosts).

or:

- Also read at session start: [[Team Knowledge/ai-agent-context]] — operating rules, project status, and input source paths (cross-tool context shared by all hosts).

Context Interaction Note

One longer file also showed a residual bridge invariant warning even after the wrapped continuation was fixed. A cumulative build-up test found:

  • Prefixes ending before the folder map were clean.
  • The warning began when the first folder-map bullet was appended after the preceding sections.
  • The same folder-map block tested in isolation did not warn.

This suggests there may be both standalone Markdown boundary edge cases and longer-document context interactions in the bridge. The minimal standalone snippets above should be enough to validate independently; the longer-document context interaction is noted in case the minimal snippets do not reproduce on your end.

Metadata

Metadata

Assignees

Labels

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions