Skip to content

[Bug]: ponytail does not detect caveman conflict — both inject contradictory instructions #332

Description

@lg320531124

Bug Description

When ponytail and caveman are both active, they both inject additionalContext on UserPromptSubmit. The model receives two contradictory style instruction sets every turn:

  • Caveman: "CAVEMAN MODE ACTIVE (full). Drop articles/filler/pleasantries/hedging. Fragments OK."
  • Ponytail: "PONYTAIL MODE ACTIVE (full). The ladder enforced. Stdlib and native first."

Previous issues (#18, #68, #193) asked "can they coexist?" and were closed with "yes, they stack". But the actual bug is that both plugins inject per-turn style reminders simultaneously, causing the model to receive contradictory instructions about output style. This results in unpredictable, inconsistent outputs.

What caveman already does

Caveman PR #577 added conflict detection: when ponytail (or other compression plugins) is detected in settings.json, caveman reduces its per-turn injection to a one-liner instead of the full ruleset. But ponytail does NOT reciprocate — it always injects its full ruleset regardless of whether caveman is active.

Proposed Fix

In ponytail-mode-tracker.js, before emitting the per-turn additionalContext, check settings.json for known compression plugins (caveman, etc.). If detected, reduce the per-turn injection to a minimal one-liner:

PONYTAIL MODE ACTIVE (full) — reduced injection (another compression plugin detected). Ponytail rules still apply per SessionStart injection.

The SessionStart full ruleset is unchanged — ponytail rules still apply, just the per-turn reinforcement is reduced to avoid contradictory instructions.

This mirrors the approach caveman already uses in its detectCompressionConflict() function.

Testing

With caveman installed in settings.json:

  • Before: model receives both "CAVEMAN MODE ACTIVE (full). Drop articles..." AND "PONYTAIL MODE ACTIVE (full). The ladder enforced..." every turn → contradictory instructions
  • After: model receives "CAVEMAN MODE ACTIVE (full) — reduced injection" + ponytail full injection = no contradiction

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions