Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
5b5070f
t27os: bench.t27 -- the boards, provenance of every number and the pr…
claude Oct 20, 2026
617cbf2
t27os: home tabs in the chat style -- sidebar of homes, big bold head…
claude Oct 20, 2026
cb42d99
t27os: domain_pulse.t27 -- what is happening, per agent domain: commi…
claude Oct 20, 2026
7aa0724
t27os: agent_widgets.t27 -- each of the 27 agents gets its instrument…
claude Oct 20, 2026
3b5ac26
skills: t27os -- the T27 OS instrument panel: the image, where each r…
claude Oct 20, 2026
6340219
skills: t27os -- the 27 petals are the 27 agents; chat and commander …
claude Oct 20, 2026
ad5722d
skills: t27os -- every widget carries its pinned agents, a mandatory …
claude Oct 20, 2026
e0084be
agents: KEY_FILES point at the directories each domain really changes…
claude Oct 20, 2026
ee1e792
t27os: every widget and surface carries its pinned agents -- owner pl…
claude Oct 20, 2026
cab181f
skills: t27os -- one registry per letter: tool, agent, specs, widgets…
claude Oct 20, 2026
a233cf2
skills: t27os -- inventory of the t27<letter> tools that exist, t27t …
claude Oct 20, 2026
ea53d4e
AGENTS.md: T27 OS rules -- 27 petals = 27 letters, everything a widge…
claude Oct 20, 2026
4a62518
t27os: evolve.t27 -- the rule GOD MODE runs: gaps from the panel, pri…
claude Oct 20, 2026
0c74586
t27os: the 27 petals are the 27 agent letters; each letter opens a co…
claude Oct 20, 2026
7a9c181
Merge branch 'claude/t27os-bench' into claude/t27os-homes-chat-style
claude Oct 20, 2026
89c9a75
Merge branch 'claude/t27os-domain-pulse' into claude/t27os-homes-chat…
claude Oct 20, 2026
b35ebc4
merge origin/master into homes branch (glass_window: keys per-number …
claude Oct 20, 2026
3e0e602
AGENTS.md, skill t27os: T27 OS is a project-management system made 10…
claude Oct 20, 2026
3b0aa63
skill t27os: glass everywhere in a window, embedded widget pages incl…
claude Oct 20, 2026
45b1a4f
t27os: t27<letter> tools -- 27 page titles (agent_parts), petal label…
claude Oct 20, 2026
46fa6e3
t27os: share.t27 -- share a session, document or "finish this task" t…
claude Oct 20, 2026
df7baf6
golden chain: the landing rule agents follow -- local verify, local g…
claude Oct 20, 2026
ebebbf7
bench: Zynq XC7Z020 on the Adept cable (busdev 0:2), AX7203 cable wit…
claude Oct 20, 2026
4a062f6
t27os: queen_board.t27 -- data model of the Q page live board: feed, …
claude Oct 20, 2026
247e3af
t27os: kernel.t27 -- the Queen's kernel: supervision tree of T27 OS a…
claude Oct 20, 2026
e60665f
Merge remote-tracking branch 'origin/master' into claude/t27os-tools
claude Oct 20, 2026
1a6d076
golden chain: tri golden land | push | status -- the local leg of lan…
claude Oct 20, 2026
dec9495
t27os: OpenCode and Crush take the key/model chain (OpenAI-compatible…
claude Oct 20, 2026
0ec415b
t27os: fanout.t27 -- a lane starts child lanes (spawn by monitor, dep…
claude Oct 20, 2026
2857c8c
skill t27os: every page has its own agent chat; harness visibility pa…
claude Oct 20, 2026
ac21a96
skill t27os: one UI for desktop, site and FPGA; port the whole game i…
claude Oct 20, 2026
3bbc820
skills: swarm-economy -- free-model actors do the work, hourly no-LLM…
claude Oct 20, 2026
98eb1d5
Merge master into claude/t27os-tools (tri golden + tri t27os both kept)
claude Oct 20, 2026
82b081e
skills: swarm-economy keeps no script -- every rule of the watch is s…
claude Oct 20, 2026
b3484a1
tri golden: re-save stale seals as REGEN, carry links cut from an old…
gHashTag Oct 20, 2026
4c2a768
dedupe new t27os specs by use, reseal, rename colliding dash names (C…
claude Oct 20, 2026
a847ec2
Merge origin/master (Closes #11358)
claude Oct 20, 2026
ab24c72
Merge remote claude/t27os-tools (Closes #11358)
claude Oct 20, 2026
4ba5c95
scripts: delete ultra_engine_v3.py -- unreferenced, superseded by v4.…
claude Oct 20, 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
68 changes: 68 additions & 0 deletions .claude/skills/own-git-landing/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
---
id: own-git-landing
name: Own git landing
description: How every agent lands work -- verify locally, land on the local golden head, push to GitHub once per batch. Use before any git push, PR, update-branch, or re-run of checks; when CI is queued; when the owner says "GitHub is our bottleneck", "наш git", "golden chain", "батч".
---

# Own git landing (owner, 2026-10-20, #11275)

<!-- only-t27-rule -->
> **Only t27: everything is written in `.t27`.** (Owner hard rule 2026-10-05; budget #7371; restated in every skill per #7588.)
> - New logic starts as a `.t27` spec with `test` / `invariant` blocks. It reaches Rust, C, Zig, JS or Python only through `t27c gen-*`, and generated files are never hand-edited (L2).
> - Hand-written code in any other language is denied by the hooks and by CI: `.rs .py .ts .js .sh .zig .c .go .v .yml .toml`, Dockerfile, Makefile; the full list is in `specs/policy/own_language.t27`.
> - Existing foreign code is debt that only shrinks. Delete it, or replace it with a spec and its generated output.
> - Thin hand-written glue is capped at 40 added lines per file and 80 per PR. No label lifts the cap. Never split a PR to slip under it.
> - What gen cannot express yet is a compiler defect. File it on #5980 with a minimal `.t27` repro instead of writing the code by hand.
> - This rule overrides any step below that says to write a script or code in another language. The full text is in `AGENTS.md`, "Only t27".

## The law

The rule is `specs/queen/golden_chain.t27`, section 6 (lane_ready, batch_from, when_to_push, lane_may,
gc_rerun_local, gc_bisect), over sections 1-5 (links, golden head by CAS, CARRY, gc_land). Do not
restate it; read it. Related: `specs/claw/push_gate.t27` (is a push worth its place in the queue),
`specs/claw/queue_cost.t27`, `specs/verified/reuse.t27` (verdict reuse), `specs/tri/land/land.t27`.
Why: a push starts every required check again at the back of an Actions queue of 800-900 runs (#10644,
#10588, #6595). Our git judges a change by its verdicts, locally.

## Practices

1. Verify locally first, in this order: `t27b test <spec>` on each changed spec and on the specs that
import it; `t27c test-report <spec>` (fresh `ZIG_GLOBAL_CACHE_DIR`, delete after; 0 failed, 0
vacuous); `t27c seal <spec> --save`; regenerate with `tri gen`, never hand-edit `gen/`.
2. Record the link: SPEC, GEN, SEAL, TEST, RECEIPT. A stage whose input key was judged golden before is
REUSED, not re-run.
3. Land on the local golden head (`refs/golden/head`, GC_REF), only through gc_land (compare-and-swap on
the parent). Never write the ref by hand.
4. Push to GitHub once per batch: up to 8 ready links, every 15 minutes (30 while the Actions queue
holds 200 or more runs). One PR per batch, `Closes #N` for each issue in the commit messages (L1).
5. Merge master before pushing a shared file; derived paths (gen/, ledgers, figures) are regenerated on
the new head, never merge-resolved.
6. A red batch is bisected here by replaying prefixes (gc_bisect); do not re-run GitHub to find it.

## Never

- Push per commit; push a link that is not golden; run `update-branch` loops.
- Re-run checks after a derived-only rebase (CARRIED or REGEN re-run nothing).
- Force-push, or move the head except by gc_land.
- Count a red as inherited unless the PR's failure set is a subset of master's.

## Traps

- `--auto` merge races a second push: run every gate before the first push, or the auto-merge lands
commit 1 alone.
- Absolute `core.hooksPath` runs the main checkout's hooks in a worktree; use
`git -c core.hooksPath=.githooks commit`.
- "fix #N" in a PR table closes the issue; cite as "see #N".
- Backticks inside `--body "..."` run in zsh; use `--body-file - <<'EOF'`.

## Commands, and what is missing

- `tri land [branch] [--plan|--check]` exists (specs/tri/land/land.t27, #11068): the GitHub leg for ONE
branch (merge master, tests, seals, push, PR, auto-merge). Use it for the batch branch, once.
- `tri golden land [--plan]`, `tri golden push [--plan] [--queued N] --issue N`, `tri golden status` run the local leg
(specs/tri/land/golden_land.t27, a thin host over golden_chain.t27; hosted by `cmd_golden` in cli/tri/src/main.rs, #11275).
`land` reads the queue (local claude/evolve-* branches and `.trinity/golden/queue`), judges each link by `t27c seal --verify`
and `t27b test` in a scratch worktree of its tip, and lands the ready ones on `refs/golden/head` by `git update-ref` with the
old value (compare-and-swap); `--plan` writes no ref and prints the update-ref lines. `push` applies when_to_push to the links
after `refs/golden/pushed` and, when due, cuts `claude/golden-<sha>` at the batch's last link and runs `tri land` on it once.
A lane built on a head that has since moved is UNKNOWN_PARENT: `git merge refs/golden/head` into it first.
56 changes: 56 additions & 0 deletions .claude/skills/swarm-economy/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
---
name: swarm-economy
description: Run T27 OS work cheaply when the weekly Claude limit is low -- free-model actors and bees do the work, Claude only lands, watches and unblocks; hourly pulse of bee load and token stock on the dashboard so nothing idles. Use when the owner says "economically", "few tokens left", "through our actors", or when a loop must watch that everyone works at full capacity.
---

# Swarm economy (owner, 2026-10-20)

Owner: "fix everything through our actors, economically -- few tokens left on the weekly limit";
"switch on a cron that watches that everyone works at maximum efficiency"; "show bee load and token
stock online on the dashboard so there is no idle time". Deadline set by the owner: Saturday 2026-10-24.

## Who does what

| Work | Who | Model / cost |
|---|---|---|
| Specs, ports, fixes, tests | bees, Queen lanes, T27 OS panes (OpenCode, Crush, Codex) | free tiers via the key master: glm-4.5-flash (7 keys), OpenRouter `:free` |
| Landing, reseal, merge, screenshots, answers | the Claude orchestrator | Claude, short turns |
| New Claude subagents | nobody, unless 2 free-tier attempts failed on the same task | -- |

1. Remaining work becomes **4-heading issues** (Boundary / User Scenarios / Requirements / Success
Criteria) under the epics in AGENTS.md "Swarm focus". One issue = one lane = one letter.
2. The orchestrator never re-reads large files to answer a status question: the pulse answers it.
3. A Claude turn that only waits is a wasted turn: use notifications, never polling loops.

## Pulse (no LLM)

The collector (session scratchpad, plumbing only; every decision is specs/t27os/swarm_pulse.t27) collects, without any model call:

- bees running / queued (GitHub Actions runs on gHashTag/t27), PRs opened and merged in 24 h;
- swarm issues waiting;
- token stock: count of Keychain items per provider under service `ai.t27.os` -- **presence only, the
script never reads a key value** (`security find-generic-password` without `-w`);
- agent processes on this Mac, free disk.

It writes `measures.json`; the orchestrator uploads it to the Mission Control dashboard dataset
`measures` (artifact LvTojtwf5fatVpxwkSzunZ). The first rows are live, labelled `live HH:MM`.

## Hourly watch (cron, minute 17)

1. Run `pulse.sh` in a terminal tab; upload; update the dataset.
2. **Idle rule:** queued == 0 and swarm issues waiting > 0 -> capacity is idle: start one free-tier lane
on the oldest waiting issue (T27 OS pane through the key master), never a Claude subagent.
3. **Keys rule:** z.ai keys < 3 or OpenRouter == 0 -> request the owner for keys (exact value to
provide, once), meanwhile route all lanes to the remaining tier.
4. **Disk rule:** free disk < 8 GB -> start no build (cargo, t27b app, nextpnr); remove own merged
worktrees first (skill self-cleanup).
5. End the tick with one line: state, numbers, action taken, `Requests out:`.

## Traps

- A cron fire is itself a Claude turn: keep the tick to the collector + at most one action.
- `gh` search with `#` inside quotes can undercount; count swarm issues by epic number in the body.
- The sandbox blocks the Keychain and `gh` writes: run the collector in a terminal tab.

Port target: this collector is plumbing; its rules (idle, keys, disk thresholds) belong in
`specs/t27os/evolve.t27` as tested fns -- see the swarm issues under gHashTag/t27#11275.
Loading
Loading