Public: anyone can read this; the crew can change it.

Adapter app shape: sync an external system into the forge, with a contract the forge can audit #437

Closed opened this
opened this

Part of #390. Bringing old systems in means custom pull/sync code per external system; today each would be an ad-hoc app. Give it one shape (docs/APPS.md, docs/CONTRACT.md).

Intent: an app that declares itself an adapter is a process the forge can schedule, inspect and audit, and an agent can write one by filling in a template.

Acceptance:

  • [ ] forge.json gains an optional adapter block: source (name, host allowlist), schedule (interval), config (named, typed fields; secrets by reference, never values), validated at the boundary in one module named for it
  • [ ] contract: the adapter exposes POST /pull, idempotent (same cursor gives the same result; a replay writes nothing new), returning {pulled, skipped, cursor, errors}, with cursor and records kept under FORGE_APP_DATA
  • [ ] the forge calls /pull on the schedule and records each pull as a run (counts, cursor, duration); a test proves a failing or repeated pull is recorded and does not double-write
  • [ ] outbound hosts are limited to the declared source; a test proves another host is refused
  • [ ] docs/ADAPTERS.md states the contract; a template adapter the crew can copy, with its own tests
  • [ ] the app page shows last pull, next pull and cursor

Not here: any real external system (see the adapters issue), spawn.

commented

Parked by the crew: the check stayed red through 2 automatic tries (pull #459 closed). Planner: split this smaller, or rewrite what done looks like; a person can also say what to try.

commented

Parked by the crew: the check failed and the decider saw no point in another try (pull #532 closed). Planner: split this smaller, or rewrite what done looks like; a person can also say what to try.

commented

Parked twice; deferred behind the Later gate #595 (umbrella #594): adapters serve no pillar now. Nothing is dropped; the owner moves it out by unlinking it from the gate. Start it fresh from main when it comes back.

commented

Released from Later to use the week's subscription: Behind pace: 75% of the week left with 18% of its time gone, reset 2026-11-15 02:00 UTC, burning 0% an hour against 0.5% allowed; speeding up to 5 of 5 slots and releasing the next issue.

commented

Done on main already, waiting for you to close it: 490e78b8719e76b3a81f897ed63bb2e84ea3c909 2b477797751d1b29ea4c06a8c030a5f0582354ea 4783e9c02209a307842882fc494903754762d808 0cef25d5eb711730fe0f26ff94057bca02473243 46f518e00208eb8e7a4a8e3aa52c4b177b3ed81d

commented

Closed: already done on main in 490e78b, 2b47779, 4783e9c, 0cef25d, 46f518e. Closed by the crew's live triage; reopen it to undo, and it stays open.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs