cli.sgit.ai / Research / Possible future features, after 0.21.0

Possible future features, after 0.21.0

Date2026-10-08 · 20:52 UTCKindroadmapTopicsroadmap git-parity compatibilityWritten bythe sgit-ai CLI team (Claude Code sessions), for Dinis CruzSourceteam/humans/dinis_cruz/claude-code-web/10/08/future-features__after-0.21.md in SGit-AI__CLI at 5597526. Published here as written; the CLI repository is where the work happened.

CLI team, 8 Oct 2026. The ideas from "Fix merge and undo, then claim the browser" (the git and sgit feature comparison) and "Git security features → sgit" that are NOT in 0.21.0, with what each would take and what it could break. 0.21.0 already ships: reflog, signed tags, short ids and revision shorthand, history undo, log filters and --stat, revert --as-commit, commit --amend, push --force-with-lease, the path-guard hardening.

The constraint every commit-level idea must respect

A new field in commit objects breaks signature verification on clients from 0.19.0 on. They parse the commit, drop the field they do not know, rebuild the canonical bytes without it, and the signature no longer matches: the commit shows as bad, and under signatures-required the pull is refused. (Verified with sgit-ai 0.20.0.) So any idea that adds a commit field needs the format gate: the vault owner raises --min-client first. Two fields are already in every client's schema and are safe to fill: attestations (a list) and author_signature.

The branch index is different: unknown index fields are dropped by older clients when they rewrite the index and restored by the next current client (how tags work). New object types in bare/data are invisible to older clients.

Ranked

#IdeaValueCostSide effects / constraints
1Union merge driver for declared paths (.sgattributes: runs/*.md merge=union, *.jsonl merge=union)High: concurrent appends by agents to one log stop conflictingMedium: decrypt base/ours/theirs, line-merge, write a new blob inside the mergeLimited to opted-in paths. Clients without it still produce today's conflict (not a wrong merge). The attributes file is itself in the vault, so it is versioned and encrypted
2Line-level three-way merge for all text files (diff3)HighMediumChanges merge results for every text file; conflict markers inside files instead of .conflict copies. Ship after 1 has proven out, behind a setting at first
3Shared operation log: the reflog as encrypted, append-only objects that syncHigh and distinctive: team-wide undo and audit, no git equivalentMedium–large: a new object type and its syncNew objects only; old clients ignore them. Needs a retention rule
4Author identity: a display name per signing keyMedium: log --author "Alice"Small if the name lives in the branch index entry (index field, safe); large if in the commit (format gate)Put it in the index
5Agent provenance in attestations: prompt/tool/run records, encryptedMedium–high for agent teamsMediumSafe: the field exists in every client's schema
6Conflicts as data: commit a conflict as an object a human or another agent resolves laterHigh for agents that cannot stop mid-taskLargeNeeds a conflict object type and every command to understand it
7history grep / pickaxe / blameMediumMedium: decrypts every changed blob in the walk; cache neededRead-only. Must say where --depth/--path truncates the walk
8Branch merge / delete / rename, cherry-pickMediumLow–mediumMerge any branch reuses the three-way merge; delete needs the index tombstone pattern tags use
9Stable change idsMediumMediumA commit field: format gate (see the constraint above)
10Resumable pushMediumMediumVerify today's behaviour first (large files already chunk)
11Format 2 (128-bit ids) by default for new vaultsSecurity defaultOne line in initClients ≤ 0.18 cannot read such a vault and call it corrupt. Do it once 0.19+ is the norm
12Per-folder keysDistinctive: scoped clone becomes an access boundaryLarge: key hierarchy, rekey, scope semanticsCrypto design work; an architect review first
13Bisect, local hooks, aliasesLowLow eachHooks only local, never read from vault content
14history restore as the name for today's file-level history revert, so revert can mean git's inverse commitClarity for git usersLowRenaming breaks agents' scripts: add restore, keep revert working with a one-line note, decide later

Out of scope by design

Suggested order

1 (union driver) → 4 (names in the index) → 3 (shared oplog, building on the reflog) → 5 (provenance) → 2 (full line merge). Each is useful alone, none needs the format gate, and 1–3 are the ones the comparison note identifies as both valuable to agent teams and ahead of git.

This page as markdown · its source, admin/content/articles/future-features-after-0-21.md