Skip to content

Instantly share code, notes, and snippets.

View sachaos's full-sized avatar
🏠
Working from home

Takumasa Sakao sachaos

🏠
Working from home
View GitHub Profile
@sachaos
sachaos / REPRODUCTION_EN.md
Last active May 22, 2026 14:43
Homebrew rename + handover: silent swap reproduction (todoist-cli case study)

Homebrew rename + handover: silent swap reproduction

Conclusion

Existing users who do NOT run brew upgrade between the rename PR merge and the new-formula PR merge will be silently swapped to the new vendor's package on their next brew upgrade — no warning, no confirmation. Reproduced on a real machine.

Conversely, existing users who DO run brew upgrade during the rename window are protected: the rename mechanism moves their Cellar directory to the new name, so the later handover doesn't touch them.

So the practical function of a "migration window" is not "time for users to notice the rename" — it is "time for users' Cellars to be physically renamed via brew upgrade, before the original name starts pointing at a different package."

[
{
"ID": 0,
"Mode": "link-install",
"Package": "command-line-arguments",
"Deps": [
1
],
"Objdir": "/var/folders/y3/t2g2qt4s6sxbptdqcf9t_s9r0000gn/T/go-build3469758781/b001/",
"Target": "main",
[
{"name":"Running build command","ph":"B","ts":1608125314072113,"pid":0,"tid":0}
,{"name":"load.PackagesAndErrors","ph":"B","ts":1608125314072345,"pid":0,"tid":0}
,{"name":"load.PackagesAndErrors","ph":"E","ts":1608125314699868,"pid":0,"tid":0}
,{"name":"exec.Builder.Do (link-install main)","ph":"B","ts":1608125314700290,"pid":0,"tid":0}
,{"name":"Executing action (build internal/cpu)","ph":"B","ts":1608125314714478,"pid":0,"tid":1}
,{"name":"Executing action (build runtime/internal/atomic)","ph":"B","ts":1608125314714520,"pid":0,"tid":2}
,{"name":"Executing action (build runtime/internal/sys)","ph":"B","ts":1608125314714534,"pid":0,"tid":3}
,{"name":"Executing action (build runtime/internal/sys)","ph":"E","ts":1608125314747223,"pid":0,"tid":3}
,{"name":"Executing action (build runtime/internal/math)","ph":"B","ts":1608125314747327,"pid":0,"tid":4}
[
{"name":"Running build command","ph":"B","ts":1608123884239379,"pid":0,"tid":0}
,{"name":"load.PackagesAndErrors","ph":"B","ts":1608123884239606,"pid":0,"tid":0}
,{"name":"load.PackagesAndErrors","ph":"E","ts":1608123884297087,"pid":0,"tid":0}
,{"name":"exec.Builder.Do (link-install main)","ph":"B","ts":1608123884297211,"pid":0,"tid":0}
,{"name":"Executing action (build internal/unsafeheader)","ph":"B","ts":1608123884317273,"pid":0,"tid":2}
,{"name":"Executing action (build internal/cpu)","ph":"B","ts":1608123884317318,"pid":0,"tid":10}
,{"name":"Executing action (build runtime/internal/atomic)","ph":"B","ts":1608123884317335,"pid":0,"tid":3}
,{"name":"Executing action (build runtime/internal/sys)","ph":"B","ts":1608123884317347,"pid":0,"tid":5}
,{"name":"Executing action (build math/bits)","ph":"B","ts":1608123884317351,"pid":0,"tid":6}
@sachaos
sachaos / 0_reuse_code.js
Last active August 29, 2015 14:08
Here are some things you can do with Gists in GistBox.
// Use Gists to store code you would like to remember later on
console.log(window); // log the "window" object to the console
@sachaos
sachaos / SublimeKeySetting
Created September 16, 2014 07:37
keybind for sublime text to operate sidebar
{
"keys": ["ctrl+x", "ctrl+j"],
"command": "run_multiple_commands",
"args": {
"commands": [
{"command": "toggle_side_bar", "context": "window"},
{"command": "focus_side_bar", "context": "window"}
]
},
"context": "window"
0: 声優/iwaojunko
0: 声優/iwanagatetsuya
0: 声優/jimakiya521
0: 芸人/komandofochiken
0: 音楽家/aisoharuhi
0: 芸能人/kyanchiaki
0: 音楽家/ojro_men
0: 声優/manya02
0: 芸人/chara317megane
0: 声優/EIJI926
@sachaos
sachaos / -
Created June 13, 2014 11:52
Gist test
def main():
print "Hello Gist"
if __name__ == "__main__":
main()