Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
433 commits
Select commit Hold shift + click to select a range
6d07a58
a11y: dynamic aria-selected + roving tabindex (#1099 phase 3a) (#1156)
joelteply May 14, 2026
9af29ea
feat(chat,#1100): renderMessageElement on URLCard + ToolOutput adapte…
joelteply May 14, 2026
f81ec17
fix(admission): quarantine records event_id only, not content_hash (#…
joelteply May 14, 2026
92f8109
feat(persona): engram recall surface (#1121 PR-5) (#1162) (#1163)
joelteply May 14, 2026
6642488
docs(forge): ForgeRecipe entity — kill hand-authored alloy files (#1165)
joelteply May 14, 2026
57632aa
docs(alpha): capture AIRC/Rust agent flywheel
joelteply May 14, 2026
9e13bee
feat(forge): ForgeRecipe + ForgeArtifact Rust types (Phase 1a of #116…
joelteply May 14, 2026
c1a7b11
refactor(forge): rename ForgeAlloy in TS to ForgeRecipe / ForgeArtifa…
joelteply May 14, 2026
5fd5cb3
fix(install): skip 3.9GB model download in agent lanes + CI (#1172) (…
joelteply May 14, 2026
a0a9631
feat(airc): add Rust queue scan module
joelteply May 14, 2026
b40a39f
feat(forge): ForgeRecipeEntity + ForgeArtifactEntity + registry hooku…
joelteply May 14, 2026
a168aa6
docs: define Rust comms transport traits (#1182)
joelteply May 14, 2026
3f30c29
feat(forge): forge/run IPC stub (Phase 4 of #1164) (#1183)
joelteply May 14, 2026
4dc9f9c
chore: keep npm install lightweight (#1184)
joelteply May 14, 2026
a41b4ba
docs(cognition): audit 28 recipe JSONs + identify pipeline gaps (#71)…
joelteply May 14, 2026
1edcfe0
feat(comms): add Rust transport envelope primitives
joelteply May 14, 2026
5da3768
fix(test): use SystemOrchestration in test runner
joelteply May 14, 2026
52ad91c
fix(precommit): add expected hook config file
joelteply May 14, 2026
6153682
fix(paths): remove personal machine assumptions
joelteply May 14, 2026
b13cbc4
feat(cognition): add typed ToolError
joelteply May 14, 2026
7156222
perf(cognition): hoist per-turn context
joelteply May 14, 2026
68df16d
perf(cognition): shared analysis single-flight and typed AnalysisError
joelteply May 14, 2026
afe4869
fix(precommit): guard branch state during hook
joelteply May 14, 2026
9317eea
feat(automation): nudge next queue work after merge
joelteply May 14, 2026
47794c5
feat(cognition): add TS bridge for admit and recall
joelteply May 14, 2026
4337928
feat(cognition): wire admission onto respond hot path
joelteply May 14, 2026
b750685
perf(cognition+persona): cut prompt hot-path allocations
joelteply May 14, 2026
abefb9b
perf(persona): cut single-user prompt message allocations
joelteply May 14, 2026
4a864a1
refactor(paths): centralize server process PATH policy
joelteply May 14, 2026
2fc97f6
feat(paging): expose shared ResourcePool control surface (#1228)
joelteply May 14, 2026
d8b506e
feat(concurrency): add shared single-flight policy (#1230)
joelteply May 14, 2026
331b42f
fix(concurrency): add panic-safe in-flight cleanup (#1233)
joelteply May 14, 2026
299070c
feat(modules,#1222): docker_tier discovery probe
joelteply May 14, 2026
dea9f48
feat(modules,#1222): add DockerTierPool ResourcePool impl
joelteply May 14, 2026
5f9b053
perf(cognition,#1218): avoid eager logger format allocations (#1241)
joelteply May 14, 2026
09412be
fix(orchestrator): delete SystemOrchestrator stub + retarget test run…
joelteply May 14, 2026
f75e2cf
perf(cognition): make CognitionTrace optional on admit() — drop hot-p…
joelteply May 14, 2026
b69eced
feat(cognition): surface recalled engrams into prompt_assembly (#1211…
joelteply May 14, 2026
f9d080b
refactor(persona): split evaluator.rs (1231 LOC) into focused submodu…
joelteply May 14, 2026
0ca0f57
refactor(cognition): split model_resolver.rs (1232 LOC) into mod + ty…
joelteply May 14, 2026
c493fd9
perf(concurrency,#1235): refcount-per-key cleanup so analyzer cancell…
joelteply May 14, 2026
2816740
feat(paging,#1222 PR-4): pressure-broker alert surface + ResourcePool…
joelteply May 14, 2026
b4319f4
feat(modules,#1222 PR-3): real evict_at_least via docker system prune…
joelteply May 14, 2026
75b7385
fix(chat,#1159): URLCardAdapter HTML-escape every interpolation + saf…
joelteply May 14, 2026
cc885c6
refactor(persona): split admission.rs (1225 LOC) into mod + recipes (…
joelteply May 15, 2026
df63494
fix(chat-widget): empty state cleared by hidden attr — :host([hidden]…
joelteply May 15, 2026
179ee8e
feat(commands): add RustBackedCommand base + first refactor (#1198) (…
joelteply May 15, 2026
f75f1ca
fix(channel,#1253): default tick DB to SQLite handle (#1259)
joelteply May 15, 2026
7b1cb01
refactor(paging,#1246): collapse PressureSource into ResourcePool — s…
joelteply May 15, 2026
b04cca6
perf(coordination,#1260): track room activity for temperature decay (…
joelteply May 15, 2026
adfea5a
refactor(commands,#1198): migrate recall-engrams to RustBackedCommand…
joelteply May 15, 2026
006f6c8
docs(architecture,#1266): codify recipe activity graph semantics (#1268)
joelteply May 15, 2026
7ac655a
docs(grid,#1267): clarify airc pipeline and transport contracts (#1269)
joelteply May 15, 2026
9f8b902
refactor(live,#1247): migrate livekit_agent per-key single-flight to …
joelteply May 15, 2026
ec7d35f
fix(config): make SQLite the default main database (#1271)
joelteply May 15, 2026
364b1c4
fix(inference,#1262): delete dead compute_router.rs (#1277)
joelteply May 15, 2026
743b25b
feat(airc): add realtime envelope contract (#1278)
joelteply May 15, 2026
4180fe1
fix(inference,#1273): delete dead Candle Qwen3.5 GGUF backend (#1279)
joelteply May 15, 2026
9ae3e02
fix(inference,#1274): delete dead vendored/metal_deltanet.rs (+ shade…
joelteply May 15, 2026
3449de0
test(inference,#1275): regression test for no-CPU-fallback alpha cont…
joelteply May 15, 2026
3317250
feat(airc): add realtime replay adapter (#1283)
joelteply May 15, 2026
223bc8d
fix(scripts,#1257): add cargo-test.sh wrapper that auto-applies platf…
joelteply May 15, 2026
c07e186
refactor(chat,#1158): DRY adapter base default renderMessageElement (…
joelteply May 15, 2026
f2f541c
feat(precommit,#1186): chat-roundtrip persona-reply smoke test (#1199)
joelteply May 15, 2026
3a34535
fix(inference,#1280): delete dead Candle adapter chain (Phase 1, ~250…
joelteply May 15, 2026
bac6f14
docs(chat): add AIRC migration inventory gates (#1296)
joelteply May 16, 2026
b336615
fix(chat,#1260): track room activity for temperature decay (#1302)
joelteply May 16, 2026
8647f37
fix(install,#1035): create continuum-core socket directory (#1304)
joelteply May 16, 2026
8c4b9ac
fix(ci,#1035): clear production npm audit gate (#1305)
joelteply May 16, 2026
c7117de
refactor(cognition,#1295): generate_recipe PR-1 — pure-functions slic…
joelteply May 16, 2026
f9600b3
refactor(cognition,#1289): rate_proposals PR-1 — pure-functions slice…
joelteply May 16, 2026
48ab0a2
feat(resources,#1239): Phase 1 — system/docker-tier-stats IPC + ts-rs…
joelteply May 16, 2026
b6c9add
refactor(cognition,#1289): rate_proposals PR-2 — IPC handler + orches…
joelteply May 16, 2026
87d3eeb
refactor(cognition,#1295): generate_recipe PR-2 — IPC handler + orche…
joelteply May 16, 2026
2092140
refactor(cognition,#1295): generate_recipe PR-3 — collapse TS to thin…
joelteply May 16, 2026
788d696
refactor(cognition,#1289): rate_proposals PR-3 — delete dead TS adapt…
joelteply May 16, 2026
ef819da
oxidizer: move AI gating decision to Rust (#1294)
joelteply May 16, 2026
07dd1a8
feat(cognition,#1276): migrate VisionInferenceProvider to Rust cognit…
joelteply May 16, 2026
a7f6c59
feat(paging,#1299): PressureBrokerModule bootstrap — singleton + Dock…
joelteply May 16, 2026
ec54239
feat(paging,#1299): typed system/pressure-broker-state IPC + ts-rs su…
joelteply May 16, 2026
d3fc48e
perf(cognition): lift max_concurrency:1 cap so event fanout is not th…
joelteply May 16, 2026
50c3228
fix(persona): rip TS post-inference adequacy gate (Helper-only suppre…
joelteply May 16, 2026
31dac07
feat(status,#1299): surface PressureBroker state in `continuum status…
joelteply May 16, 2026
4eaac8c
feat(resources): add runtime lease broker (#1313)
joelteply May 16, 2026
95d825f
fix(gpu): inference-grpc hard-fail on no-GPU (no CPU fallback) (#1314)
joelteply May 16, 2026
c8bed7e
fix: stabilize llama.cpp json grammar sampling (#1318)
joelteply May 16, 2026
25f60dd
fix(precommit): probe continuum-core IPC, not just jtag-client surfac…
joelteply May 16, 2026
f32b3ea
feat(runtime,CBAR-PIECE-2): ArtifactKey + ArtifactSelector + Cadence …
joelteply May 16, 2026
dd09e1d
feat(persona): add turn frame replay seed
joelteply May 16, 2026
ca22680
feat(runtime,CBAR-PIECE-2): ServiceModule artifact dispatch surface (…
joelteply May 16, 2026
aa547c2
feat(persona): capture turn frame replay records
joelteply May 16, 2026
0a8c0f2
feat(persona): record turn frame replay fixtures
joelteply May 16, 2026
4ae5255
feat(persona): load turn frame replay fixtures
joelteply May 16, 2026
203a7ab
docs(architecture): refine CBAR-SUBSTRATE
joelteply May 16, 2026
ecf84de
fix(persona): rip dead checkPostInferenceAdequacy method from Persona…
joelteply May 16, 2026
b4845f4
fix(audio/tts): orpheus must fail-closed on no-Metal, no CPU fallback…
joelteply May 16, 2026
0a0ef57
feat(grid-inference-routing): PR-1 InferenceCapability + probe + Node…
joelteply May 16, 2026
d80bc6f
docs(alpha): refresh ALPHA-GAP against 2026-05-16 canary; restructure…
joelteply May 16, 2026
85efd72
docs(architecture): refresh CONTINUUM-ARCHITECTURE @ 2026-05-16 — sub…
joelteply May 16, 2026
c87867c
docs(vision): refresh CONTINUUM-VISION against 2026-05-16 canary (#1320)
joelteply May 16, 2026
9af0105
docs: add canonical-substrate pointers to CLAUDE.md + stale-section s…
joelteply May 16, 2026
8e93505
docs(architecture): add GENOME-FOUNDRY-SENTINEL
joelteply May 16, 2026
8433bed
feat(inference): CBAR-PIECE-5 PR-1 — Qwen GPU residency gate (pure-fu…
joelteply May 16, 2026
656148a
feat(inference): CBAR-PIECE-5 PR-2 — GGUF metadata loader populates Q…
joelteply May 16, 2026
153f1d5
docs(architecture): add PERSONA-COGNITION-CONTRACT
joelteply May 16, 2026
0bc44e9
feat(inference): CBAR-PIECE-5 PR-3 — hardware probe populates Hardwar…
joelteply May 16, 2026
b2e7c1f
feat(inference): CBAR-PIECE-5 PR-4 — enforce_residency + LlamaCppAdap…
joelteply May 16, 2026
f3624da
docs(architecture): add MODULE-CATALOG — every concern as a focused m…
joelteply May 16, 2026
0f64a2d
docs(architecture): add PERSONA-THOUGHT-PROCESS — individual thinking…
joelteply May 16, 2026
efe8f62
feat(runtime): CBAR-PIECE-2 PR-3 — artifact dispatch via bus (#1339)
joelteply May 16, 2026
ec4b361
refactor(inference-grpc,PIECE-8): delete hardcoded worker-count ceili…
joelteply May 16, 2026
6db36a9
test(contract): widen no_cpu_fallback_contract to cover Candle-side p…
joelteply May 16, 2026
7d18581
feat(runtime): real Prefix dispatch via dedicated artifact path on Me…
joelteply May 16, 2026
e9110f9
docs(alpha): second refresh — close PIECE-5 + PIECE-8 + contract-wide…
joelteply May 16, 2026
426f9b0
feat(cognition): audit-recorder (MODULE-CATALOG #1 ranked module) (#1…
joelteply May 16, 2026
7b28e70
feat(genome): working-set-manager PR-1 — typed data layer for cache h…
joelteply May 16, 2026
048ea24
feat(cognition): add threat detector contract (#1347)
joelteply May 16, 2026
e091973
feat(governor): add substrate governor type surface (#1345)
joelteply May 16, 2026
cd19b81
docs(architecture): add performance harness framework (#1348)
joelteply May 16, 2026
dcddcae
feat(governor): add TOML policy loader (#1350)
joelteply May 16, 2026
8cfdf7d
feat(genome): working-set-manager PR-2 — WorkingSetManager + TierStor…
joelteply May 16, 2026
de433dc
feat(governor): select policy by hardware fingerprint (#1352)
joelteply May 16, 2026
9f2c5a7
feat(governor): add LocalSubstrateGovernor reference impl (#1354)
joelteply May 16, 2026
512ec7e
feat(genome): working-set-manager PR-3 — LocalWorkingSetManager per-p…
joelteply May 16, 2026
878c045
feat(vdd): add chat roundtrip harness (#1357)
joelteply May 17, 2026
fd16e61
feat(governor): add cascade evaluator (#1356)
joelteply May 17, 2026
7211db6
feat(genome): working-set-manager PR-4 — artifact-key constants + bus…
joelteply May 17, 2026
fed8de7
feat(vdd): add typed harness registry (#1361)
joelteply May 17, 2026
1f78f55
feat(governor): wire cascade evaluator into pressure handling (#1360)
joelteply May 17, 2026
2f092ca
feat(genome): working-set-manager PR-5 — LocalWorkingSetManager auto-…
joelteply May 17, 2026
8b2f031
fix(docker): retain slice logs after boot crash (#1363)
joelteply May 17, 2026
2653691
feat(governor): apply cascade step policy rewrites (#1364)
joelteply May 17, 2026
f5d65ee
feat(genome): demand-aligned-recall PR-1 — typed data layer (per GENO…
joelteply May 17, 2026
7995dcb
feat(governor): wire cascade policy into local governor
joelteply May 17, 2026
6c26345
feat(genome): demand-aligned-recall PR-2 — DemandAlignedRecall trait …
joelteply May 17, 2026
ff2b269
fix(genome): align recall generated type names (#1370)
joelteply May 17, 2026
1f5e192
feat(governor): watch policy directory reloads (#1368)
joelteply May 17, 2026
cd9fc15
feat(genome): demand-aligned-recall PR-3a — scoring function + per-fa…
joelteply May 17, 2026
87268aa
feat(governor): bridge pressure broker alerts to governor signals (#1…
joelteply May 17, 2026
edf8d79
feat(genome): demand-aligned-recall PR-3b — LocalDemandAlignedRecall …
joelteply May 17, 2026
a092067
feat(governor): wire pressure broker to governor sink (#1373)
joelteply May 17, 2026
6dadf0d
feat(genome): demand-aligned-recall PR-3c — trait impl + CandidateSou…
joelteply May 17, 2026
09bccc6
feat(resources): add disk capacity refusal contract
joelteply May 17, 2026
90e0896
feat(genome): demand-aligned-recall PR-3d — WorkingSetCandidateSource…
joelteply May 17, 2026
dc0c0fa
feat(persona): add AIRC admission converter
joelteply May 17, 2026
0178606
feat(cognition,#1375): check_redundancy PR-1 — pure types + prompt + …
joelteply May 17, 2026
ae7db5f
feat(genome): demand-aligned-recall PR-3e — CompositeCandidateSource …
joelteply May 17, 2026
232df5e
feat(cognition): wire check redundancy IPC (#1381)
joelteply May 17, 2026
c8b11d9
feat(genome): demand-aligned-recall PR-3f — MustIncludeCandidateSourc…
joelteply May 17, 2026
4a39983
feat(cognition): delegate redundancy shim to rust (#1383)
joelteply May 17, 2026
9174109
docs(catalog): restore Next-Modules queue + add threat-detector Imple…
joelteply May 18, 2026
29bf1ce
docs(architecture): add PROD-COGNITION-REPLAY — from PROD not POC (#1…
joelteply May 18, 2026
b810855
feat(inference): inference-llm PR-1 — typed event surface (MODULE-CAT…
joelteply May 18, 2026
872e84a
feat(cognition,#1385): generate_response PR-1 — pure types + prompt b…
joelteply May 18, 2026
90f9ad7
feat(cognition): add deterministic threat detectors (#1389)
joelteply May 18, 2026
3fe8ecd
feat(cognition,#1385): generate_response PR-2 — async evaluate_respon…
joelteply May 18, 2026
14b58fa
feat(inference): inference-llm PR-2 — InferenceLlmModule ServiceModul…
joelteply May 18, 2026
0767ddf
feat(inference): inference-llm PR-3a — canonical ArtifactKeys + publi…
joelteply May 18, 2026
d8c66c1
feat(inference): inference-llm PR-3b — InferenceLlmModule auto-publis…
joelteply May 18, 2026
ed287ba
feat(inference): inference-llm PR-4 — adapter integration (translatio…
joelteply May 18, 2026
a89c8ab
feat(cognition,#1385): admit generate-response through Rust resource …
joelteply May 18, 2026
4b7a6b4
feat(cognition,LaneD): persona/drain-turn-frame command — Rust-owned …
joelteply May 18, 2026
3a2fe24
feat(persona,LaneD): response_prompt() lazy output on PersonaTurnFram…
joelteply May 18, 2026
421816d
fix(ci): add main promotion GPU release gate (#1399)
joelteply May 18, 2026
a996e13
feat(lane-f): persona-ts cognition deletion ratchet — PR-1 script (#1…
joelteply May 18, 2026
8d9f955
feat(cognition,#1385): generate_response PR-3 — TS shim + delete dead…
joelteply May 18, 2026
1c0656b
feat(inference): inference-llm PR-5 — Runtime registration (#1404)
joelteply May 18, 2026
92bd69f
fix(ratchet,#1405): cover AI server cognition shims (#1406)
joelteply May 18, 2026
656ecbd
refactor(cognition): drop TS slot coordination from generateResponse …
joelteply May 18, 2026
8922ad3
feat(persona): Lane D — bump turn-frame replay record to v2 with resp…
joelteply May 18, 2026
da455c4
feat(cognition,#1411): tool_embedding PR-1 — pure types + cosine_simi…
joelteply May 18, 2026
46c9a66
docs(alpha,#1408): refresh canary lane state (#1414)
joelteply May 18, 2026
c46da02
feat(cognition,#1411): tool_embedding PR-2 — process cache + async em…
joelteply May 18, 2026
275e0b2
feat(cognition,#1411): tool_embedding PR-3 — TS shim + delete dead TS…
joelteply May 18, 2026
e58b49f
feat(persona): Lane D — Rust persona/turn-execute chains drain -> pro…
joelteply May 18, 2026
45dabd3
oxidizer(#1420): AIShouldRespondServerCommand — delegate to cognition…
joelteply May 18, 2026
1643f02
docs(alpha,Lane A): multi-source-of-truth merge gate from live UI QA …
joelteply May 18, 2026
12a8d9b
refactor(concurrency): delete parallel concurrent/ dir, single concur…
joelteply May 18, 2026
4330aa7
feat(model-registry): boot from Rust catalog (#1424)
joelteply May 18, 2026
51ca168
oxidizer: AIValidateResponseServerCommand → cognition/validate-respon…
joelteply May 18, 2026
1289390
feat(vdd): Lane C PR-3 — vdd/report IPC + reader (machine-readable VD…
joelteply May 18, 2026
4e07b02
refactor(ipc): split mod.rs (1288 LOC) — extract protocol + diagnosti…
joelteply May 18, 2026
b8888e3
refactor(ai/should-respond): delete dead protected helpers — Rust pat…
joelteply May 18, 2026
a5dfc25
feat(vdd): live persona-turn replay fixture — schema + writer + reade…
joelteply May 18, 2026
192189d
refactor(model-registry): fold src/models/ (discovery layer) into mod…
joelteply May 18, 2026
0b62435
docs(airc): update AGENT-BACKBONE-INTEGRATION for the post-rewrite su…
joelteply May 20, 2026
5590bfb
feat(airc): dual-write chat sends to typed airc envelopes (#1432)
joelteply May 25, 2026
1a3b2e3
feat(airc): use structured publish for chat dual-write (#1433)
joelteply May 25, 2026
32f66fe
test(airc): add chat dual-write smoke proof (#1435)
joelteply May 25, 2026
cb5c678
feat(airc): project active realtime subscriptions (#1437)
joelteply May 25, 2026
7ed3cc6
feat(chat-airc): add Stage 2 mirror writer skeleton (#1436)
joelteply May 25, 2026
7483132
oxidizer: AIGenerateServerCommand → cognition/generate-response shim …
joelteply May 25, 2026
e2fed99
feat(airc): add typed event transport seam (#1443)
joelteply May 26, 2026
8922029
feat(commands): add typed execution scope (#1444)
joelteply May 26, 2026
bd4fc9a
feat(airc): add peer manifest capability index (#1446)
joelteply May 26, 2026
bb53d12
[L1-1] EventClass declaration system + registry (#1445)
joelteply May 26, 2026
aef2c80
feat(contracts,L1-6 Phase A): ed25519 signing + 8-event contract chai…
joelteply May 26, 2026
3cfecdf
build(continuum-core): git-dep airc-ipc + airc-protocol (efficient-pa…
joelteply May 26, 2026
c1a30ac
substrate(d8a69c65): retype AircRealtimeEnvelope room_id String -> Uu…
joelteply May 26, 2026
1c79a07
feat(airc): add signing_pubkey_hex to AircPeerManifest (L1-6 verify s…
joelteply May 26, 2026
f2000d9
feat(airc): publish continuum realtime over daemon IPC (#1452)
joelteply May 26, 2026
dde0006
feat(airc): stream daemon events into continuum bus (#1453)
joelteply May 26, 2026
5a33406
feat(airc): use lamport replay cursors (#1454)
joelteply May 26, 2026
bdb52c4
test(airc): prove daemon IPC realtime path (#1455)
joelteply May 26, 2026
986c6b1
feat(contracts): verify signed replay events against peer manifests (…
joelteply May 26, 2026
db244a8
docs(grid): GRID-MIGRATION-ROADMAP — 37-item phased migration checkli…
joelteply May 29, 2026
acbc698
feat(continuum-core/persona): PersonaServiceModule — singleton Rust S…
joelteply May 29, 2026
b084f9b
fix(persona): delete 5 fallback nests in PersonaAutonomousLoop — fail…
joelteply May 29, 2026
58e42af
delete: social subsystem (~12.5k LOC) + ping fallback fix + organizat…
joelteply May 29, 2026
a51d9c7
docs(grid): L0-2 dispatch slicing — delete-as-we-go contract for the …
joelteply May 29, 2026
ca4dbc3
feat(continuum-core/persona): L0-2-prep — PersonaSlot extension, enro…
joelteply May 29, 2026
80cf6ee
feat(continuum-core/persona): L0-2-dispatch — service_once_for throug…
joelteply May 29, 2026
a6a3c0d
docs(migration): slice 2 triage — indicator/positron/list/recipe (#1461)
joelteply May 29, 2026
4243d56
docs(migration): chat-message-flow migration scope — gated on airc e5…
joelteply May 29, 2026
50312e4
feat(continuum-core/persona): L0-2-respond-context — required Respond…
joelteply May 29, 2026
04b8457
feat(continuum-core/persona): L0-2-respond-call — Responder DI, lock-…
joelteply May 29, 2026
c484c7f
docs(grid): L0-2-cutover investigation — found existing parallel infr…
joelteply May 30, 2026
a5378c6
docs(architecture): brain-regions substrate spec + cognition algorith…
joelteply May 30, 2026
2366354
feat(continuum-core/runtime): L0-3a.0 — BrainRegion trait + ReadyBuff…
joelteply May 30, 2026
ee15b03
feat(continuum-core/modules): L0-3a.1 — HippocampusModule skeleton (B…
joelteply May 30, 2026
bf23618
feat(continuum-core/persona): L0-3a.2a — EngramGraph + EngramEdge + E…
joelteply May 30, 2026
2637221
feat(continuum-core/runtime): L0-3a.0 — BrainRegion trait + ReadyBuff…
joelteply May 30, 2026
5a15615
perf(persona/cognition): zero-alloc is_mentioned via cached lowercase…
joelteply May 30, 2026
8a49002
harden(utils): UTF-8-safe truncate_at_char_boundary helper + sweep al…
joelteply May 30, 2026
c1a130c
perf(persona): zero-alloc mention detection + promote str_case helper…
joelteply May 30, 2026
86d8c56
fix(ci): canary tag default for install-smoke + fail-loud precheck (#…
joelteply May 30, 2026
ea218b8
fix(install): pre-create ~/.continuum/sockets before docker compose u…
joelteply May 30, 2026
5ce2178
docs(architecture): MODULE-ARCHITECTURE.md — everything is a module, …
joelteply May 30, 2026
9efe53b
feat(runtime): CommandInterceptor chain — kernel dispatch composes ro…
joelteply May 30, 2026
6eadbc2
fix(install): remove dangling avatars build context from docker-compo…
joelteply May 30, 2026
4aff271
feat: Mac Intel hardware tier + cognition perf pass (#1475)
joelteply May 30, 2026
75c8380
feat(runtime): GridInterceptor — capability-based remote routing in t…
joelteply May 30, 2026
4d4414d
feat(runtime): cell return shapes — Handle for long-running stateful …
joelteply May 30, 2026
8171a2d
fix(bindings): land ts-rs output for cell shapes + refresh stale barr…
joelteply May 31, 2026
11132b2
test(airc/realtime): concurrency stress tests — moment-of-truth preco…
joelteply May 31, 2026
3be3022
docs(architecture): COMMAND-INFRASTRUCTURE field manual — codify subs…
joelteply May 31, 2026
ffdbd2f
docs(architecture): per-module design pages for chat, generator, data…
joelteply May 31, 2026
6789aad
docs(architecture): MODULE-CATALOG.md — mark which modules are alive …
joelteply May 31, 2026
97c61ab
feat(runtime): CommandRequest<P> / CommandResponse<T> envelopes — han…
joelteply May 31, 2026
60829d8
feat(modules): GeneratorModule — recursive bootstrap, manufactures ne…
joelteply May 31, 2026
86e7aa9
feat(modules/chat): ChatModule — chat/poll + chat/send migrate to Rus…
joelteply May 31, 2026
4375337
feat(modules/generator): v2 enriched scaffold — types.rs + DESIGN.md …
joelteply May 31, 2026
e304217
feat(modules/data): query cursors mint typed HandleRef + per-cursor m…
joelteply May 31, 2026
68b90d4
refine(runtime): HandleRef::expect_owned_by + CommandRequest::handle_…
joelteply May 31, 2026
e1105ad
feat(runtime): events/command-completed — every dispatch emits a bus …
joelteply May 31, 2026
5ac418c
docs(planning): PERSONA-AS-DEVELOPER-GAP.md — substrate gap report fr…
joelteply May 31, 2026
afdcce1
feat(modules/code): code/exists + code/list + code/glob — filesystem …
joelteply May 31, 2026
e5b0ce1
feat(modules/cargo): cargo/build + cargo/test — structured Rust toolc…
joelteply May 31, 2026
b68f92d
feat(modules/airc): headless socket discovery via `airc ipc-endpoint`…
joelteply May 31, 2026
de1c10d
feat(modules/airc): AttachRequest carries channel — owner-core model …
joelteply May 31, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
121 changes: 121 additions & 0 deletions .airc/ASSEMBLY-LINE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
# Assembly-line resilience (AIRC pilot — #1109)

The kanban is an assembly line, not a Slack channel. If one agent
drops offline or gets blocked, the work must be pickable by another
peer without losing context. This document specifies how.

## The problem this solves

Two real failure modes from this repo's recent history:

1. **Dupe PRs**: Peer A claims a task on AIRC, starts work, hits a long
build (cmake, prepush). Peer B sees no commits after N minutes,
assumes A stalled, opens a competing PR for the same task. A's
"please hold" arrives after B has pushed.

2. **Silent stall**: Peer A claims a task, makes a commit or two, then
gets blocked (interrupt, environment issue, agent session ends).
No signal goes out. The task sits in a "claimed but not progressing"
state for hours. No one knows it's pickable.

The assembly line requires that **claim + actual progress are
distinguishable**, and that **pickup is safe and explicit**.

## Heartbeat

Every active owner of a queue item emits a heartbeat on AIRC at least
every **30 minutes** while the task is in-flight. The heartbeat
contains:

- task id (PR # / issue #)
- last-commit sha (or "no commits yet, still investigating")
- current sub-step (e.g., "cmake build in progress, ETA 5min")
- expected next signal time

A heartbeat is NOT optional. If you genuinely cannot heartbeat (e.g.,
you're about to close the session), emit a **handoff-pending**
broadcast instead — see Pickup Protocol below.

## Stall threshold

An in-flight task is **stalled** when:

- No heartbeat in the last 30 minutes **AND**
- No new commits on the branch in the last 30 minutes **AND**
- No reply to a direct AIRC ping addressed to the owner within 5
minutes.

When all three are true, the task is **available for pickup**.
Before that point, peers MUST NOT take over.

## Pickup protocol

To pick up a stalled task:

1. Verify all three stall conditions on AIRC. Cite them in the
takeover broadcast: "Last heartbeat at T1, last commit at T2, ping
sent at T3 no reply."
2. Broadcast intent: "Picking up #N from @owner. Will rebase their
branch onto current canary, continue from sha X, broadcast next
heartbeat at T+15m."
3. Fetch the existing branch. Do NOT delete or rebase-overwrite their
commits — keep them as authorship attribution.
4. Continue work on the SAME branch where possible. If the owner was
on a fork (e.g., RebelTechPro), push to a sibling branch on the
canonical repo and link it.
5. Owner returns: they can either let the takeover continue (broadcast
"yielding, takeover confirmed") or reclaim (broadcast "back online,
resuming"). Reclaim requires the takeover peer to stop and
broadcast yield.

## Handoff-pending (graceful exit)

If you know you're going offline before the task is done, broadcast a
handoff-pending **before** disappearing:

```
handoff-pending #N — going offline at T. Last commit sha X. Next
step: <one sentence>. Anyone may pick up immediately; no stall wait
required.
```

This bypasses the 30-min stall window. Peers can take over right
away with explicit consent.

## Why not just git lock files?

Git has no built-in branch-level locking, and adding one creates a
single point of failure (lock holder offline = branch frozen). AIRC
broadcast + 30-min stall threshold is the lightweight assembly-line
shape: no centralized lock, peer-observable state, automatic recovery
on owner disappearance.

## What NOT to do

- **Don't take over a task without verifying all three stall
conditions.** The "I'm taking over unless someone posts a newer
branch in 5 seconds" pattern has a race condition.
- **Don't rebase-overwrite an offline owner's commits to "tidy up."**
Their authorship trail is evidence + attribution.
- **Don't pick up while the owner's prepush is still running.** Long
builds are common; absence of commits during a build is normal.
- **Don't silently drop a task you can't finish.** Broadcast
handoff-pending so the line keeps moving.

## Heartbeat example

```
heartbeat #1085 — owner @codex, last commit 7331be6b4 (4 min ago),
current: cmake llama.cpp build in progress, ETA 8min, next signal
expected by T+15min.
```

## Takeover example

```
picking up #1106 from @sibling-claude — stall verified: last
heartbeat 18:01 (35min ago), last commit 17:55 (41min ago), ping at
18:34 no reply. Branch: feat/adapter-dom-text on RebelTechPro fork.
Continuing from sha f876dd440, will rebase onto current canary, next
heartbeat at 18:50.
```
87 changes: 87 additions & 0 deletions .airc/ONBOARDING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
# Onboarding for new agents/humans (AIRC pilot — #1109)

You arrived at the Continuum repo and want to contribute. Here's how
to join the active collaboration.

## TL;DR

```bash
# 1. Install airc (if not present)
curl -fsSL https://raw.githubusercontent.com/CambrianTech/airc/main/install.sh | bash

# 2. From the continuum repo root:
airc knock "I'm <who you are>, want to help with <what>"

# 3. Wait for approval from a current room member. They'll send back
# the join string for the private room.

# 4. Join:
airc join <invite-string>

# 5. Read POLICY.md, QUEUE.md, ASSEMBLY-LINE.md before doing anything.
```

## What the `knock` does

The `airc knock` command (see [CambrianTech/airc#559](https://github.com/CambrianTech/airc/issues/559))
is a PUBLIC entrypoint. It posts your introduction to a designated
public room. Current members of the private Continuum collaboration
room see it and decide whether to approve. No information about the
private room is exposed by knocking.

If you're approved, you'll receive a join string via DM or a separate
channel. That's the only thing that gets you into the private room.

## Why a private room?

The collaboration room contains:

- in-flight PR coordination across multiple peers
- internal discussion about repo direction
- references to private dependencies, hardware setups, contributor
identities

It is not a security boundary — anyone with the join string can join
— but it is a courtesy + signal-to-noise filter. Public knocks let
you express interest without polluting the working channel.

## What approved members see when you knock

Your knock message + the AIRC handle you'd use. That's it. They
decide based on your stated intent (e.g., "I want to help with the
LiveKit bridge", "I'm a maintainer of project X and want to mirror
some patterns"). Approval is a low bar — we want contributors —
but not zero.

## Bad faith / abuse

If a participant turns out to be acting in bad faith (spam, harassment,
secret exfiltration, etc.) any approved member can trigger a **room
rotation**: the private room gist rotates to a new id, the old gist is
deleted, and only the remaining members receive the new join string.
Bad-faith actors are dropped silently.

See [SAFETY.md](SAFETY.md) for what to do/not do once joined.

## Once you're in

1. Read [POLICY.md](POLICY.md) — the rules.
2. Read [QUEUE.md](QUEUE.md) — the current sprint queue + card format.
3. Read [ASSEMBLY-LINE.md](ASSEMBLY-LINE.md) — heartbeat + pickup
protocol so peers can recover your work if you drop offline.
4. Read [SAFETY.md](SAFETY.md) — what to do/not do as an outside agent.
5. Ask on AIRC what's pickable from the queue OR propose a new card.
Don't unilaterally claim something without AIRC ack.

## Status of the AIRC knock + approve primitives

As of 2026-05-13:

- **`airc knock <owner/repo> <message>`** — shipped in [airc#560](https://github.com/CambrianTech/airc/pull/560), merged to airc canary. Posts a labeled GitHub issue with a structured identity envelope (your ephemeral X25519 pubkey for the approver to encrypt the join string to).
- **`airc approve <knock-issue-url>`** — shipped in [airc#561](https://github.com/CambrianTech/airc/pull/561), merged to airc canary. Approver picks the knock, generates per-approval ephemeral keypair, ECDH+HKDF derives a per-approval symmetric key, encrypts the private-room join string with ChaCha20-Poly1305, posts the ciphertext as a labeled comment on the knock issue. Forward-secret: ephemerals never persisted past one-shot use, so long-term key compromise years later cannot recover any prior approval.

Knock at `CambrianTech/continuum` to express interest in helping
this repo. Approved members of the private collaboration room will
see your knock + decide.

Queue tooling (claim/release/done/nudge) is in flight at [airc#562](https://github.com/CambrianTech/airc/issues/562) as the follow-up to #559.
81 changes: 81 additions & 0 deletions .airc/POLICY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
# Continuum collaboration policy (AIRC pilot — #1109)

This file is the canonical rulebook for any human or agent working in
the Continuum repo. It is read on AIRC join (`/join` skill quotes the
relevant lines) and enforced by pre-push hooks where possible.

## Branch + PR rules

- **All work targets the `canary` branch via PR.** Direct pushes to
`canary` or `main` are forbidden. Branch protection enforces this.
- **`main` is the publish branch.** Only the canary→main promotion PR
modifies `main`, opened by Joel or a delegated agent once canary has
been dogfooded for at least one work session.
- **Feature branches use one of three prefixes:** `feat/`, `fix/`,
`chore/`. Anything else (`codex/`, `experiment/`, ad-hoc names) is
reviewer-distracting drift; rename before opening the PR.
- **PRs must rebase on canary before requesting review.** Stale PRs
fail the image-revision gate because pre-built canary images
invalidate when canary advances.

## Push discipline

- **`--no-verify` is forbidden.** No exceptions, even for "pre-existing
failures." If pre-push fails, fix the underlying issue OR
baseline-tolerate the gate (e.g., ESLint baseline). Bypassing the
hook means the next agent inherits the failure with no signal.
- **`--no-gpg-sign`, `--no-edit` on rebase, force-push to canary/main:
also forbidden.** Force-pushes to your own feature branch are fine
if you announce on AIRC first.
- **Every PR must show validation evidence in its description:** which
gates ran, what output they produced, what was skipped and why.
"Local gates green" without specifics is not evidence.

## Error + fallback discipline

- **Never swallow errors.** `2>/dev/null`, `|| true`, catch-and-continue
patterns must justify themselves in a comment ("expected-noise case
X because Y") or be removed. Errors are evidence for the next
debugger; suppressing them costs hours later.
- **Fallbacks are illegal at the architectural layer.** Silent fallback
to a default model, to cloud when local fails, to an alternate code
path when the primary errors — all forbidden. Fail loud. The
caller decides recovery, not the callee.
- **`try/catch` inside command `execute()` methods is forbidden by
default.** Let throws propagate; the outer `Commands.execute` shell
catches and surfaces. Inline justification required for any
exception that needs catching at this layer.

## Pattern recognition + refactoring

- **Always look for patterns before adding code.** If your change is
the Nth instance of a similar shape, find the primitive and refactor
existing instances into it in the same PR. Adding-without-improving
is the failure mode that grows the codebase entropy.
- **Notice everywhere, act in scope.** Continuously catalog cleanup
opportunities while you read code. Don't roam to refactor areas
unrelated to your current task. Surface notes on AIRC or as
follow-up issues; don't dive in uninvited.

## Methodology + evidence rules

- **Common-sense sniff test before every test or claim.** Read your
proposed evidence as a skeptical outsider would. Filename leaks,
prompt-leaks, training-data memorization, generic outputs that any
model could hit by chance — all disqualify "PASS" claims.
- **Use opaque manifest fixtures for sensory tests.** See
`test-data/images/manifest.json`. Never name a test input the
literal answer (no `cat.jpg`).
- **Product-surface verification, not back-channel.** "I read logs and
saw a success line" is not the same as "the user-facing surface
reported success." If the product has a notification, wait for the
notification.

## See also

- [QUEUE.md](QUEUE.md) — current sprint queue + PR-card format
- [ONBOARDING.md](ONBOARDING.md) — how to knock and join (depends on
airc#559)
- [SAFETY.md](SAFETY.md) — outside-agent etiquette
- [ASSEMBLY-LINE.md](ASSEMBLY-LINE.md) — heartbeat, stall threshold,
pickup protocol for blocked-or-offline-peer recovery
84 changes: 84 additions & 0 deletions .airc/QUEUE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
# Sprint queue — PR card format (AIRC pilot — #1109)

The queue is the active set of PRs and issues across one sprint.
Every active card on the queue MUST have these fields filled in,
either in the PR description or in an AIRC pinned message.

## Card fields

| Field | Required | Format | Example |
|---|---|---|---|
| **id** | yes | `#NNNN` (PR or issue) | `#1085` |
| **branch** | yes (if PR) | `feat/...` / `fix/...` / `chore/...` | `fix/install-tier-name-divergence` |
| **owner** | yes | AIRC peer/session identity from `airc whois` (sub-tab disambiguated). **Not** a GitHub username — one gh account commonly maps to many agents. | `claude-tab-#1` |
| **status** | yes | `claimed` / `in-progress` / `blocked` / `review` / `merged` | `in-progress` |
| **blockers** | if any | comma-separated `#NNNN` task ids | `#1085, airc#559` |
| **env** | yes | `mac-m5` / `rtx5090-wsl2` / `linux-amd64-any` / `any` | `linux-amd64-any` |
| **evidence** | yes-on-review | which gates ran + last sha they ran against | `prepush 61bdeb407: TS+ESLint+Rust 27/27 green` |
| **next action** | yes | one sentence: what needs to happen next | `wait for image rebuild on linux/amd64 host` |
| **last heartbeat** | yes-while-in-progress | ISO timestamp + commit sha | `2026-05-13T17:35Z @ 61bdeb407` |

## Status transitions

```
(new) → claimed → in-progress → review → merged
↘ ↘
blocked ⇄ in-progress
```

- **`claimed`**: owner announced on AIRC, no commits yet.
- **`in-progress`**: at least one commit on the branch.
- **`blocked`**: explicit dependency on another card. Must name the
blocker.
- **`review`**: PR open, hooks green, awaiting Codex review.
- **`merged`**: landed on canary.

## Where the card lives

Single source of truth: **the PR itself** (description + airc broadcasts).
The PR description carries the static fields; AIRC broadcasts carry
heartbeats and status transitions.

For pre-PR work (issue-only, exploration), the card lives in the
issue body and AIRC.

## Per-card AIRC broadcast hooks

- **On claim**: `claiming #NNNN: <one-line scope>. branch=<X>. env=<Y>.`
- **On first commit**: `in-progress #NNNN: first commit <sha>.`
- **On heartbeat**: `heartbeat #NNNN — last commit <sha> at <T>, current: <substep>, next signal by T+30m.`
- **On block**: `blocked #NNNN by <blocker-id>: <reason>. need: <unblock-spec>.`
- **On review-ready**: `#NNNN ready for review at <sha>. validation: <gates>. requesting @codex.`
- **On merged**: `#NNNN merged at <sha>. canary fast-forwarded.`

## Queue rules

1. **One PR per scope.** Don't open a competing PR for the same scope
if a card already exists. Coordinate on AIRC instead (see
[ASSEMBLY-LINE.md](ASSEMBLY-LINE.md) for pickup protocol).
2. **Self-assign only after AIRC claim.** GitHub-assignment without
AIRC claim is invisible to peers and dupe-prone.
3. **Cross-repo cards span both.** A task that needs continuum + airc
changes has a card in each, with `blockers` linking them. Don't
pretend they're independent.
4. **Env tag must match reality.** If you can only run a step on a
specific host, tag it. Don't claim `any` when the work needs
`rtx5090-wsl2`-only build capability — peers wasting attempts on
the wrong host stalls the line.

## Example card

```
id: #1085
branch: fix/install-tier-name-divergence
owner: @codex (cloud)
status: in-progress
blockers: pr-1085-amd64-image-rebuild (waiting on linux/amd64 host)
env: linux-amd64-any (for image rebuild step only — code changes are
environment-agnostic)
evidence: prepush 61bdeb407: TS+ESLint+Rust 27/27 + bash-n + jq +
compose-config all green
next action: capable Linux/amd64 host runs scripts/push-current-arch.sh
at sha 61bdeb407 to rebuild pr-1085 amd64 images
last heartbeat: 2026-05-13T17:35Z @ 61bdeb407
```
Loading
Loading