Skip to content

Instantly share code, notes, and snippets.

View jmchilton's full-sized avatar

John Chilton jmchilton

  • Penn State University
  • Pittsburgh, PA
  • X @jmchilton
View GitHub Profile
@jmchilton
jmchilton / workflow_state_competitive_research.md
Created April 1, 2026 14:35
GCC2026: Workflow State Validation competitive research & corrected executive summary

Workflow State Validation: Competitive Research & Executive Summary

Context

Reviewing the executive summary for Galaxy's workflow state validation work (for GCC2026 talk prep). The original summary made strong claims about competing projects that needed fact-checking.


Research Findings: Competitor Overclaims

@jmchilton
jmchilton / workflow_semantics_facts.yml
Created March 21, 2026 18:25
Galaxy Workflow Semantics Facts - behavioral documentation with test mappings
# Workflow Semantics - Discovered Facts
# Each record: test (identifier), fact (behavioral description), context (utility for a semantics doc)
# =============================================================================
# OPTIONAL DATA INPUTS
# =============================================================================
- test: test_workflows.py::test_run_with_optional_data_specified_to_multi_data
fact: Optional data input when provided is consumed normally by multi-data tool.
context: Positive baseline example for optional data input behavior.

New Chat Button Bug

Summary

"New Chat" button in ChatHistoryPanel sidebar is a no-op when user is already on /chatgxy (no exchange ID in URL).

Root Cause

ChatHistoryPanel.vue:67-75 does router.push("/chatgxy") to start a new chat. Vue Router ignores navigation to the current route, so nothing happens when already at /chatgxy.

Unit Test Review: SidebarList & useSidebarSelection

Overall Assessment

Both test files are solid. All 8 mutation experiments were caught (8/8), confirming these tests actually verify real behavior rather than being auto-generated fluff.

SidebarList.test.ts

Tests to consider eliminating:

@jmchilton
jmchilton / IMPLEMENTATION_PLAN.md
Created March 5, 2026 16:29
Subcollection Mapping & DCE Modeling: Problem, Goal & Implementation Plan

Implementation Plan: Subcollection Mapping & DCE Modeling

Phase 1: Schema Modeling (parameters.py)

1a. Add map_over_type to BatchDataInstance and BatchDataInstanceInternal

Currently BatchDataInstance (line 534) and BatchDataInstanceInternal (line 883) are simple {src, id} models. Add map_over_type: Optional[str] = None to both. Use Optional[str] — consistent with how collection_type is modeled elsewhere.

This is the core request-layer gap — map_over_type is how clients express subcollection mapping intent in batch values, but the schema doesn't model it.

@jmchilton
jmchilton / chat-history-architecture-evaluation.md
Last active March 5, 2026 15:43
Chat history architecture evaluation: SidebarList primitive vs parameterized ChatHistoryPanel

Chat History Architecture Evaluation: SidebarList vs Parameterized ChatHistoryPanel

Prompt

We implemented a SidebarList extraction in 79678d08d5. Can we evaluate the refactoring plan (CONVERGE_CHAT_HISTORY_PLAN.md) versus just parameterizing ChatHistoryPanel and using it in both places? Is that viable? What are the blockers? What results in better structure?

Analysis

Approach A (Current Plan): SidebarList Primitive + Thin Consumers

@jmchilton
jmchilton / CWL_CONDITIONALS_PICK_VALUE_COMPARE.md
Created February 28, 2026 17:19
CWL Conditional (pickValue) Support in Galaxy — Status, Plans, and Comparison

pickValue Implementation: Approach Comparison

Executive Summaries

Approach A — Synthetic Tool Steps: During CWL import, inject Galaxy's bundled pick_value expression tool as a synthetic workflow step for each workflow output that uses pickValue. The tool already handles first_non_null (via first_or_error) and the_only_non_null (via only). Parser-only change — no model migrations, no runtime changes. Does NOT cover all_non_null (tool can't return arrays/collections). Estimated 1-2 files touched in parser.py.

Approach B — Native Framework Support: Add a pick_value column to the WorkflowOutput model, create duplicate-label WorkflowOutput objects across source steps, then post-process pickValue semantics in run.py after all steps complete. Covers all three modes including all_non_null. Requires DB migration, model changes, parser changes, import changes, runtime changes, and export changes. Estimated 5-7 files touched.

Pros/Cons

Fix CWL Docker-Only Tests (Category 4)

Problem

Two conformance tests require Docker container execution:

  1. test_conformance_v1_0_dockeroutputdir — Tool docker-output-dir.cwl uses dockerOutputDirectory: /other, runs touch /other/thing. Without Docker, /other doesn't exist.
  2. test_conformance_v1_0_docker_entrypoint — Tool docker-run-cmd.cwl with bash:4.4.12 image. Command is -c 'echo moo' > cow relying on Docker ENTRYPOINT (bash). Without Docker, -c is "command not found".

Root Cause

@jmchilton
jmchilton / HISTORY_MARKDOWN_AGENT_SWITCHING.md
Created February 26, 2026 15:01
Agent Switching in Notebook Chat Panel

Agent Switching in Notebook Chat Panel

Problem

The notebook chat panel hardcodes agent_type = "notebook_assistant". The notebook assistant is good at document editing but knows nothing about Galaxy's visualization plugin system, Vega-Lite spec generation, or chart type recommendations. Users doing data exploration want AI help picking and configuring visualizations — a different skill set from "rewrite my Methods section."

Current State (Why This Is Easy)

The architecture already supports multi-agent at every layer except one frontend constant:

@jmchilton
jmchilton / TOOL_RUNTIME_TIMELIMIT_PLAN.md
Created February 24, 2026 18:09
Tool Runtime Timelimit Plan

Tool Runtime Timelimit Plan

Problem

CWL conformance test test_conformance_v1_2_timelimit_basic is a false green - it passes because a broad exception handler (lib/galaxy_test/base/populators.py:3191-3194) catches an unrelated failure, not because Galaxy actually enforces the ToolTimeLimit requirement. Galaxy declares ToolTimeLimit in SUPPORTED_TOOL_REQUIREMENTS but never extracts, propagates, or enforces the timelimit value.

Goal

  1. Add timelimit as a first-class resource requirement in Galaxy XML/YAML tools (non-CWL)
  2. Wire it through the existing resource requirements infrastructure (which implicitly reaches TPV)