Skip to content

feat(qir): SQL lowering (MVP) with deterministic output and COALESCE for lists - #42

Merged
flyingrobots merged 81 commits into
mainfrom
feat/qir-sql-lowering-mvp
Oct 6, 2025
Merged

flyingrobots merged 81 commits into
mainfrom
feat/qir-sql-lowering-mvp

Conversation

@flyingrobots

Copy link
Copy Markdown
Owner

Summary\n- Adds QIR → SQL lowering in @wesley/core (SELECT/JOIN/LEFT/LATERAL/ORDER BY/LIMIT/OFFSET).\n- Predicates: null semantics (IS NULL/IS NOT NULL), eq null → IS NULL, IN → = ANY(::<type[]>), contains → @>.\n- JSON helpers: jsonb_build_object, jsonb_agg wrapped with COALESCE(..., '[]'::jsonb).\n- Deterministic ORDER BY: appends stable PK/unique tie-breaker (alias.id) when missing.\n- Unit tests: flat select (NULL + tie-break), nested list (COALESCE jsonb_agg), IN/ANY casting.\n\nNotes\n- Behind --ops; no CLI wiring or emission paths in this PR.\n- Pure module; no Node built-ins; param order via collectParams().\n- No workflow changes.\n\nAcceptance Criteria\n- lowerToSQL handles SELECT, JOIN/LEFT JOIN, LATERAL, ORDER BY, LIMIT/OFFSET.\n- Predicates map correctly incl. null and IN ANY casting.\n- Nested lists use COALESCE(jsonb_agg(...), '[]'::jsonb).\n- Deterministic ORDER BY with PK/unique tie-breaker.\n\nTesting\n- Local: pnpm -C packages/wesley-core test:unit (all core unit tests pass).\n- Sanity: host-node generate still works; no ops wiring changed.\n\nOut of scope (PR B)\n- Emission paths (VIEW/INVOKER) and CLI integration of --ops lowering; HOLMES gating.\n

…r run only unit+snapshots in CI\n- core: fix snapshot tests (SQL generator return type, foreign key directive, unique snapshot names)\n- core: make MockDatabase matching more flexible for advisory lock tests\n- core: port vitest-based FK AST test to node:test\n- workflows: run Claude JSDoc workflow on pull_request, gate on secret to avoid push error
…and test runner behavior\n\n- restore test scripts to vitest or original bats runner in non-core packages\n- remove CI-only filtering from core test runner (selection lives in workflows)\n- keep minimal CI prerequisites (bats + submodules) since main CI runs bats steps\n- keep earlier core test fixes and CLI quick path tweak intact
…dentifiers; orchestrator sets artifacts.sql to string
…fix integration and snapshot tests; update snapshots; make DEFAULT test run unit+integration+snapshots (property tests remain in test:property)\n- cli: skip Bats when plugins are missing; use host-node CLI in CI\n- tasks/slaps/generator-js/scaffold: switch vitest to non-watch and skip when no tests present\n- generator-supabase: run tests with node --test (uses node:test)\n- ci: point CLI model/validate steps to host-node entrypoint\n\nAlso tightened RLS preset plumbing and default handling in SchemaBuilder; fixed default value emission and foreign key alias handling; added safety/lock helpers for property tests (left opt-in).
…ops <dir> option to generate\n- Validates presence of ops directory and common filenames\n- Logs informational message; no generation yet
…der=ops, target=function, RLS reliance=prefer\n- Guardrails: nestedList.requireLimit/requireOrderBy booleans\n- Validates target and rlsReliance
feat(ops): QIR scaffold + --ops flag (doc-only behavior)
docs(rfc): QIR ops→SQL — incorporate maintainer feedback
…y before uploading artifact; align schema apply path
…cit fallback generation when artifact missing
@flyingrobots flyingrobots self-assigned this Oct 6, 2025
@coderabbitai

coderabbitai Bot commented Oct 6, 2025 •

Copy link
Copy Markdown

Caution

Review failed

The pull request is closed.

Summary by CodeRabbit

  • New Features
    • CLI: added validate-bundle; ops folder validation; optional evidence bundle/scores emission; provider-aware up; more robust git/shell integration.
    • Core: deterministic table naming; new PostgreSQL DDL, RPC v2, Zod, migration diff/SQL, repair and rollback generators; QIR nodes, filter compiler, and SQL lowering.
  • Documentation
    • New Quick Start guide; RFC on Query IR to SQL; alignment plan; additional strategy drafts.
  • Examples
    • Updated example schemas to wes_* directives across all samples.
  • CI
    • Streamlined workflows: Node 20, lighter dependency-cruiser via dlx, ESLint-based checks, Ubuntu-only matrix; removed Claude code-review workflow.
  • Tests
    • Added QIR and task system tests; broadened generator/test coverage.

Walkthrough

Broad refactor and expansion: dependency-cruiser and ESLint boundaries tightened; CI workflows simplified and rerouted to Node 20 and host-node entrypoint; directives renamed to wes_*; extensive schema file rewrites; host runtime gains shell and global ctx; CLI gains ops checks and bundle emission; core adds SQL/Zod/pgTAP generators, migration/rollback/repair planners, QIR stack; utilities replace Node built-ins; tests updated accordingly.

Changes

Cohort / File(s) Summary
Architecture boundaries & linters
/.dependency-cruiser.mjs, packages/wesley-core/.eslintrc.cjs
Tightened forbidden imports (incl. node:, buffer), simplified dep-cruiser config with includeOnly/exclude; added ESLint rules to keep core free of Node built-ins.
GitHub Actions workflows
.github/workflows/*
Bump to Node 20; switch to pnpm dlx for dependency-cruiser; streamline CI (single Ubuntu), add Bats install where needed; shift checks to ESLint; rewire CLI invocations to host-node; remove claude-code-review; refine HOLMES flows and artifacts handling.
Docs
docs/drafts/*, docs/guides/quick-start.md, docs/plan-for-alignment.md
Added RFCs and guides for QIR, stack vision, quick start, and alignment plan; no runtime changes.
Directive schema
schemas/directives.graphql
Added canonical @wes_* and alias @wesley_* directives plus legacy forms; expanded args; RLS directive renamed to @wes_rls (and aliases).
Example schemas
example/*.graphql
Migrated directives to @wes_* variants; normalized uid/value args; some additions in schema-v2; RLS/tenant directives renamed.
CLI – commands
packages/wesley-cli/src/commands/*
Moved child_process usage to injected shell; cert sign/verify refactors to use ctx.fs/crypto; generate adds --ops probing and evidence bundle emission; rehearse/up pass ctx and add DSN selection; validate-bundle reworks to use ctx.fs and new constructor.
CLI – program & tests
packages/wesley-cli/src/program.mjs, packages/wesley-cli/test/run-bats.sh
Registers ValidateBundleCommand; test runner skips when Bats/plugins missing.
Host runtime
packages/wesley-host-node/bin/wesley.mjs, .../src/adapters/createNodeRuntime.mjs, .../src/adapters/ConfigLoader.mjs, .../src/adapters/GraphQLAdapter.mjs, .../src/adapters/NodeFileSystem.mjs
Dynamic program import; expose global ctx; add shell exec/execSync; config validates new ops section; directive arg parsing supports INT/FLOAT/BOOLEAN; filesystem gains join().
Core – schema/builders
packages/wesley-core/src/domain/GraphQLSchemaBuilder.mjs, .../Identifier.mjs, .../Schema.mjs
Parse RLS preset earlier; default naming strategy to snake_case; new toTableSQLName; added toAST() for Schema/Table/Field; FK ref supports ref or references.
Core – planning & scoring
.../WesleyOrchestrator.mjs, .../MigrationSafety.mjs
Swap to ScoringEngine API; reuse diffs; more detailed safety/risk/lock methods added.
Core – generators (new)
.../generators/PostgreSQLGenerator.mjs, .../generators/PgTAPTestGenerator.mjs, .../generators/RPCFunctionGeneratorV2.mjs, .../generators/MigrationDiffer.mjs, .../generators/RepairGenerator.mjs, .../generators/RollbackGenerator.mjs, .../generators/TriggerGenerator.mjs, .../generators/ZodGenerator.mjs
Added DDL, tests, RPC functions, migration diff/SQL, repair and rollback planning, triggers for computed/generated columns, and Zod schema generation; evidence integration hooks.
Core – QIR stack (new)
.../qir/Nodes.mjs, .../qir/ParamCollector.mjs, .../qir/PredicateCompiler.mjs, .../qir/lowerToSQL.mjs, .../qir/index.mjs
Introduced minimal Query IR nodes, parameter collection, filter compiler, and SQL lowering; index re-exports.
Core – utilities
.../util/EventEmitter.mjs, .../util/hash.mjs
Added lightweight EventEmitter; non-crypto hashString/randomHex.
Core – recovery/verification
.../recovery/CheckpointManager.mjs, .../recovery/ErrorRecovery.mjs, .../verification/MigrationVerifier.mjs
Removed Node built-ins: swap to local EventEmitter and hash utilities; disable compression; adjust hashing.
Core – analyzers/controllers/progress
.../analyzer/ConcurrentSafetyAnalyzer.mjs, .../control/BackpressureController.mjs, .../progress/ProgressTracker.mjs
Replace EventEmitter import source to internal utility.
Tests – integrations/unit/snapshots
packages/wesley-core/test/**
Update expectations (naming, snake_case/plurals, directive keys), new unit tests for QIR; adapt to new safety structures and rollback shapes; refactor helpers; change fast-check import style.
Monorepo scripts
package.json, packages/*/package.json
Add root eslint devDependency; adjust package test scripts (conditional vitest, node --test, vitest run); add new template package @wesley/stack-supabase-nextjs.
Generators – Supabase
packages/wesley-generator-supabase/src/emit.mjs
Implement real RLS SQL emission from IR (enable RLS, per-op policies).
Repo tests (CLI)
test/cli-*.bats
Point CLI to host-node entrypoint; minor wording and newline tweaks.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  actor Dev
  participant CLI as wesley-host-node CLI
  participant Runtime as createNodeRuntime (ctx)
  participant Core as wesley-core
  participant Gen as Generators (DDL/pgTAP/RPC)
  participant FS as ctx.fs
  Note over Dev,CLI: Generate with optional ops scanning and evidence
  Dev->>CLI: wesley.mjs generate --schema ... [--ops ops]
  CLI->>Runtime: init() -> ctx { fs, shell, ... } (globalThis.wesleyCtx)
  CLI->>FS: read schema
  CLI->>Core: orchestrate(schema, options)
  Core->>Gen: PostgreSQLGenerator/PgTAP/MigrationDiffer
  Gen-->>Core: sql, tests, diff
  Core-->>CLI: artifacts { sql, tests, migration, scores? }
  CLI->>FS: write .wesley/{bundle.json,scores.json,history.json}
  CLI-->>Dev: Done
  Note right of CLI: ops dir is probed (queries.graphql etc.)
Loading
sequenceDiagram
  autonumber
  actor CI
  participant GH as GitHub Actions
  participant Node as Node 20
  participant CLI as wesley-host-node
  participant Lint as ESLint/dep-cruiser
  Note over GH: Simplified pipelines with host-node entrypoint
  CI->>GH: push/PR
  GH->>Node: setup (pnpm, deps, Bats if needed)
  GH->>Lint: boundary checks (dep-cruiser via dlx), ESLint scopes
  GH->>CLI: node .../wesley.mjs generate --schema ...
  alt Bundle exists
    GH->>CLI: holmes investigate/verify/predict via node CLIs
  else Fallback
    GH->>CLI: regenerate bundle with out-dir
  end
  GH-->>CI: reports/artifacts
Loading

Estimated code review effort

🎯 5 (Critical) | ⏱️ ~150 minutes

Possibly related issues

Poem

Steel rules, no fluff, we bend the tree to straight,
New wes_* sigils blaze, schemas iterate.
Generators hum, QIR breathes SQL light,
CI snaps to heel, host-node leads the fight.
Evidence sealed, RLS on guard—
Ship it clean, no mercy. Review hard.


📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 96ac7a4 and 5262728.

⛔ Files ignored due to path filters (18)
  • AGENTS.md is excluded by !*.md
  • README.md is excluded by !*.md
  • architecture.svg is excluded by !**/*.svg
  • holmes.md is excluded by !*.md
  • packages/wesley-core/test/snapshots/__snapshots__/array-and-json-types.default.snap is excluded by !**/*.snap
  • packages/wesley-core/test/snapshots/__snapshots__/basic-table-with-constraints.default.snap is excluded by !**/*.snap
  • packages/wesley-core/test/snapshots/__snapshots__/complex-multi-tenant-schema.default.snap is excluded by !**/*.snap
  • packages/wesley-core/test/snapshots/__snapshots__/indexes-and-constraints.default.snap is excluded by !**/*.snap
  • packages/wesley-core/test/snapshots/__snapshots__/multi-table-with-foreign-keys.default.snap is excluded by !**/*.snap
  • packages/wesley-core/test/snapshots/__snapshots__/rls-policies-and-security.default.snap is excluded by !**/*.snap
  • packages/wesley-core/test/snapshots/__snapshots__/sql-all-data-types.default.snap is excluded by !**/*.snap
  • packages/wesley-core/test/snapshots/__snapshots__/sql-array-and-json-types.default.snap is excluded by !**/*.snap
  • packages/wesley-core/test/snapshots/__snapshots__/sql-basic-table-with-constraints.default.snap is excluded by !**/*.snap
  • packages/wesley-core/test/snapshots/__snapshots__/sql-complex-multi-tenant-schema.default.snap is excluded by !**/*.snap
  • packages/wesley-core/test/snapshots/__snapshots__/sql-indexes-and-constraints.default.snap is excluded by !**/*.snap
  • packages/wesley-core/test/snapshots/__snapshots__/sql-multi-table-with-foreign-keys.default.snap is excluded by !**/*.snap
  • packages/wesley-core/test/snapshots/__snapshots__/sql-rls-policies-and-security.default.snap is excluded by !**/*.snap
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (94)
  • .dependency-cruiser.mjs (3 hunks)
  • .github/workflows/architecture-boundaries.yml (2 hunks)
  • .github/workflows/cert-shipme.yml (2 hunks)
  • .github/workflows/ci.yml (2 hunks)
  • .github/workflows/claude-code-review.yml (0 hunks)
  • .github/workflows/claude-jsdoc.yml (3 hunks)
  • .github/workflows/cli-quick.yml (1 hunks)
  • .github/workflows/cli-tests.yml (1 hunks)
  • .github/workflows/wesley-holmes.yml (5 hunks)
  • docs/drafts/2025-10-03-rfc-query-ops-to-sql-qir.md (1 hunks)
  • docs/drafts/Codex-Ideas.md (1 hunks)
  • docs/guides/quick-start.md (1 hunks)
  • docs/plan-for-alignment.md (1 hunks)
  • example/ecommerce.graphql (1 hunks)
  • example/multi-tenant.graphql (3 hunks)
  • example/rpc-example.graphql (2 hunks)
  • example/schema-v2.graphql (2 hunks)
  • example/schema-with-rls.graphql (6 hunks)
  • example/schema.graphql (4 hunks)
  • package.json (1 hunks)
  • packages/wesley-cli/package.json (1 hunks)
  • packages/wesley-cli/src/commands/cert-create.mjs (1 hunks)
  • packages/wesley-cli/src/commands/cert-sign.mjs (2 hunks)
  • packages/wesley-cli/src/commands/cert-verify.mjs (2 hunks)
  • packages/wesley-cli/src/commands/generate.mjs (4 hunks)
  • packages/wesley-cli/src/commands/plan.mjs (1 hunks)
  • packages/wesley-cli/src/commands/rehearse.mjs (4 hunks)
  • packages/wesley-cli/src/commands/up.mjs (3 hunks)
  • packages/wesley-cli/src/commands/validate-bundle.mjs (4 hunks)
  • packages/wesley-cli/src/program.mjs (2 hunks)
  • packages/wesley-cli/test/run-bats.sh (2 hunks)
  • packages/wesley-core/.eslintrc.cjs (1 hunks)
  • packages/wesley-core/package.json (1 hunks)
  • packages/wesley-core/src/domain/GraphQLSchemaBuilder.mjs (3 hunks)
  • packages/wesley-core/src/domain/Identifier.mjs (2 hunks)
  • packages/wesley-core/src/domain/MigrationSafety.mjs (3 hunks)
  • packages/wesley-core/src/domain/Schema.mjs (3 hunks)
  • packages/wesley-core/src/domain/WesleyOrchestrator.mjs (5 hunks)
  • packages/wesley-core/src/domain/analyzer/ConcurrentSafetyAnalyzer.mjs (2 hunks)
  • packages/wesley-core/src/domain/control/BackpressureController.mjs (2 hunks)
  • packages/wesley-core/src/domain/generators/MigrationDiffer.mjs (1 hunks)
  • packages/wesley-core/src/domain/generators/PgTAPTestGenerator.mjs (1 hunks)
  • packages/wesley-core/src/domain/generators/PostgreSQLGenerator.mjs (1 hunks)
  • packages/wesley-core/src/domain/generators/RPCFunctionGeneratorV2.mjs (1 hunks)
  • packages/wesley-core/src/domain/generators/RepairGenerator.mjs (1 hunks)
  • packages/wesley-core/src/domain/generators/RollbackGenerator.mjs (1 hunks)
  • packages/wesley-core/src/domain/generators/TriggerGenerator.mjs (1 hunks)
  • packages/wesley-core/src/domain/generators/ZodGenerator.mjs (1 hunks)
  • packages/wesley-core/src/domain/progress/ProgressTracker.mjs (2 hunks)
  • packages/wesley-core/src/domain/qir/Nodes.mjs (1 hunks)
  • packages/wesley-core/src/domain/qir/ParamCollector.mjs (1 hunks)
  • packages/wesley-core/src/domain/qir/PredicateCompiler.mjs (1 hunks)
  • packages/wesley-core/src/domain/qir/index.mjs (1 hunks)
  • packages/wesley-core/src/domain/qir/lowerToSQL.mjs (1 hunks)
  • packages/wesley-core/src/domain/recovery/CheckpointManager.mjs (6 hunks)
  • packages/wesley-core/src/domain/recovery/ErrorRecovery.mjs (2 hunks)
  • packages/wesley-core/src/domain/verification/MigrationVerifier.mjs (3 hunks)
  • packages/wesley-core/src/util/EventEmitter.mjs (1 hunks)
  • packages/wesley-core/src/util/hash.mjs (1 hunks)
  • packages/wesley-core/test/helpers/database.mjs (4 hunks)
  • packages/wesley-core/test/helpers/property-testing.mjs (2 hunks)
  • packages/wesley-core/test/integration/concurrent-migration-prevention.test.mjs (3 hunks)
  • packages/wesley-core/test/integration/fk-ast-roundtrip.test.mjs (1 hunks)
  • packages/wesley-core/test/integration/migration-execution.test.mjs (3 hunks)
  • packages/wesley-core/test/integration/migration-rollback.test.mjs (7 hunks)
  • packages/wesley-core/test/integration/rls-idempotency.test.mjs (2 hunks)
  • packages/wesley-core/test/property/migration-lock-levels.test.mjs (2 hunks)
  • packages/wesley-core/test/run-all-tests.mjs (4 hunks)
  • packages/wesley-core/test/snapshots/sql-generation-enhanced.test.mjs (14 hunks)
  • packages/wesley-core/test/snapshots/sql-generator.test.mjs (3 hunks)
  • packages/wesley-core/test/snapshots/test-generator.test.mjs (6 hunks)
  • packages/wesley-core/test/unit/directive-registry.test.mjs (2 hunks)
  • packages/wesley-core/test/unit/qir-lowering.test.mjs (1 hunks)
  • packages/wesley-core/test/unit/qir-nodes.test.mjs (1 hunks)
  • packages/wesley-core/test/unit/qir-param-collector.test.mjs (1 hunks)
  • packages/wesley-core/test/unit/qir-predicate-compiler.test.mjs (1 hunks)
  • packages/wesley-generator-js/package.json (2 hunks)
  • packages/wesley-generator-supabase/package.json (2 hunks)
  • packages/wesley-generator-supabase/src/emit.mjs (1 hunks)
  • packages/wesley-host-node/bin/wesley.mjs (2 hunks)
  • packages/wesley-host-node/package.json (2 hunks)
  • packages/wesley-host-node/src/adapters/ConfigLoader.mjs (3 hunks)
  • packages/wesley-host-node/src/adapters/GraphQLAdapter.mjs (2 hunks)
  • packages/wesley-host-node/src/adapters/NodeFileSystem.mjs (3 hunks)
  • packages/wesley-host-node/src/adapters/createNodeRuntime.mjs (2 hunks)
  • packages/wesley-scaffold-multitenant/package.json (2 hunks)
  • packages/wesley-slaps/package.json (2 hunks)
  • packages/wesley-stack-supabase-nextjs/package.json (1 hunks)
  • packages/wesley-stack-supabase-nextjs/src/.gitkeep (1 hunks)
  • packages/wesley-tasks/package.json (2 hunks)
  • packages/wesley-tasks/test/task-graph.test.mjs (1 hunks)
  • schemas/directives.graphql (3 hunks)
  • test/cli-generators.bats (2 hunks)
  • test/cli-models.bats (2 hunks)

Note

Free review on us!

CodeRabbit is offering free reviews until Wed Oct 08 2025 to showcase some of the refinements we've made.

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions

github-actions Bot commented Oct 6, 2025

Copy link
Copy Markdown

🚢 SHIPME

[REALM] PASS — sha 16fc7ac

@github-actions

github-actions Bot commented Oct 6, 2025

Copy link
Copy Markdown

🔍 The Case of Pull Request #42

🕵️ SHA-lock HOLMES's Investigation

════════════════════════════════════════════════════════════════════
SHA-lock HOLMES Investigation
════════════════════════════════════════════════════════════════════
Generated: 2025-10-06T09:06:43.912Z
Commit SHA: 16fc7ac
════════════════════════════════════════════════════════════════════
⚠️ ALL EVIDENCE HEREIN IS VALID ONLY FOR COMMIT 16fc7ac
════════════════════════════════════════════════════════════════════

🔍 Executive Deduction

"Watson, after careful examination of the evidence, I deduce..."

Weighted Completion: ██████░░░░ 60.0%
Verification Status: 2 claims verified
Ship Verdict: REQUIRES INVESTIGATION

📊 The Weight of Evidence

"Observe, Watson, how not all features carry equal importance..."

Element Weight Status Evidence Deduction
schema 5 ✅ out/schema.sql:1-9999@16fc7ac Elementary!

🚪 Security & Performance Gates

"Elementary security measures, Watson..."

Gate Status Evidence Holmes's Ruling
Migration Risk ✅ MRI: 20.0% "Acceptable risk"
Test Coverage ⚠️ TCI: 70.0% "Insufficient coverage"
Sensitive Fields ✅ 0 fields "All secured"

📋 The Verdict

⚠️ REQUIRES FURTHER INVESTIGATION
"Some clues remain unclear. Address the noted issues."

Signed and sealed,

  • S. Holmes, Consulting Detective

[END OF INVESTIGATION FOR COMMIT 16fc7ac]


🩺 Dr. WATSON's Verification

════════════════════════════════════════════════════════════════════
DR. WATSON'S INDEPENDENT VERIFICATION REPORT
Medical Examination of Evidence
════════════════════════════════════════════════════════════════════
Examination Date: 2025-10-06T09:07:00.998Z
Patient SHA: 16fc7ac
════════════════════════════════════════════════════════════════════

🔬 Citation Verification

"Let me examine each piece of evidence independently..."

  • Citations Examined: 2
  • Verified: 2 ✅
  • Failed: 0 ❌
  • Unable to Verify: 0

Verification Rate: 100.0%

📊 Mathematical Verification

"I shall recalculate Holmes's arithmetic..."

Holmes claimed SCS: 60.0%
Watson calculates: 100.0%
Difference: ⚠️ Significant

🔍 Consistency Analysis

"Checking for contradictions in Holmes's deductions..."

✅ No logical inconsistencies detected

🩺 Dr. Watson's Medical Opinion

VERIFICATION: PASSED ✅

"I have examined Holmes's evidence independently and concur with his"
"deductions. The investigation is thorough and the conclusions sound."

Respectfully submitted,

  • Dr. J. Watson, M.D.
    Medical Examiner & Verification Specialist

🔮 Professor MORIARTY's Predictions

════════════════════════════════════════════════════════════════════
PROFESSOR MORIARTY'S TEMPORAL PREDICTIONS
The Mathematics of Inevitability
════════════════════════════════════════════════════════════════════
Analysis Date: 2025-10-06T09:07:17.912Z
════════════════════════════════════════════════════════════════════

INSUFFICIENT DATA

"I require at least two data points to predict the future."
"Run Wesley generate multiple times to build history."


Filed at 221B Repository Street

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant