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

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)
@jmchilton
jmchilton / CWL_RECORD_OUTPUT_SECONDARY_FILES.md
Created February 24, 2026 14:55
CWL Secondary Files in Output Records

CWL Secondary Files in Output Records

Test

test_conformance_v1_1_secondary_files_in_output_records (xfail in v1.1 and v1.2)

CWL Tool

test/functional/tools/cwl_tools/v1.1/tests/record-out-secondaryFiles.cwl:

@jmchilton
jmchilton / CWL_EXTRA_PROPERTIES_PROBLEM.md
Created February 24, 2026 01:56
CWL Extra Properties in Job JSON

CWL Extra Properties in Job JSON

Problem

Failing test: test_conformance_v1_2_nested_prefixes_arrays

err_msg: "2 validation errors for binding-test.cwl (request model)
  min_std_max_min - Extra inputs are not permitted
 minimum_seed_length - Extra inputs are not permitted"