Skip to content

Discoverability gap: Charters not surfaced through canonical onboarding (DEVTRAIL.md, agent skills, /devtrail-status) #113

@montfort

Description

@montfort

Context

Working on a real greenfield project (Rust CLI/TUI suite) that uses DevTrail + SpecKit together as the governance stack. After the agent (Claude Opus 4.7) completed /speckit-constitution, /speckit-specify, /speckit-plan, /devtrail-adr (workspace adoption), /speckit-tasks (44 tasks across 6 phases), and /speckit-analyze, it never surfaced Charters as a relevant concept.

The project owner had to ask explicitly: "What's the strategy for the DevTrail Charters considering tasks.md?" — at which point the agent recognized the gap and produced 5 granularity options.

This issue documents the systemic discoverability gap behind that oversight, since it's likely reproducible with any agent (Gemini, Copilot, etc.) onboarding to a DevTrail+SpecKit project via the canonical entry points.

What didn't happen

A capable, attentive agent following the canonical project onboarding (DEVTRAIL.md, the project constitution, CLAUDE.md checklist, available /devtrail-* skills, /devtrail-status) did not autonomously identify Charters as a workflow concept during plan/tasks generation, even though the project clearly fit their use case (multi-session implementation, multi-phase tasks, audit value).

Charters were eventually adopted (2 Charters: foundation + MVP) only after explicit user prompt.

Root-cause analysis (9 contributing factors, grouped)

Documentation gaps

  1. DEVTRAIL.md doesn't list Charters as a top-level type. The doc enumerates 12+4 document types (AILOG/AIDEC/ETH/SBOM/DPIA/PIPIA/TC260RA/AILABEL/ADR/REQ/TES/INC/TDE/SEC/MCARD). Charters are absent. Agents that build their mental model of DevTrail from this doc will not include Charters.

  2. CLAUDE.md Pre-commit Checklist has no Charter trigger. The 6 checklist items map to AILOG/AIDEC/ADR/ETH/MCARD/SEC. None says "starting a multi-session implementation block? → declare a Charter."

  3. Project constitutions written from DevTrail patterns inherit the gap. When project owners write their own constitutions (as Spec Kit's /speckit-constitution template encourages), they replicate the DevTrail abstractions they were exposed to. Charters get lost in transmission downstream.

Skill surface gaps

  1. No /devtrail-charter-new (or equivalent) skill. Skill-driven discovery yields: /devtrail-adr, /devtrail-aidec, /devtrail-ailog, /devtrail-mcard, /devtrail-sec, /devtrail-new, /devtrail-status. Charters are not creatable through any skill. Agents that discover DevTrail through "what slash commands exist?" miss them.

  2. /devtrail-status excludes Charters from its scan. The status skill explicitly enumerates 12 document prefixes (AILOG-, AIDEC-, ADR-, …) and counts only those. Even when an agent runs /devtrail-status to verify compliance, Charters are structurally invisible. The compliance-observability tool has a blind spot.

  3. /devtrail-audit-* skills mention Charter in their descriptions ("Generate the unified audit prompt for a Charter at the canonical filesystem location") but the framing is external audit tooling, not Charter lifecycle terminus. The connection "Charter = work unit; audit-* = its closure" requires reading the Charter template — which agents may not do unprompted.

Template-level gaps

  1. charter-template.md and charter-telemetry-template.yaml are listed in .devtrail/templates/ but indistinguishable from auxiliary templates. They sit alongside TEMPLATE-ADR.md etc. An agent triaging templates by relevance will skip them.

Workflow integration gaps

  1. No documented bridge between SpecKit and DevTrail Charters. The Charter frontmatter has originating_spec: specs/NNN-feature/spec.md — the perfect bridge. But no doc explains when a SpecKit feature should yield a Charter, how granular (1 per feature? 1 per phase? 1 per User Story?), or who triggers the creation (/speckit-tasks close? before /speckit-implement?).

  2. Agents form binary mental models of multi-tool workflows. "SpecKit = planning, DevTrail = audit-trail." Charters represent a third layer (work-as-auditable-shippable-unit) that doesn't fit either category. Without explicit naming in canonical docs, the binary model dominates and the third layer is silently discarded.

Suggested remediation (low-cost, reversible)

Priority order, smallest blast radius first:

High impact / low cost

  • Add Charter section to DEVTRAIL.md as a top-level type. Brief description, when to create, link to template. Equivalent rank to ADR.
  • Add Charter trigger to CLAUDE.md template's Pre-commit Checklist: "Starting a multi-session implementation block (>1 day, >5 tasks)? → Declare Charter in .devtrail/charters/."
  • Update /devtrail-status skill to scan .devtrail/charters/*.md, display open/in-progress/closed counts, list active Charters with their task ranges.

Medium impact / medium cost

  • Create /devtrail-charter-new skill that scaffolds CHARTER-NN.md from the template with frontmatter pre-filled. Analogous to /devtrail-adr.
  • Document the SpecKit ↔ Charter bridge in DevTrail's main docs: when a feature spec yields a Charter, granularity heuristics (1 Charter per shippable unit, NOT per User Story or per feature; effort_estimate M-L is the sweet spot), creation timing (after /speckit-tasks, before /speckit-implement).
  • Add /devtrail-charter-close skill that updates status, prompts for telemetry yaml, optionally chains to /devtrail-audit-prompt.

Low impact / low cost

  • Reorganize .devtrail/templates/: move charter-template.md and charter-telemetry-template.yaml into a charter/ subdirectory, signaling "this is a workflow concept, not a doc template."
  • Cross-reference: in /devtrail-new skill description, mention Charters as the unit-of-work concept that contains the docs /devtrail-new creates.

Reproducibility

This pattern is likely to repeat with any agent (Claude, Gemini, Copilot) onboarding to a DevTrail+SpecKit project via the canonical entry points. The gap is systemic, not session-specific — fixing it benefits all future agent interactions.

Empirical context

  • Project: greenfield Rust CLI/TUI suite, v0.1.
  • Agent: Claude Opus 4.7 (1M context).
  • Workflow phase when gap manifested: between /speckit-tasks and /speckit-implement.
  • Time to detect: ~6 hours of session work; never autonomously surfaced.
  • Time to resolve once user prompted: ~5 minutes (agent immediately produced 5 granularity options, recommended a 2-Charter strategy).
  • Outcome: 2 Charters being created (Foundation + MVP) after this issue is filed.

Acknowledgment

Filed by a real DevTrail user as part of using the framework on a real project. Not a hypothetical. Happy to provide additional artifacts (the relevant session transcript, the resulting Charter files, the resulting tasks.md) if useful for triage.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions