Context
Option L selects local in-process coordination over the same neutral admission contract used by hosted connectors. Option N allows the existing sync path as a removable first-adapter seam, never as the portable contract or a second completeness authority.
This is one fully closeable PR leaf under Epic #15145. The live parent-child and blocked-by graph is authoritative; this body owns only this leaf's contract.
The Problem
A polling adapter without durable receipt ordering can advance past lost batches; embedding event logic into the generic repository sync would make local topology the architecture and preserve its current lossy bounds.
The Architectural Reality
Scheduling/retry/health belong in ai/daemons/orchestrator/services/ with a pure scheduling/<task>.mjs trigger, matching TenantRepoSyncService.mjs. GitHub Workflow owns acquisition; Memory Core owns admission; Orchestrator owns when/retry/health only. AiConfig reads occur at sanctioned entry/use boundaries under ADR 0019.
The Agent OS structure map was run on 2026-07-14. New service/script/test placement must use the named sibling-file-lift fast paths; no service logic moves into MCP server entrypoint directories.
The Fix
Wire the three GitHub resource reconcilers into an Orchestrator task with per-source failure isolation, manual trigger, explicit unset cadence until calibration, receipt-before-checkpoint semantics, ambiguous-response retry, restart recovery, and health telemetry. Any hook from existing sync is narrow, labeled transitional, and removable.
Contract Ledger Matrix
| Target Surface |
Source of Authority |
Proposed Behavior |
Fallback / Edge Case |
Docs |
Evidence |
| Orchestrator task |
Options L/N |
Coordinates registered ACTIVE sources without acquiring or admitting itself |
Unset cadence means manual/shadow only |
Task JSDoc + operator note |
Scheduling/failure isolation tests |
| Receipt loop |
OQ3/OQ4 |
Submit batch, persist receipt, then advance source checkpoint |
Crash/lost response retries same batch |
Coordinator docs |
Crash/restart tests |
| Health projection |
OQ10 |
Per-source pages/events/receipt/conflict/lag status without prose |
Partial failures remain per-source |
Health docs |
Task outcome tests |
Decision Record impact
Depends on ADR 0036, registration, admission, and all three GitHub reconciliation leaves; aligned with ADR 0019.
Decision Record
Required: ADR 0036. This leaf is not code-ready until the ADR-0036 child of #15145 is accepted at the human merge gate.
Discussion Criteria Mapping
| Upstream graduated criterion |
This leaf's executable contract |
| H |
Runs exhaustive reconciliation; notifications/webhooks remain accelerators. |
| L/N |
Implements local coordinator with a removable existing-sync seam. |
| I/OQ4 |
Preserves GitHub acquisition -> neutral Memory-Core admission direction. |
| OQ10 |
Leaves cadence unset and emits measurements/health for later calibration. |
Source authority: Discussion #15139 body at the version-bound graduation anchor plus Grace's STEP_BACK and GRADUATION_APPROVED.
Acceptance Criteria
Out of Scope
Hosted connector transport, queue receiver O, source-owned outbox K, threshold selection, Bird View, or wake.
Avoided Traps
Do not put provider acquisition into Memory Core, admission into Orchestrator, event semantics into cadence code, or configure guessed intervals.
Related
Origin Session ID: 837ad74b-c2d2-413d-9aab-b7165a93a82a
Handoff Retrieval Hints
local community activity orchestrator receipt checkpoint retry
Discussion 15139 L N local coordinator
Creation Freshness
Creation duplicate sweep: immediately before filing at 2026-07-14T05:31:09.667Z, checked the latest 20 open issues and last 30 all-state A2A messages. The independent broader audit at 2026-07-14T05:13:00Z covered open and closed issues, pull requests, A2A, ADRs, and code; no equivalent owner or foreign claim existed.
Context
Option L selects local in-process coordination over the same neutral admission contract used by hosted connectors. Option N allows the existing sync path as a removable first-adapter seam, never as the portable contract or a second completeness authority.
This is one fully closeable PR leaf under Epic #15145. The live parent-child and blocked-by graph is authoritative; this body owns only this leaf's contract.
The Problem
A polling adapter without durable receipt ordering can advance past lost batches; embedding event logic into the generic repository sync would make local topology the architecture and preserve its current lossy bounds.
The Architectural Reality
Scheduling/retry/health belong in
ai/daemons/orchestrator/services/with a purescheduling/<task>.mjstrigger, matchingTenantRepoSyncService.mjs. GitHub Workflow owns acquisition; Memory Core owns admission; Orchestrator owns when/retry/health only. AiConfig reads occur at sanctioned entry/use boundaries under ADR 0019.The Agent OS structure map was run on 2026-07-14. New service/script/test placement must use the named sibling-file-lift fast paths; no service logic moves into MCP server entrypoint directories.
The Fix
Wire the three GitHub resource reconcilers into an Orchestrator task with per-source failure isolation, manual trigger, explicit unset cadence until calibration, receipt-before-checkpoint semantics, ambiguous-response retry, restart recovery, and health telemetry. Any hook from existing sync is narrow, labeled transitional, and removable.
Contract Ledger Matrix
Decision Record impact
Depends on ADR 0036, registration, admission, and all three GitHub reconciliation leaves; aligned with ADR 0019.
Decision Record
Required: ADR 0036. This leaf is not code-ready until the ADR-0036 child of #15145 is accepted at the human merge gate.
Discussion Criteria Mapping
Source authority: Discussion #15139 body at the version-bound graduation anchor plus Grace's STEP_BACK and GRADUATION_APPROVED.
Acceptance Criteria
Out of Scope
Hosted connector transport, queue receiver O, source-owned outbox K, threshold selection, Bird View, or wake.
Avoided Traps
Do not put provider acquisition into Memory Core, admission into Orchestrator, event semantics into cadence code, or configure guessed intervals.
Related
TenantRepoSyncService.mjsOrigin Session ID: 837ad74b-c2d2-413d-9aab-b7165a93a82a
Handoff Retrieval Hints
local community activity orchestrator receipt checkpoint retryDiscussion 15139 L N local coordinatorCreation Freshness
Creation duplicate sweep: immediately before filing at 2026-07-14T05:31:09.667Z, checked the latest 20 open issues and last 30 all-state A2A messages. The independent broader audit at 2026-07-14T05:13:00Z covered open and closed issues, pull requests, A2A, ADRs, and code; no equivalent owner or foreign claim existed.