Skip to content

Proposed plan for new version of the App#5

Open
gvegayon wants to merge 4 commits intomainfrom
gvegayon/plan
Open

Proposed plan for new version of the App#5
gvegayon wants to merge 4 commits intomainfrom
gvegayon/plan

Conversation

@gvegayon
Copy link
Member

@gvegayon gvegayon commented Mar 6, 2026

Here is the proposed plan for the app. This is loosely written to include functions and tasks that we need to address. Ideally, we can identify some well-defined tasks by Tuesday, March 10th, and start working on them. Please let's continue here. I will close #2 for the moment.

attn @EddW1219 @olivia-banks @JakeWags

plan.md Outdated
- A way to describe what defines a column, for instance, a column could be number of cases, number of days of isolation.

- Function to validate the yaml file:
1. Validate the yaml file (need to write a yaml schema + validator?). If not, then just check the dictionary.
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@olivia-banks
Copy link
Member

The sample I wrote is actually JS, not YAML, back when I thought the goal was a DSL. I'm going to open a PR to rectify this :-)

@olivia-banks
Copy link
Member

I'm going to drop some resources here that I might may be useful to consider when doing more local code work.

  • CPython AST (walk): https://docs.python.org/3/library/ast.html

    So probably walking, looking for Names to build the execution graph, and only allowing a section of allowed stuff from that list. Might not need to do anything too complicated here since this is running in WASM anyways.

  • Generate Figures: https://docs.streamlit.io/develop/api-reference/charts

    I know the plan shows matplotlib, but it may be worth considering using Streamlit's inbuilt graphing functionality to simplify things.

  • Generate PDFs: This might be where we need to be careful; since this is running in WASM, that limits what dependencies we can pull in (haven't looked extensively).

    It might be worth trying to find a REST API to do this report generation, or deal with some sort of intermediate format like TeX (since the direct-to-PDF space seems to be dominated by software that might need to be paid for, like ReportLab).

    There's also the option of emitting HTML directly, and seeing if we can use the browser APIs to convert this to a PDF (I think I've seen this in the wild, but I don't know how doable this is).

  • Functionality to temporarily store the models: Probably localstorage or similar? Unsure if Streamlit provides an API to this effect.


Also, was there a consensus that was reached about work split and how this planning/implementation is going to go forward?

@gvegayon
Copy link
Member Author

gvegayon commented Mar 6, 2026

I'm going to drop some resources here that I might may be useful to consider when doing more local code work.

  • CPython AST (walk): https://docs.python.org/3/library/ast.html
    So probably walking, looking for Names to build the execution graph, and only allowing a section of allowed stuff from that list. Might not need to do anything too complicated here since this is running in WASM anyways.
  • Generate Figures: https://docs.streamlit.io/develop/api-reference/charts
    I know the plan shows matplotlib, but it may be worth considering using Streamlit's inbuilt graphing functionality to simplify things.
  • Generate PDFs: This might be where we need to be careful; since this is running in WASM, that limits what dependencies we can pull in (haven't looked extensively).
    It might be worth trying to find a REST API to do this report generation, or deal with some sort of intermediate format like TeX (since the direct-to-PDF space seems to be dominated by software that might need to be paid for, like ReportLab).
    There's also the option of emitting HTML directly, and seeing if we can use the browser APIs to convert this to a PDF (I think I've seen this in the wild, but I don't know how doable this is).
  • Functionality to temporarily store the models: Probably localstorage or similar? Unsure if Streamlit provides an API to this effect.

Also, was there a consensus that was reached about work split and how this planning/implementation is going to go forward?

Thanks for your suggestions, @olivia-banks. The plan is to pin down the first stream of tasks by our next development meeting on Tuesday.

@copilot, can you add @olivia-banks's suggestions to the document? Other things I would like you to do are the following:

  • From what I am reading, most of the tasks can be described as functions. For those that i is suitable, let's do exactly that. Rephrase the task and highlight (a) what is the expected input (which could be the output from another function), and (b) what is the expected output.

  • Also, a couple of other tasks that need to be added to the plan: (a) Update the branch protection rules to only accept changes via PRs, (b) comeup with an AGENTS.md file (draft a simple one), (c) create a GitHub Actions workflow to be used by the agent (its environment), (d) create a GitHub Actions workflow to test the code (this should set up the environment using uv), (e) Create a devcontainer environment for the project. Again, do not create any of these files, just list them as other tasks that need to be addressed.

Copy link

Copilot AI commented Mar 6, 2026

@gvegayon I've opened a new pull request, #7, to work on those changes. Once the pull request is ready, I'll request review from you.

…diagram, and project scaffolding tasks (#7)

* Initial plan

* Update plan.md: function signatures, olivia-banks suggestions, new tasks

Co-authored-by: gvegayon <893619+gvegayon@users.noreply.github.com>

* Clarify YAML validation step wording in plan.md

Co-authored-by: gvegayon <893619+gvegayon@users.noreply.github.com>

* Add function summary table and Mermaid dependency diagram to plan.md

Co-authored-by: gvegayon <893619+gvegayon@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: gvegayon <893619+gvegayon@users.noreply.github.com>
@olivia-banks
Copy link
Member

Dropping the Mermaid here so it's more visible:

flowchart TD
    subgraph INFRA["🏗️ Infrastructure — finalize first"]
        direction LR
        BP["Branch protection rules"]
        AG["AGENTS.md"]
        DC["Devcontainer"]
        GH_CI["GitHub Actions: CI testing (uv)"]
        GH_AG["GitHub Actions: agent environment"]
        DC --> GH_CI
        DC --> GH_AG
    end

    subgraph FUNC["💻 Function implementation"]
        STLITE["Setup stlite framework"]
        VY["validate_yaml()"]
        BM["build_menu()"]
        WP["watch_parameters()"]
        RM["run_model()"]
        GR["generate_report()"]
        PDF["save_as_pdf()"]
        SMS["store_model_state()"]
        SCM["save_current_model()"]

        STLITE --> VY
        VY --> BM
        BM -.->|"user values"| WP
        VY -->|"model_dict"| WP
        WP --> RM
        RM --> GR
        GR --> PDF
        WP --> SMS
        WP --> SCM
    end

    INFRA ==> FUNC
    ```
Loading

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.

3 participants