feat: update admission gate - entries refuse while an update runs (Issue #72, decision 8, U2)
The update skill publishes .mam/update-in-progress (pid + lstart, the loop_lock.sh rules) while it holds .mam/update-admission.lock exclusively. create, resume, run_loop.sh and delegate submit (decision 8) and stop and orc-onboard (U2: a rollback would restore the registry without their write) take that lock shared (lib.sh mam_update_admit, fd 7), refuse while the marker is live or unknown, and hold the lock until their record is written. A stale marker refuses nothing. lib_py.pane_lock acquire gains --shared and --wait-env (MAM_UPDATE_ADMISSION_WAIT_S, default 120); create's wrapper path closes fd 7 for the long-lived child. The exit-1 rows of create/resume/stop name the refusal; skill_code_blocks.json pins follow the shifted lines. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
179473e5d5
commit
6359d65999
13 files changed
+311
-25
No files matched your search
@@ -11,7 +11,7 @@
|
||||
"kind": "example",
|
||||
"evidence": [
|
||||
"multi-agent-mux-create/scripts/create_session.sh:99",
|
||||
"multi-agent-mux-create/scripts/create_session.sh:356"
|
||||
"multi-agent-mux-create/scripts/create_session.sh:359"
|
||||
],
|
||||
"mismatch": null,
|
||||
"note": "HERDR_SESSION_NAME environment example"
|
||||
@@ -67,7 +67,7 @@
|
||||
"class": "c",
|
||||
"kind": "example",
|
||||
"evidence": [
|
||||
"multi-agent-mux-create/scripts/create_session.sh:514-541"
|
||||
"multi-agent-mux-create/scripts/create_session.sh:517-544"
|
||||
],
|
||||
"mismatch": null,
|
||||
"note": "Output format: the row create_session.sh writes"
|
||||
@@ -122,7 +122,7 @@
|
||||
"class": "c",
|
||||
"kind": "invocation",
|
||||
"evidence": [
|
||||
"multi-agent-mux-delegate-job/multi-agent-mux-delegate-job:1046-1057"
|
||||
"multi-agent-mux-delegate-job/multi-agent-mux-delegate-job:1051-1062"
|
||||
],
|
||||
"mismatch": null,
|
||||
"note": "CLI reference; subcommands submit/status/list/verify/wait/logs match main()"
|
||||
@@ -433,7 +433,7 @@
|
||||
"class": "c",
|
||||
"kind": "diagram",
|
||||
"evidence": [
|
||||
"multi-agent-mux-stop/scripts/stop_session.sh:245-259"
|
||||
"multi-agent-mux-stop/scripts/stop_session.sh:250-264"
|
||||
],
|
||||
"mismatch": null,
|
||||
"note": "state machine"
|
||||
@@ -477,10 +477,10 @@
|
||||
"multi-agent-mux-resume/scripts/resume_session.sh:111-130",
|
||||
"multi-agent-mux-resume/scripts/resume_session.sh:133-144",
|
||||
"multi-agent-mux-resume/scripts/resume_session.sh:147-170",
|
||||
"multi-agent-mux-resume/scripts/resume_session.sh:185-210",
|
||||
"multi-agent-mux-resume/scripts/resume_session.sh:258",
|
||||
"multi-agent-mux-resume/scripts/resume_session.sh:262",
|
||||
"multi-agent-mux-resume/scripts/resume_session.sh:268-271",
|
||||
"multi-agent-mux-resume/scripts/resume_session.sh:188-213",
|
||||
"multi-agent-mux-resume/scripts/resume_session.sh:265",
|
||||
"multi-agent-mux-resume/scripts/resume_session.sh:269",
|
||||
"multi-agent-mux-resume/scripts/resume_session.sh:275-278",
|
||||
"lib_py/agents/adapters/claude.py:109"
|
||||
],
|
||||
"mismatch": [
|
||||
@@ -504,8 +504,8 @@
|
||||
"class": "a",
|
||||
"evidence": [
|
||||
"multi-agent-mux-stop/scripts/stop_session.sh:101",
|
||||
"multi-agent-mux-stop/scripts/stop_session.sh:123-193",
|
||||
"multi-agent-mux-stop/scripts/stop_session.sh:245-249"
|
||||
"multi-agent-mux-stop/scripts/stop_session.sh:128-198",
|
||||
"multi-agent-mux-stop/scripts/stop_session.sh:250-254"
|
||||
],
|
||||
"mismatch": [
|
||||
"T1: the doc offered --force-no-yaml, which no script accepts"
|
||||
@@ -547,8 +547,8 @@
|
||||
"multi-agent-mux-create/scripts/create_session.sh:166-168",
|
||||
"multi-agent-mux-create/scripts/create_session.sh:207",
|
||||
"multi-agent-mux-create/scripts/create_session.sh:259-274",
|
||||
"multi-agent-mux-create/scripts/create_session.sh:361-398",
|
||||
"multi-agent-mux-create/scripts/create_session.sh:410-412"
|
||||
"multi-agent-mux-create/scripts/create_session.sh:364-401",
|
||||
"multi-agent-mux-create/scripts/create_session.sh:413-415"
|
||||
],
|
||||
"mismatch": [
|
||||
"C1: an existing session is exit 1 in the doc, exit 3 in the script",
|
||||
@@ -568,7 +568,7 @@
|
||||
"base_sha": "f71be0f26fb8",
|
||||
"class": "a",
|
||||
"evidence": [
|
||||
"multi-agent-mux-create/scripts/create_session.sh:486-604"
|
||||
"multi-agent-mux-create/scripts/create_session.sh:489-607"
|
||||
],
|
||||
"mismatch": [],
|
||||
"replacement": "bash .agents/skills/multi-agent-mux-create/scripts/create_session.sh --workspace <path> --agent <agent> --role <role>",
|
||||
@@ -601,7 +601,7 @@
|
||||
"other"
|
||||
],
|
||||
"passthrough": {
|
||||
"1": "multi-agent-mux-stop/scripts/stop_session.sh:384"
|
||||
"1": "multi-agent-mux-stop/scripts/stop_session.sh:389"
|
||||
}
|
||||
},
|
||||
"multi-agent-mux-create/scripts/create_session.sh": {
|
||||
@@ -619,7 +619,7 @@
|
||||
"other"
|
||||
],
|
||||
"passthrough": {
|
||||
"4": "multi-agent-mux-create/scripts/create_session.sh:546"
|
||||
"4": "multi-agent-mux-create/scripts/create_session.sh:549"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
Reference in new issue
Block a user