Attribution and version control
Cards records each write to a card under a distinct Git author identity, and projects a card's commits as a visual attribution tree.
Contributor identities
Every write to a card repository is committed under one of three Git author identities — a name and email address that says who made the change:
user <user@cards.local>: Commits initiated by a human developer.agent <agent@cards.local>: Commits generated by the AI agent during an active session. This is the default identity.system <system@cards.local>: Automated commits created by the Cards platform (e.g., status transitions or metadata updates).
Because each commit carries its own author identity, you can read directly from a card's history who was responsible for any given change.
The attribution tree
The attribution tree is a separate view: it projects a card's workspace commits against your active worktree, so you can see the net changes a card has made to your files. As you work, commits made against a card are tracked for that card, and the tree renders the combined result.
The tree is opened from the Compare icon in the Activity Bar (the left-hand rail of icons in VS Code). Selecting that icon opens the Compare view; pick a card and expand its tree to see the files the card has touched. Click any file to open a side-by-side diff: the editor compares the current state (right pane) against the pre-card state (left pane).
How each file opens depends on its state:
- Uncommitted working tree edits stay editable — you are looking at the live file and can change it.
- Files that match the card's tip commit (unchanged since then) are also editable.
- Files that have changed since the card's tip commit open as read-only, so you do not accidentally overwrite concurrent work.
- Deleted files are always read-only.
Limitations
The attribution tree operates at the file level. It does not provide line-by-line git blame attribution if multiple cards or contributors edit the same file.
Lifecycle, status, and gates
A card holds one of five status values, and its plan and merge gates are advisory checkpoints that prompt for approval without hard-blocking transitions.
Sessions and streams
How Cards records agent runs, streams real-time console output, and persists transcripts in the card repository.