Files
msd-core/optimisation-ideas/gemini.md
TÂCHES 1b317dec45 feat: extract repetitive bash patterns into gsd-tools commands (#472)
* feat(gsd-tools): add history-digest, atomic state operations, and summary variants

Adds new performance-focused commands to gsd-tools and introduces specialized
summary templates to reduce context tax:

- history-digest: Compiles phase summaries into structured JSON for JIT loading
- state get/patch: Enables atomic STATE.md operations instead of full rewrites
- template select: Automatically chooses optimal summary template based on plan complexity
- Adds minimal, standard, and complex summary templates

Part of the "Hydra" architecture for GSD context optimization.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* chore: add project config

* docs: define v1 requirements

* docs: create roadmap (6 phases)

* feat(history-digest): fix nested YAML parsing and add tests

- Fix extractFrontmatter() to handle nested YAML structures like
  dependency-graph.provides, tech-stack.added using stack-based parsing
- Add test infrastructure with Node test runner (npm test)
- Update gsd-planner to use digest fields directly instead of reading
  full SUMMARY.md files
- Add 6 schema validation tests covering nested fields, merging,
  malformed files, and backward compatibility

Closes: HIST-01, HIST-02, HIST-03, HIST-04

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* fix(planner): use digest for selection, full SUMMARY for understanding

The previous commit went too far by eliminating full SUMMARY reads.
The digest is an index for smart selection, not a replacement for
understanding what actually happened.

Two-step approach:
1. Digest to score/select relevant phases (2-4 typically)
2. Full SUMMARY read for selected phases (implementation details)
3. Digest-level context retained for unselected phases

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* feat(gsd-tools): add phases, roadmap, and phase commands

TDD implementation of three new commands to replace repetitive bash:

phases list [--type plans|summaries] [--phase N]
- Lists phase directories sorted numerically (handles decimals)
- Filter by file type or specific phase
- Replaces: ls -d .planning/phases/*/ | sort -V (22 occurrences)

roadmap get-phase <N>
- Extracts phase section from ROADMAP.md
- Returns name, goal, full section content
- Replaces: grep -A20 "Phase X:" ROADMAP.md (19 occurrences)

phase next-decimal <N>
- Calculates next decimal phase (06 → 06.1, 06.2 → 06.3)
- Handles gaps, normalizes input
- Replaces: complex bash math in insert-phase (3 occurrences)

16 new tests, all passing.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* refactor: migrate agents/workflows to use gsd-tools commands

Replace inline bash patterns with centralized gsd-tools commands:

phases list:
- audit-milestone.md: ls -d .planning/phases/*/ | sort -V
- plan-milestone-gaps.md: ls -d ... | sort -V | tail -1

roadmap get-phase:
- plan-phase.md: grep -A5 "Phase X:" ROADMAP.md (2 occurrences)
- research-phase.md: grep patterns (2 occurrences)
- verify-phase.md: grep -A5 pattern
- gsd-verifier.md: grep -A5 pattern
- gsd-plan-checker.md: grep -A10 pattern
- commands/gsd/research-phase.md: grep patterns (2 occurrences)

phase next-decimal:
- insert-phase.md: complex bash decimal calculation
- decimal-phase-calculation.md: reference doc rewritten

phase-argument-parsing.md: updated to reference gsd-tools

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-08 00:44:49 -06:00

4.9 KiB

The "Railroad" Architecture: GSD Framework Evolution

Executive Summary

This document outlines the strategic evolution of the Get Shit Done (GSD) framework from a "Prompt Engineering" reliance to a "Software Engineering" foundation. The core objective is to reduce token consumption ("context tax") and increase reliability by shifting workflow logic from LLM context to deterministic code.

1. The Core Shift: "Railroad" State Machine

Current State

Currently, the LLM acts as the Workflow Engine. It reads a verbose Markdown file (e.g., new-project.md) containing logic like:

"If the user says X, then ask Y. If they say Z, execute tool A."

This relies on "soft state management" where the LLM must perfectly recall and adhere to written instructions.

Proposed State ("Railroad")

The LLM becomes an Intelligent Worker, while gsd-tools becomes the Workflow Engine.

  • Logic in Code: Complex branching logic is moved to gsd-tools.

  • The "Next Step" Pattern: Instead of reading a map, the Agent simply asks: "What is next?"

    # Agent calls:
    node gsd-tools.js next-step --workflow new-project --state-file .planning/state.json
    

    Tool Returns:

    {
      "action": "ask_user",
      "prompt": "What do you want to build?",
      "context_files": []
    }
    
  • Benefit: The Agent needs zero knowledge of the overall workflow. It focuses 100% of its attention on executing the single, immediate task. It cannot "skip" steps because it doesn't know they exist until the tool assigns them.

2. Just-in-Time (JIT) Context Loading

Current State

We load all templates, references, and instructions at the start of a session.

  • Example: new-project loads questioning.md, project.md template, requirements.md template, etc.

Proposed State

Context is injected only when needed for the specific step.

  • Step 1 (Questioning): Load questioning.md. Do NOT load requirements.md template.
  • Step 2 (Requirements): Unload questioning.md. Load requirements.md template.
  • Step 3 (Roadmap): Load ROADMAP.md template.

Mechanism: The gsd-tools next-step response includes a context_files array. The wrapper script or system prompt dynamically reads these files into the context window for that turn only.

3. Native Interventions (Bypassing the LLM)

Current State

The LLM acts as a text-based menu system.

"User, please choose: 1. YOLO Mode, 2. Interactive Mode."

This burns tokens on input tokens (instructions on how to ask), output tokens (asking the question), and input tokens (processing the user's "1").

Proposed State

Standardize discrete choices into CLI interactions managed by gsd-tools or the wrapper.

  • Configuration Wizard: gsd-tools init new-project runs an interactive CLI wizard (using inquirer or readline) to gather mode, depth, parallelization preferences before the LLM is even invoked.
  • Structured Output: The LLM receives the result as a finalized JSON configuration, not a conversation transcript.

4. Micro-Agents & Chained Execution

Current State

Monolithic workflows (new-project) maintain a single context window that grows indefinitely. By the time the agent reaches "Roadmap Creation" (Step 9), the context is polluted with "Questioning" (Step 3) transcripts.

Proposed State

Break workflows into atomic, chainable units.

  1. Process: gsd:new-project
  2. Chain:
    • Agent A (Scope): Interviews user \rightarrow Outputs PROJECT.md \rightarrow Exits.
    • Context Flush
    • Agent B (Research): Reads PROJECT.md \rightarrow Outputs research/ \rightarrow Exits.
    • Context Flush
    • Agent C (Roadmap): Reads PROJECT.md + research/ \rightarrow Outputs ROADMAP.md.

Implementation: The gsd-tools utility manages the hand-off. When Agent A finishes, it returns a specific exit code or signal. The outer loop detects this, clears context, and spawns Agent B with the specific inputs generated by A.

Implementation Roadmap

  1. Expand gsd-tools:
    • Implement next-step state machine logic.
    • Add interactive CLI prompts for configuration.
  2. Refactor Workflows:
    • Strip workflows/*.md to bare essentials (or remove them entirely in favor of code definitions).
  3. Update Agent Definitions:
    • Direct agents to rely on gsd-tools for guidance rather than internal reasoning about the process.

Summary of Benefits

Metric Current Railroad Architecture
Context Usage High (Full workflow + History) Minimal (Current Step + Immediate Inputs)
Reliability Variable (LLM can hallucinate process) Deterministic (Code enforces process)
Speed Slower (Reading/generating verbose text) Faster (Code execution + concise LLM tasks)
Maintenance Distributed (Markdown files) Centralized (JS Logic)