Skip to content

Add Plan for row process graph#599

Open
caroott wants to merge 1 commit intomainfrom
RowProcessGraph
Open

Add Plan for row process graph#599
caroott wants to merge 1 commit intomainfrom
RowProcessGraph

Conversation

@caroott
Copy link
Copy Markdown
Member

@caroott caroott commented Mar 17, 2026

Summary

Adds RowProcessGraph.md, a detailed implementation plan for a new row-process graph editing model for ARCtrl.

The plan describes a Fable-compatible intermediate type for editing ArcInvestigation tables while preserving roundtrip fidelity. It treats each physical table row as one process-row, derives connectivity from IO name equality, supports lineage-aware grouping, and keeps row order stable.

Planned Capabilities

  • Table-local and selection-scoped grouping
  • Successive regrouping and grouped edits
  • Support for partial tables without both IO columns
  • Source-row materialization workflows:
    • create downstream rows from selected outputs
    • create new downstream tables from selected outputs
    • branch new outputs from existing inputs, including input-only rows
  • Writeback into the default ARCtrl table model

API Direction

The plan defines:

  • public graph types and error model
  • table and selection grouping views
  • row editing and column creation APIs
  • source-row materialization helpers
  • roundtrip/writeback behavior
  • implementation sequence and acceptance criteria

Notes

This is a plan/spec only. It does not yet implement the row-process graph.

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Adds a detailed implementation plan (RowProcessGraph.md) for a new row-process graph editing model for ARCtrl, defining types, API, grouping/editing semantics, and a phased implementation sequence.

Changes:

  • Introduces a comprehensive spec for treating each physical ArcTable row as a process-row with IO-name-based connectivity
  • Defines public Fable-safe API surface, error model, grouping engine, and source-row materialization helpers
  • Lays out a 10-phase implementation sequence with acceptance criteria

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Create a Fable-compatible intermediate editing model for `ArcInvestigation` that:

- preserves `ArcTable` roundtrip fidelity,
- treats each physical table row as one editable process-row,
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

If you want to align with ISA processes, you can unify a lot of information by not making each row a row, but instead use connected nodes. Exmp. If you have 10 different inputs, each with the same organism, they can all map to that organism node. So i think the rows can designed more flexible. There was an approach to this done by oliver and timo, in which they designed some triplet type using Header type, header info and value.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

This also has the added benefit to better support fan-in/fan-out as the focus on input/output has more weight

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

i thought about that but wanted to keep full flexibility for editing if needed. that's why i chose to do it like this

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I do not see what flexibility we loose with the approach i suggested?

- avoid .NET-specific interfaces in the public surface
- Internal implementation may use mutable dictionaries and caches
- Row order must remain stable and reflect original physical table order
- The model is editor-oriented and should expose renderer-friendly row/table views
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

This step is not required. Instead i would recommend it should have "lazy read features" or "performant access"

Out of scope for v2:

- replacing existing `ProcessSequence` conversion APIs
- persistent UI state or rendering logic
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

what?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

UI and rendering are part of ARCitect and existing conversions shouldn't be replaced since this is added on top

Copy link
Copy Markdown
Collaborator

@Freymaurer Freymaurer Mar 18, 2026

Choose a reason for hiding this comment

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

ARCtrl should not have anything related to UI?

EDIT: I mean currently, so is this just here to tell the agent "nono! ui will be somewhere else"?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Yes


## 4) Locked Decisions

- Canonical unit: `1 row = 1 process-row`
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

see above

## 4) Locked Decisions

- Canonical unit: `1 row = 1 process-row`
- Physical row order is semantically relevant for editor presentation and must stay stable
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

not sure for this feature,

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

if people use this to edit their tables it could be irritating if rows start to swap as soon as something is added

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I think if people use this editor this can be expected. Depending on the changes it will kill sorting anyways. IN UI we can add a warning "This action will make changes to the following tables: ... -> Confirm?"

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

but if we can prevent it, wouldn't it be better?

- assign new output names to those new rows
- allow branching inside an existing table or into another target table
- the source rows may already have outputs, or may currently have no output at all

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

maybe add: quickly create new table flows (multiple tables. setting param/chara/factor/component then expanding on inputs and outputs for the freshly created flow)

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

as 5.9 i mean


### 6.1 Row Model

- Each included physical row becomes one row node
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

so each row-node is only one table, and these row nodes are connected via input/output? in think the idea of having process node triplets that each store container and table source without replicated copies is something i prefer more.

@caroott caroott requested a review from muehlhaus March 18, 2026 11:40
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