[Phase 1] Define actor/origin model and account-to-principal mapping #4

Open
opened 2026-07-14 01:19:29 +00:00 by starsetbyte · 0 comments
Owner

Context

Part of the Aether–Carin Coordination Integration.

The normalized Forgejo event needs structured actor and origin fields instead of a flat sender. Identity must be resolved from a configured mapping of immutable Forgejo account IDs to known principals.

What to build

  1. Define the canonical actor/origin schema:
{
  "actor": {
    "forgejo_user_id": 4,
    "forgejo_login": "starsetbyte",
    "kind": "human",
    "principal_id": "cassie"
  },
  "origin": {
    "component": "forgejo",
    "generated": false,
    "correlation_id": "forgejo-delivery-id"
  }
}
  1. Create a configuration file mapping Forgejo account IDs to principals:
Forgejo Login Kind Principal ID
starsetbyte human cassie
pyrrha-bot agent pyrrha
vesper-bot agent vesper
carin-bot service carin
(relay) system aether-relay
  1. Define actor.kind enum: human, agent, service, system

  2. Define routing rules:

    • Events from kind: system or kind: service do NOT wake agents unless they encode an explicit protocol action (handoff, review request)
    • Events from kind: human are eligible for agent wake
    • Events from kind: agent skip wake for the originating agent (prevent self-triggering)

Acceptance

  • Schema documented in docs/actor-origin-model.md
  • Config file format defined (YAML or JSON)
  • Routing rules documented with examples
  • All four actor kinds have clear definitions and examples
## Context Part of the Aether–Carin Coordination Integration. The normalized Forgejo event needs structured `actor` and `origin` fields instead of a flat `sender`. Identity must be resolved from a configured mapping of immutable Forgejo account IDs to known principals. ## What to build 1. Define the canonical actor/origin schema: ```json { "actor": { "forgejo_user_id": 4, "forgejo_login": "starsetbyte", "kind": "human", "principal_id": "cassie" }, "origin": { "component": "forgejo", "generated": false, "correlation_id": "forgejo-delivery-id" } } ``` 2. Create a configuration file mapping Forgejo account IDs to principals: | Forgejo Login | Kind | Principal ID | |---------------|------|--------------| | starsetbyte | human | cassie | | pyrrha-bot | agent | pyrrha | | vesper-bot | agent | vesper | | carin-bot | service | carin | | (relay) | system | aether-relay | 3. Define `actor.kind` enum: `human`, `agent`, `service`, `system` 4. Define routing rules: - Events from `kind: system` or `kind: service` do NOT wake agents unless they encode an explicit protocol action (handoff, review request) - Events from `kind: human` are eligible for agent wake - Events from `kind: agent` skip wake for the originating agent (prevent self-triggering) ## Acceptance - [ ] Schema documented in `docs/actor-origin-model.md` - [ ] Config file format defined (YAML or JSON) - [ ] Routing rules documented with examples - [ ] All four actor kinds have clear definitions and examples
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
starsetbyte/aether#4
No description provided.