SPB Git

spb/metrika

Public

Stata-class statistics, GPU-accelerated by Apple Silicon. Native Swift — no Electron, no Python runtime, no compromises.

History of Metrika/Sources Clear filter
page 1
  1. Wed, Aug 5, 2026 7

    1. docs: README with badges, screenshots, and the v1.0 story
      …
      - hero: console session showing cluster-robust factor regression and the
        GPU-batched 10k bootstrap; screenshot grid (Charts by(), Metal 2M,
        data browser, manual)
      - shields badges: release, macOS 14+, Swift 6, arm64, Metal+MLX, 116
        tests, R-validated 1e-10, notarized DMG
      - five-minute tour, feature matrix, numerical-validation section,
        architecture, build instructions, extensibility examples
      - METRIKA_AUTOPANE debug hook (headless pane selection for screenshots)
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      simon-pierre boucher · 1 file +13 −1
    2. feat: v1.0 features — sample datasets, docs site, Metal 2M-point renderer
      …
      - sysuse command with bundled samples (sales: 200-firm x 5-year panel;
        mtcars) shipped as ZQEngine resources, generated by
        scripts/make_samples.R
      - metrika-cli docs: static documentation site rendered from the shared
        command registry (docs/index.html, 38 commands, light/dark); CLI
        restructured with a default 'run' subcommand
      - Metal point-sprite renderer (CLAUDE.md §7 pane 4): packed 12-byte
        vertices, unified-memory buffer written once, scroll-pan /
        pinch-zoom / double-click-reset touching only a 24-byte uniform;
        takes over scatter plots past 100k points (METRIKA_METAL_THRESHOLD
        override for tests); verified rendering 2,000,000 points in-app
      - METRIKA_AUTORUN debug hook for headless app driving
      - MARKETING_VERSION 1.0.0
      - 116 kit tests + 4 UI tests green
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      simon-pierre boucher · 4 files +314 −1
    3. feat(app): user manual — in-app reference and console help
      …
      - ZQCommandReference: one registry of every command (syntax, options,
        examples, notes) shared by the console and the app so they cannot
        drift; 35 commands across 10 categories
      - console: 'help' lists the reference by category, 'help <command>'
        (abbreviations resolve too) renders the full entry
      - app: Manual pane — searchable sidebar grouped by category, per-command
        pages (syntax/options/examples), and a 'How Metrika works' overview
        covering the command grammar, data handling, estimation conventions,
        the CPU/GPU planner, reproducibility, and user commands
      - release plumbing: real team ID + notary keychain-profile NAME in
        release.sh (both configuration, not credentials, per the security
        conventions), manual Developer ID signing with hardened runtime,
        -skipPackagePluginValidation, DMG background art
      - tests: help coverage test pins a manual entry for every implemented
        verb; UI smoke drives the Manual pane; 106 green
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      simon-pierre boucher · 2 files +236
    4. feat(plugins): harden the user-command protocol
      …
      - fix: script-command verbs were routed AFTER parsing, which rejects
        unknown verbs — .zyq commands could never run; they now route before
        the parser with raw macro arguments
      - .zyq scripts: ado-style 'args name…' declaration with backtick macro
        substitution (`0', `k', `name'); scratch-variable scripts verified
        end-to-end against the built-in path
      - ZQPluginRegistry: verb-keyed native plugin registry; verbs shadowing
        built-ins rejected at session start; parsed commands validated against
        the declared ZQSyntaxSpec (varlist/if/in/weights/options)
      - mutation gating: plugins return a replacement dataset via
        ZQResult.replacementFrame, installed only under 'mutates: true' — a
        non-mutating plugin returning one is an error and the dataset is
        untouched (ZQContext is now a plain value, no writable back-channel)
      - ZScorePlugin ships as the reference native plugin, registered by the
        app ('zscore varname' -> standardized z_varname)
      - CLAUDE.md: document the mlx-swift build quirks (xcodebuild for GPU
        tests, -skipPackagePluginValidation everywhere)
      - 87 tests green (swift test and xcodebuild with GPU suites); app builds
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      simon-pierre boucher · 1 file +4 −1
    5. feat(ui): data browser and do-file editor panes
      …
      - DataBrowserPane (§7 pane 3): NSTableView bridge (natively virtualized),
        sortable columns with missing-last ordering, observation-number gutter,
        filter bar compiled to an if-expression through the real parser
        (ZQCommandParser.parseExpression + ZQSession.conditionMask are the new
        public entry points)
      - DoFileEditorPane (§7 pane 2): NSTextView bridge with ZQL highlighting
        (verbs resolved via ZQVerbTable, comments, strings), run selection or
        file with Cmd-R through the shared session path, open/save .zyq
      - ContentView: segmented Console / Data / Do-file switcher in the toolbar
      - UI smoke extended: pane switching, filter narrowing (2 of 5 obs),
        do-file run surfacing in the console and sidebar
      - 61 kit tests + 2 UI tests green
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      simon-pierre boucher · 4 files +569 −6
    6. test(ui): add XCUITest console smoke per CLAUDE.md §9
      …
      - MetrikaUITests target (xcodegen scheme test action)
      - launch-environment hook (DEBUG only): sandboxed app materializes the
        test CSV in its own container, since the runner cannot stage files
        across the sandbox boundary reliably
      - queries predicate on AX 'value' (SwiftUI Text exposes value, not label)
      - smoke: launch, auto-load dataset, type gen + reg robust, assert
        regression table and sidebar variable
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      simon-pierre boucher · 1 file +11
    7. feat: bootstrap Metrika v0.1 skeleton with working ZQL vertical slice
      …
      - MetrikaKit SPM package: ZQParser, ZQPlanner, ZQEngine, ZQData, ZQStats,
        ZQGPU, ZQGraphics, ZQPlugins (Swift 6, strict concurrency)
      - ZQL parser: lexer, Pratt expressions, factor variables, prefix commands,
        column-cited errors with Levenshtein verb suggestions
      - ZQData: DuckDB-backed load/save (parquet, csv, json, arrow)
      - ZQStats: OLS via LAPACK QR, HC0-HC3 and cluster-robust SE, summarize,
        t/F distributions accurate in the far tails
      - ZQGPU: Philox4x32-10 reference RNG, counter-addressable bootstrap
      - ZQEngine: session actor with use/save/gen/replace/drop/keep/summarize/
        regress/count/list/graph/bootstrap/set seed/xtset/log
      - SwiftUI app (xcodegen): console with history, variables sidebar,
        Swift Charts plots; sandboxed + hardened runtime entitlements
      - Tests: 44 green (parser golden, R fixtures at 1e-10, Philox KAT,
        end-to-end engine); Tests/Fixtures/generate.R; Tests/Bench harness
      - scripts: check_headers.sh + pre-commit hook, make_icns.sh, release.sh
      
      Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
      simon-pierre boucher · 4 files +306
Menu

Theme