Updated 2026-09-23 12:16 UTC from GitHub. 6 components in your words, each broken into the parts that produce it, in the owner's order. Yellow edge = the part a builder picks up now. Red edge = it moves only when you act. Finished work is folded away at the bottom.
Your level is the component; mine is the part. Bars show parts landed out of parts listed. "Next" is the one part that unblocks the most.
A plain chat turn on the live route answers fast, every time. Prompt length is the latency, not thinking: a one-word greeting was carrying 33 tool schemas and 7.8k prompt tokens. Speed is a merge gate of Class A standing; new-tool work halts while it is red.
Always keep speed a high priority.Core as light as possible; when a tool is called the wire carries core plus that one schema and everything else is dropped. Every PR states its cost to the turn.
| No. | Part | State | Ref | Next move | Done when |
|---|---|---|---|---|---|
| 1.1 | Tiered tools: core on the wire, the rest behind open_toolsCategories listed as one-line index entries; a category loads only when opened. | merged | #926 | Claude measure | Core schema count and bytes reported; a chat turn under 4k prompt tokens. |
| 1.2 | Drop everything but core + the called schema for the rest of the turnYour 9/18 evening ruling. Index lines go too once a tool is open; reset to core + index between turns. | done | #847 B.3 | Builder | Deployed 9/20 evening (#956 line). |
| 1.3 | Zero prefix-cache hits on the Sparks routeThe core is stable at the front so the cache should hit; it does not. --prefix-match-unit 8 was a no-op. | done | #927 | Claude + Builder | Warm-turn prefill drops and the server counter shows hits. |
| 1.4 | Snappy-turn SLO as the merge gateA plain chat turn on the live route, timed in CI against the lane budget. Red blocks the merge. | open | #870 | Builder | A PR that adds latency to Hal's chat turn fails its check. |
| 1.5 | Reply first, work in the backgroundA drafting question gets an immediate answer while the tools run as a job. | done | #956 | Claude deploy | Deployed 9/20 evening; reply-first live on both lanes. |
| 1.6 | Standing bakeoff: Foundry vs DeepSeek harness vs Hermes | done | #872 | — | Same tasks, same endpoint; if Foundry is 5× slower the harness is the bug. |
| 1.7 | Long Telegram reply splits; a streamed turn shows once | done | #965 | Claude deploy | Deployed 9/20 evening. |
| 1.8 | Thinking off on chat; keepalive; streaming; self-knowledge cache | merged | #809 #867 | — | Landed 9/15. |
| 1.9 | Fast front + specialist lanes as toolsOne fast Hal in front; engineering, accounting and design as specialist lanes with their own models. | live | #624 | — | Specialist registry, picker and delegation on main. |
| 1.10 | Gage 4.7 audit · Oracle greeting sends 37 schemas, 9,063 tokens, 3.7 s before a wordTier Oracle's tools the way Hal's are tiered. | next | #991 | Builder | An Oracle greeting carries the same 4 core schemas Hal does; measured on the Sparks route. |
| 1.11 | Gage 4.7 audit · Thinking at the server default eats the output cap and returns nothing | next | #991 | Builder | Chat routes force thinking off; a greeting returns text every time. |
| 1.12 | Gage 4.7 audit · Hal greeting is 4,893 prompt tokens: a core file and a page of memory it never uses | open | #991 | Builder | Greeting under 3k tokens; the cut blocks named and lazy-loaded. |
| 1.13 | Gage 4.7 audit · Prefix cache is on but a repeated chat prompt is not faster | open | #991 | Builder · Claude measure | Second identical greeting measurably faster than the first, or the reason written down. |
A Foundry agent is fully capable the moment it is spun up: shell, files, brokered network, helpers that persist, skills that load, memory that writes, tool results that survive a turn. Opt-out per agent later. Money, sends and credentials stay the only gates.
Tear down the limitations… reimplement once we have a really usable product.
When we spin up a foundry agent, I need it to be fully capable from the start by default.
| No. | Part | State | Ref | Next move | Done when |
|---|---|---|---|---|---|
| 2.1 | Default-on lanes: kernel posture and the profile resolverA new lane manifest gets every registered tool unless its forbidden: block says otherwise. | in review | #909 #936 | Gage then Peter | A lane file with no grants list prints every tool at start-up. |
| 2.2 | A · workspace_run works on the live hostThe OS sandbox refused every command since 9/13. | open | #890 foundry-hal#7 | Builder | Hal runs a script in his workspace and gets the output back. |
| 2.3 | B · Skill loader: load and keep procedures before filing a ticket | open | #962 | Gage | Part B never merged (#962, six Gage rounds). Re-scope or close. |
| 2.4 | C · Helpers persistA script the agent wrote and that worked is callable next time. | done | #890 C | Builder | Merged #978, deployed 9/21. |
| 2.5 | D · durable_memory_write granted to the front lanes | done | #890 D | Builder · Peter record | Merged #981, deployed 9/21 (hal v7 / oracle v6). |
| 2.6 | E · Brokered egress for the workspace | done | #890 E | Builder | Merged #982, deployed 9/21. |
| 2.7 | F · One capability envelope, wired to a lane | done | #890 F | Builder | Merged #980, deployed 9/21. |
| 2.8 | G · Rewrite the self-model sentenceStop teaching "a capability the lane does not grant is silence". | done | #890 G | Builder | Merged #976, deployed 9/21. |
| 2.9 | H · stuck.py improvises before it escalatesWrite a helper and try again before asking a bigger brain. | done | #890 H | Builder | Merged #976, deployed 9/21. |
| 2.10 | N · Tool results survive into the next turnBounded rows on the trace message; +325 prompt tokens, +0.16 s p50, per-lane dial. | merged | #933 | Peter Class A | Hal quotes yesterday's tool result without re-running the tool. |
| 2.11 | Host file search: host_find / host_readRead-only over what the foundry account sees; secret paths refused. | open | #836 | Builder | "Find anything about X on this machine" returns the file. |
| 2.12 | Skills: mine repeats, promote at 10 days, retire with a tombstone | merged | #672 #702 | — | Nothing uses a mined skill yet; that is 2.3. |
| 2.13 | Memory seeded from OpenClaw, 5,080 lines live | merged | #843 #845 #848 #858 | — | Landed 9/15. |
| 2.14 | Gage 4.7 audit · Engineer, finance and coding are not three running agentsRegistered ≠ granted: the pump calculator (foundry-hal #6) was built and left off the lane. | next | #992 | Builder | The calculators are granted, the books are registered, and each role answers on its own lane. |
| 2.15 | Gage 4.7 audit · A request does not become a tool in 90 minutes | open | #992 | Anvil · Hammer | foundry-hal #15 (open since 9/20) lands as a tool; the intake loop (4.2) closes the gap by itself. |
| 2.16 | Gage 4.7 audit · The model is still told a closed world | open | #992 | Builder | Self-knowledge says what the lane holds and how to get more, never what it cannot do; verified on a live turn. |
Every ability that is built and green but not yet on the runtime. Three audits found the same thing: capability built in one PR, armed in a second PR that never opened. This component is the list of second PRs, records and deploys. It is the shortest road to a more capable Hal, and most of it moves on you.
Report exceptions only.So this table is the exception list: each row is one thing standing between a merged PR and a live lane.
| No. | Part | State | Ref | Next move | Done when |
|---|---|---|---|---|---|
| 3.1 | Schedule tools: register, grant Foundry-wide, fire from each lane's daemonOracle's four report times are launchd jobs I install. This lets any lane set its own. Oracle asked for it again today (oracle#159). | done | #941 | Peter | Deployed 9/20 evening. |
| 3.2 | Deploy the merged speed workReply-first (#956), tiered tools (#926), long-reply split (#965) are on main and not on the runtime. Merge hold lifts when #941 lands. | done | #956 #926 #965 | Claude | Runtime on 81725e0e, 9/21. |
| 3.3 | Grant the coms bus: Hal, Oracle and the builder message each otherInbox, delivery, receipts and ratchet exist; no lane grants message_agent. | your record | #835 | Builder PR · Peter | Oracle asks the builder for something and it lands as a job. |
| 3.4 | Oracle engine gate binds to merged main; one deploy script; hourly pin checkEnds the record-per-engine-bump churn you ruled out this morning. | done | #967 | Peter | Merged #967 + one deploy script; engine at 8c25d293. |
| 3.5 | Scout gets live X: Grok /responses with x_search + web_searchA Foundry-wide ability behind a route flag; add the grok-search route to the operator env at deploy. | done | #968 | Peter | Merged #968; grok-search route live 9/20. |
| 3.6 | Standing preferences: an owner-set file loaded with the core context every turn | done | #955 | Gage | "Never sign off with a summary" sticks across sessions on every adult lane. |
| 3.7 | Email tool family: each agent reads and sends from its own mailboxSends stay behind the hard stop. | in review | #959 | Gage then Peter | Hal reads a vendor reply from his own inbox. |
| 3.8 | Every agent's keychain unlocks itself at bootToday's outage: two locked keychains took Claude Code and Oracle's broker keys down. foundry, grok and codex now unlock via a boot daemon; secrets re-entered. Claude Code has NOT been shown to unlock unattended at boot. Only hal is left, and that is your login. | next | local-first #37 | Claude · Peter yes on hal | Live for foundry, grok, codex; not done for claude until a boot brings Claude Code up with nobody at the keyboard; hal is Peter's login (left alone). |
| 3.9 | Rotate the printed secretsHal Telegram token (8/16), Anvil Telegram token + S128 key (9/03), Cerebras key (9/15), Cloudflare + Hostinger passwords (9/14). | yours | — | Peter | Each one rotated; I stop reminding. |
| 3.10 | Builder route + gate livesparks-builder route READY, gate recorded, dry-run proven. | done | #837 #854 | — | Done 9/20. |
| 3.11 | Live board on jobs.egyed.ioYou: add the two Cloudflare repo secrets (API token, account id), move ledger/ledger.workflow.yml → .github/workflows/ledger.yml, add the domain to Pages project foundry-ledger. | yours | #975 | Peter | Page renders every 15 min from ledger/parts.yaml and GitHub state. |
| 3.12 | Gage 4.7 audit · Anvil's mission loop has no deadline and its lock is a lie | next | local-first#38 | Anvil | A cycle past its budget is killed and journaled; measured 85 min past a 30-min lock. |
| 3.13 | Gage 4.7 audit · Class A approval dies on a rebase that changed no bytes | open | #992 | Builder · Gage | Approval binds to the tree hash; a no-byte rebase keeps the stamp and the record. 30 of the last 40 merges were Class A. |
| 3.14 | Gage 4.7 audit · Oracle pin drift can sit for hours; two Colima VMs for two small listeners | open | local-first#38 | Builder | Pin checker alerts within the hour; one VM. |
| 3.15 | Post-close review carries the engine's numbers | open | oracle#169 | Builder (oracle#169) | The engine writes the review block at the daily close and the cadence renders it. Not a clock bug: #993 closed, live plist restored. |
Anvil moves off Hermes and onto Foundry: his brain on the Sparks route, a loop that turns an accepted request into a job by itself, his own Telegram seat, and one shadow job to prove it. Hermes stays the fallback until two Foundry-built PRs merge clean.
Make sure the abilities we create for the builder are foundry wide abilities. Always keep speed a high priority.No builder-only branch of the harness; each PR states cost to the turn.
| No. | Part | State | Ref | Next move | Done when |
|---|---|---|---|---|---|
| 4.1 | 7.08 · A real brain on the builder laneReadback: builder-foundry brain route sparks-builder → qwen38-flash-next-sparks: READY. | done | #837 | — | Proven 9/20 11:4x with the gate recorded. |
| 4.2 | 7.09 · Intake loop: a request issue becomes a job by itselfAny lane's own-repo [request] issue, not just the builder's. The 90-minute rule. | open | #833 | Anvil | Anvil picked it up 9/21 06:35. |
| 4.3 | 4.08 · The bus grantSame part as 3.3; it sits in the builder's order because the builder is the first consumer. | your record | #835 | Anvil PR · Peter | A request travels agent → builder with no relay. |
| 4.4 | 7.10 · Anvil's own Telegram seat on Foundry, with the envelope | waiting | #834 | Anvil | Parked 9/21: Hammer gets the Telegram lane instead if wanted. |
| 4.5 | 7.11 · Shadow job: one issue on both builders | open | #838 | Anvil + Claude compare | Two Foundry-built PRs merge and you say "stop building on Hermes". |
| 4.6 | 7.12 · What the builder loses leaving Hermes: shell, memory, watcherWiden only for what the shadow job proves he needs. | open | #839 | Anvil | The shadow job runs without a tool he does not have. |
| 4.7 | Mission-cycle guard: every cycle writes a ledger lineHermes-side hygiene while he is still there. | in review | #891 | Gage | No unreviewed merge and no silent cycle. |
| 4.8 | Hammer: a second builder seat on Foundry, run beside AnvilPlan change filed 9/21 (#994): Anvil stays as is. You create the blinc-hammer GitHub App. | next | #994 | Peter App · Builder wiring | Both builders pull one queue for 2 weeks or 20 jobs; one table; you pick the harness. |
The kids out-earned the eleven-recipe catalog in two weeks. Crafting Overhaul Map v1 is signed: a full-width Smithy around the tutor, metal as tier, shape as a craft-time choice, then depth and learning in the temper step. Build order S0 → S1 → S3, then temper and grades, then smith level and runes.
kids want more things to craft: swords, tools, weapons, shields.Viking set is the product; the 3-boy/6-girl split stays.
| No. | Part | State | Ref | Next move | Done when |
|---|---|---|---|---|---|
| 5.1 | S0 · The slot SmithyStructural goal picker, per-slot chain, full-width forge page. Gage approved round 1; Astra's blocker fixed in round 2. | done | trivium-forge#297 | Claude merge | Merged 9/20. |
| 5.2 | S1 · Metal as a compositor input, the cape row, the forward-upgrade rule | done | trivium-forge#299 | Claude merge after S0 | Merged 9/21. |
| 5.3 | S3 · Forge scene and strike FX behind the Smithy (CSS/SVG only) | done | trivium-forge#300 | Claude merge after S1 | Merged 9/21. |
| 5.4 | Deploy S0–S3 to the mini | done | mini deploy procedure | Claude | Deployed 9/21 morning; public path 200. |
| 5.5 | Art wave: metal layers, cape, sword, spear, kite and tower shields, nasal helmDispatched to Grok on #294; no reply yet. Buzz relay was down before the reboot; it is up now. | waiting | trivium-forge#294 | Grok | Layered PNGs committed and referenced by the compositor. |
| 5.6 | S2 · Temper step and quality gradesThree live-plan questions in the metal's discipline; misses never cost ingots; stars from mastery, server-graded. | yours | Map v1 §C | Peter | Gage and Astra both: a finish from lesson questions is a quiz under Map §1. Hold, or accept the seam until S4 with one record on #301. |
| 5.7 | S4 · Smith level upgrades the forge scene; runes and named gear | open | Map v1 §D–E | Claude | Level 3 smith sees a bigger forge; a quest line names a sword. |
| 5.8 | Two open advisoriesCross-slot banner order; full-set portraits ignore metal cuts (Astra). | open | trivium-forge#294 | Astra · Claude | Both folded into S1 or filed as their own parts. |
| 5.9 | Gage 4.7 audit · A failed drill still mints an ingot, and the screen never says so | next | trivium-forge#305 | Builder | A failed drill mints nothing and says why. |
| 5.10 | Gage 4.7 audit · A lesson check waits up to 60 s on the model after the grade is saved | next | trivium-forge#305 | Builder | Grade shows at once; the model's note arrives when it arrives. |
| 5.11 | Gage 4.7 audit · Smithy discards a finished reply, then loads an 800×1280 portrait into an 11-rem frame | open | trivium-forge#305 | Builder | One reply used; portrait sized to the frame. |
| 5.12 | Gage 4.7 audit · History: 20 of 50 stories drafted; keep-forging has no daily cap | open | trivium-forge#305 | Grok stories · Builder | 30 more stories drafted; a per-day cap. |
About $600 of BTC plus $500 of USDC you added 9/20 in your Default portfolio is Oracle's live-test money before real money. Oracle places the orders, never the builder. BTC is the savings account; USD and alts are working capital. At roughly 0.9% a side, a round trip costs about 2%, so the monitor's default action is to do nothing. Rails proposed: 25% per position, 10% daily stop, 20% weekly kill, every fill journaled and one Telegram line.
Turn it on and turn him free.Grow it any way; convert half to all of the BTC to USD as his first act; the LLC account is the real-money phase, and the 50/50 hardware deal starts there.
| No. | Part | State | Ref | Next move | Done when |
|---|---|---|---|---|---|
| 6.1 | Oracle's keys back in the rebuilt foundry keychainCoinbase CDP (new key, also in the CLI), Alpaca paper and live pairs, FRED, Telegram. Each verified against its API 17:20. Live pair is stored only; the engine still refuses live writes. | done | local-first #37 | — | Landed 9/20 17:20. Paper equity reads; live account reads $0. |
| 6.2 | Read-only Coinbase Advanced Trade driver: market kinds, provider switch, trading gateYour record is posted at head cc904eb7; Gage re-stamps after the reboot. | done | oracle#160 | Gage then Claude merge + sync | Merged #160 9/20; engine synced. |
| 6.3 | Coinbase market kinds (cb_*) on the oracle-voice argv allowlist | done | #970 | Gage | Merged #970 9/21. |
| 6.4 | Execution: Oracle's order path, rails, first act, sleeves, gateRecord line handed at cb20f58d. First real order path, so Class A. | done | oracle#163 oracle#161 | Peter | Merged #163 9/21 at your record. |
| 6.5 | Your word: trading_enabled: trueOracle's first act converts half to all of the BTC to USD; a done state needs a confirmed fill. | done | — | Peter | Your word 05:06 MST 9/21; flag committed as #164. A fill waits on a coinbase_fill record. |
| 6.6 | Crypto 24/7 monitor + local Jev in the loopTeam brainstorm: Claude, Grok, Astra lenses in; OMP pending. Trend state, volatility regime and "when not to act" per pair from one WebSocket. | open | oracle#162 | Claude fold into one map | One map for your signature, then a builder PR. |
| 6.7 | Astra: BTC-first momentum research and the evaluation contractResearch-only branch astra/crypto-momentum-research-20260920: strategy spec, offline detector and cost lab, tests. Compares the Jev API against the local model. Not a live activation. | research | README @ b5447abe | Astra | A strategy with a backtest and a fee model, filed as a proposal Oracle can run as a sleeve. |
| 6.8 | Local Jev: Laya behind the decision seam, in shadow beside TypeSafe23 ms per choice; zero-shot weak; fine-tune on the shadow-route rows is part D. Jev never places, cancels or flattens. | Class B | #969 #964 | Gage | Shadow log shows Laya and TypeSafe side by side on real ticks. |
| 6.9 | Oracle's own requests: Coinbase connector, schedulerFiled by Oracle on his repo today; answered by 6.2/6.4 and 3.1. | your record | oracle#158 oracle#159 | OMP · Gage | OMP's #986 (foundry): read kinds live on the lane — approval on ea4c2990, PR open. |
| 6.10 | Coinbase CLI live, Default portfolio read | done | 9/20 | — | Landed this morning; key re-import is 6.1. |
| 6.11 | Gage 4.7 audit · The 10% daily and 20% weekly halts block buys but never sell | next | oracle#167 | OMP | On a halt the trend and swing positions are sold; the week baseline is never replaced with a lower equity. |
| 6.12 | Gage 4.7 audit · first_act.done, trend, and swing_rebalanced_on flip without a confirmed fill | next | oracle#167 | OMP | All three flip only on a confirmed fill; a lost response retries under the same client id; a response that cannot be read flips nothing. |
| 6.13 | Gage 4.7 audit · Savings BTC in Default blocks the whole trend sleeve at the 25% rail | next | oracle#167 | Peter | Remove BTC-USD from coinbase.trend_products in config/oracle3-foundry.json; do not raise max_position_pct; leave the savings alone. |
| 6.15 | Gage 4.7 audit · an unreadable coinbase_exec.json sells half the BTC againA missing or half-written state file reads as a fresh book, so the first act fires a second sale nobody ordered. | next | oracle#167 | OMP | If coinbase_exec.json exists and does not parse: place no order and run no first act. |
| 6.14 | $500 USDC added to the test book | done | 9/20 | — | Landed 9/20; book is ~$300 BTC + ~$300 USD + 500 USDC. |
Open parts stand at 44 against a ceiling of 8. 6 of them move on you and 4 of those are a single record line each. Landing those 6 takes the count under 38 in one sitting.
trading_enabled: true