guard.edit
Zda smí daná relace nyní zapsat danou cestu: povoleno, když je vypnuto session.edits_require_claim politiky, cesta je mimo checkout nebo jeho lokální stav, repozitář nedeklaruje povolený mesh, rozsah aktivní úlohy ji pokrývá nebo ji pokrývá živý mesh claim relace; jinak odmítnuto jako nenárokované, s nápravou. Co nelze přečíst — politika, mesh — se propustí a pojmenuje, nikdy se neodmítne.
Zda smí daná relace nyní zapsat danou cestu: povoleno, když je vypnuto session.edits_require_claim politiky, cesta je mimo checkout nebo jeho lokální stav, repozitář nedeklaruje povolený mesh, rozsah aktivní úlohy ji pokrývá nebo ji pokrývá živý mesh claim relace; jinak odmítnuto jako nenárokované, s nápravou. Co nelze přečíst — politika, mesh — se propustí a pojmenuje, nikdy se neodmítne.
- query
- experimentální
- module guard
- #guard
- #mesh
- #coordination
Zpřístupnění
Kde je tato jedna definice dosažitelná. Absence je explicitní: povrch, který není uveden, ji nenese.
| povrch | jako |
|---|---|
| MCP | nástroj majordomus_guard_edit |
| HTTP | GET /api/v1/guard/edit operationId guard.edit |
| příkazová řádka | — |
Schémata
Kanonický vstup a výstup z typů Rustu; schéma nástroje MCP a parametry a odpovědi OpenAPI se odvozují z nich.
vstup · GuardEditInput
| vlastnost | typ | povinné | popis |
|---|---|---|---|
| path | string | ano | Cesta, která se má zapsat: absolutní, nebo relativní ke kořeni repozitáře. |
| session | string | null | ne | Id zapisující relace na meshi (claude-code-<session id> pro Claude Code); bez něj může zápis pokrýt jen rozsah aktivní úlohy. |
JSON Schema
{
"additionalProperties": false,
"description": "Which write to judge.",
"properties": {
"path": {
"description": "The path about to be written: absolute, or relative to the repository root.",
"type": "string"
},
"session": {
"description": "The writing session's id on the mesh (`claude-code-<session id>` for Claude Code);\nwithout it only the active task's scope can cover the write.",
"type": [
"string",
"null"
]
}
},
"required": [
"path"
],
"title": "GuardEditInput",
"type": "object"
}výstup · EditVerdict
guard.edit ji vrátí tak, jak je; guard hook ji promění v kód ukončení.
use majordomus_cli::guard::{judge_facts, ClaimSource, EditFacts, EditVerdict};
let facts = EditFacts {
required: Ok(false),
mesh_enabled: true,
task: None,
session: None,
claims: ClaimSource::Claims(vec![]),
};
let v: EditVerdict = judge_facts("a.md", Some("a.md"), facts);
assert!(v.allowed);
assert_eq!(v.ground, "off");
let json = serde_json::to_value(&v).unwrap();
assert!(json.get("remedy").is_none(), "an allowed edit carries no remedy");| vlastnost | typ | povinné | popis |
|---|---|---|---|
| povoleno | boolean | ano | Zda úprava smí pokračovat. |
| detail | string | ano | Věta, kterou člověk čte. |
| základ | string | ano | Proč, jedním slovem: off, outside, local, no_mesh, task, claim, undecided nebo unclaimed. Odmítá jen unclaimed. |
| path | string | ano | Cesta, na kterou se ptalo, relativní k repozitáři, když je uvnitř checkoutu. |
| náprava | string | null | ne | Co úpravu dovoluje, když je odmítnuta. |
JSON Schema
{
"description": "The answer to one edit: whether it may proceed, the one word it was decided on, the\nsentence a person reads and, for a refusal, what would allow it. `guard.edit` returns it\nas it is; `guard hook` turns it into an exit code.\n\n```\nuse majordomus_cli::guard::{judge_facts, ClaimSource, EditFacts, EditVerdict};\n\nlet facts = EditFacts {\n required: Ok(false),\n mesh_enabled: true,\n task: None,\n session: None,\n claims: ClaimSource::Claims(vec![]),\n};\nlet v: EditVerdict = judge_facts(\"a.md\", Some(\"a.md\"), facts);\nassert!(v.allowed);\nassert_eq!(v.ground, \"off\");\nlet json = serde_json::to_value(&v).unwrap();\nassert!(json.get(\"remedy\").is_none(), \"an allowed edit carries no remedy\");\n```",
"properties": {
"allowed": {
"description": "Whether the edit may proceed.",
"type": "boolean"
},
"detail": {
"description": "The sentence a person reads.",
"type": "string"
},
"ground": {
"description": "Why, as one word: `off`, `outside`, `local`, `no_mesh`, `task`, `claim`,\n`undecided` or `unclaimed`. Only `unclaimed` refuses.",
"type": "string"
},
"path": {
"description": "The path asked about, repository-relative when it is inside the checkout.",
"type": "string"
},
"remedy": {
"description": "What makes the edit allowed, when it is refused.",
"type": [
"string",
"null"
]
}
},
"required": [
"allowed",
"path",
"ground",
"detail"
],
"title": "EditVerdict",
"type": "object"
}Politiky
- benchmark
- povinné — cíl na každém transportu, který expozice deklaruje; případy jsou ty ze vstupního typu
- cache
- vypnuto — každé volání spustí handler
Cíle benchmarku
Odvozeno z registru pro tento repozitář: jeden požadavek na transport a případy, které poskytuje typ vstupu. Celá matice je na stránce měření výkonu.
| transport | state | případy | targets |
|---|---|---|---|
| direct | pokryto | 2 | in-repository mimo |
| mcp | pokryto | 2 | in-repository mimo |
| http | pokryto | 2 | in-repository mimo |