Commit Graph
2688 Commits
Author SHA1 Message Date
Ryan Yin 648e375b88 test(agents): add git-delivery fixtures and an A/B run
Assisted-by: DeepSeek Harness (claude-opus-5-5, deepseek-flash, gpt-6.1-sol, gpt-6-luna)
2026-10-10 19:49:45 +08:00
Ryan Yin 7bba1abbc9 feat(agents): cap delivery text and shorten git-delivery
Assisted-by: DeepSeek Harness (claude-opus-5-5, deepseek-flash, qwen3.8-flash-next iq3, gpt-6.1-sol, gpt-6-luna)
2026-10-10 19:49:44 +08:00
Ryan Yin a100790ff2 feat(agents): require self-explaining artifacts and readable brevity
Assisted-by: DeepSeek Harness (qwen3.8-flash-next iq3, gpt-6.1-sol, gpt-6-luna)
2026-10-10 19:49:44 +08:00
Ryan Yin 0e70582642 docs(agents): convert prose tables to grouped lists
Assisted-by: DeepSeek Harness (claude-opus-5-5, qwen3.8-flash-next iq3)
2026-10-10 19:49:44 +08:00
Ryan Yin d808dd914d docs(agents): correct rule boundaries and eval scenarios
Assisted-by: DeepSeek Harness (claude-opus-5-5, deepseek-flash, qwen3.8-flash-next iq3)
2026-10-10 19:49:44 +08:00
Ryan Yin 7b21ea5adb feat(agents): rewrite find-docs onto the nixpkgs ctx7 CLI
Assisted-by: DeepSeek Harness (claude-opus-5-5, deepseek-flash, qwen3.8-flash-next iq3)
2026-10-10 19:49:44 +08:00
ryan4yin | 二花 e2548cd2aa docs(agents): close rule gaps found by evals and record the method (#428)
* docs(agents): state the boundaries the rules only implied
* docs(agents): grow the scenario tables and record the method
* docs(agents): record the evaluation rounds and their size cost
* docs(agents): require disclosure of AI-assisted contributions
* docs(agents): correct safety boundaries and eval records

Assisted-by: DeepSeek Harness (qwen3.8-flash-next iq3, gpt-6-luna & gpt-6.1-sol)
2026-10-10 15:59:57 +08:00
ryan4yin | 二花 9d69832ff7 refactor(agents): pin global skills and trim always-loaded context (#427)
* feat(agents): pin global skills as flake inputs
* refactor(agents): trim always-loaded agent context
2026-10-10 12:16:56 +08:00
ryan4yin | 二花 0d7c4d7cc1 feat(agents): extract global Git delivery skill #426 2026-10-10 11:18:39 +08:00
Ryan Yin 3b63028a05 fix: repair skill frontmatter and cap commit message length 2026-10-10 09:02:08 +08:00
ryan4yin | 二花 b52e242bb1 Merge pull request #425 from ryan4yin/docs/agents-rule-gaps
fix: close rule gaps behind repeated corrections and sync stale docs and recipes
2026-10-10 08:50:13 +08:00
Ryan Yin d64f9c71f1 fix(typos): keep wluma's als key and fix a flagged typo
The pre-commit hook runs typos with write = true, so the next edit to wluma.nix would silently rename wluma's ambient-light-sensor keys to also.
2026-10-10 08:42:38 +08:00
Ryan Yin 5a4a1d0c20 fix(darwin): run the rollback as root
darwin-rebuild rejects switch, activate, rollback and check unless it runs as
root, so the recipe could only ever print an error.
2026-10-10 08:42:38 +08:00
Ryan Yin 8843df1508 docs: correct stale claims found while reviewing the skills
No host defines a *-nixos-tests output; the pod firewall drops 5900-5903
from pod sources; the mihomo core keeps geodata and cache in its
StateDirectory; WA-020 was used twice and the cited WA-028 had no row.
2026-10-10 08:42:38 +08:00
Ryan Yin 60b80e64c8 fix(microvm): restart the guest unit on the physical host to deploy
microvm.nix's sshSwitch step runs nix-store --load-db against the guest's
read-only virtiofs /nix/store and dies there, so the recipe installs the
runner on the physical host and restarts microvm@<guest> instead.
2026-10-10 08:42:38 +08:00
Ryan Yin a2cfa5549c fix(skills): correct stale guidance and widen task triggers 2026-10-10 08:42:38 +08:00
Ryan Yin 2d07dc8da5 docs(agents): close rule gaps behind repeated corrections
Clause-level extensions only, no new sections. Publishing gains modals in both directions: the old sentence read as forbidding pushes to the user's own private repositories while leaving the disclosure direction a preference. The diagnosis scenario moves to Smoke because a cross-cutting rule has no area for the Extended trigger to select, and the guide separates cheap checks from behavioral runs so a modal-only edit does not cost a scenario suite.
2026-10-10 08:42:38 +08:00
Ryan Yin 3b2c328fd2 docs(idols-ai): mark the mixed-memory settings as daily-use verified 2026-10-10 07:19:45 +08:00
Ryan Yin bee8d5449f fix(ssh): prevent GitHub IPv6 regression
Restore the IPv4 pin removed by 1e6702db (feat(mihomo): answer AAAA and keep the tailnet off the TUN). Fake IPv6 SSH connections can authenticate and then hang.
2026-10-10 00:19:35 +08:00
Ryan Yin c3f72689d3 feat(darwin): start terminals fullscreen 2026-10-10 00:10:38 +08:00
Ryan Yin 7b1b8f6382 docs(agents): require per-push confirmation for default branches 2026-10-09 23:40:56 +08:00
Ryan Yin 2d2f2ca7c6 docs(agents): make concision and pre-publish scan rules enforceable 2026-10-09 23:31:48 +08:00
ryan4yin | 二花 e11375fbb8 feat(mihomo): sync the policy to Clash Verge on macOS (#424) 2026-10-09 23:27:59 +08:00
Ryan Yin dbe0f73ed5 feat(agents): link the global rules into dsh too
dsh reads ~/.dsh/AGENTS.md, plus ~/.agents/AGENTS.md from 0.2.1-alpha.2;
identical content renders once.
2026-10-09 22:53:46 +08:00
ryan4yin | 二花 0e12440148 refactor(secrets): move nushell-secrets.nu out of agenix (#423) 2026-10-09 22:40:50 +08:00
ryan4yin | 二花 92740ec968 fix(mihomo): answer AAAA on a public fake-ip pool, pin guests to a cluster ULA (#420)
* fix(microvm): pin guest IPv6 identity to a cluster ULA

The ISP retires delegated prefixes, so a guest that registers its WAN prefix
loses it and Cilium never refreshes the node address. Derive the identity from
the IPv4 octets inside fd05:5::/64 and trust that ULA in the guest firewall.

* feat(mihomo): answer AAAA and keep the tailnet off the TUN

fake-ip needs one pool per family, and the family a client picks does not pick the
egress family. Exclude the cluster ULA and the Tailscale ranges from the TUN; the ssh
pin and the WA-028 record cover the fake-AAAA stall.

* feat(mihomo): generate the config from the repo, not a copy in the live dir

`just mihomo-gen` runs generate.nu from the module and validates with the core
the service runs. ~/.config/mihomo keeps only sources.yaml and config.yaml.

* fix(mihomo): keep the fake IPv6 pool out of fc00::/7

The v6 fake pool is a lookup key, not the egress path, so it can be a public range: the
shipped ULA default reads as "local" to browsers and prompts for local-network access on
every site. The gvisor stack override goes with it -- mips is upstream's default, and
nftables rules out the kernel stack here.

* feat(mihomo): sniff on the gateway, not on the desktop

LAN clients using DoH dial the IPs they resolved, and a node may not reach an IP a
foreign resolver handed out. The gateway recovers the name from the handshake; on the
desktop the fake-ip table already names every flow. Its binary is a static release
build, not a package: update it by hand and validate the live config with the new core.

* fix(mihomo): name the Singapore nodes instead of matching 新

The single-char keyword also matched 新西兰, so the Singapore group held a New
Zealand node and url-test flipped the exit country mid-session.
2026-10-09 18:38:20 +08:00
Ryan Yin c102e2489d fix(mihomo): name the Singapore nodes instead of matching 新
The single-char keyword also matched 新西兰, so the Singapore group held a New
Zealand node and url-test flipped the exit country mid-session.
2026-10-09 18:34:48 +08:00
Ryan Yin 5a6cdf63ac feat(mihomo): sniff on the gateway, not on the desktop
LAN clients using DoH dial the IPs they resolved, and a node may not reach an IP a
foreign resolver handed out. The gateway recovers the name from the handshake; on the
desktop the fake-ip table already names every flow. Its binary is a static release
build, not a package: update it by hand and validate the live config with the new core.
2026-10-09 18:34:48 +08:00
Ryan Yin 7a4f62383f fix(mihomo): keep the fake IPv6 pool out of fc00::/7
The v6 fake pool is a lookup key, not the egress path, so it can be a public range: the
shipped ULA default reads as "local" to browsers and prompts for local-network access on
every site. The gvisor stack override goes with it -- mips is upstream's default, and
nftables rules out the kernel stack here.
2026-10-09 18:34:04 +08:00
Ryan Yin d9714337f3 feat(mihomo): generate the config from the repo, not a copy in the live dir
`just mihomo-gen` runs generate.nu from the module and validates with the core
the service runs. ~/.config/mihomo keeps only sources.yaml and config.yaml.
2026-10-09 18:34:04 +08:00
Ryan Yin 1e6702db2c feat(mihomo): answer AAAA and keep the tailnet off the TUN
fake-ip needs one pool per family, and the family a client picks does not pick the
egress family. Exclude the cluster ULA and the Tailscale ranges from the TUN; the ssh
pin and the WA-028 record cover the fake-AAAA stall.
2026-10-09 18:34:04 +08:00
Ryan Yin 9cf0a92a30 fix(microvm): pin guest IPv6 identity to a cluster ULA
The ISP retires delegated prefixes, so a guest that registers its WAN prefix
loses it and Cilium never refreshes the node address. Derive the identity from
the IPv4 octets inside fd05:5::/64 and trust that ULA in the guest firewall.
2026-10-09 18:30:13 +08:00
Ryan Yin 4c165ad7da docs(agents): prefer E2E verification of real workflows 2026-10-09 15:58:36 +08:00
ryan4yin | 二花 63b7183381 feat(mihomo): keep unproxiable ranges out of TUN, fix the startup DNS race (#419)
* feat(mihomo): keep ranges that can never be proxied out of TUN

The list lives in policy.yaml as tun_exclude_address; sources.yaml may override
it. 198.18.0.0/15 stays in TUN: that is the fake-ip range itself.

* feat(mihomo): match Valve's content servers by ASN

The 20 hand-copied prefixes had drifted from what AS32590 announces. The rule
type needs GeoLite2-ASN.mmdb, so geox-url.asn points at the same mirror.

* feat(mihomo): render the gateway config from the same sources

The hand-kept copy had drifted: a manual sync carried the desktop's secret onto
the gateway and dropped external-ui-url. --redact yields a shareable template.

* fix(mihomo): open the link DNS takeover only once the core serves it

The core opens :1053 after parsing rules, and rule parsing is where missing
geodata gets fetched. Flipping at fork time made that fetch SERVFAIL, the config
fatal, and the unit unstartable.

* fix(justfile): keep local endpoints out of the agent proxy

With only HTTP_PROXY set, a request to this host's own llama-swap endpoint went
to mihomo. Node matches exact hosts only, so the literals carry it; the CIDRs
serve curl and Go.

* feat(justfile): seed mihomo geodata into the service state dir

So a cold start never needs the download that the DNS takeover made unstartable.
2026-10-09 12:31:59 +08:00
Ryan Yin fe302fa950 docs(idols-ai): record overnight mixed-memory voltage tests 2026-10-09 07:44:51 +08:00
Ryan Yin 841214c325 docs(idols-ai): summarize mixed-memory voltage tests
Signed-off-by: Ryan Yin <xiaoyin_c@qq.com>
2026-10-09 00:30:15 +08:00
Ryan Yin dd46fb3fb2 docs(agents): clarify credential boundaries and rule maintenance 2026-10-08 23:45:47 +08:00
Ryan Yin 19b9aff7bf fix(tuios): handle stopped daemon during shell startup 2026-10-08 23:39:38 +08:00
ryan4yin | 二花 4a27852fd1 fix(tuios): create sessions with cwd before attaching (#418) 2026-10-08 20:50:28 +08:00
ryan4yin | 二花 48ac4f76bf fix(tuios): keep sessions across reboots and split them by purpose (#416) 2026-10-08 20:29:52 +08:00
Ryan Yin 9ba2cf5229 chore: pin tuios to v0.9.0; require pinned third-party inputs 2026-10-08 15:47:20 +08:00
ryan4yin | 二花 60bd70bd0c refactor(agents): configure dsh from its profile patch (#415) 2026-10-08 15:29:31 +08:00
ryan4yin | 二花 9e2633f496 feat(gaming): generic umu game installer, skill, and desktop entries (#411) 2026-10-08 14:59:11 +08:00
ryan4yin | 二花 efd279c7d1 fix(noctalia): avoid mihomo network speed double count (#414) 2026-10-08 13:31:57 +08:00
ryan4yin | 二花 dc211bbca3 fix(mihomo): restore the Steam community and store PROXY rules (#412)
The comment trim dropped them. Without a domain rule above the Valve IP ranges,
steamcommunity.com and steampowered.com match those ranges and go DIRECT.
2026-10-08 09:50:41 +08:00
ryan4yin | 二花 257e9b13d2 docs: add the NixOS modernization options and decision record (#409) 2026-10-08 09:49:29 +08:00
Ryan Yin 0b29b15697 feat: add nh 2026-10-08 09:44:19 +08:00
ryan4yin | 二花 ded8d91507 feat(mihomo): keep Steam downloads off the proxy so Steam keeps a CN CDN (#408)
Steam picks download caches from the IP it sees on the CM login. Pin the CM hosts
and content CDN DIRECT, keep the community and store proxied, and add Valve's
AS32590 ranges because Steam dials cached CM IPs without a lookup. Sources in
README.md.
2026-10-08 09:41:51 +08:00
ryan4yin | 二花 c89c5e9698 fix(mihomo): say what a dropped catch-all actually costs (#410) 2026-10-08 09:40:17 +08:00
ryan4yin | 二花 835b7f6df1 feat(shoukei): pin home Wi-Fi to a static IPv4 & adjust networking.nix (#407) v0.18.0 2026-10-07 21:27:34 +08:00