feat(discord): SetSpark record client for the Discord Sage, fixed verbs against setspark-api, connector-verified approvals (#1509)
Row 25, parts 2a and 2b, against the shared-signals contract a5425a2. Model side: eight fixed verbs in the pi extension (record_list, record_get, record_create, record_update, resolve_id, open_approval_request, get_approval_request, create_document), each one HTTP call with arguments checked before any request. Writes carry an idempotency key <principal>:<message id>:<call index> and an audit context. The seat key is read from a 0600 file on every call and never cached, printed or journaled. Connector side: append-only approval ledger, Approve button and exact "approve" reply resolved by the connector against the required approvers, confirmation message posted as button evidence, bind and add_approval through the service under connector keys, retry of unknown entries on start. Evidence: node tests 162 pass, scripts/test-discord.sh 63/63. Review by rev-code-02, round 1 approved (#1509 comment 26467, tree 7872d8c5). Co-Authored-By: Claude Fable 5.1 <[email protected]>
This commit is contained in:
+9
-2
@@ -195,10 +195,17 @@ gains `git_status`, `git_commit` (explicit paths, seat author,
|
||||
`Requested-by:` trailer, push at once), `git_pull` (ff-only) and
|
||||
`git_push` (one branch, never force), with `reserve_id` under the vault
|
||||
protocol; git runs with no host config and the package's own credential
|
||||
helper reading a 0600 token file, never printed. `tools` is a fixed key: changing
|
||||
helper reading a 0600 token file, never printed. `tools.setspark` names the
|
||||
SetSpark record service and adds `record_list`, `record_get`,
|
||||
`record_create`, `record_update`, `resolve_id`, `open_approval_request`,
|
||||
`get_approval_request` and `create_document`, one fixed path each, writes
|
||||
keyed per turn and call; approvals of its proposals are an Approve button
|
||||
or an exact `approve` reply, checked by the connector against the
|
||||
request's approvers, never by the model, with one Discord message per
|
||||
approval as evidence. `tools` is a fixed key: changing
|
||||
it needs a stop and start. Records
|
||||
under `<dataRoot>/discord/<binding>/`: `inbox.jsonl`, `outbox.jsonl`,
|
||||
`drops.jsonl`, `admissions.jsonl`, `notices.jsonl`, `reloads.jsonl`, write-once `turns/<id>.json`. Suite:
|
||||
`drops.jsonl`, `admissions.jsonl`, `notices.jsonl`, `reloads.jsonl`, `approvals.jsonl`, write-once `turns/<id>.json`. Suite:
|
||||
`scripts/test-discord.sh`.
|
||||
Exit codes: 0 ok, 1 operation failed, 2 invalid data or configuration, 3
|
||||
refused by a brake (a supervisor must not retry), 4 usage. Details:
|
||||
|
||||
Reference in New Issue
Block a user