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
docs: close the 2026-08-11 upstream batch and track deferrals durably
Records S7, fills in each slice's landed Pylon reference, and advances
reviewed-through to a7b0366cbe1e9eabc9e37eb079a38f6b6691f999. Every candidate
in the 60-commit range now has a decision: 50 adopted, 7 skipped, 3 deferred.
Adds a Deferred register to the ledger holding upstream work that was reviewed
and consciously not adopted, each entry carrying a revisit condition a later
session can mechanically check. DEF-1 is the multi-provider pull requests page
(#4849, #6049).
Teaches the review-t3-upstream skill to honour it: a new Phase 2.5 re-evaluates
every open entry against the current upstream head on every review — including
one that finds no new commits — and classifies it due, not yet, or stale.
Phase 4 reports due entries up front and in their own section, Phase 5 keeps
the register current in both directions, and the handoff is incomplete without
mentioning it. A deferral that nobody revisits is the same as losing it.
Copy file name to clipboardExpand all lines: .agents/skills/review-t3-upstream/SKILL.md
+76-2Lines changed: 76 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
---
2
2
name: review-t3-upstream
3
-
description: Review T3 Code upstream changes for selective adoption into Pylon. Use when the user asks what changed upstream, whether Pylon should sync or update, which T3 commits or pull requests are worth adopting, how the forks differ, or asks to integrate selected upstream work. Fetch the protected upstream remote, consult the durable review ledger, group and assess candidate changes, wait for an explicit user decision, and then selectively port approved work with Pylon-first conflict resolution.
3
+
description: Review T3 Code upstream changes for selective adoption into Pylon. Use when the user asks what changed upstream, whether Pylon should sync or update, which T3 commits or pull requests are worth adopting, how the forks differ, whether previously deferred upstream work is ready to revisit, or asks to integrate selected upstream work. Fetch the protected upstream remote, consult the durable review ledger, re-evaluate deferred work against its recorded revisit conditions, group and assess candidate changes, wait for an explicit user decision, and then selectively port approved work with Pylon-first conflict resolution.
4
4
---
5
5
6
6
# Review T3 Upstream
@@ -33,6 +33,7 @@ Confirm:
33
33
-`origin` fetches and pushes `pylon-code/pylon`;
34
34
-`t3code-upstream` fetches `pingdotgg/t3code` and has a disabled push URL;
35
35
-`.agents/upstream-review.md` contains a `reviewed-through` commit;
36
+
- the ledger contains a `## Deferred register` section;
36
37
- the current checkout belongs to Pylon.
37
38
38
39
A dirty tree does not block read-only review, but it blocks integration. Never stash, discard, or commit unrelated work to make the tree clean.
Record the exact upstream head used for the report. Never describe a moving branch without its commit SHA.
66
67
68
+
## Phase 2.5: Re-evaluate deferred work
69
+
70
+
Deferred work is not decided work. It is a promise to look again, and a
71
+
deferral nobody revisits is indistinguishable from having lost it. Run this
72
+
phase on every review, including a review that finds no new commits.
73
+
74
+
Read the `## Deferred register` in `.agents/upstream-review.md`. For each open
75
+
entry:
76
+
77
+
1. Read its `Revisit when` condition and evaluate it against the current
78
+
upstream head, not against memory. The condition names what to check, so
79
+
check it — usually `git log`, `git show --stat`, or a path filter over
80
+
`<deferred sha>..t3code-upstream/main`:
81
+
82
+
```bash
83
+
git log --oneline --since="<deferred on>" t3code-upstream/main -- <paths from the condition>
84
+
```
85
+
86
+
2. Classify the entry as **due** (condition met), **not yet** (condition
87
+
unmet, with the specific evidence), or **stale** (the upstream work was
88
+
superseded, reverted, or has drifted so far that the original deferral no
89
+
longer describes it).
90
+
91
+
3. Re-check the dependency and conflict picture. A deferral that has sat for
92
+
weeks may now conflict with Pylon work that landed since, or may have
93
+
grown follow-up commits that belong with it. Report the current shape, not
94
+
the shape recorded when it was deferred.
95
+
96
+
Report every open entry in the decision brief, due or not, so nothing decays
97
+
silently. A **due** entry is a first-class candidate: give it the same
98
+
treatment as a new change set, including a concrete recommendation. A **not
99
+
yet** entry gets one line naming the evidence that keeps it waiting. A
100
+
**stale** entry should be proposed for outright skip, with the reason, so the
101
+
register does not accumulate work nobody intends to do.
102
+
103
+
Never adopt a deferred entry just because its condition came due. The
104
+
condition earns it a fresh review, not automatic approval — the user still
105
+
decides.
106
+
67
107
## Phase 3: Understand the changes
68
108
69
109
Group commits into coherent change sets before presenting them. A pull request, a dependency chain, or several commits implementing one behavior should normally be one decision.
@@ -86,9 +126,15 @@ Lead with a compact summary:
86
126
- upstream head and review range;
87
127
- number of commits and coherent change sets;
88
128
- patch-equivalent or already-adopted work;
129
+
-**deferred entries that are now due**, named up front rather than buried
130
+
after the new candidates — they have already waited once;
89
131
- highest-value recommendations;
90
132
- areas likely to conflict with Pylon.
91
133
134
+
Give deferred work its own section, before or after the new change sets but
135
+
never merged into them, so the user can tell "this is back again" from "this is
136
+
new". Report the register's full state there: due, not yet, and stale.
137
+
92
138
For each change set, report:
93
139
94
140
- stable candidate ID, upstream SHA, and pull request;
@@ -108,6 +154,29 @@ After the user decides every candidate through the reported upstream head, prepa
108
154
109
155
Record each change set as adopted, skipped, or deferred with its upstream SHA or PR, rationale, and eventual Pylon branch or commit when known. Deferred work remains visible in the ledger even though the cursor advances.
110
156
157
+
A deferral is a decision, so it does not block the cursor. What it does require
158
+
is an entry in the `## Deferred register` before the batch is considered closed.
159
+
Keep the register current in both directions:
160
+
161
+
-**Add** an entry for every newly deferred change set, keyed `DEF-<n>` so
162
+
register ids never collide with a batch's change-set ids, with a
163
+
`Revisit when` condition that a later session can actually check — name the
164
+
paths, the command, or the observable event. "Revisit later" is not a
165
+
condition, and neither is anything that depends on remembering this
166
+
conversation. Beware a condition that reads as satisfied the day it is
167
+
written: "no commits touching X recently" is also true one minute after
168
+
deferring, so pair a quiet-period check with an explicit earliest-revisit
169
+
date.
170
+
-**Move out** an entry as soon as it is adopted or skipped for good: record
171
+
the outcome in that batch's table and delete the register row. The register
172
+
holds open questions only.
173
+
-**Carry forward** everything else untouched, including its original
174
+
`Deferred on` date, so the age of a deferral stays visible.
175
+
176
+
An entry whose condition has come due repeatedly without anyone acting on it is
177
+
a signal the answer is really "skip" — say so rather than deferring a fourth
178
+
time.
179
+
111
180
Do not advance the cursor when:
112
181
113
182
- the user has not decided every candidate;
@@ -153,4 +222,9 @@ Keep the review ledger and final handoff aligned. Report:
153
222
- Pylon branch and commits created;
154
223
- adaptations made for Pylon;
155
224
- checks run and unresolved risks;
156
-
- whether anything remains deferred.
225
+
- the deferred register's state after this review: what was added, what came
226
+
due and what happened to it, what was retired, and what is still waiting
227
+
with its next check.
228
+
229
+
Closing without mentioning the register is an incomplete handoff, even when
0 commit comments