JsonPit 4.2.4
dotnet add package JsonPit --version 4.2.4
NuGet\Install-Package JsonPit -Version 4.2.4
<PackageReference Include="JsonPit" Version="4.2.4" />
<PackageVersion Include="JsonPit" Version="4.2.4" />
<PackageReference Include="JsonPit" />
paket add JsonPit --version 4.2.4
#r "nuget: JsonPit, 4.2.4"
#:package JsonPit@4.2.4
#addin nuget:?package=JsonPit&version=4.2.4
#tool nuget:?package=JsonPit&version=4.2.4
JsonPit
JsonPit change requests and release notes are centralized in the RAIkeep doc/ directory under JsonPit_... filenames; they are not stored separately in this child repository.
Stores JsonPits, json files with a value history, across machines/servers ("eventually persistent").
Start Here
If you want to use JsonPit 4.2.4 from NuGet in another service or agent workflow, start with GettingStarted.md.
That guide now covers:
- package setup for
JsonPit,RaiUtils, andOsLibCore - current
PitandPitItemusage patterns - the recommended long-lived in-memory server usage pattern
- querying and enumeration patterns that are actually supported
- persistence and synchronized-storage expectations
- a practical
PersonPitexample for OTW / AfricaStage style backend work
4.2.4
- Aligns JsonPit with the coordinated seven-package RAIkeep 4.2.4 release implementing accepted CR016.
- Preserves the CR015 nested tombstone and explicit nested-deletion contracts unchanged.
- Aligns fallback dependencies on
OsLibCore 4.2.4andRaiUtils 4.2.4. - Current release notes: JsonPit_RELEASE_NOTES_4.2.4.md
4.2.3
- Implements accepted CR015 nested property tombstones at arbitrary depth.
- Adds
PitItem.DeletePropertyPath(...)without changing literal dotted-name behavior inDeleteProperty(...). - Projected reads and exports omit tombstoned nested properties and recursively prune newly empty parent containers while preserving append-only history.
- Aligns on
OsLibCore 4.2.3andRaiUtils 4.2.3. - Makes
UseLocalRAIkeepSources=falsean explicit package-only boundary so release validation cannot silently resolve sibling projects. FileSystemWatchercallbacks and debounce work now use weak ownership so an abandonedPitcan be collected and its canonical path reopened.- The
Pitfinalizer still performs no recovery publication, watcher disposal, or filesystem I/O. - The remote synchronization suite now waits for authority-record contents rather than only a materialized
Master.flagpathname. - Keeps the WWWA-based quick-start section in GettingStarted.md for cloud-path pit creation and sample JSON5 seeding.
- The supported cloud-backed provider claim is
Dropbox,OneDrive,GoogleDrive, andICloudDrive. PitItem.Idis now the canonical framework identifier.- Legacy payloads that still contain
NamewithoutIdare normalized internally by copyingNameintoId, while preservingName. - Future use of
Nameas an application-defined custom field remains supported. PitItem.DeleteProperty(...)now projects top-level null tombstones as absent attributes instead of leaking a permanent null shadow.- Remote-sync workflows continue to align with OsLib's configurable metadata propagation delay handling, including the
mkdirpolymorphism package line update in OsLib. - No JsonPit API changes were required beyond the
3.12.0line; this release refreshes the aligned package baseline and packaged docs. - Live docs and release-note pointers were refreshed for the
4.2.3release line, and this README is packaged with the NuGet release.
namespace
JsonPit
classes
ItemsBase: Base container holding a key identifier for item groups.
- ItemsBase:
Key
JsonPitBase: Common base for pits with config, flags, and persistence helpers.
- JsonPitBase:
ReadOnly,Backup,RunningOnMaster,MasterUpdatesAvailable,TryReleaseProcessWindow,ChangeDir,JsonFile
TimestampedValue: Value with an attached timestamp and round-trip string format.
- TimestampedValue:
Value,Time,ToString
MasterFlagFile: Flag file used to track master ownership and last update time.
- MasterFlagFile:
Originator,Time,Update
ProcessFlagFile: Flag file used to track the current process and last update time.
- ProcessFlagFile:
Process,Update,CurrentProcessId,CurrentFlagName,IsOwnedByCurrentProcess,TryReleaseCurrentProcess - Activity filename:
{MachineName}-{Subscriber}-{PID}.flag; the PID makes ownership process-specific. - Explicit release verifies the current process identity and expires the flag in place without deleting the cloud-synced file.
- Process activity windows and master writer tickets are separate; releasing the former never releases the latter.
PitItem: JSON-backed item with metadata and change tracking.
- PitItem:
Id,Modified,Deleted,Note,SetProperty,Merge,DeleteProperty,DeletePropertyPath
PitItemExtensions: Helpers for comparing items and aligning timestamps.
- PitItemExtensions:
Equals,isLike,aligned
PitItems: History stack of PitItem versions for a single key.
- PitItems:
Push,Peek,Get,Merge,Count
Pit: JsonPit file container with item history and persistence.
- Pit:
Add,Get,GetAt,Delete,Save,MergeChanges,Keys
cloud root convention
JsonPit resolves cloud-backed storage locations through OsLib, but the current approach is to read an explicit configured root from Os.Config.Cloud rather than relying on a preferred-root helper.
For Ubuntu development machines, especially when Google Drive is mounted through rclone, GNOME integration, or a team-specific mount path, prefer explicit configuration instead of probe-only discovery.
Recommended shared contract:
- Use
RAIkeep.json5to point the supported provider rootsCloud.Dropbox,Cloud.OneDrive,Cloud.GoogleDrive, andCloud.ICloudDriveat the active synchronized mounts. - Keep that file at
~/.config/RAIkeep.json5. - Reuse the same PascalCase keys as OsLib.
That keeps JsonPit aligned with OsLib in .NET today and with the upcoming Python OsLib, RaiUtils, and JsonPit packages later.
Item: Base item with modified tracking and dirty state management.
- Item:
Id,Modified,Deleted,Delete,Valid,Validate,Invalidate
@see GettingStarted.md for the practical onboarding guide, or check the unit tests for lower-level API examples.
Foldable class and contract documentation is available in API.md.
release notes
- Latest release notes: JsonPit_RELEASE_NOTES_4.2.4.md
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Jil (>= 2.17.0)
- Newtonsoft.Json (>= 13.0.4)
- OsLibCore (>= 4.2.4)
- RaiUtils (>= 4.2.4)
- Sigil (>= 5.0.0)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on JsonPit:
| Package | Downloads |
|---|---|
|
HDitem.Persist
Package Description |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 4.2.4 | 58 | 8/27/2026 |
| 4.2.3 | 66 | 8/27/2026 |
| 4.2.2 | 121 | 8/21/2026 |
| 4.2.0 | 133 | 8/16/2026 |
| 4.1.0 | 125 | 8/13/2026 |
| 4.0.1 | 113 | 8/11/2026 |
| 4.0.0 | 117 | 8/7/2026 |
| 3.13.1 | 136 | 8/3/2026 |
| 3.11.4 | 137 | 7/11/2026 |
| 3.11.3 | 148 | 6/28/2026 |
| 3.11.1 | 146 | 6/24/2026 |
| 3.10.2 | 164 | 6/18/2026 |
| 3.9.1 | 116 | 6/8/2026 |
| 3.9.0 | 130 | 6/6/2026 |
| 3.8.15 | 126 | 6/6/2026 |
| 3.8.14 | 133 | 6/6/2026 |
| 3.8.12 | 134 | 6/6/2026 |
| 3.8.11 | 120 | 6/5/2026 |
| 3.8.7 | 117 | 5/16/2026 |
| 3.8.6 | 112 | 5/16/2026 |
4.2.4 coordinated dependency release for accepted CR016.