You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 9052d5c
Browse filesBrowse the repository at this point in the historyBrowse files
🚀 Publish the current branch to its origin with <Git.Push>
`<Git.Push />` is the first concrete consumer of the shared Git-host
reconciliation engine. It takes no props: the remote is the Repository's own
`origin`, the branch is the one the selected checkout is on, and the commit is
the one that branch points at. Which checkout that is, is decided the way every
other Git operation's place is decided, so the same element inside a `<Dir>` at
a linked worktree publishes that worktree's branch.
The branch it publishes to belongs to a Git host, which no local transaction can
enclose, so it observes before it mutates: a destination already holding this
exact commit is adopted with nothing performed, a destination proven absent is
published to once, and a destination holding another commit is refused. It never
force-pushes and never touches upstream tracking.
The Workspace transaction is opened for the export and closed before the remote
is observed, so a network round trip never holds the run's database, and nothing
is imported or published back — a Push changes the Git host and, locally, only
the journal.
The transport never runs through the selected checkout's own `.git/config`: that
file is retained document data, and a push URL, a URL rewrite, a hook or a
signing program written into it would otherwise choose where this run publishes
and what else runs while it happens. It runs instead in a disposable repository
this provider created, reading the checkout's object database through a
read-only alternate, aimed at the exact private retained locator.
Durable JSON carries the Repository's filtered identity without its checkout
path, the remote, the branch, the full destination ref, the refspec, the local
commit and the observed remote commit. The natural key is that identity with the
remote and the destination ref: the external resource is the origin branch,
while the complete request's fingerprint still discriminates a changed commit.
A checkout whose HEAD names no branch is the one refusal of its own, decided
before a durable effect exists and before anything is contacted.
Refs #370.
Copy file name to clipboardExpand all lines: architecture.md
+24-1Lines changed: 24 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -62,6 +62,7 @@ Existing documents and code get aligned to this section retroactively.
62
62
| effect transaction | the single atomic SQLite transaction that publishes one Workspace-local mutation together with that effect's journal result |
63
63
| external effect | an effect whose provider-owned outcome cannot participate in the Workspace SQLite transaction and therefore requires a stable identity and provider reconciliation |
64
64
| XMD-mediated HTTP read | one bounded, non-mutating HTTP request an authored document performs through the contextual Fetch capability, whose detached response is retained as an ordinary durable observation. It is distinct from an Agent's own network authority, which it does not grant, and from a reconciled mutating external effect, which it does not claim: an interruption before its record commits may repeat the read |
65
+
| object-source attachment | adapter-private composition data the trusted host builds for exactly one external-effect reconciliation, giving the selected provider authorized live access to local state the frozen request cannot describe — the Git objects a push publishes, and the retained locator it is authorized to reach. It is authenticated against the durable identity it belongs to, held in that provider's own closure, disposed with the invocation, and is never durable, never part of a natural key and never visible to routing middleware |
65
66
| checkpoint | a completed journal boundary associated with the logical Workspace root visible after that effect |
66
67
| history fork | a new workflow run that replays a compatible journal prefix and continues from its checkpoint and Workspace root under a new immutable document definition |
67
68
| loaded copy | one independently evaluated instance of a package, such as the copy bundled into the binary or a separately installed dependency |
@@ -1026,6 +1027,27 @@ the result retained at the same position, and the provider's answer is parsed at
1026
1027
the terminal before the durable executor returns, so a raw payload becomes a
1027
1028
fixed protocol failure rather than journal content.
1028
1029
1030
+
Some effects need live local state the frozen request cannot describe, and that
1031
+
travels as an object-source attachment rather than as an input. A push needs the
1032
+
Git objects its commit is made of and the destination it may reach; both are
1033
+
built by the trusted host for one reconciliation, authenticated against the
1034
+
retained identity they belong to, and held in the selected provider's closure.
1035
+
Nothing about an attachment reaches the durable request, the natural key or the
1036
+
routing surface, so what discriminates the effect stays the filtered identity a
1037
+
journal may hold while what performs it stays where no replaceable code can
1038
+
address it. The Workspace transaction such an effect opens is read-only and is
1039
+
closed before the host is observed: no transaction is claimed across the
1040
+
Workspace and the external service, and reconciliation rather than a distributed
1041
+
transaction is what makes an interrupted attempt reach the host once.
1042
+
1043
+
A provider that needs a program must also not inherit configuration the run
1044
+
merely stores. A checkout's `.git/config` is retained document data, and several
1045
+
ordinary settings in one name a destination or a program — a push URL, a URL
1046
+
rewrite, a hook, a credential helper, a signing program. The Deno push provider
1047
+
therefore runs its transport in a disposable repository of its own that reads
1048
+
the selected checkout's object database through a read-only alternate, and aims
1049
+
it at the exact private retained locator rather than at a configured remote.
1050
+
1029
1051
Only an answer the terminal accepted decides the effect. A conflict, a permanent
1030
1052
ambiguity and a temporary unavailability so accepted publish the effect's failed
1031
1053
result and replay as the same fixed local failure, rebuilt from its closed name
@@ -2225,7 +2247,7 @@ Status is measured against main.
2225
2247
| caller-owned storage transaction | publishes several changes, including journal events, in one transaction nothing else enlists in | built on main |
2226
2248
| live durable-operation coordinator | explicitly coordinates structured live execution with existing Yield publication while leaving replay and callback effects unchanged | built on the #365 stack |
2227
2249
| Workspace coordination API | fails closed by default; replaceable context routes only a one-use provider selection, while the selected provider directly invokes an execution-owned credentialed capability for execution, publication and failure activation | built on the #365 stack; the Deno provider installs an adapter-private atomic handler |
2228
-
| shared Git-host reconciliation | reconciles Git push, pull-request creation and issue creation through one provider-neutral state machine journaled as `git_host_effect` — Prompt is not a consumer and keeps its own Agent-provider contract: run and expansion identity derived by the engine, observation before mutation, adoption of a proven compatible completion, one performance of a proven absence, refusal of conflict and permanent ambiguity, temporary unavailability as its own ordinary failure, and a provider free to support only some kinds; routing is one request-only contextual operation carrying no completion authority, and only an answer the invocation's own terminal accepted can author a journaled outcome | built on the #297 stack; `Git.Push`, pull request and issue components are its consumers, unbuilt (#370, #295, #296) |
2250
+
| shared Git-host reconciliation | reconciles Git push, pull-request creation and issue creation through one provider-neutral state machine journaled as `git_host_effect` — Prompt is not a consumer and keeps its own Agent-provider contract: run and expansion identity derived by the engine, observation before mutation, adoption of a proven compatible completion, one performance of a proven absence, refusal of conflict and permanent ambiguity, temporary unavailability as its own ordinary failure, and a provider free to support only some kinds; routing is one request-only contextual operation carrying no completion authority, and only an answer the invocation's own terminal accepted can author a journaled outcome | built on the #297 stack; `Git.Push` is its first consumer, built on the #370 stack, while pull request and issue components remain unbuilt (#295, #296) |
2229
2251
| explicit WorkflowRun journal route | binds one already-filtered publication to one exact active transaction and otherwise uses ordinary serialized journal storage | built on the #365 stack |
2230
2252
|`API.Service` / `startService()`| creates an authenticated, supervised loopback service attachment through a provider-neutral operation | built on main |
2231
2253
| foreground command routing and retention | forwards a child's channels live, captures stdout for a `<Capture as>` region, and retains output only when the host asked for a record | built on the #441 stack |
@@ -2242,6 +2264,7 @@ Status is measured against main.
2242
2264
| implicit workflow Workspace | retains provider-neutral filesystem, repository and attachment state by run ID | document filesystem built on the #366 stack and Repository/Worktree composition on the #293 stack; process capabilities unbuilt (#218) |
2243
2265
|`<Repository>` / `<Worktree>` / `<Dir>` composition | names a Git repository and its linked checkouts inside the run-owned Workspace, installs each as contextual working directory, and retains creation identity beside the retained Git bytes | built on the #293 stack, Deno provider only |
2244
2266
| transactional Git effects (`Git.Switch` / `Git.Add` / `Git.Commit`) | publish local Git mutations with their journal result; the enclosing Repository and the contextual working directory select which retained checkout one runs in, and neither observation carries authority — the observed record is compared with the retained row and the directory with the checkouts that row holds, so a failure of authority, of retained state or of an unrecognized native condition fails the run instead of publishing a result | built on the #294 stack, Deno provider only |
2267
+
|`Git.Push`| publishes the selected checkout's exact current named branch and commit to the same branch on the retained Repository's canonical `origin`, reconciled through the shared Git-host state machine rather than through a Workspace transaction: no props and no component result, no force, no upstream mutation and no implicit staging or committing; the durable request and record carry the Repository's filtered identity without its checkout path, and the transport runs in a provider-owned isolated control repository reading the checkout's objects through an authenticated object-source attachment aimed at the exact private retained locator | built on the #370 stack, Deno provider only |
2245
2268
| workflow lifecycle inspection and control | reads status/list/history without advancing a run, enforces the executor lock, refuses live cancellation, cancels non-live runs under that lock and deletes retained state | built on the #367 stack |
2246
2269
| historical authored source | retains an authored durable operation's normalized `SourcePosition` beside its identity, and history parses it or refuses the entry | built on the #367 stack |
2247
2270
| history fork | creates a new run from one compatible checkpoint and retained Workspace root | defined in `specs/workflow-workspace-spec.md`, unbuilt (#368) |
0 commit comments