Skip to content

Investigate missed intake/decision capture for out-of-lifecycle source edits #97

Description

@Kyarha

Context

jig's design principle #1 is "hooks = deterministic enforcement, skills = judgment." That split holds for secret-scan, the review-evidence gate, etc., but not for the core "work goes through a slice" discipline when editing source files.

The gap

There's no PreToolUse-style guardrail that fires when an agent edits a tracked source file without an IN_PROGRESS slice claiming it. spec-workflow is a skill the agent has to choose to invoke, so slice-compliance for a source edit is left entirely to the agent's judgment.

In practice, an agent with any bias toward "just fix the small thing" edits the file directly and skips the lifecycle — and the only thing catching it is the human noticing after the fact. This recurs.

The cost isn't proportional to the diff: a 1–2 line CSS change can encode a load-bearing, recurring design decision (a banner position, an alignment) — exactly what the slice + lightweight-decisions.md capture exists to make durable. Skipping the slice means the decision doesn't land where a future session reads it, so the same thing gets re-argued sessions later.

Suggestion (defer to you on whether/how)

Would jig consider an optional, opt-in guardrail hook that, on Edit/Write to configured source globs, checks jig state (workflow.py / .jig) for an IN_PROGRESS slice and, when there's none, warns (or configurably blocks) with a pointer to start a slice / run the intake?

  • Strictness (warn vs block) and globs would be per-project config.
  • Makes "no source edits outside a slice" mechanical, consistent with the hooks-are-deterministic principle, instead of relying on the agent remembering.

Related: for a new external reference (e.g. a new design/mockup version), the documented entry point is /jig:reframe → spec, but nothing routes the agent there automatically either — a guardrail could nudge that intake too.

Reported from real usage (a card-games project on jig 2.7.0) where an agent repeatedly hand-edited CSS outside slices.

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