Skip to content

bug: forge-global and always-on-guidance skills contain compression-vulnerable decision logic and quality rules #51

Description

@jflowers

Summary

Two deployed skills — forge-global and always-on-guidance — contain behavioral constraints that are structured in ways that DCP context compression is likely to weaken or drop entirely. The most important content (conditional decision logic and individual quality rules) sits in list positions with low compression survival.

Related to unbound-force/unbound-force#346 — same class of vulnerability (prompt constraints that do not survive context compression).

forge-global (internal/agentkit/content/skills/forge-global/SKILL.md)

1. "When NOT to forge" decision logic flattened

Don't forge when:
- Task is a single-file change
- Task requires sequential steps with tight coupling
- Task is exploratory or investigative

Conditional "when to / when not to" logic is one of the first things compressors flatten. This becomes "use forge for multi-file tasks," losing the nuanced "don't forge for tightly coupled sequential work." The result: inappropriate parallelization of tasks that need sequential execution.

2. TTL detail dropped

- Set ttl_seconds to auto-release after timeout

A specific operational parameter in a bullet list. Under compression, this disappears and reservations hang indefinitely, requiring manual intervention.

3. File Reservation Protocol ordering

The 5-step reservation protocol has implicit ordering (reserve before edit, release when done). Compression flattens ordered steps. Without the ordering, a worker might release before completing edits, or forget to release entirely.

always-on-guidance (internal/agentkit/content/skills/always-on-guidance/SKILL.md)

4. "Check hivemind_find before solving problems from scratch"

Last bullet in the first section ("Tool Usage Discipline"). Last-position items in lists have the lowest compression survival rate. Agents would re-solve problems instead of checking for existing solutions — wasting time and potentially producing inconsistent solutions.

5. Individual quality rules dropped from lists

Rules like "No dead code or unused imports," "Error messages include context," and "Handle all error paths — no ignored returns" are individual bullets in multi-item lists across 5 categories. A compressor keeps section headers and drops individual bullets. The agent maintains a general sense of "write quality code" but loses specific actionable rules.

6. "Never force push to main"

Single bullet in "Git Discipline" section. This is a critical safety constraint expressed with the same weight as "Commit early, commit often." Under compression, both could be dropped or the prohibition could be lost while the suggestion is kept.

Proposed Hardening

forge-global

  • Restructure "When to Forge" as a decision table or flowchart rather than parallel lists — decision structures survive compression better than "do / don't" lists
  • Promote TTL guidance from a bullet to an inline part of the reservation step
  • Add explicit ordering language to the protocol steps

always-on-guidance

  • Move "Check hivemind_find first" to the top of Tool Usage (first-position = highest survival)
  • Separate critical safety rules ("Never force push") from stylistic guidance ("Commit early") — use a "## Critical Safety" section header that compressors would preserve
  • Reduce list sizes by grouping related rules under sub-headers, so each list has 2-3 items instead of 5-6 (shorter lists survive compression with less loss)

References

  • Files:
    • internal/agentkit/content/skills/forge-global/SKILL.md
    • internal/agentkit/content/skills/always-on-guidance/SKILL.md
  • Related: unbound-force/unbound-force#346

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    Status
    No status

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions