Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
311 commits
Select commit Hold shift + click to select a range
b679ddd
Merge pull request #31 from original-solutions/t3/factory-issue-2
tomkaczocha Oct 15, 2026
00bade3
fix(factory): trim the result line in linear time and drop unused mar…
rawphp Oct 15, 2026
4d016bb
fix(factory): typed sync spawn errors, bounded error attributes, inte…
rawphp Oct 15, 2026
92ae186
test(factory): sync.sh picks the newest nightly tag and merges it thr…
rawphp Oct 15, 2026
dc320eb
feat(factory): daily sync merges upstream's newest nightly tag throug…
rawphp Oct 15, 2026
d2ce21d
docs(factory): describe the daily upstream sync
rawphp Oct 15, 2026
a282f3b
fix(factory): status reads only runs and assistant messages
rawphp Oct 15, 2026
d9f006d
test(factory): sync.sh keeps the token from upstream code and stops o…
rawphp Oct 15, 2026
11c6cfd
fix(factory): sync.sh stops on a merge or push failure and keeps the …
rawphp Oct 15, 2026
dee5cff
fix(factory): smoke-test before release, share the job restart, mark …
rawphp Oct 15, 2026
a50605f
Merge pull request #36 from original-solutions/t3/factory-issue-5
tomkaczocha Oct 15, 2026
eada7ef
fix(factory): ledger handles see each other's lines, and retries sync…
rawphp Oct 15, 2026
a25530e
fix(factory): a dirty build's version carries a hash of its uncommitt…
rawphp Oct 15, 2026
434d8f9
Merge origin/main into t3/factory-issue-11
rawphp Oct 15, 2026
9b077e3
test(factory): sync.sh matches the conflicts issue title itself; modi…
rawphp Oct 15, 2026
159886a
fix(factory): sync.sh matches the conflicts issue title in shell, not…
rawphp Oct 15, 2026
a4cdc63
Merge pull request #37 from original-solutions/t3/factory-issue-11
tomkaczocha Oct 15, 2026
20cbe28
fix(factory): an append ends a cut-off last line before checking for …
rawphp Oct 15, 2026
e34bdd4
test(factory): run status change stream cases
rawphp Oct 15, 2026
e88277b
refactor(factory): expose run through a FactoryProcess service
rawphp Oct 15, 2026
36b6789
fix(factory): LedgerError is a tagged error, and the line-break repai…
rawphp Oct 15, 2026
034cdfb
test(factory): send, archive and removeWorktree on FactorySessions
rawphp Oct 15, 2026
8a65faf
Merge pull request #33 from original-solutions/t3/factory-issue-8
tomkaczocha Oct 15, 2026
8420dce
test(factory): an open whose cut-off-line repair fails is Io and a la…
rawphp Oct 15, 2026
b227c8f
feat(factory): stream of threads whose latest run changed status
rawphp Oct 15, 2026
af2ef33
feat(factory): send, archive and removeWorktree on FactorySessions
rawphp Oct 15, 2026
8826ac0
docs(factory): answer open question 4, T3 leaves an archived thread's…
rawphp Oct 15, 2026
57c4bb7
fix(factory): transition returns InvalidTransition as a typed failure
rawphp Oct 15, 2026
71c5aeb
refactor(factory): one Schema.TaggedError class per ledger failure
rawphp Oct 15, 2026
54af80e
test(factory): events contract asserts completed and proves no replay…
rawphp Oct 15, 2026
783be3f
fix(factory): an answered needs-info issue can go back to ready
rawphp Oct 15, 2026
fca723a
Merge pull request #35 from original-solutions/t3/factory-issue-9
tomkaczocha Oct 15, 2026
0362d86
test(factory): separate stderr and truncation flag for FactoryProcess
rawphp Oct 15, 2026
cb35ead
Merge pull request #32 from original-solutions/t3/factory-issue-10
tomkaczocha Oct 15, 2026
2646c2d
feat(factory): separate stderr and truncation flag for FactoryProcess
rawphp Oct 15, 2026
0dbf91c
fix(factory): build.sh refuses a tree with uncommitted changes
rawphp Oct 15, 2026
874956d
test(factory): second launch fails on a missing ref, not an exhausted…
rawphp Oct 15, 2026
23156bb
Merge remote-tracking branch 'origin/main' into t3/c78b74ad
rawphp Oct 15, 2026
64180c8
test(factory): port softfac's gh tracker cases
rawphp Oct 15, 2026
6ce1de0
feat(factory): gh tracker over FactoryProcess
rawphp Oct 15, 2026
c9ce5c1
Merge remote-tracking branch 'origin/main' into t3/factory-issue-12
rawphp Oct 15, 2026
aeb0727
Merge pull request #34 from original-solutions/t3/factory-issue-3
tomkaczocha Oct 15, 2026
938fa21
test(factory): events contract counts one id per status change of the…
rawphp Oct 15, 2026
04c6c63
test(factory): prove the removeWorktree wait and cover archive and se…
rawphp Oct 15, 2026
5db9a2a
Merge remote-tracking branch 'origin/main' into t3/factory-issue-4
rawphp Oct 15, 2026
3fd0495
test(factory): github tracker speaks the lifecycle State, refuses NUL…
rawphp Oct 15, 2026
353be93
fix(factory): github tracker uses the lifecycle State and refuses NUL…
rawphp Oct 15, 2026
5b21304
Merge remote-tracking branch 'origin/main' into t3/c78b74ad
rawphp Oct 15, 2026
557f045
test(factory): stub the filesystem so the removeWorktree wait needs n…
rawphp Oct 15, 2026
4d396f5
test(factory): fileAt refuses an oversize file whose content is whole
rawphp Oct 15, 2026
5acb4cc
test(factory): the gate's checkout, merge, commands, locks and cleanup
rawphp Oct 15, 2026
893c887
fix(factory): gh tracker types the secondary rate limit, a missing gh…
rawphp Oct 15, 2026
4c3a434
fix(factory): run status changes include a new run's first status
rawphp Oct 15, 2026
ed9fdb8
Merge pull request #41 from original-solutions/t3/factory-issue-12
tomkaczocha Oct 15, 2026
7a122b8
feat(factory): run a repo's provision and gate commands on a fresh ch…
rawphp Oct 15, 2026
952129a
Merge pull request #39 from original-solutions/t3/c78b74ad
tomkaczocha Oct 15, 2026
6cf596e
Merge remote-tracking branch 'origin/main' into t3/factory-issue-18
rawphp Oct 15, 2026
c610ca8
Merge remote-tracking branch 'origin/main' into t3/factory-issue-6
rawphp Oct 15, 2026
9b690bb
test(factory): port softfac's pull request, compare and check-run cases
rawphp Oct 15, 2026
e764b35
test(factory): a spawn error leaves no gate_command line, and git out…
rawphp Oct 15, 2026
9a11376
feat(factory): pull request reads and writes through gh
rawphp Oct 15, 2026
ce276d1
fix(factory): write a gate's command lines only when its commands hav…
rawphp Oct 15, 2026
06f885e
fix(factory): git calls parse stdout only and fail when they print pa…
rawphp Oct 15, 2026
307947e
fix(factory): sync.sh reports every stop, targets the fork, and keeps…
rawphp Oct 15, 2026
e979b80
fix(factory): remove a gate checkout without blocking the server's ev…
rawphp Oct 15, 2026
1019204
docs(factory): note the git environment drift, and share the results …
rawphp Oct 15, 2026
32b4a18
test(factory): markPrDraft reads the PR state after any failure
rawphp Oct 15, 2026
249fae9
fix(factory): markPrDraft reads the PR state after any failure
rawphp Oct 15, 2026
35c4efd
fix(factory): sync.sh lands exactly the checked commit and never wait…
rawphp Oct 15, 2026
4940198
fix(factory): a refused send fails as MessageRejectedError, archive i…
rawphp Oct 15, 2026
44cd981
test(factory): a check's conclusion and link come from the deciding run
rawphp Oct 15, 2026
848d2f6
test(factory): a head behind the base is checked for a second parent,…
rawphp Oct 15, 2026
adc30c8
fix(factory): a refused landing files an issue, and up to date reads …
rawphp Oct 15, 2026
b919a6f
test(factory): sync.sh reads UPSTREAM from origin's main, and a secon…
rawphp Oct 15, 2026
3cbe475
fix(factory): upstream code runs in a job with no write token
rawphp Oct 15, 2026
7dffcf6
fix(factory): removeWorktree deletes a leftover directory up to three…
rawphp Oct 15, 2026
fdaee1f
Merge pull request #40 from original-solutions/t3/factory-issue-6
tomkaczocha Oct 15, 2026
7f0d01c
Merge remote-tracking branch 'origin/main' into t3/placeholder
rawphp Oct 15, 2026
a75706a
fix(factory): pullRequest refuses a head that is not a full commit id
rawphp Oct 15, 2026
fd33a2d
test(factory): publish refuses forged merges; docs say what stays pre…
rawphp Oct 15, 2026
dd768b6
Merge pull request #42 from original-solutions/t3/placeholder
tomkaczocha Oct 15, 2026
9f418c1
fix(factory): only parsed git output is refused past the cap
rawphp Oct 15, 2026
fa51b2a
fix(factory): a regenerated route tree waits for a person instead of …
rawphp Oct 15, 2026
5ec8efc
docs(factory): a ledger failure while gate_command lines are written …
rawphp Oct 15, 2026
465a1e5
Merge pull request #38 from original-solutions/t3/factory-issue-4
tomkaczocha Oct 15, 2026
34cd4d6
test(factory): port softfac's approval, text check and blocker tests
rawphp Oct 15, 2026
f82bda8
feat(factory): the approval rule, text checks and blockers over gh
rawphp Oct 15, 2026
072e64c
refactor(factory): split the pure approval judgement and Depends on p…
rawphp Oct 15, 2026
9e349c7
Merge pull request #43 from original-solutions/t3/factory-issue-18
rawphp Oct 15, 2026
f96097b
test(factory): a blocker in a state other than the exact `closed` sti…
rawphp Oct 15, 2026
706ac98
fix(factory): a ledger failure once the attempt is counted is a GateR…
rawphp Oct 15, 2026
fcd513a
fix(factory): bound and tighten the Depends on reads, and judge appro…
rawphp Oct 15, 2026
a618ea5
Merge pull request #45 from original-solutions/t3/factory-issue-18
tomkaczocha Oct 15, 2026
88c871b
Merge pull request #44 from original-solutions/t3/factory-issue-13-1
tomkaczocha Oct 15, 2026
7061a13
test(factory): duration, unfinished run listing and the claims pause …
rawphp Oct 15, 2026
31812be
feat(factory): duration, unfinished run listing and the claims pause …
rawphp Oct 15, 2026
d31b95a
test(factory): gh login, the claim edit, unassigned claims and the ne…
rawphp Oct 15, 2026
4913224
feat(factory): gh login, the claim edit, unassigned claims and the ne…
rawphp Oct 15, 2026
768a8d5
test(factory): the claim: approval, the claim edit and its repair, re…
rawphp Oct 15, 2026
99efe70
feat(factory): the claim: approval, the claim edit and its repair, re…
rawphp Oct 15, 2026
74a39f3
style(factory): catch the missing-ledger tag with catchTags, as the l…
rawphp Oct 15, 2026
1863af8
test(factory): softfac's tick tests for ordering, fairness, slots, bl…
rawphp Oct 15, 2026
0a06867
feat(factory): one pass: load repos, count runs, handle untracked and…
rawphp Oct 15, 2026
cf3532a
test(factory): the pass loop runs at start, every poll_seconds, on wa…
rawphp Oct 15, 2026
1c66f2d
feat(factory): FactoryLayer runs the pass loop over the live world an…
rawphp Oct 15, 2026
dd396c2
test(factory): a FIFO pause file does not block, a failed start's err…
rawphp Oct 15, 2026
641145b
fix(factory): review cycle 1: a FIFO pause file cannot block, a faile…
rawphp Oct 15, 2026
f2711bc
fix(factory): review-gate round 1: limit before blockers, one ledger …
rawphp Oct 16, 2026
d364cef
fix(factory): review-gate round 2: a cut-short claim is commented on …
rawphp Oct 16, 2026
a8a24e2
Merge pull request #46 from original-solutions/t3/placeholder-1
tomkaczocha Oct 16, 2026
24d132e
feat(factory): a sessions layer with its projection store provided
rawphp Oct 16, 2026
844104c
test: port softfac's start tests for the launch
rawphp Oct 16, 2026
cb7c29f
feat(factory): launch the /factory session for a claimed issue
rawphp Oct 16, 2026
d387187
test(factory): a confirmed triage run is started again by the next pass
rawphp Oct 16, 2026
76c9b36
fix(factory): the pass starts a confirmed triage run again
rawphp Oct 16, 2026
c20e7a4
test(factory): a start that fails at T3 is logged as a t3 error
rawphp Oct 16, 2026
13207be
fix(factory): a failed T3 call is logged as kind t3
rawphp Oct 16, 2026
8e61acc
refactor(factory): move the run's stop and stuck path to runner/run.ts
rawphp Oct 16, 2026
9f46619
test(factory): pin the whole outcome in two stuck-path start tests
rawphp Oct 16, 2026
dafc3d7
fix(factory): review-gate round 2: the run steps resume and never claim
rawphp Oct 16, 2026
17be34c
fix(factory): review-gate round 3: a re-readied issue is not held bac…
rawphp Oct 16, 2026
8265cc9
fix(factory): review-gate round 4: a stalled triage run says so and k…
rawphp Oct 16, 2026
857d1bd
fix(factory): review-gate round 5: a stalled run's line says why and …
rawphp Oct 16, 2026
1937156
fix(factory): review-gate round 6: a retry that waits on its own run …
rawphp Oct 16, 2026
167ccbf
fix(factory): review-gate round 7: a retry claims past its own sessio…
rawphp Oct 16, 2026
ea835ff
test(factory): review-gate round 8: pin the limit around a re-readied…
rawphp Oct 16, 2026
9e80956
Merge pull request #47 from original-solutions/t3/factory-issue-16
tomkaczocha Oct 16, 2026
46d9e3e
test(factory): session text, result-line reminder and progress of a b…
rawphp Oct 16, 2026
09915e0
feat(factory): prepare session text and read a building run's progress
rawphp Oct 16, 2026
e0687d1
test(factory): advance a building run to its result line
rawphp Oct 16, 2026
8d6ef78
feat(factory): advance a building run to its result line
rawphp Oct 16, 2026
a36408d
test(factory): watch a building run's text and stop it at its time limit
rawphp Oct 16, 2026
fec84c4
feat(factory): watch a building run's text and stop it at its time limit
rawphp Oct 16, 2026
a2f42fe
test(factory): the pass works a building run and the loop wakes on it…
rawphp Oct 16, 2026
cd2b008
feat(factory): the pass follows a building run and wakes on its threa…
rawphp Oct 16, 2026
b4e6422
test(factory): the pass advances a run left in needs-info or stuck, a…
rawphp Oct 16, 2026
a56eabc
fix(factory): the pass advances a run left in needs-info or stuck
rawphp Oct 16, 2026
c4ac52d
fix(factory): a reminder T3 refuses ends the run as stuck
rawphp Oct 16, 2026
7329554
refactor(factory): one interpreter for lifecycle actions, one text sa…
rawphp Oct 16, 2026
098c9e3
test(factory): a thread the factory does not own never wakes the pass
rawphp Oct 16, 2026
71fb342
refactor(factory): the events wake is testable over a finite stream
rawphp Oct 16, 2026
ff4348f
test: finished runs are skipped by reading only the file's tail
rawphp Oct 16, 2026
a264b7b
feat: listUnfinishedRuns skips a finished run by its tail
rawphp Oct 16, 2026
aa444d3
test(factory): cut-short scan skips known issues, remembers judgement…
rawphp Oct 16, 2026
16b6032
test(factory): a cut-short release comments unless this claim was alr…
rawphp Oct 16, 2026
a8fc4b2
fix(factory): cut-short scan reads no history for known or remembered…
rawphp Oct 16, 2026
c59960a
fix(factory): a cut-short release comments unless this claim was alre…
rawphp Oct 16, 2026
7d26402
test: a run file of only blank lines is listed as unfinished
rawphp Oct 16, 2026
baee5a7
fix: lastLineIsFinished stops at a blank line that starts the tail
rawphp Oct 16, 2026
af3aa00
test(factory): pin the release's same-second and non-UTC comment times
rawphp Oct 16, 2026
bc58f39
test(factory): a rate-limited or timed-out history read ends the cut-…
rawphp Oct 16, 2026
ba10b6f
fix(factory): only a call's own failure is isolated in the cut-short …
rawphp Oct 16, 2026
ac95256
test(factory): cover the cut-short scan's wiring and the call-specifi…
rawphp Oct 16, 2026
cd28e90
test: a finished-named invalid line and a cut-off fragment after fini…
rawphp Oct 16, 2026
11492a7
Merge pull request #54 from original-solutions/t3/placeholder-2
tomkaczocha Oct 16, 2026
c4f4ac3
refactor(factory): share the label-event and comment checks the relea…
rawphp Oct 16, 2026
8e81ea2
fix(factory): claim memo keys judgements by login and holds one per i…
rawphp Oct 16, 2026
69d4c2d
fix(factory): stop the time limit charging finished builds, and wake …
rawphp Oct 16, 2026
bc45a55
Merge remote-tracking branch 'origin/main' into t3/factory-issue-17
rawphp Oct 16, 2026
5295969
fix(factory): a run whose pull request waits for the gate holds no slot
rawphp Oct 16, 2026
77b57e0
fix(factory): a build whose pull request waits for the gate is not re…
rawphp Oct 16, 2026
d8e3539
Merge pull request #51 from original-solutions/t3/factory-issue-17
tomkaczocha Oct 16, 2026
7db5cfe
Merge pull request #53 from original-solutions/t3/factory-issue-48
tomkaczocha Oct 16, 2026
ad0aa48
Merge remote-tracking branch 'origin/main' into t3/factory-issue-50-1
rawphp Oct 16, 2026
ff23fa2
Merge pull request #52 from original-solutions/t3/factory-issue-50
tomkaczocha Oct 16, 2026
bbcc47a
test(factory): port softfac's gate tests for a building run
rawphp Oct 16, 2026
bf85c9c
feat(factory): gate a building run and open its pull request for review
rawphp Oct 16, 2026
e4bb1b1
test(factory): a sent-back run is a building run again, and only a de…
rawphp Oct 16, 2026
85fd8d5
fix(factory): a sent-back run is worked like any building run, and on…
rawphp Oct 16, 2026
286825c
test(factory): the conflict message's cap and cleaning, and the gate'…
rawphp Oct 16, 2026
7d727fc
fix(factory): the conflict message builds every shown path from the c…
rawphp Oct 16, 2026
3480eb9
ci(factory): a Lint job runs vp check beside Check
rawphp Oct 16, 2026
520aaab
test: install and rollback wait for the server to come up
rawphp Oct 16, 2026
b33d8df
feat(factory): roll back an install that fails its health check
rawphp Oct 16, 2026
626a497
docs(factory): recovery section
rawphp Oct 16, 2026
cc7ae04
test(factory): route layer behind T3's auth and the loop's status
rawphp Oct 16, 2026
10955d1
test: the machine config has a notify key
rawphp Oct 16, 2026
8b3ea13
feat: the machine config has a notify key
rawphp Oct 16, 2026
641bc77
feat(factory): serve /api/factory/status behind T3's authentication
rawphp Oct 16, 2026
3dbdaff
test: the Attention service keeps open items and notifies once
rawphp Oct 16, 2026
6c39b22
feat: an Attention service keeps open items and notifies once
rawphp Oct 16, 2026
a6f544d
test: the pass raises and clears attention items
rawphp Oct 16, 2026
07100e7
test: the runtime raises config and pass-errors items and keeps them …
rawphp Oct 16, 2026
54fa1b3
test(factory): pin the status route's scope and its path
rawphp Oct 16, 2026
dfe3aa5
docs(factory): name only the OTLP proxy as the plain-route auth prece…
rawphp Oct 16, 2026
3fcce22
feat: the pass raises and clears attention items
rawphp Oct 16, 2026
b7c59a5
feat: the factory runtime raises config and pass-errors items
rawphp Oct 16, 2026
5ecaffe
test: a failed launch clears earlier items and a hung notifier stops …
rawphp Oct 16, 2026
51fe118
test: a server that logs no factory config is healthy, and the log ta…
rawphp Oct 16, 2026
85a7817
fix: a failed launch clears earlier items and a hung notifier stops n…
rawphp Oct 16, 2026
e4afa79
test(factory): an internal auth error answers 500; smoke-test step ma…
rawphp Oct 16, 2026
9ed810d
fix(factory): rollback without current, late-server tests, runbook co…
rawphp Oct 16, 2026
d33aaab
fix(factory): status reasons name no path or config error; say what r…
rawphp Oct 16, 2026
cde8288
fix(factory): a reported pull request is advanced before every gate, …
rawphp Oct 16, 2026
9ba1233
Merge pull request #67 from original-solutions/t3/factory-issue-58
tomkaczocha Oct 16, 2026
eb8d983
Merge pull request #66 from original-solutions/t3/factory-issue-59
tomkaczocha Oct 16, 2026
376bb80
Merge pull request #64 from original-solutions/t3/factory-issue-56
tomkaczocha Oct 16, 2026
3d43d09
Merge remote-tracking branch 'origin/main' into t3/factory-issue-57
rawphp Oct 16, 2026
2a979c1
Merge pull request #65 from original-solutions/t3/factory-issue-57
tomkaczocha Oct 16, 2026
e3be80e
fix(factory): the gate's stuck comment names the failed command, and …
rawphp Oct 16, 2026
410ffbf
merge: origin/main into the background gate
rawphp Oct 16, 2026
43a99d5
Merge origin/main into t3/factory-issue-19
rawphp Oct 16, 2026
529102d
Merge origin/t3/factory-issue-19
rawphp Oct 16, 2026
5aa7daa
docs(factory): record the settled seams, decisions and issue list
rawphp Oct 16, 2026
98461ec
refactor(factory): a pass and a background gate raise the same stuck …
rawphp Oct 16, 2026
e5a67b3
test(factory): rotate the t3fac log and install its LaunchAgent
rawphp Oct 16, 2026
c45494d
feat(factory): rotate the t3fac log with a second LaunchAgent
rawphp Oct 16, 2026
27f05d8
test(factory): a failing logrotate reload must not block recovery
rawphp Oct 16, 2026
256b316
fix(factory): a failing logrotate reload no longer blocks recovery
rawphp Oct 16, 2026
dbc1e51
test(factory): a failed script copy leaves no temporary file behind
rawphp Oct 16, 2026
40b0e2e
fix(factory): remove the temporary script when its copy cannot land
rawphp Oct 16, 2026
5159caf
docs(factory): list the .gitignore seam, and mark #60 and #61 as not …
rawphp Oct 16, 2026
7e69cf3
fix(factory): rotation no longer fails a health check or eats history…
rawphp Oct 16, 2026
4b894b3
Merge pull request #63 from original-solutions/t3/factory-issue-19
tomkaczocha Oct 16, 2026
711753c
Merge pull request #68 from original-solutions/t3/factory-issue-62
tomkaczocha Oct 16, 2026
e469977
Merge remote-tracking branch 'origin/main' into t3/factory-issue-60-1
rawphp Oct 16, 2026
60c7c03
Merge origin/main into t3/factory-issue-60
rawphp Oct 16, 2026
d0cfc1b
test(factory): a smoke server killed before it recorded its pid count…
rawphp Oct 16, 2026
805247b
Merge remote-tracking branch 'origin/t3/factory-issue-60' into t3/fac…
rawphp Oct 16, 2026
63d4942
fix(factory): the health check reads t3fac.log.1 only when a rotation…
rawphp Oct 16, 2026
cb12552
Merge pull request #69 from original-solutions/t3/factory-issue-60
tomkaczocha Oct 16, 2026
303249f
test: the end of a run by merge, close, abandon and stop by hand
rawphp Oct 16, 2026
bfb4dca
feat: a run ends when its pull request ends, its issue closes, or an …
rawphp Oct 16, 2026
193320b
Merge remote-tracking branch 'origin/main' into t3/factory-issue-20
rawphp Oct 16, 2026
833a522
test: a stop request taken after the run left building is dropped, no…
rawphp Oct 16, 2026
bedb812
fix: drop a stop request for a run that is no longer building
rawphp Oct 16, 2026
e10a257
fix: review round 1 of the end of a run
rawphp Oct 16, 2026
9586c60
Merge pull request #70 from original-solutions/t3/factory-issue-20
tomkaczocha Oct 16, 2026
eb666ff
test: one issue through the whole loop, with a fake gh and the replay…
rawphp Oct 16, 2026
a7af9db
feat: run one issue through the whole loop with in-memory transcripts…
rawphp Oct 16, 2026
e84068a
test: the example machine config loads and watches the fork from its …
rawphp Oct 16, 2026
59ff40e
feat: an example machine config for the fork on this Mac
rawphp Oct 16, 2026
2936e4b
feat: give the fork's server the factory's gh login and vp on its PATH
rawphp Oct 16, 2026
a9af6a4
docs: the runbook for switching this repo to the fork's factory and back
rawphp Oct 16, 2026
05d3427
fix: keep the e2e test inside the boundary rule
rawphp Oct 16, 2026
6268057
docs: write the machine config only after the repo has left the Rust …
rawphp Oct 16, 2026
4a84ed6
refactor: drop the unused branchOfThread parameter from the e2e api h…
rawphp Oct 16, 2026
3c4c6b8
fix: review round 1 of the handover
rawphp Oct 16, 2026
214c0e0
Merge pull request #71 from original-solutions/t3/factory-issue-21
tomkaczocha Oct 16, 2026
e630741
fix(factory): build smoke test expects "no factory config" on an empt…
rawphp Oct 16, 2026
410aacb
fix(factory): stop the smoke server's whole process group so cleanup …
rawphp Oct 16, 2026
676303a
Merge pull request #72 from original-solutions/fix/build-smoke-no-fac…
tomkaczocha Oct 16, 2026
f40601a
test: port softfac's forwarding tests
rawphp Oct 16, 2026
782fbc4
feat: forward instructor comments and body edits into the session
rawphp Oct 16, 2026
01efd08
fix(test): the build smoke test expects "no factory config" like buil…
rawphp Oct 16, 2026
514caa2
test: the pass starts the gate while a gate send is pending
rawphp Oct 16, 2026
c90edd9
fix: the pass starts the gate while a gate send is pending
rawphp Oct 16, 2026
b7176bc
fix: review round 1 of forwarding instructor comments
rawphp Oct 16, 2026
b6c45ab
Merge pull request #73 from original-solutions/t3/factory-issue-22
tomkaczocha Oct 16, 2026
333230d
CI: run Linux jobs on Jog runners
rawphp Oct 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions .dw/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# softfac (the Rust factory) reads this block from the default branch on every pass.
# Design and plan: factory/docs/design.md once issue #1 lands; issues #1 to #21.
factory:
instructors: [tomkaczocha, rawphp]
base: main
provision: [vp i]
gate: [factory/scripts/check.sh]
limits: { gate_retries: 2 }
autonomy: pr
2 changes: 1 addition & 1 deletion .github/workflows/cursor-hygiene-webhook.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ permissions:
jobs:
forward:
name: POST to Cursor
runs-on: ubuntu-24.04
runs-on: jog
steps:
- name: POST to Cursor
env:
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/desktop-macos-preview-publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ jobs:
github.event.workflow_run.conclusion == 'success'
# The build workflow completes for every PR push (its label gate is on the
# job), so this runs often and usually finds nothing. Keep it cheap.
runs-on: ubuntu-24.04
runs-on: jog
timeout-minutes: 10
permissions:
actions: read
Expand Down Expand Up @@ -500,7 +500,7 @@ jobs:
(github.event.action == 'closed' ||
(github.event.action == 'unlabeled' && github.event.label.name == 'preview:mac'))
# Runs on every PR close and usually finds nothing. Keep it cheap.
runs-on: ubuntu-24.04
runs-on: jog
timeout-minutes: 10
# Cleanup runs must complete: a close event right after an unlabel queues
# behind the running cleanup instead of canceling it mid-delete.
Expand Down
71 changes: 71 additions & 0 deletions .github/workflows/factory-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
name: Factory CI

on:
pull_request:
branches:
- main
push:
branches:
- main

permissions:
contents: read

concurrency:
group: factory-ci-${{ github.event.pull_request.number || github.sha }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}

# This is the fork's own workflow. Upstream's workflows are disabled on this repo.
jobs:
check:
name: Check
runs-on: jog
timeout-minutes: 15
steps:
- name: Checkout
uses: actions/checkout@v6
with:
sparse-checkout: |
/*
!/.repos/
sparse-checkout-cone-mode: false

- name: Setup Vite+
uses: voidzero-dev/setup-vp@v1
with:
node-version-file: package.json
cache: true
run-install: true

- name: Install
run: vp i

- name: Check
run: factory/scripts/check.sh

# Runs the command upstream's ci.yml Lint job runs. check.sh and the factory gate do not run it.
lint:
name: Lint
runs-on: jog
timeout-minutes: 15
steps:
- name: Checkout
uses: actions/checkout@v6
with:
sparse-checkout: |
/*
!/.repos/
sparse-checkout-cone-mode: false

- name: Setup Vite+
uses: voidzero-dev/setup-vp@v1
with:
node-version-file: package.json
cache: true
run-install: true

- name: Install
run: vp i

- name: Lint
run: vp check
81 changes: 81 additions & 0 deletions .github/workflows/factory-sync.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
name: Factory sync

on:
schedule:
- cron: "17 3 * * *"
workflow_dispatch:

permissions: {}

concurrency:
group: factory-sync

# This is the fork's own workflow. It merges upstream's newest nightly tag into
# main through a pull request; factory/scripts/sync.sh says how. Upstream's code
# (install scripts, the route generator, the checks) runs only in `prepare`,
# which has no write token. `publish` holds the token and runs git and gh only.
jobs:
prepare:
name: Merge and check
runs-on: jog
timeout-minutes: 60
permissions:
contents: read
steps:
- name: Checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
persist-credentials: false

- name: Setup Vite+
uses: voidzero-dev/setup-vp@v1
with:
node-version-file: package.json
# No cache: this job runs upstream's install scripts, and a cache it
# saves would be restored by the fork's other workflows.
cache: false

- name: Merge and check
run: |
git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
factory/scripts/sync.sh prepare "$RUNNER_TEMP/sync"

- name: Upload the prepared sync
uses: actions/upload-artifact@v7
with:
name: sync
path: ${{ runner.temp }}/sync
retention-days: 7
if-no-files-found: error

publish:
name: Push, land or file
needs: prepare
runs-on: jog
timeout-minutes: 15
permissions:
contents: write
pull-requests: write
issues: write
steps:
- name: Checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
# git push uses gh's credential helper instead.
persist-credentials: false

- name: Download the prepared sync
uses: actions/download-artifact@v8
with:
name: sync
path: ${{ runner.temp }}/sync

- name: Publish
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh auth setup-git
factory/scripts/sync.sh publish "$RUNNER_TEMP/sync"
2 changes: 1 addition & 1 deletion .github/workflows/issue-labels.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ permissions:
jobs:
sync:
name: Sync issue labels
runs-on: ubuntu-24.04
runs-on: jog
steps:
- name: Ensure managed issue labels exist
uses: actions/github-script@v7
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/pr-size.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ permissions:
jobs:
prepare-config:
name: Prepare PR size config
runs-on: ubuntu-24.04
runs-on: jog
outputs:
labels_json: ${{ steps.config.outputs.labels_json }}
steps:
Expand Down Expand Up @@ -58,7 +58,7 @@ jobs:
name: Sync PR size label definitions
needs: prepare-config
if: github.event_name != 'pull_request_target'
runs-on: ubuntu-24.04
runs-on: jog
permissions:
contents: read
issues: write
Expand Down Expand Up @@ -115,7 +115,7 @@ jobs:
name: Label PR size
needs: prepare-config
if: github.event_name == 'pull_request_target'
runs-on: ubuntu-24.04
runs-on: jog
permissions:
contents: read
issues: read
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/pr-vouch.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ permissions:
jobs:
collect-targets:
name: Collect PR targets
runs-on: ubuntu-24.04
runs-on: jog
outputs:
targets: ${{ steps.collect.outputs.targets }}
steps:
Expand Down Expand Up @@ -66,7 +66,7 @@ jobs:
name: Label PR ${{ matrix.target.number }}
needs: collect-targets
if: ${{ needs.collect-targets.outputs.targets != '[]' }}
runs-on: ubuntu-24.04
runs-on: jog
concurrency:
group: pr-vouch-${{ matrix.target.number }}
cancel-in-progress: true
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -708,7 +708,7 @@ jobs:
desktop_win_arm64,
]
if: ${{ !failure() && !cancelled() && needs.preflight.result == 'success' && needs.relay_public_config.result == 'success' && needs.quality.result == 'success' && needs.test.result == 'success' && needs.test_server.result == 'success' && needs.desktop_mac_arm64.result == 'success' && needs.desktop_linux_x64.result == 'success' && needs.desktop_linux_arm64.result == 'success' && needs.desktop_win_x64.result == 'success' && needs.desktop_win_arm64.result == 'success' }}
runs-on: ubuntu-24.04 # blacksmith-8vcpu-ubuntu-2404
runs-on: jog # blacksmith-8vcpu-ubuntu-2404
timeout-minutes: 15
permissions:
contents: read
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/thread-transfer-report.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ jobs:
publish:
name: Publish PR comment
if: github.event.workflow_run.event == 'pull_request'
runs-on: ubuntu-24.04
runs-on: jog
concurrency:
group: thread-transfer-report-${{ github.event.workflow_run.pull_requests[0].number || github.event.workflow_run.id }}
cancel-in-progress: true
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ build/
release/
release-mock/
.t3
.worktrees/
.idea/
apps/web/.playwright
apps/web/playwright-report
Expand Down
Loading
Loading