[vscode extension]
get the schemas for everything into cursor somehow

[merging]
we should make the property diffs have arrows next to eachother so you can like "undo" certain things
need proper merging support in this UI.
make sure for fully deleted/added files we can use the merge UI as expected.

[syncback]
maybe make syncback automatically create a branch and merge it in, rather than overwriting your project files?
in order to do this, we must make dedup work flawlessly.

[Move tests to dedicated location]
Right now we have a severe amount of tests in the actual implementation files. I'd like to move those to a dedicated location because it's bloating the implementation files.

[Make instance creation/syncing more consistent and levelled up with how rbxsync does it]
* Terrain syncback / sync
* Order of operations (e.g. applying the Tag after full-sync routine complete so that things listening for tag updates get updated after it has been fully constructed, including it's children)
* CSG parts - requires very special handling to reproduce
* MeshPart creation must be done via CreateMeshPartAsync https://create.roblox.com/docs/reference/engine/classes/AssetService#CreateMeshPartAsync
* Special handling props (e.g. Skybox, ColorMap/ColorMapContent stuff)
* MeshId swaps for updates, need to re-create via CreateMeshPartAsync
* Queueing up material updates to properly support MaterialService changes so they appear correctly in studio without having to reboot
* Refer to rbxsync D:\UserGenerated\rbxsync\plugin\src\Serializer.luau and D:\UserGenerated\rbxsync\plugin\src\Sync.luau for reference, this system works correctly for the above use cases.
* You can search that whole rbxsync project for details/information.

[reify]
I noticed that in the reify/encodeInstance/decodeInstance/diff etc system we are not applying tags? Should the tag application / update behavior not be in here?
Tags should be applied once ALL updates have been performed on the instance
Tags should not be applied until EVERYTHING, including refs/attributes/properties are set.
Also, I noticed that attributes were not being doing in that system either, that should be done there I think?
Also, I noticed that it can fail to create an Instance - do we properly handle creating MeshPart's using InsertService?
Do we handle rebuilding CSG parts appropriately?
Do we handle swapping MeshId properly?
Are we performing operations in the correct order?
I feel like we added a lot of sync-logic that was supposed to be in these systems, but was placed elsewhere..
Refer to rbxsync D:\UserGenerated\rbxsync\plugin\src\Serializer.luau and D:\UserGenerated\rbxsync\plugin\src\Sync.luau for reference, this system works correctly for the above use cases.
You can search that whole rbxsync project for details/information.

[--!strict the plugin and make it --!native in hotpaths]
Need to get stuff inlined...
the entire syncing system needs to have it's types corrected and use strict,native,optimize.
we need to optimize the matching system heavily, it's so slow...

[Always mode]
MEDIUM - Issue 5: Ongoing "Always" mode patches don't support per-item selections yet
The existing code at ServeSession.lua line 311-314 explicitly says:
> "Table-type responses from the selection-based UI are not yet handled here. Ongoing WebSocket patches with per-item selections would need the same logic."
So in "Always" mode, ongoing patches currently only support "Accept"/"Abort"/"Skip" -- not per-item push/pull/ignore. The git defaults would be set in the PatchTree but the user can't act on them for ongoing patches. This is a pre-existing limitation, not introduced by us, but worth noting.

[two-way sync-back non scripts with a checkbox?]
we should just two-way sync everything backwards property wise, its really about not forward-syncing properties when that scripts only mode is on..

[testing which actually runs studio, syncs, etc]
we could make an automated testing system which truly simulates opening a place file and syncing to a running server automatically
this would close the gap on testing HEAVILY
use run-in-roblox utility like we use everywhere else.
so this expands beyond just that TestEZ system, where it tests spec files. this is separate from that, but same idea, just expanded upon.

[two way sync]
Make the two-way sync system respect the syncback configuration fully
ensure that live-syncback respects the syncback configuration fully

[refs]
-- Ref properties cannot be encoded during instance addition because the
-- target instance has no server ID yet. They are handled separately by
-- encodePatchUpdate.lua via the InstanceMap.
if descriptor.dataType == "Ref" then return end
I thought we were supposed to generate a uid and then send that table to the server so it can resolve those based on like a client uid?

[cli inspection]
we should make commands for inspecting .rbxl and .rbxm files for ai agents
even inspecting ones from the website directly
could we find an endpoint for downloading the "client side" of any game on the platform for context?

[Crates]
publish as a crate https://crates.io/crates/rojo

[tree reconciling spooky!]
[INFO  librojo::cli::serve] Listening: http://localhost:34873
[INFO  librojo::change_processor] VFS event: WRITE d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau
[INFO  librojo::change_processor] VFS: canonicalize OK for d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau -> src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau
[INFO  librojo::change_processor] apply_patches: path src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau affects IDs [Ref(Some(162268450181648175032536457080084761373))]
[INFO  librojo::change_processor] compute_and_apply_changes: checking path d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau for instance Ref(Some(162268450181648175032536457080084761373))
[INFO  librojo::change_processor] compute_and_apply_changes: path EXISTS via VFS, re-snapshotting d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau
[INFO  librojo::change_processor] VFS event applied: 0 added, 0 removed, 1 updated
[INFO  librojo::change_processor] Tree reconciliation: corrected 4 added, 4 removed (14.0s)
[INFO  librojo::change_processor] VFS event: WRITE d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS: canonicalize OK for d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau -> src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] apply_patches: path src\ReplicatedStorage\Client\Controllers\UI\HUD.luau affects IDs [Ref(Some(294452550321273018071988539960330649902))]
[INFO  librojo::change_processor] compute_and_apply_changes: checking path d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau for instance Ref(Some(294452550321273018071988539960330649902))
[INFO  librojo::change_processor] compute_and_apply_changes: path EXISTS via VFS, re-snapshotting d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS event applied: 0 added, 0 removed, 1 updated
[INFO  librojo::change_processor] VFS event: WRITE src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS: canonicalize OK for src\ReplicatedStorage\Client\Controllers\UI\HUD.luau -> src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] apply_patches: path src\ReplicatedStorage\Client\Controllers\UI\HUD.luau affects IDs [Ref(Some(294452550321273018071988539960330649902))]
[INFO  librojo::change_processor] compute_and_apply_changes: checking path d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau for instance Ref(Some(294452550321273018071988539960330649902))
[INFO  librojo::change_processor] compute_and_apply_changes: path EXISTS via VFS, re-snapshotting d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS event applied: no changes
[INFO  librojo::change_processor] Tree reconciliation: corrected 4 added, 4 removed (12.1s)
[INFO  librojo::change_processor] VFS event: WRITE d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS: canonicalize OK for d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau -> src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] apply_patches: path src\ReplicatedStorage\Client\Controllers\UI\HUD.luau affects IDs [Ref(Some(294452550321273018071988539960330649902))]
[INFO  librojo::change_processor] compute_and_apply_changes: checking path d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau for instance Ref(Some(294452550321273018071988539960330649902))
[INFO  librojo::change_processor] compute_and_apply_changes: path EXISTS via VFS, re-snapshotting d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS event applied: 0 added, 0 removed, 1 updated
[INFO  librojo::change_processor] VFS event: WRITE src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS: canonicalize OK for src\ReplicatedStorage\Client\Controllers\UI\HUD.luau -> src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] apply_patches: path src\ReplicatedStorage\Client\Controllers\UI\HUD.luau affects IDs [Ref(Some(294452550321273018071988539960330649902))]
[INFO  librojo::change_processor] compute_and_apply_changes: checking path d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau for instance Ref(Some(294452550321273018071988539960330649902))
[INFO  librojo::change_processor] compute_and_apply_changes: path EXISTS via VFS, re-snapshotting d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS event applied: no changes
[INFO  librojo::change_processor] Tree reconciliation: corrected 4 added, 4 removed (13.3s)
[INFO  librojo::change_processor] VFS event: WRITE d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS: canonicalize OK for d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau -> src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] apply_patches: path src\ReplicatedStorage\Client\Controllers\UI\HUD.luau affects IDs [Ref(Some(294452550321273018071988539960330649902))]
[INFO  librojo::change_processor] compute_and_apply_changes: checking path d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau for instance Ref(Some(294452550321273018071988539960330649902))
[INFO  librojo::change_processor] compute_and_apply_changes: path EXISTS via VFS, re-snapshotting d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS event applied: 0 added, 0 removed, 1 updated
[INFO  librojo::change_processor] VFS event: WRITE src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS: canonicalize OK for src\ReplicatedStorage\Client\Controllers\UI\HUD.luau -> src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] apply_patches: path src\ReplicatedStorage\Client\Controllers\UI\HUD.luau affects IDs [Ref(Some(294452550321273018071988539960330649902))]
[INFO  librojo::change_processor] compute_and_apply_changes: checking path d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau for instance Ref(Some(294452550321273018071988539960330649902))
[INFO  librojo::change_processor] compute_and_apply_changes: path EXISTS via VFS, re-snapshotting d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS event applied: no changes
[INFO  librojo::change_processor] Tree reconciliation: corrected 4 added, 4 removed (13.5s)
[INFO  librojo::change_processor] VFS event: WRITE d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS: canonicalize OK for d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau -> src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] apply_patches: path src\ReplicatedStorage\Client\Controllers\UI\HUD.luau affects IDs [Ref(Some(294452550321273018071988539960330649902))]
[INFO  librojo::change_processor] compute_and_apply_changes: checking path d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau for instance Ref(Some(294452550321273018071988539960330649902))
[INFO  librojo::change_processor] compute_and_apply_changes: path EXISTS via VFS, re-snapshotting d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS event applied: 0 added, 0 removed, 1 updated
[INFO  librojo::change_processor] VFS event: WRITE src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS: canonicalize OK for src\ReplicatedStorage\Client\Controllers\UI\HUD.luau -> src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] apply_patches: path src\ReplicatedStorage\Client\Controllers\UI\HUD.luau affects IDs [Ref(Some(294452550321273018071988539960330649902))]
[INFO  librojo::change_processor] compute_and_apply_changes: checking path d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau for instance Ref(Some(294452550321273018071988539960330649902))
[INFO  librojo::change_processor] compute_and_apply_changes: path EXISTS via VFS, re-snapshotting d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS event applied: no changes
[INFO  librojo::change_processor] VFS event: WRITE d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS: canonicalize OK for d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau -> src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] apply_patches: path src\ReplicatedStorage\Client\Controllers\UI\HUD.luau affects IDs [Ref(Some(294452550321273018071988539960330649902))]
[INFO  librojo::change_processor] compute_and_apply_changes: checking path d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau for instance Ref(Some(294452550321273018071988539960330649902))
[INFO  librojo::change_processor] compute_and_apply_changes: path EXISTS via VFS, re-snapshotting d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS event applied: no changes
[INFO  librojo::change_processor] VFS event: WRITE src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS: canonicalize OK for src\ReplicatedStorage\Client\Controllers\UI\HUD.luau -> src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] apply_patches: path src\ReplicatedStorage\Client\Controllers\UI\HUD.luau affects IDs [Ref(Some(294452550321273018071988539960330649902))]
[INFO  librojo::change_processor] compute_and_apply_changes: checking path d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau for instance Ref(Some(294452550321273018071988539960330649902))
[INFO  librojo::change_processor] compute_and_apply_changes: path EXISTS via VFS, re-snapshotting d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS event applied: no changes
[INFO  librojo::change_processor] Tree reconciliation: corrected 4 added, 4 removed (14.0s)
[INFO  librojo::change_processor] VFS event: WRITE d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS: canonicalize OK for d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau -> src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] apply_patches: path src\ReplicatedStorage\Client\Controllers\UI\HUD.luau affects IDs [Ref(Some(294452550321273018071988539960330649902))]
[INFO  librojo::change_processor] compute_and_apply_changes: checking path d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau for instance Ref(Some(294452550321273018071988539960330649902))
[INFO  librojo::change_processor] compute_and_apply_changes: path EXISTS via VFS, re-snapshotting d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS event applied: 0 added, 0 removed, 1 updated
[INFO  librojo::change_processor] VFS event: WRITE src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS: canonicalize OK for src\ReplicatedStorage\Client\Controllers\UI\HUD.luau -> src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] apply_patches: path src\ReplicatedStorage\Client\Controllers\UI\HUD.luau affects IDs [Ref(Some(294452550321273018071988539960330649902))]
[INFO  librojo::change_processor] compute_and_apply_changes: checking path d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau for instance Ref(Some(294452550321273018071988539960330649902))
[INFO  librojo::change_processor] compute_and_apply_changes: path EXISTS via VFS, re-snapshotting d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS event applied: no changes
[INFO  librojo::change_processor] Tree reconciliation: corrected 4 added, 4 removed (13.8s)
[INFO  librojo::change_processor] VFS event: WRITE d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS: canonicalize OK for d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau -> src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] apply_patches: path src\ReplicatedStorage\Client\Controllers\UI\HUD.luau affects IDs [Ref(Some(294452550321273018071988539960330649902))]
[INFO  librojo::change_processor] compute_and_apply_changes: checking path d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau for instance Ref(Some(294452550321273018071988539960330649902))
[INFO  librojo::change_processor] compute_and_apply_changes: path EXISTS via VFS, re-snapshotting d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS event applied: 0 added, 0 removed, 1 updated
[INFO  librojo::change_processor] VFS event: WRITE src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS: canonicalize OK for src\ReplicatedStorage\Client\Controllers\UI\HUD.luau -> src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] apply_patches: path src\ReplicatedStorage\Client\Controllers\UI\HUD.luau affects IDs [Ref(Some(294452550321273018071988539960330649902))]
[INFO  librojo::change_processor] compute_and_apply_changes: checking path d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau for instance Ref(Some(294452550321273018071988539960330649902))
[INFO  librojo::change_processor] compute_and_apply_changes: path EXISTS via VFS, re-snapshotting d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS event applied: no changes
[INFO  librojo::change_processor] VFS event: WRITE d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS: canonicalize OK for d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau -> src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] apply_patches: path src\ReplicatedStorage\Client\Controllers\UI\HUD.luau affects IDs [Ref(Some(294452550321273018071988539960330649902))]
[INFO  librojo::change_processor] compute_and_apply_changes: checking path d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau for instance Ref(Some(294452550321273018071988539960330649902))
[INFO  librojo::change_processor] compute_and_apply_changes: path EXISTS via VFS, re-snapshotting d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS event applied: no changes
[INFO  librojo::change_processor] VFS event: WRITE src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS: canonicalize OK for src\ReplicatedStorage\Client\Controllers\UI\HUD.luau -> src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] apply_patches: path src\ReplicatedStorage\Client\Controllers\UI\HUD.luau affects IDs [Ref(Some(294452550321273018071988539960330649902))]
[INFO  librojo::change_processor] compute_and_apply_changes: checking path d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau for instance Ref(Some(294452550321273018071988539960330649902))
[INFO  librojo::change_processor] compute_and_apply_changes: path EXISTS via VFS, re-snapshotting d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS event applied: no changes
[INFO  librojo::change_processor] Tree reconciliation: corrected 4 added, 4 removed (13.0s)
[INFO  librojo::change_processor] VFS event: WRITE d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS: canonicalize OK for d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau -> src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] apply_patches: path src\ReplicatedStorage\Client\Controllers\UI\HUD.luau affects IDs [Ref(Some(294452550321273018071988539960330649902))]
[INFO  librojo::change_processor] compute_and_apply_changes: checking path d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau for instance Ref(Some(294452550321273018071988539960330649902))
[INFO  librojo::change_processor] compute_and_apply_changes: path EXISTS via VFS, re-snapshotting d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS event applied: 0 added, 0 removed, 1 updated
[INFO  librojo::change_processor] VFS event: WRITE src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS: canonicalize OK for src\ReplicatedStorage\Client\Controllers\UI\HUD.luau -> src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] apply_patches: path src\ReplicatedStorage\Client\Controllers\UI\HUD.luau affects IDs [Ref(Some(294452550321273018071988539960330649902))]
[INFO  librojo::change_processor] compute_and_apply_changes: checking path d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau for instance Ref(Some(294452550321273018071988539960330649902))
[INFO  librojo::change_processor] compute_and_apply_changes: path EXISTS via VFS, re-snapshotting d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS event applied: no changes
[INFO  librojo::change_processor] VFS event: WRITE d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS: canonicalize OK for d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau -> src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] apply_patches: path src\ReplicatedStorage\Client\Controllers\UI\HUD.luau affects IDs [Ref(Some(294452550321273018071988539960330649902))]
[INFO  librojo::change_processor] compute_and_apply_changes: checking path d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau for instance Ref(Some(294452550321273018071988539960330649902))
[INFO  librojo::change_processor] compute_and_apply_changes: path EXISTS via VFS, re-snapshotting d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS event applied: no changes
[INFO  librojo::change_processor] VFS event: WRITE src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS: canonicalize OK for src\ReplicatedStorage\Client\Controllers\UI\HUD.luau -> src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] apply_patches: path src\ReplicatedStorage\Client\Controllers\UI\HUD.luau affects IDs [Ref(Some(294452550321273018071988539960330649902))]
[INFO  librojo::change_processor] compute_and_apply_changes: checking path d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau for instance Ref(Some(294452550321273018071988539960330649902))
[INFO  librojo::change_processor] compute_and_apply_changes: path EXISTS via VFS, re-snapshotting d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS event applied: no changes
[INFO  librojo::change_processor] Tree reconciliation: corrected 4 added, 4 removed (13.6s)
[INFO  librojo::change_processor] VFS event: WRITE d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS: canonicalize OK for d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau -> src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] apply_patches: path src\ReplicatedStorage\Client\Controllers\UI\HUD.luau affects IDs [Ref(Some(294452550321273018071988539960330649902))]
[INFO  librojo::change_processor] compute_and_apply_changes: checking path d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau for instance Ref(Some(294452550321273018071988539960330649902))
[INFO  librojo::change_processor] compute_and_apply_changes: path EXISTS via VFS, re-snapshotting d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS event applied: 0 added, 0 removed, 1 updated
[INFO  librojo::change_processor] VFS event: WRITE src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS: canonicalize OK for src\ReplicatedStorage\Client\Controllers\UI\HUD.luau -> src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] apply_patches: path src\ReplicatedStorage\Client\Controllers\UI\HUD.luau affects IDs [Ref(Some(294452550321273018071988539960330649902))]
[INFO  librojo::change_processor] compute_and_apply_changes: checking path d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau for instance Ref(Some(294452550321273018071988539960330649902))
[INFO  librojo::change_processor] compute_and_apply_changes: path EXISTS via VFS, re-snapshotting d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS event applied: no changes
[INFO  librojo::change_processor] Tree reconciliation: corrected 4 added, 4 removed (13.8s)
[INFO  librojo::change_processor] VFS event: WRITE d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau
[INFO  librojo::change_processor] VFS: canonicalize OK for d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau -> src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau
[INFO  librojo::change_processor] apply_patches: path src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau affects IDs [Ref(Some(162268450181648175032536457080084761373))]
[INFO  librojo::change_processor] compute_and_apply_changes: checking path d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau for instance Ref(Some(162268450181648175032536457080084761373))
[INFO  librojo::change_processor] compute_and_apply_changes: path EXISTS via VFS, re-snapshotting d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau
[INFO  librojo::change_processor] VFS event applied: 0 added, 0 removed, 1 updated
[INFO  librojo::change_processor] VFS event: WRITE src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau
[INFO  librojo::change_processor] VFS: canonicalize OK for src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau -> src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau
[INFO  librojo::change_processor] apply_patches: path src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau affects IDs [Ref(Some(162268450181648175032536457080084761373))]
[INFO  librojo::change_processor] compute_and_apply_changes: checking path d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau for instance Ref(Some(162268450181648175032536457080084761373))
[INFO  librojo::change_processor] compute_and_apply_changes: path EXISTS via VFS, re-snapshotting d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau
[INFO  librojo::change_processor] VFS event applied: no changes
[INFO  librojo::change_processor] Tree reconciliation: corrected 4 added, 4 removed (12.5s)
[INFO  librojo::change_processor] VFS event: WRITE d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau
[INFO  librojo::change_processor] VFS: canonicalize OK for d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau -> src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau
[INFO  librojo::change_processor] apply_patches: path src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau affects IDs [Ref(Some(162268450181648175032536457080084761373))]
[INFO  librojo::change_processor] compute_and_apply_changes: checking path d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau for instance Ref(Some(162268450181648175032536457080084761373))
[INFO  librojo::change_processor] compute_and_apply_changes: path EXISTS via VFS, re-snapshotting d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau
[INFO  librojo::change_processor] VFS event applied: 0 added, 0 removed, 1 updated
[INFO  librojo::change_processor] VFS event: WRITE src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau
[INFO  librojo::change_processor] VFS: canonicalize OK for src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau -> src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau
[INFO  librojo::change_processor] apply_patches: path src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau affects IDs [Ref(Some(162268450181648175032536457080084761373))]
[INFO  librojo::change_processor] compute_and_apply_changes: checking path d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau for instance Ref(Some(162268450181648175032536457080084761373))
[INFO  librojo::change_processor] compute_and_apply_changes: path EXISTS via VFS, re-snapshotting d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau
[INFO  librojo::change_processor] VFS event applied: no changes
[INFO  librojo::change_processor] Tree reconciliation: corrected 4 added, 4 removed (12.0s)
[INFO  librojo::change_processor] VFS event: WRITE d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau
[INFO  librojo::change_processor] VFS: canonicalize OK for d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau -> src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau
[INFO  librojo::change_processor] apply_patches: path src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau affects IDs [Ref(Some(162268450181648175032536457080084761373))]
[INFO  librojo::change_processor] compute_and_apply_changes: checking path d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau for instance Ref(Some(162268450181648175032536457080084761373))
[INFO  librojo::change_processor] compute_and_apply_changes: path EXISTS via VFS, re-snapshotting d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau
[INFO  librojo::change_processor] VFS event applied: 0 added, 0 removed, 1 updated
[INFO  librojo::change_processor] VFS event: WRITE src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau
[INFO  librojo::change_processor] VFS: canonicalize OK for src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau -> src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau
[INFO  librojo::change_processor] apply_patches: path src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau affects IDs [Ref(Some(162268450181648175032536457080084761373))]
[INFO  librojo::change_processor] compute_and_apply_changes: checking path d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau for instance Ref(Some(162268450181648175032536457080084761373))
[INFO  librojo::change_processor] compute_and_apply_changes: path EXISTS via VFS, re-snapshotting d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau
[INFO  librojo::change_processor] VFS event applied: no changes
[INFO  librojo::change_processor] Tree reconciliation: corrected 4 added, 4 removed (13.6s)
[INFO  librojo::web::api] Syncback: Updating properties for instance Ref(Some(235969869441813210778056584779662649683)): Source
[INFO  librojo::web::api] Syncback: Updating properties for instance Ref(Some(291040600291607857644497431099122037291)): Source
[INFO  librojo::change_processor] Two-way sync: Writing Source to d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Shared\Traits\Galaxy.luau
[INFO  librojo::change_processor] Two-way sync: Writing Source to d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Shared\Traits\Magma.luau
[INFO  librojo::change_processor] VFS event: WRITE d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Shared\Traits\Galaxy.luau
[INFO  librojo::change_processor] VFS event SUPPRESSED (API syncback echo): d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Shared\Traits\Galaxy.luau
[INFO  librojo::change_processor] VFS event: WRITE src\ReplicatedStorage\Shared\Traits\Galaxy.luau
[INFO  librojo::change_processor] VFS: canonicalize OK for src\ReplicatedStorage\Shared\Traits\Galaxy.luau -> src\ReplicatedStorage\Shared\Traits\Galaxy.luau
[INFO  librojo::change_processor] apply_patches: path src\ReplicatedStorage\Shared\Traits\Galaxy.luau affects IDs [Ref(Some(235969869441813210778056584779662649683))]
[INFO  librojo::change_processor] compute_and_apply_changes: checking path d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Shared\Traits\Galaxy.luau for instance Ref(Some(235969869441813210778056584779662649683))
[INFO  librojo::change_processor] compute_and_apply_changes: path EXISTS via VFS, re-snapshotting d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Shared\Traits\Galaxy.luau
[INFO  librojo::change_processor] VFS event applied: no changes
[INFO  librojo::change_processor] VFS event: WRITE d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Shared\Traits\Magma.luau
[INFO  librojo::change_processor] VFS event SUPPRESSED (API syncback echo): d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Shared\Traits\Magma.luau
[INFO  librojo::change_processor] VFS event: WRITE src\ReplicatedStorage\Shared\Traits\Magma.luau
[INFO  librojo::change_processor] VFS: canonicalize OK for src\ReplicatedStorage\Shared\Traits\Magma.luau -> src\ReplicatedStorage\Shared\Traits\Magma.luau
[INFO  librojo::change_processor] apply_patches: path src\ReplicatedStorage\Shared\Traits\Magma.luau affects IDs [Ref(Some(291040600291607857644497431099122037291))]
[INFO  librojo::change_processor] compute_and_apply_changes: checking path d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Shared\Traits\Magma.luau for instance Ref(Some(291040600291607857644497431099122037291))
[INFO  librojo::change_processor] compute_and_apply_changes: path EXISTS via VFS, re-snapshotting d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Shared\Traits\Magma.luau
[INFO  librojo::change_processor] VFS event applied: no changes
[INFO  librojo::change_processor] Tree reconciliation: corrected 4 added, 4 removed (12.5s)
[INFO  librojo::change_processor] VFS event: WRITE d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau
[INFO  librojo::change_processor] VFS: canonicalize OK for d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau -> src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau
[INFO  librojo::change_processor] apply_patches: path src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau affects IDs [Ref(Some(162268450181648175032536457080084761373))]
[INFO  librojo::change_processor] compute_and_apply_changes: checking path d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau for instance Ref(Some(162268450181648175032536457080084761373))
[INFO  librojo::change_processor] compute_and_apply_changes: path EXISTS via VFS, re-snapshotting d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau
[INFO  librojo::change_processor] VFS event applied: 0 added, 0 removed, 1 updated
[INFO  librojo::change_processor] VFS event: WRITE src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau
[INFO  librojo::change_processor] VFS: canonicalize OK for src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau -> src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau
[INFO  librojo::change_processor] apply_patches: path src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau affects IDs [Ref(Some(162268450181648175032536457080084761373))]
[INFO  librojo::change_processor] compute_and_apply_changes: checking path d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau for instance Ref(Some(162268450181648175032536457080084761373))
[INFO  librojo::change_processor] compute_and_apply_changes: path EXISTS via VFS, re-snapshotting d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau
[INFO  librojo::change_processor] VFS event applied: no changes
[INFO  librojo::change_processor] Tree reconciliation: corrected 4 added, 4 removed (12.3s)

CONSTANTLY happening everytime i modify a file:
[INFO  librojo::change_processor] Tree reconciliation: corrected 4 added, 4 removed (22.1s)

I'm really confused why this was slamming over and over saying 4 added, 4 removed - seems like a bug.
We need to investigate Tree reconciliation, make sure it's parallel, etc.
I'd really like to just reconcile specific paths that were modified - but i'm not sure if that just defeats the purpose.. need to explore this topic later.
Worst case - we reconcile only on connect, but do so in mega-parallel

Also, we need to explore how VSCode deals with this. They seem to have ZERO issues.
Maybe we can have a mode to tie into the vscode file watcher ourselves? luau-lsp does this.

[syncback]
detect when the output file hash is the same, and dont write to it.
we can utilize the git hashes we also use for auto select, too. we use the same format for hashes as git, too - so maybe we could do something optimized here if git is being used.
because have already loaded it, we can detect this.
this is an optimization to avoid writing 100,000 files or something on larger projects when file bytes match perfectly, or directories verifiably already exist.
make sure this is applied to plugin-based syncback, too.

[fix dedup]
dedup is broken due to relying on sort order
recreate broken state by forcing random order in all matching dedup systems of the incoming children list
if it cannot match correctly with randomization, then it is inherently broken
in all 3 matchers, simply randomize the order of the children - this will break the tests.

[mcp]
* atlas_sync
 - Basically equiv to git fast-forward merge
 - Atlas plugin automatically connects (tries every 5s if nothing there, do not spam errors) via https://create.roblox.com/docs/reference/engine/classes/HttpService#CreateWebStreamClient
 - Atlas serve automatically hosts a http based mcp server (NOT stdio based!)
 - Decide whether it's easier to make a separate server from the api.rs file, or integrate it - integrating would be cleaner, but im not sure if it would support without a massive amount of changes
 - When an agent invokes atlas_sync, it invokes Atlas sync from Roblox in the plugin as if the user clicked the sync button
 - Must be on a mutex, so multiple agents cannot invoke it at the same time. Just refuses if it's currently happening
  - Also it needs to refuse it if we're actively connected on the regular api layer too, not just the mcp based command.
  - If we are connected already, respond to the agent with a proper notice. Make sure if we are in connected-mode where all things are syncing automatically all the time, we tell the agent. We need to tell the agent the configuration of the lua plugin probably?
    - If we are in connected-mode we will need to figure out a way to await syncing to finish to ensure state is good?
 - Upon the plugin connecting, if there are NO changes (Always/Initial) it should just immediately accept
 - If all changes are pre-selected, e.g. from our git pre selection system, then we "fast-forward" by clicking accept immediately.
 - If there are actually changes, the agent should hang while waiting for the user to either accept/deny them
 - The output of the mcp request needs to conclude that it was a success and what changes were synced AND if it was rejected + what changes were presented to the user to sync.
  - Let's just give a list of file paths on the actual disk (relative to project so like ReplicatedStorage/SomeFile.luau or ReplicatedStorage/SomeModel.json5 etc) ?
  - Needs to include the DIRECTION, too.
  - I'm not sure what is the most value on this, but we absolutely need to give the agent a response on what was actually synced, ideally what the content was(?), and the directions of sync.
 - Does nothing if we are running in connected-mode (already syncing)
 - Agent should await the completion of this sync before proceeding, this mcp command needs to yield and give the response as described above.

[mcp]
* syncback
 - invokes plugin based syncback
 - ensure this doesn't interrupt the connection of the mcp, since i think we shutdown the api? we should just not shutdown the api or something

[automated review of all changes done, similar to cursor agent review for the game]
it's a discord bot
we send discord channels
some way for users to check off the item in the channel as "fixed"
have the cursor style issue context copyable
this would work by requesting the rbxl from roblox like syncback already does
tag who last modified the file, too if we can - we need to somehow request the version history for a given script file - this is kinda hard, but we should investigate how hard it would be to do via OpenCloud
ideally for the .rbxl downloading, we use OpenCloud so we can use an API key rather than having my personal cookie
inspo: Cursor's "Agent Review" feature
additional inspo: https://cursor.com/dashboard?tab=bugbot
- create an atlast clone of the project
- every ~5 minutes, download and syncback.
 - if there are changes, perform an audit on the diff
 - copy the Agent Review prompt that cursor uses, somehow
 - if there are any issues, send the exact same format that Cursor's Agent Review uses into the discord in a code block
 - agent should also determine a severity (Low/Medium/High/Critical), and if it's Critical - it will @here
- should be really easy to spin these up for other games
 - possibly configurable automatically throgh discord commands?
 - could allow for nice administration like resetting the project from scratch (rm -rf ing it and starting over)
 - reports errors
 - add games via the discord by PlaceId
 - automatically remembers which discord channels to which placeid
 - support multiple discords using the same placeid (runs under like DiscordServerId/PlaceId) or something
 - only allow specific user ids to administer these commands: 176643682689089545 (me), 1010301288946339920 (Tony)
  - alternatively, and this would be better: allow the user to specify their own OpenCloud api key (or cookie if we have to revert to that) to use (make sure providing this is very secure) and then we can let them have at it.
  - need to ensure that only certain perm users can use the bot
  - we need to make sure not just any public server with a bot link can just run this, because it will be using my system resources and could be insecure. this is a proprietary tool.
