Repository navigation
Conversation
Slice 072, stacked on slice 071 and built on its gateway core: the
supervisor, adapter status, buttons as {:message, text, buttons}, and a
press routed as the typed command. The live criterion ran against a
throwaway Mattermost Team Edition 11.11.1 server in Docker, pinned by
digest. The owner's run against their own server is queued.
- Inbound arrives over the WebSocket, so the server never has to reach
Trinity except for the controls. The socket authenticates in the
upgrade header, which keeps it resumable, and resumes with the server's
connection id and sequence number. TLS is verified explicitly, because
the library's default is verify_none. Posts are handled at most once.
- Approvals use buttons and an interactive dialog. Their context is
HMAC-signed, the dialog state is bound to the user, single-use and
10 minutes long, and the slash command's token is compared in constant
time. A dialog decides nothing: its answer reaches the router as the
typed command, so the channel cap applies. An exec request was refused
by the cap and receipted with basis channel_cap.
- POST /gateways/callback/:adapter/:kind hands a platform's callback to
its adapter to verify. An unconfigured adapter answers 404.
- Posts fit the server's MaxPostSize in code points, checked by a
property.
- A census reads every adapter's compiled imports and refuses calls into
LLM, Sessions, Permissions, Effects or Tools. A planted direct
Permissions call passed both the compiler and the boundary check, and
only the census caught it.
- A cron delivery the server refuses is no longer marked delivered.
- Under :regulated, Mattermost boots only when named in
TRINITY_REGULATED_GATEWAYS.
- Redaction, the secret scan and the request-log filter learn the token,
matched only where it is named, since its shape is every Mattermost
id's.
- websockex becomes a direct dependency; it was already in the lock.
Red evidence R1 to R9 is in the slice NOTES.
Signed-off-by: Ayla Croft <aylacroft@proton.me>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Slice 072, the Mattermost gateway. Stacked on #120 (slice 071): this PR's base is 071's branch, so the diff shows 072 alone. Merge #120 first; GitHub then retargets this PR to
main. It builds on 071's gateway core rather than adding a second one.The slice stays
in_progressuntil the owner's live run against their own server. The live criterion already ran here, against a throwaway Mattermost Team Edition 11.11.1 server pinned by digest.What lands
verify_none);execrequest was refused by the cap and receipted.POST /gateways/callback/:adapter/:kind: the adapter verifies each callback; an unconfigured adapter answers 404.MaxPostSizein code points, checked by a property.Permissionscall passed both the compiler and the boundary check; only the census caught it.:regulated: Mattermost boots only when named inTRINITY_REGULATED_GATEWAYS.Criteria
AC1 to AC7 are proven, AC7 on the throwaway server. AC8 is the gate, below.
Evidence
mix gateon the final tree (071 plus 072), before commit: exit 0,1065 passed (24 properties, 1041 tests), 18 excluded,prod_check: PASS, credo found no issues.SandboxTest's 1 s Lua timeout, at load average 20 to 40. My run was green at load average about 20.Owner decision needed (F-6)
Gateway sessions have no project root, so a shell request from a channel always comes out
:ask. Decide whether a gateway session should get one.