Record a git commit onto the nodes it touched
record_commitConfiguration record (CI/CD). Given a commit SHA and the files it changed, finds nodes whose metadata.implements include any of those files and appends the commit (sha + timestamp + optional message) to their metadata.commits (deduped by sha). Returns the matched node ids. When one commit touches several nodes that are NOT yet connected, the response also carries coChangeCandidates[] ({a, aLabel, b, bLabel}) — nodes that change together are dependency candidates; review them and add a create_edge/create_api where a real relation exists (not auto-created; suppressed for large multi-node commits; pass coChange=false to skip them entirely when nobody will review, e.g. a CI step that only records). Umtri does not run jobs or read git itself — a GitHub Action / CI step or an agent supplies the sha+files. Recording a commit is the LAST step: first make sure the change is in the tree (new unit → create_node with metadata.implements; moved file → update_node), otherwise the sha lands on the nodes that happen to exist and the new ones stay invisible. A repo that keeps forgetting should write the habit down — see umtri://rules/commit-sync. See also umtri://rules/plan.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"slug": "<slug>",
"sha": "<sha>",
"files": "<files>"
},
"name": "record_commit"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| sha | Yes | Commit SHA (short or full). | |
| slug | Yes | Ground slug. | |
| files | Yes | Repo-relative paths changed by the commit, matched against nodes' metadata.implements. | |
| message | No | Commit message (optional, stored with the record). | |
| coChange | No | Default true. false skips coChangeCandidates — for callers that record every commit and never review the suggestions. |