siso-project-team inherits the mechanisms that worked and skips the ones that cost a week. Paths are relative to SISO_Agency/apps/oracle-streaming; .agents/ is the symlinked companion repo (sisodias/oracle-agents, on disk apps/oracle-companions/agents).there's a lot of active learning data that you can use from oracle it's by far the project that we've spent the most tokens on so you should take good infrastructure and bad infrastructure from there note it down ... look at it to learn from it for the siso internal for the just standard bases and then also integrate it into the siso internal(quoted in the brief for this page)
i'm happy with your plan … just don't completely fuck our shit … if we take 80 of their stuff as base and then just add on and make it fit to the 20 of our stuff we'll have something really truly world class.(
.agents/briefs/UNSLOP-RESUME.md)Verdicts: KEEP proven and portable · REWORK the idea is right, the shape is not · AVOID measured harm.
| Mechanism | Path | One line | Verdict |
|---|---|---|---|
| Four-layer gate | scripts/fleet/verify-4-layers.mjs | typecheck, depcruise, Vitest and a convention gate in one command; JSON per layer; exit 0/1/2, --only returns PARTIAL 3; green on clean main since 2c3f9442f | KEEP |
| Red-baseline ratchet | scripts/fleet/red-baseline.json | main's five red test files at a named SHA; a lane may fix a listed red, never add one | KEEP |
| Landing rule 1 | .agents/briefs/unfuck-20260905/MASTER.md | gate green on the rebased tip, no new red, one line from the builder, then push; no reviewer for ordinary diffs | KEEP |
| Cold review, sensitive paths only | .agents/briefs/unfuck-20260905/COLD-REVIEW.md | fresh-context read-only review answering SHIP / FIX-FIRST / RETHINK, only for credentials, tokens, wipe paths, deploy scripts, schema | KEEP |
| The one human gate | docs/SAFETY-GUARDRAILS.html | binding account-safety rules; stop on any identity or captcha prompt; a human present for every live window | KEEP |
| Proven ledger | docs/PROVEN-LEDGER.html | "what is already built + tested (read FIRST)": 47 dated rows, each proving only its named run | KEEP |
| Ranked broken list | .agents/briefs/unfuck-20260905/BROKEN.md | one Sweep seat read the corpus once; 119 ranked rows with repros, 88 fixed by the next morning | KEEP |
| Seat recaps | .agents/briefs/unfuck-20260905/recaps/ | checkpoint on disk before any restart: asked, delivered with SHAs, wasted, open, undocumented | KEEP |
| Owner map | .agents/OWNERS.md | under 40 lines: surface · seat · branch · Plane item · last landed; replace rows, never append | KEEP |
| Routing-only session hook | scripts/session-onramp.mjs | 663 bytes pointing at the boot files; its contract forbids status, SHAs, credentials or live commands | KEEP |
| Reuse nudges | .claude/hooks/ponytail-*.mjs | PreToolUse "does this already exist?" on new capability; SubagentStart reuse reminder; fail-open | KEEP (the hooks, not the 148-line skill) |
| Cockpit verify | .claude/skills/oracle-cockpit-verify/ | Playwright DOM probe at the user's real window width after any UI change | KEEP |
| Domain model | siso-internal-labs-server/docs/ORACLE-DOMAIN-MODEL.md | four lanes, three gates, two feeds; the four rejected decompositions are written down | KEEP |
| Process-home split | .agents -> ../oracle-companions/agents | process files out of the product repo; still tracked in three repos (7,778 / 8,356 / 98 files) | KEEP, finish it |
| Decision log | docs/DECISION-LOG.html | 353 entries tagged WIN, TRAP, DECISION, LEARN; 1.44 MB; append-only; lives in the product repo | REWORK |
| Boot route | CLAUDE.md 157 lines + AGENTS.md 82 + oracle-agent-zero skill 421 | three files that mostly say which sources to distrust; churned 6, 4 and 10 times in six days | REWORK |
| Branch-hygiene session hook | scripts/branch-hygiene.mjs | hard ceilings 12 / 8 / 6; prints 13 KB and "HARD CEILING BREACHED" every session | REWORK |
| Worktree script | scripts/fleet/worktree-for.sh | one detached worktree per task under a lock; hard-codes a July review branch and the legacy .claude/worktrees root | REWORK |
| Lane close | .claude/skills/oracle-lane-close/ | receipt states promotion-queued / active-hold; "no receipt means the lane is still open" | REWORK |
| Runs, briefs, memory | .agents/runs/ 237 · briefs/ 181 · memory/ 220 | a receipt, a handoff and an evidence folder per unit of work | REWORK: evidence stays, receipts stop |
| Owner history file | .agents/briefs/A0-STATE.md | appended prose; the current owner is one row near the top; frozen 2026-09-11 | AVOID |
| Skills catalog | .claude/skills/ 29 (4,074 lines) · .codex/skills/ 14 · .agents/skills/ 3 | two harnesses, overlapping; most skills with zero measured invocations | AVOID at this size |
| Agent personas | .claude/agents/ 15 | named roles that AGENTS.md already covers; zero dispatches measured | AVOID |
| Landing lock | /tmp/oracle-primary-git.lock (AGENTS.md rule 2) | a mkdir lock serialising every landing through one path | AVOID |
| Task records | .agents/tasks/ | 47 in_progress, none dated since August; Plane HALO is the tracker | AVOID |
| CI | .github/workflows/ (5) | five workflows on every push and PR, 15 jobs per CI run; every job refused since 2026-09-05 | AVOID |
Every number has the file it came from. No dollar figure for Oracle exists in the named sources; the only cash measure is the GitHub Actions free tier. Idle time was not measured as a percentage anywhere; the proxy Oracle used is seat-hours against commits on main.
| Measure | Value | Source |
|---|---|---|
| Seat-hours to the first commit on main, 5–6 Sep | about 75 seat-hours of Astra at xhigh, 0 commits; the next 15 seat-hours, 44 commits, the token-bomb fix deployed, 88 of 119 broken rows closed | siso-harness-lab/docs/lessons/2026-09-06-oracle-fleet-token-waste.md |
| Coordinator time | Agent Zero polled one status command for 2 h 21 m; its transcript reached 26 MB, mostly reading 138 JSONLs | same file |
| Permissions and transport | 7 seat-hours on Codex flags that did not take; the send wrapper reported FAILED on every delivery while seats sat idle | same file |
| Infrastructure | a raw Vite dev server hit 35 GB and kernel-panicked the Mac, killing every seat | same file |
| Oracle Agent Zero on Codex, one day (8 Sep) | 247 responses; 86,265,377 input tokens, 2,334,753 uncached; 156,733 output; largest request 509,919 | siso-harness-lab/reports/2026-09-08-economical-reset/README.md |
| Claude sessions on Oracle, 20 Aug–3 Sep | three oracle-streaming sessions of 1,112 / 572 / 312 turns; median context 288k / 290k / 473k; 311 M / 162 M / 139 M context tokens; 108 of 117 sessions fleet-wide never compacted | siso-harness-lab/reports/2026-09-claude-reramp/01-transcript-audit.md |
| CI minutes | 0 billable minutes: the free 2,000 min/month exhausted by push-on-every-branch (301 runs on 29 Aug, 130 on 10 Sep, 15 jobs each); every job refused from 5 Sep | .agents/briefs/UNSLOP-RESUME.md |
| Files | docs/ 4,387 files, 3,435 under archive; dest/ 1,597 with one importer; .agents/ tracked in three repos, 313 main-only and 891 companion-only files diverged | .agents/briefs/ASTRA-DOCS-UNFUCK.md (diagnosis); docs/DECISION-LOG.html entry 2026-09-11 |
| Skills and personas | 28 skills + 15 agents + 1 command in .claude/, 13 in .codex/; 16,414 always-loaded description bytes, 591 proposed; counted again 2026-09-11: 29 / 15 / 14 | siso-harness-lab/reports/2026-09-claude-reramp/06-oracle-skills-classification.md; ASTRA-DOCS-UNFUCK.md |
| Branches and worktrees | 175 remote, 39 local, 21 worktrees on 10 Sep; 194 / 31 / 29 in the primary checkout on 11 Sep; 44 worktrees inspected at the reset | ASTRA-DOCS-UNFUCK.md; .agents/briefs/reset-20260911/worktree-review.json |
| Boot cost | 157 + 82 + 421 lines, churned 6 / 4 / 10 times in six days | ASTRA-DOCS-UNFUCK.md diagnosis |
| Owner state file | 153 KB; 857 lines of SHAs and byte counts | ASTRA-DOCS-UNFUCK.md; docs/DECISION-LOG.html 2026-09-11 |
| Hook noise | 13,346 bytes printed every session; ceilings 12 / 8 / 6 against 51 / 181 / 34 | 06-oracle-skills-classification.md; docs/DECISION-LOG.html 2026-09-11 |
| Duplicate work | five near-duplicate copies of one device-token fix across lanes; a memory note called it "never landed" because a cherry-pick changes the hash | ASTRA-DOCS-UNFUCK.md |
| Worktree weight before the split | about 600 MB per lane paid by .agents/ | .agents/README.md |
We need to do it in a way where it's not just gated on me and builds and all of this bullshit. There's a bunch of slop, the docs are slop, it's hard for any agents to know what's going on.(
.agents/briefs/unfuck-20260905/MASTER.md)One runnable gate, ratcheted against main's own reds. The same six seats produced zero commits in forty seat-hours under "all tests green" on a main with red files, and 44 commits in the fifteen hours after the rule became "no new red versus main". The model did not change; the rule did (2026-09-06-oracle-fleet-token-waste.md; MASTER log 2026-09-05T20:25Z). The gate is now one command with a committed baseline and a PARTIAL exit for partial runs (DECISION-LOG entry 2026-09-11-landing-gate-one-command-ratchet-partial-ci-dead).
The builder lands; a reviewer only for sensitive paths. Ordinary diffs land on the gate plus one line in the builder's words: what it does, what it deliberately does not do, what breaks if it is wrong. A fresh-context review is required only for credentials, tokens, wipe paths, deploy scripts and the schema (MASTER rule 1; COLD-REVIEW.md).
Astra is good enough in most cases; we shouldn't be wasting compute on reviewers.(MASTER rule 1; DECISION-LOG
2026-09-06-landing-rule-final-no-routine-reviewer)trust the model; a lot of the admin/reviewer stuff is just not trusting the model enough.(
2026-09-06-oracle-fleet-token-waste.md)Seats own outcomes, not units. "Proposal written", "bounded unit" and "awaiting review" are not terminal states; a seat is done when its outcome is on main or on the VPS (MASTER rule 3; OWNERS.md rules). This is the same rule the team template already carries as "exit on handoff".
One human gate, written down once. docs/SAFETY-GUARDRAILS.html survived every reorganisation because it has a stable owner and carries a real receipt: the Chaturbate account warning of 2026-06-05. Everything else is agent authority (MASTER rule 2).
A proven ledger read first. PROVEN-LEDGER.html exists because, in its own words, agents reading cold code "keep 'discovering' that already-built, already-tested, already-LIVE-PROVEN features don't exist, then flag them as ship-blockers". Each row proves only its named run.
One sweep, one ranked list. One seat read every JSONL and ledger once and wrote BROKEN.md with a repro per row; nobody else read the corpus (MASTER rule 5). 88 of its 119 rows closed in the fifteen productive hours.
A recap on disk before any restart. Asked, delivered with SHAs, wasted, open, undocumented, so a fresh context resumes from main alone (recaps/, nine files).
An owner map that is replaced, not appended. OWNERS.md is the 40-line answer to the 153 KB state file: surface, seat, branch, Plane item, last landed, delete the row when the seat ends.
Fleet discipline that transferred cleanly. Fork fresh from origin/main; classify by reading (it caught a 73-file leak in the VPS split); contracts not duplication; verify on git truth with every percentage stating its denominator; every brief ends CONSTRAINTS / RETURN / STOP (AGENTS.md rules 1, 3, 4, 5, 6). The team template already has the last two.
Verify at the user's width. A cockpit change was "verified" at 1600px while Shaan runs at about 1320px, below a media query; the fix was real and invisible to him (oracle-cockpit-verify seed incident). This is the Oracle form of "done means a picture".
A routing-only session hook with a written contract. session-onramp.mjs declares that it never asserts status, SHAs, credentials or live commands, and CLAUDE.md says a hook that does is broken.
Three numbers per hour. Commits on main, deploys receipted, ranked rows closed. Flat for an hour means the rule is wrong, not the seat. Pane status is not a signal (token-waste lesson; DECISION-LOG 2026-09-06-shaan-replan-operator-astra-ui-fable).
Lanes are the domains; bars are gates. The domain model records four rejected decompositions so nobody re-proposes them, and separates "who owns what now" from "are we ready to launch" (ORACLE-DOMAIN-MODEL.md).
An absolute gate on a red baseline. "All tests green" on a repo that is not green is an impossible task that looks like work; every pane said "working" for seven hours (token-waste lesson, item 1).
Human holds inside an autonomous fleet. "Active-hold, review by tomorrow" on every lane made the fleet's output a queue for Shaan: four Astras, 34 seat-hours, zero lines on main, with the fix for the bug that killed the product sitting on four unlanded branches (MASTER diagnosis).
A weaker reviewer for ordinary diffs. One round per landing, one model second-guessing another (token-waste lesson, item 3).
Sol is a stupid model, you should be using Astra for any intelligence, it's way more efficient.(
COLD-REVIEW.md)Read-proof rituals and a three-file boot. Agent Zero's 26 MB transcript was mostly reading 138 JSONLs before touching code. The boot route was 660 lines across three files, churned 6, 4 and 10 times in six days, and its main job was telling agents which of four files to distrust (ASTRA-DOCS-UNFUCK.md).
A receipt, a handoff and an evidence folder per unit. 237 runs, 181 briefs, 220 memory files. In the diagnosis's words: "Doc slop is downstream: every unit emits a receipt, a handoff and an evidence folder, and nothing may be deleted" (MASTER).
Prose instead of mechanism. "No trustworthy mechanical signal existed anywhere, so every seat replaced mechanism with prose, and the prose forked across three repos" (ASTRA-DOCS-UNFUCK.md, diagnosis). The concrete fork: .agents/ tracked in three repos with 313 and 891 files diverged.
An append-only state file as the owner registry. 153 KB where the current owner is one row near the top and everything below is superseded; 857 lines of SHAs. Frozen on 2026-09-11 in favour of OWNERS.md.
A second tracker. 47 tasks "in_progress" with no updated date; TASK-0975 cited evidence in the old portal, not the app being built (ASTRA-DOCS-UNFUCK.md). Plane HALO is the tracker.
Skill and persona sprawl across two harnesses. 57 skill and agent docs, most with zero invocations, 15 naming removed providers, 16 KB of descriptions loaded every session (06-oracle-skills-classification.md). The research memo Oracle itself gathered cites the Vercel evals: skills never invoked in 56% of runs, while an always-loaded index scored 100% (.agents/memory/unslop-research-sources-20260911.md).
CI on every push of every branch. Five workflows, 15 jobs per run, 301 runs in one day; the free tier died on 5 Sep and nobody noticed for a week because CI had never been green (UNSLOP-RESUME.md; the 2026-09-11 DECISION-LOG entry: "GitHub Actions is dead, not red").
the only ones we need back will be for the oracle streaming … we need to keep within the free limits.(
UNSLOP-RESUME.md)A hook that shouts every session. Ceilings 12 / 8 / 6 against 51 / 181 / 34 means "HARD CEILING BREACHED" in 13 KB at every SessionStart. A warning that is always on is not a signal.
Memory notes that name SHAs. One claimed a fix "never landed" and named two SHAs; the fix was on main under different hashes because a cherry-pick re-hashes. Five near-duplicate copies of that fix existed across lanes and nobody could name the canonical one without merge-base (ASTRA-DOCS-UNFUCK.md).
Stale primaries and worktree sprawl. The streaming primary sat on a lane branch 269 behind and 181 dirty; the operator primary on main 395 behind; 44 worktrees needed inspection at the reset (UNSLOP-RESUME.md; reset-20260911/worktree-review.json).
Serialising every landing through a lock on /tmp. The mkdir lock in worktree-for.sh and AGENTS.md rule 2 makes one path the bottleneck; Oracle's own plan retires it for PRs and a merge queue (UNSLOP-RESUME.md, autonomy item 1).
A coordinator that does not check the machine. A raw dev server at 35 GB panicked the host; permission flags that did not take cost seven seat-hours; a send path that silently failed left directives in the composer (token-waste lesson, items 6–8). The team template's az-send already closes the last one.
| # | File in siso-project-team | Change |
|---|---|---|
| 1 | skills/owner/SKILL.md | Add a "Landing" section: run the project's one verify command on the rebased tip; if main itself fails it, the gate is a ratchet against main's committed baseline; land with one line (does / deliberately does not / breaks if wrong); no reviewer for ordinary diffs. |
| 2 | skills/owner/SKILL.md (Handoff) | Add "wasted" to the handoff shape: what cost tokens and produced nothing, with the rule that caused it, so the next brief can drop it (Oracle's recap shape). |
| 3 | skills/project-agent-zero/SKILL.md | Replace "ask it for the handoff" polling with the hourly three numbers (commits on main, deploys receipted, ranked rows closed); flat for an hour means the rule is wrong, not the owner; never poll a status command. |
| 4 | skills/project-agent-zero/SKILL.md (Owners) | Name the only case a second agent reads a diff: a fresh-context cold review for credentials, tokens, wipe paths, deploy scripts and schema, answering SHIP / FIX-FIRST / RETHINK. Nothing else gets a reviewer. |
| 5 | skills/worker-contract/SKILL.md | Add the Sweep job as a worked example: INPUT is the corpus, OUTPUT is one ranked list with a repro per row, CHECK is "every row has a command that reproduces it"; no other agent reads the corpus. |
| 6 | team.yaml | Add verify: (command, baseline, sensitive_paths, human_gate pointing at a SAFETY-GUARDRAILS-style file) and trunk: (max_live_lanes: 3, worktree_root, delete_on_merge: true). |
| 7 | tools/spawn-worker | Make the worktree the only lane: fetch, fork from origin/main into <repo>/.worktrees/<name>, refuse when live lanes reach the cap, delete on merge. Oracle's worktree-for.sh shows the shape and the trap (a hard-coded July branch, a legacy root, a lock on /tmp). |
| 8 | AGENTS.md | Add rule 6: one ledger per kind in the companion (decisions and traps, proven claims, OWNERS.md under 40 lines replaced not appended); no per-unit receipts, ACKs or evidence folders; read the spine, not the corpus. |
| 9 | tools/new-team.sh | Seed the companion team folder with DECISION-LOG.html, PROVEN-LEDGER.html, OWNERS.md and the human-gate file; in each product repo write a gitignored .agents symlink and a nested AGENTS.md under 40 lines, so process files are never tracked twice. |
| 10 | docs/index.html (Build vs not) | Add three refusals with this page as the evidence link: a reviewer role for ordinary diffs, a second tracker, per-unit receipts. |
Code repo sisodias/siso-internal-labs on the VPS; companion sisodias/siso-internal-labs-agents.
| # | Where | Change |
|---|---|---|
| 1 | code repo, scripts/verify.mjs (new) | One gate with the verify-4-layers contract: JSON per layer, exit 0 / 1 / 2, PARTIAL 3; a committed red-baseline.json written from a clean main on day one so the gate ratchets instead of blocking. The deploy script refuses a build whose gate is not green on HEAD == origin/main. |
| 2 | companion repo, root | OWNERS.md under 40 lines (replace rows), DECISION-LOG.html, PROVEN-LEDGER.html seeded from what shipped on 2026-09-11 with the screenshot path and release id per row. The code repo keeps AGENTS.md under 120 lines, CLAUDE.md = @AGENTS.md, and nothing dated. |
| 3 | code repo, .github/workflows/ | One workflow on pull_request, push: branches: [main] and merge_group, one aggregate required job, path filters, tests near the change on the PR and the full suite nightly. Never push: {}; the budget is the free 2,000 minutes a month. |
| 4 | code repo, .gitignore + .agents | The companion is a symlink at .agents and gitignored, so it can never be tracked in two repos and diverge the way Oracle's did. |
| 5 | companion repo, AGENT-ZERO-STATE.md | Freeze the append habit: COMPACT.md rewrites it under 120 lines, dated snapshots go to a snapshots/ folder, the owner table lives only in OWNERS.md. |
| 6 | siso-harness-lab (filed, per AGENTS.md) | SessionStart stays routing-only plus one telemetry line: commits landed today, oldest open lane age, worktree count, gate status. Anything longer is a page on the docs path, not hook output. |
Three files the brief named at the product-repo root do not exist there. ASTRA-DOCS-UNFUCK.md, unfuck-20260905/MASTER.md and A0-STATE.md all live under .agents/briefs/ in the companion repo and were read from there. The primary checkout's docs/DECISION-LOG.html is stale (newest entry 2026-08-29, branch lane/multi-model-20260829); the entries cited above were read from origin/main with git show. Counts marked "2026-09-11" were taken from the primary checkout on that date.
SISO_Agency/apps/oracle-companions/agents/briefs/UNSLOP-RESUME.mdSISO_Agency/apps/oracle-companions/agents/briefs/ASTRA-DOCS-UNFUCK.md (sections "The measured problem", "Diagnosis and plan — 2026-09-11")SISO_Agency/apps/oracle-companions/agents/briefs/unfuck-20260905/MASTER.md, COLD-REVIEW.md, BROKEN.md, recaps/SISO_Agency/apps/oracle-companions/agents/briefs/A0-STATE.md, reset-20260911/worktree-review.jsonSISO_Agency/apps/oracle-companions/agents/memory/unslop-research-sources-20260911.mdSISO_Agency/apps/oracle-companions/agents/OWNERS.md, README.md, PAGE.md, repos.jsonSISO_Agency/apps/oracle-streaming/docs/DECISION-LOG.html and docs/PROVEN-LEDGER.html at origin/main; docs/SAFETY-GUARDRAILS.htmlSISO_Agency/apps/oracle-streaming/scripts/fleet/verify-4-layers.mjs, scripts/fleet/worktree-for.sh, scripts/session-onramp.mjs, scripts/branch-hygiene.mjsSISO_Agency/apps/oracle-streaming/CLAUDE.md, AGENTS.md, .claude/settings.json, .claude/hooks/, .claude/skills/, .claude/agents/, .codex/skills/, .github/workflows/ at origin/mainSISO_Agents/siso-harness-lab/docs/lessons/2026-09-06-oracle-fleet-token-waste.mdSISO_Agents/siso-harness-lab/reports/2026-09-08-economical-reset/README.mdSISO_Agents/siso-harness-lab/reports/2026-09-claude-reramp/01-transcript-audit.md, 06-oracle-skills-classification.mdSISO_Agency/siso-internal-labs-server/docs/ORACLE-DOMAIN-MODEL.md, PROJECT-ESTATE.md (HALO row)SISO_Agents/siso-project-team/AGENTS.md, team.yaml, skills/*/SKILL.md, tools/, docs/index.html