Skip to content

Changelog

All notable changes to Mistaber are documented here.

Format based on Keep a Changelog, with a Formal Specification Changes section tracking modifications to the formal model and semantics.

This project adheres to Semantic Versioning.


[Unreleased]


[0.4.0] - 2026-02-07

Summary

Dashboard MVP milestone. The browser-based IDE at ide.mistaber.ai is live with full encoding workflow, ontology visualization, and Claude Code integration. Documentation moved to docs.mistaber.ai.

This release consolidates the v0.3.2–v0.3.4 work into a minor version bump reflecting the scope of changes: a complete web IDE, Docker deployment pipeline, CI/CD automation, and self-hosted documentation.

Added

  • Documentation site deployed to docs.mistaber.ai (moved from GitHub Pages)
  • MkDocs builds via GitHub Actions and rsyncs to droplet
  • DNS, nginx, and Let's Encrypt SSL configured
  • All CI checks passing (lint, format, type-check, tests across Python 3.10–3.12)

Changed

  • site_url updated from brainyblaze.github.io/mistraber/ to docs.mistaber.ai
  • Docs workflow deploys via SSH/rsync instead of mkdocs gh-deploy
  • Deleted gh-pages branch

Fixed

  • 84 ruff lint errors (unused imports, import sorting, trailing whitespace)
  • 62 files reformatted to pass ruff 0.15.0 format check
  • 13 mypy type-check errors (stale type ignores, missing annotations)
  • CI test job now installs dashboard backend dependencies
  • Broken link in contributing docs (CODE_OF_CONDUCT.mdcode-of-conduct.md)

[0.3.4] - 2026-02-06

Added

  • DigitalOcean droplet provisioning (mistaber-ide, fra1, 4 vCPU / 8 GB)
  • DNS A record: ide.mistaber.ai → droplet IP
  • SSL/TLS via Let's Encrypt with automatic renewal (certbot)
  • Host-level nginx reverse proxy with WebSocket support (24h timeout)
  • UFW firewall (SSH + Nginx only)
  • GitHub Actions CI/CD pipeline (.github/workflows/deploy.yml)
  • Automatic deployment on push to main (path-filtered)
  • Manual deployment via workflow_dispatch
  • SCP-based .env upload from GitHub Secrets
  • SSH-based docker compose up --build with health check
  • Concurrency control (single deploy at a time)
  • Startup cleanup of orphaned sessions (worktree path validation)
  • Frontend stale session state clearing on reload

Changed

  • Removed tmux from terminal architecture — direct shell mode (USE_TMUX=0)
  • Fixes mouse/keyboard input conflicts between tmux and xterm.js
  • Claude CLI sessions spawn directly via PTY
  • Docker Compose frontend port changed from 80:80 to 3000:80 (host nginx uses port 80)
  • MCP servers configured with --scope user for global availability across worktrees
  • Entrypoint installs mistaber-skills plugin from local marketplace

Fixed

  • Terminal scroll and input broken when tmux mouse mode enabled
  • Claude CLI not auto-launching in terminal sessions (direct shell mode)
  • Shell crashing when worktree path doesn't exist (fallback to /app)
  • MCP servers not available in worktree-based Claude sessions
  • Stale activeSessionId in localStorage causing phantom terminal connections

[0.3.3] - 2026-02-05

Added

  • Docker deployment for DigitalOcean droplet with managed Postgres
  • Multi-stage frontend Dockerfile (Node build → Nginx reverse proxy)
  • Backend Dockerfile with full encoding toolchain (clingo, asprin, xclingo, tmux, Claude Code CLI)
  • Docker Compose orchestration (frontend + backend, external managed DB)
  • Nginx reverse proxy for GraphQL, WebSocket, REST API, and SPA fallback
  • Entrypoint with Claude Code shared subscription auth (claude setup-token)
  • Alembic migrations run automatically at container startup
  • Environment-driven configuration
  • DATABASE_URL with automatic scheme normalization (postgresql → asyncpg)
  • CORS_ORIGINS for configurable CORS policy
  • JWT_SECRET_KEY for production token signing
  • CLAUDE_TOKEN for shared Claude Code subscription
  • .env.example template for deployment configuration

Fixed

  • DateTime columns now use timezone=True for Postgres compatibility
  • Frontend URLs derive from window.location.origin instead of hardcoded localhost
  • WebSocket terminal connects through nginx proxy in containerized deployments
  • File explorer and tests panel resolve REPO_ROOT via MISTABER_ONTOLOGY env var in Docker
  • Makefile dev target points to correct backend/ path and port 8001

[0.3.2] - 2026-02-05

Added

  • Mistaber Dashboard IDE — browser-based encoding workbench at ide.mistaber.ai
  • VS Code-like layout with Activity Bar, resizable panels, and tabbed editor
  • Session management with 5-phase workflow tracking and phase timeline
  • Ontology visualizer — interactive force-directed graph (D3.js) with domain filtering, search, hover highlighting, and SVG export
  • Coverage dashboard with seif-level heatmap, quality metrics, and 30-day activity timeline
  • Integrated terminal backed by tmux — per-session worktrees, Claude Code agent, persistent across refreshes
  • Query executor for running ASP queries with results display
  • Four validation views: Proof (derivation tree), Narrative, Side-by-Side, and Diff
  • Monaco code editor with Clingo/LP syntax highlighting
  • Command palette (Ctrl+K) and keyboard shortcuts for fast navigation
  • GraphQL API (Strawberry/FastAPI) with 20+ query fields and real-time subscriptions
  • SQLAlchemy database for session state, checkpoints, source chains, and notes
  • JWT authentication
  • Standalone dashboard user guide for encoders (16 documentation files at docs/dashboard/)
  • Sessions, ontology, encoding, coverage, tools, and UI glossary walkthroughs
  • Written for halachic scholars, not developers

[0.3.1] - 2026-01-25

Added

  • mistaber-skills Claude Code plugin for AI-assisted halacha encoding
  • 5-phase encoding workflow: Corpus Prep → HLL Encode → Validate → Review → Commit
  • Human supervision checkpoints at every phase transition
  • Sefaria MCP integration for text corpora access
  • Skills:
    • corpus-prep - Fetch and analyze sources from Sefaria, build derivation chains
    • hll-encode - Transform halachic statements to formal HLL rules
    • validate - ASP compilation, behavioral tests, semantic validation
    • review - Generate review packages for human approval
    • commit - Archive session artifacts and finalize commits
  • Hooks:
    • session-init - Initialize encoding session state
    • phase-gate - Enforce phase transition requirements
    • encoding-guard - Validate HLL syntax before writes
    • sefaria-logger - Log all Sefaria API interactions
    • validation-handler - Run validation on encoding changes
    • checkpoint-enforcement - Require human approval at checkpoints
    • git-commit-guard - Enforce commit message conventions
  • Agents:
    • encoding-orchestrator - Multi-seif encoding coordination
  • Comprehensive documentation site with MkDocs Material
  • Navigation tabs for top-level sections
  • Encoding tutorials and guidelines
  • Plugin documentation with skills, hooks, and agents reference
  • Formal foundations (modal logic, deontic logic, Kripke semantics)

[0.3.0] - 2026-01-21

Added

  • Apache 2.0 open source license
  • pyproject.toml for modern Python packaging
  • CONTRIBUTING.md with development setup guide
  • CODE_OF_CONDUCT.md (community standards)
  • GitHub Actions CI workflow (lint, type-check, test)
  • GitHub issue and PR templates

Changed

  • Renamed package from core to mistaber for PyPI distribution
  • CLI command changed from hsrs to mistaber
  • Updated all documentation with new package name and paths

Fixed

  • Float positioning for all tables and figures in paper

[0.2.0] - 2026-01-19

Added

  • Complete 7-world Kripke DAG with 3-tier inheritance hierarchy
  • Tier 1: base (common halachic ground)
  • Tier 2: mechaber, rema, gra (primary authorities)
  • Tier 3: ashk_mb, ashk_ah, sefardi_yo (modern authorities)
  • Shach and Taz interpretation layers with formal modification predicates
  • adds_condition/3 - adds preconditions to rules
  • removes_condition/3 - removes conditions from rules
  • expands_scope/3 - extends rule applicability
  • Engine API methods:
  • configure() - runtime configuration for world, safek policy, interpretation precedence
  • ask() - boolean queries with policy-aware resolution
  • query_with_completeness() - OWA-aware queries with missing fact detection
  • query_preferred() - asprin-based preference optimization
  • CLI commands:
  • query - query for atoms matching a pattern
  • compare - compare query results across multiple worlds
  • analyze - analyze a scenario (push mode)
  • explain - generate derivation tree explanations
  • machloket - detect disputes between authorities
  • Completeness checking with MissingFact detection for OWA predicates
  • XClingo-based explanation engine with derivation tree generation
  • Kripke validation module for world graph integrity checks
  • Production-grade safek calculus with:
  • safek/5 propagation through derivation chains
  • sfek_sfeika/4 double-doubt handling
  • World-level safek_policy/3 configuration
  • Machloket detection module for cross-world dispute analysis
  • YD 87 (basar bechalav) corpus with complete ruling encodings

Changed

  • Engine initialization now loads interpretation layer rules automatically
  • World files include corpus imports via #include directives
  • Safek resolution respects world-specific policies

Formal Specification Changes

  • Kripke Frame Properties:
  • Non-reflexive: not (w R w) for all worlds
  • Transitive: accessible_transitive/2 computed via closure
  • Antisymmetric: no cycles in world DAG (except via base)

  • Truth Propagation Semantics:

    holds(Prop, W) :- asserts(W, Prop), world(W).
    holds(Prop, W_child) :- accessible(W_child, W_parent),
                            holds(Prop, W_parent),
                            not overridden(Prop, W_child).
    

  • Override Mechanism:

    overridden(Prop, W) :- override(W, Prop, _).
    

  • Interpretation Layer Predicates:

  • adds_condition(Commentator, RuleID, Condition) - rule fires only if Condition holds
  • removes_condition(Commentator, RuleID, Condition) - condition no longer required
  • expands_scope(Commentator, RuleID, Extension) - extends rule applicability

  • Interpretation Precedence:

  • Configured via interpretation_precedence list in EngineConfig
  • Higher index in list wins on conflict
  • Default: ["shach", "taz"]

  • Safek Policies:

  • World-level: safek_policy(W, MadregaLevel, Resolution)
  • Resolution values: l_chumra (stringent), l_kula (lenient)
  • Default: safek_policy(base, d_oraita, l_chumra), safek_policy(base, d_rabanan, l_kula)

  • Madrega Ordering (unchanged from 0.1.0):

    d_oraita > d_rabanan > minhag > chumra
    

Fixed

  • Proper inheritance of safek policies through world DAG
  • Override semantics correctly block inherited propositions
  • Interpretation modifications correctly compose with base rules

[0.1.0] - 2026-01-15

Added

  • HLL (Halachic Logic Language) compiler pipeline
  • Lark-based parser with custom grammar
  • Normalizer for surface syntax expansion
  • Type checker with predicate registry validation
  • ASP code emitter
  • Predicate registry specification
  • 69 predicates across multiple domains
  • 29 sorts (types)
  • 12 enumeration categories
  • CWA/OWA classification per predicate
  • Base ontology schema
  • sorts.lp - sort declarations
  • constraints.lp - integrity constraints
  • disjointness.lp - mutual exclusivity rules
  • Base ontology files
  • substance.lp - food and material properties
  • madrega.lp - normative level hierarchy
  • issur_types.lp - prohibition categories
  • status.lp - status modalities
  • shiur.lp - halachic measurements
  • temporal.lp - time-based reasoning
  • context.lp - normative contexts
  • DSL builtins
  • temporal.lp - time predicates
  • measures.lp - measurement predicates
  • bitul.lp - nullification rules
  • Initial world files
  • base.lp - common ground
  • mechaber.lp - Shulchan Aruch author (Sefardi)
  • rema.lp - Ashkenazi glosses

Formal Specification Changes

  • Initial Formal Model Established:
  • Kripke frame <W, R> where W = set of worlds, R = accessibility relation
  • world/1 declares world membership
  • accessible/2 declares accessibility (inheritance) relation

  • Sort System:

  • Two primary domains: Physical, Normative
  • Physical: food, mixture, vessel, time_point
  • Normative: action, issur_type, madrega, context
  • Subsort relations encoded in schema

  • CWA/OWA Classification:

  • CWA predicates: is_food/1, food_type/2, mixture/1, contains/2
  • OWA predicates: forbidden/4, permitted/4, safek/5

  • Madrega Ordering:

  • Total order: d_oraita > d_rabanan > minhag > chumra
  • Encoded via stronger/2 predicate
  • Transitive closure: stronger_transitive/2

  • Context Hierarchy:

  • ctx_normal (default, most strict)
  • ctx_hefsed (financial loss)
  • ctx_shaat_hadchak (pressing circumstances, most lenient)
  • Monotonic leniency: permitted in strict context -> permitted in lenient

  • Source Attribution Requirement:

  • All normative rules require @makor directive
  • Encodes source citations as makor(RuleID, Source) facts
  • Source types: sa/1, rambam/1, tur/1, gemara/1, rema/1, taz/1, shach/1

Version History Summary

Version Date Highlights
0.4.0 2026-02-07 Dashboard MVP milestone — IDE live, docs site, all CI green
0.3.4 2026-02-06 DigitalOcean deployment, SSL, CI/CD pipeline, terminal fixes
0.3.3 2026-02-05 Docker containerization, managed Postgres, environment config
0.3.2 2026-02-05 Dashboard IDE, ontology visualizer, coverage heatmap, user guide
0.3.1 2026-01-25 mistaber-skills Claude Code plugin, documentation site
0.3.0 2026-01-21 OSS release, Apache 2.0, pyproject.toml, CI/CD
0.2.0 2026-01-19 Kripke gaps, interpretation layer, CLI, 7 worlds
0.1.0 2026-01-15 HLL compiler, predicate registry, base ontology