Skip to content

feat(webhook): define profile-scoped session and unattended interaction policy (Task 12) - #90304

Open
andrexibiza wants to merge 2 commits into
NousResearch:mainfrom
andrexibiza:campaign/webhook-sessions-interactions
Open

feat(webhook): define profile-scoped session and unattended interaction policy (Task 12)#90304
andrexibiza wants to merge 2 commits into
NousResearch:mainfrom
andrexibiza:campaign/webhook-sessions-interactions

Conversation

@andrexibiza

@andrexibiza andrexibiza commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

Part of #84834 — Webhook Revolution Task 12.

Contract

This lane closes the session/interaction-policy gap between authenticated webhook intake and an agent turn:

  • event sessions are unique per delivery and profile and remain one-shot;
  • keyed sessions are durable across deliveries but cannot alias across profiles;
  • keyed session templates fail closed when required payload fields are missing;
  • unattended webhook runs default to approval_mode=deny and clarification_mode=fail rather than pretending an interactive operator exists;
  • routing an approval/clarification to a delivery target requires a real bidirectional target;
  • callback delivery is not misrepresented as an interactive clarification channel.

The branch contains the focused Task 12 policy/session regressions in tests/gateway/test_webhook_sessions.py and companion interaction/tool-policy coverage.

Current cleanup head

Head: afc1469ee667fef5e0dd1d1a5a64033b9d6c46ff

The three artifacts/webhook-repair/.../task-12 receipt files have been removed. The product/review surface is now eight files instead of eleven; evidence files are no longer carried as runtime architecture.

This implementation lane is ready for review, but it is not merge-authorized until it is semantically composed onto the current Task 7/9/10 ownership topology and exact-head CI passes.

Required composition before merge authorization:

  1. Treat fix(webhook): close Task 10 intake identity and raw-bound contracts #90236 as the canonical current-main Task 10 intake owner; do not restore historical [SUPERSEDED by #90236] webhook Task 10 historical campaign lineage #85523 behavior.
  2. Compose after the profile-local effective-config owner from fix(webhook): preserve profile-correct effective config through semantic train compression #85002 / its compressed successor.
  3. Compose with refactor(webhook): isolate explicit provider signature authority #85318’s now-green explicit signature authority without reintroducing the historical UI/router/profile train.
  4. Verify durable keyed-session behavior against current session-key encoding/migration work, including colon-bearing identifiers.
  5. Run the Task 12 session/interaction tests plus current multiplex/profile/session/approval suites on the exact published head.
  6. Keep campaign receipts and duplicated attribution out of the final diff.

No workflow run is currently attached to afc1469e...; historical checks are not inherited.

This is a campaign implementation lane, not Task 19 integration. #85640 remains the sole final topology assembler.

Signed-off-by: Axl Ibiza, MBA <andrexibiza@gmail.com>
@alt-glitch alt-glitch added type/feature New feature or request comp/gateway Gateway runner, session dispatch, delivery comp/tools Tool registry, model_tools, toolsets platform/webhook Webhook / API server area/sessions Session lifecycle, resume, persistence, history P3 Low — cosmetic, nice to have needs-decision Awaiting maintainer decision before any implementation sweeper:risk-session-state Sweeper risk: may lose/corrupt/mis-associate session or context state sweeper:risk-message-delivery Sweeper risk: may drop, duplicate, misroute, or suppress messages labels Aug 19, 2026
@andrexibiza
andrexibiza marked this pull request as ready for review August 20, 2026 15:21

Copy link
Copy Markdown
Contributor Author

Current-main topology check: do not mechanically rebase this Task 12 lane yet. Its base 8430c1b4... is now 376 commits behind current main 533886c8..., while the semantic predecessors it must consume are still open delivery authorities: #85002 effective config, #90236 Task 10 intake/idempotency, and #85318 verifier authority.

The correct next object is a semantic composition, not an 8-file historical replay. This lane should remain the session/interaction-policy owner only: event/keyed session identity, unattended approval/clarification defaults, and bidirectional-target requirements. It must not copy Task 10 body/idempotency logic, signature verification, or final integration behavior.

Merge/rebase authorization remains gated on those predecessor authorities becoming composable current objects. #85640 remains final assembly and must not implement Task 12 semantics in its place.

Copy link
Copy Markdown
Contributor Author

Composed-head CI gate published in #91913

The authority-continuity manifest now fixes this PR's position after the canonical webhook spine/HTTP/verifier authorities and before per-target effect settlement:

#85002 → #90995 → (#90236 + #85318) → #90304 → #85644

The conformance gate requires #90304 to consume the authenticated immutable envelope rather than re-derive route/provider/delivery/signature state. CI attached to the standalone historical shape cannot satisfy the composed predicate; exact composed-head evidence is required after the chain is real.

Contract PR: #91913
Exact contract head: 170a3a0e67034abd7d6a2c69a16c292b4781720f.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/sessions Session lifecycle, resume, persistence, history comp/gateway Gateway runner, session dispatch, delivery comp/tools Tool registry, model_tools, toolsets needs-decision Awaiting maintainer decision before any implementation P3 Low — cosmetic, nice to have platform/webhook Webhook / API server sweeper:risk-message-delivery Sweeper risk: may drop, duplicate, misroute, or suppress messages sweeper:risk-session-state Sweeper risk: may lose/corrupt/mis-associate session or context state type/feature New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants