Tags

Tags give the ability to mark specific points in history as being important
  • v1.0.0

    protected
    synthesist v1.0.0
    
    Rewrite from Go+Dolt to Rust+SQLite.
    
    Storage: embedded Dolt replaced by SQLite via rusqlite (bundled).
    Single static binary, no CGo, no ICU, no runtime dependencies.
    
    Session isolation: per-file SQLite copies with ATTACH-based three-way
    merge. PK-aware EXCEPT diffing with cell-level conflict detection.
    
    Schema: 16 tables with foreign key constraints and performance indexes.
    Literature-informed cutline defers unvalidated features with documented
    re-entry criteria (docs/architecture-v1.md).
    
    CLI: ~40 commands with consistent verbs, tree/spec path format, full
    argument descriptions, and worked examples in the skill file.
    
    Phase enforcement: 7-phase workflow state machine with validated
    transitions. AGREE gate blocks execution without human approval.
    
    Data directory: synthesist/ (visible, full name, replaces .synth/).
    
    Migration: tools/migrate-v5-to-v1.py transforms v5 JSON exports to
    v1.0.0 schema.
  • v5.4.0

    protected Release: synthesist v5.4.0
    v5.4.0: task reset + version update check
    
    Features:
    - task reset: release orphaned in_progress tasks to pending
      - Single task: synthesist task reset <tree/spec> <id>
      - Bulk by session: synthesist task reset --session <id>
      - Optional --reason flag for auditability
    - version check: JSON output with update availability from GitLab API
      - synthesist version (with update check)
      - synthesist version --offline (skip network)
      - SYNTHESIST_OFFLINE=1 env var for CI
      - Status command includes version block
    
    Fixes:
    - Closes #4 (version update check)
    - Addresses factory crash recovery (stuck in_progress tasks)
  • v5.3.4

    protected Release: v5.3.4
    v5.3.4 — Fix --no-commit data loss and lock timeout
    
    Fixed:
    - session merge now auto-commits uncommitted changes before merging,
      preventing silent data loss with --no-commit (#2)
    - Lock timeout reduced from 60s to 5s with PID-based liveness check (#3)
    - CI release template updated from ubi: to http: backend
    - .gitignore excludes Dolt temp files
  • v5.3.2

    protected Release: v5.3.2
    v5.3.2 — Migrate mise from ubi: to http: backend
    
    Scaffold and README now use the http: backend pointing at GitLab
    package registry with {{version}} templating. ubi: is deprecated.
  • v5.3.1

    protected Release: v5.3.1
    v5.3.1 — Mandatory landscape orientation and ecosystem constraints
    
    ORIENT: landscape show and stance queries are now mandatory when tree
    has stakeholders. Landscape summary must be presented before PLAN.
    
    AGREE: plan presentation must include ecosystem constraints from
    dispositions and discoveries. Missing constraints signals incomplete
    ORIENT.
    
    Behavioral contract changes — no binary changes.
  • v5.3.0

    protected Release: v5.3.0
    v5.3.0 — Concurrent session safety
    
    Lock retry with backoff (200ms/500ms/1s) when Dolt LOCK held by another
    process. Makes N concurrent agent sessions safe without user intervention.
    
    Scaffold generates agent configs: .claude/commands/synthesist-orient.md
    and .cursor/rules/synthesist.mdc for behavioral contract injection.
    
    Session-aware onboarding: write commands without a session show active
    sessions and how to join or start one.
    
    Merge dry-run: session merge --dry-run shows changes without merging.
    
    Concurrent session protocol documented in state machine: naming, claim
    atomicity, merge protocol, conflict resolution, lock retry behavior.
  • v5.2.0

    protected Release: v5.2.0
    v5.2.0 — Ecosystem audit enforcement
    
    Added:
    - spec create auto-generates a human-gated ecosystem audit task (t0)
      when the tree has stakeholders. Blocks implementation until stakeholder
      dispositions and ecosystem conventions are reviewed.
    - ORIENT phase now requires landscape show and stance queries when
      stakeholders exist. Landscape summary must be presented to the human
      before transitioning to PLAN.
    
    Driven by: session that required 4 review passes for convention
    alignment that was discoverable from recorded dispositions.
  • v5.1.2

    protected Release: v5.1.2
    v5.1.2 — Cursor harness guide
    
    Added:
    - docs/cursor.md — guide for using Synthesist with Cursor (shell access,
      skill output, sessions, phase state machine, v5 vs legacy OpenCode bundle)
    
    Contributed by @jmeekhof.
  • v5.1.1

    protected Release: v5.1.1
    v5.1.1 — File splitting refactor + error handling
    
    Refactor:
    - Split main.go (801 LOC) into main.go (157) + cli_types.go (431) + cli_types_task.go (93) + cli_types_landscape.go (121)
    - Split store.go into store.go (519) + store_session.go (108)
    - LOC limit lowered from 850 to 650
    
    Fixed:
    - 35 unchecked s.DB.Query() / s.DB.QueryRow() errors across 11 files now properly checked
    - task ready and propagation check subcommands no longer require a session
    
    Docs:
    - README, CHANGELOG, CLAUDE.md updated for v5.1.1
  • v5.1.0

    protected Release: synthesist v5.1.0
    v5.1.0: disposition detail/evidence + tree-wide landscape
  • v5.0.1

    protected Release: Synthesist v5.0.1 — Stale LOCK detection
    v5.0.1: stale LOCK detection, date-independent golden tests
  • v5.0.0

    protected Release: Synthesist v5.0.0 — Temporal Specification Graphs
    Synthesist v5.0.0 — Temporal Specification Graphs
    
    Go CLI with embedded Dolt database, typed command tree (kong), concurrent
    session infrastructure, 7-phase LLM workflow state machine with enforcement,
    and a comprehensive behavioral contract. The human never calls synthesist
    directly — the LLM is the complete mediation layer.
    
    Core:
    - Task DAGs with dependency ordering, acceptance criteria, human gates
    - Stakeholder intelligence with bi-temporal dispositions and signals
    - Propagation chains flagging stale downstream artifacts
    - Retrospective replay with labeled transforms and transferable patterns
    - Campaigns organizing active and backlog specs per tree
    
    Sessions:
    - Dolt branching isolates concurrent LLM sessions in the same directory
    - Row-level merge — two sessions on the same spec merge cleanly
    - Atomic task claim prevents double-claiming across sessions
    - Session prune merges abandoned work before cleanup (7-day default)
    
    State machine (ORIENT → PLAN → AGREE → EXECUTE ↔ REFLECT → REPORT):
    - Phase enforcement in the CLI — wrong operations are rejected, not just discouraged
    - Behavioral contract: session start sequence, display rules, AGREE protocol
    - --force overrides enforcement when needed
    
    LLM-maintainability:
    - Kong struct tags — wrong flags fail to compile
    - Skill file generated from struct reflection + authored behavioral rules
    - Named error constants, golden file tests, golangci-lint zero-warning policy
    - Export/import for backup and recovery (26 tables, idempotent)
    - scaffold command bootstraps new projects (CLAUDE.md, .mise.toml, init)
    
    Security review completed:
    - SQL injection in import fixed (column allowlist validation)
    - All 48 rows.Next() loops check rows.Err()
    - State transitions enforced (task done requires in_progress, block/wait check status)
    - Import validates column names against schema
    
    Sources: Beads/Gastown (Yegge 2026), Graphiti/Zep (bi-temporal), SOAR
    (impasse model), Reflexion (post-execution assessment), OODA, ACT-R.