Skip to content

feat: package CARL encoders and unify the 0.22 product identity - #11

Open
wheattoast11 wants to merge 54 commits into
mainfrom
codex/carl-encoder-learning
Open

wheattoast11 wants to merge 54 commits into
mainfrom
codex/carl-encoder-learning

Conversation

@wheattoast11

@wheattoast11 wheattoast11 commented Oct 9, 2026 •

Copy link
Copy Markdown
Owner

CARL now uses one Session-owned encoder interface for retrieval, explicit interpretation feedback and prepared local learning. The reusable workers ship as carl-encoders, shared lightweight contracts stay in carl-core, and carl-studio[encoders] adds the integration without pulling model-worker dependencies into base imports.

The 0.22.0 update replaces CARL's default camp presentation with an ivory/graphite identity aligned with Intuition Labs LLC and lowercase terminals. Four independently authored diagrams have SVG, PNG and GIF exports, source/output hashes and audience-specific explanations. Existing camp commands, service addresses and saved themes remain compatible. Tinny artwork and private UI implementation are not copied.

  • Confirmations and corrections retain separate context, goal, source and outcome references; capture authorization remains separate from training.
  • Encoder learning branches before causal-model loading and supports frozen heads and bound PEFT query/value adapters.
  • Model release descriptors keep weights, heads, processors, notices and evaluation evidence separate from software releases. No accepted model or qualified GGUF is claimed.
  • Boundary checks now detect nested, aliased and keyword private imports at module execution. Private downloads require an immutable revision and digest, and execute the verified source snapshot.
  • Semantic retrieval now distinguishes chunks from the same file while preserving their original source paths.
  • Operator-specific launch procedures remain outside the public CARL repository. The internal guarded-action donor still needs its owner's live action/schema/root integration and immutable artifact custody.

Validation: 4,463 passed and 29 skipped across studio, core and package regressions. The committed state passed 75 focused tests. New package/contracts/integration modules pass strict Pyright; new modules and graphics generator pass Ruff. Third-party locked versions are unchanged. All three distributions built offline; base-wheel imports passed without encoders or torch, and standalone encoder-wheel imports passed without studio or torch. Exact archives exclude private runtime, credentials and operator launch procedures.

PNG visual inspection executed. The gallery displays static SVGs and offers separate GIF downloads, with no playback script or autoplay. Browser attempts did not produce a usable DOM receipt and are not counted as browser passes.

Historical pinned-model/native-host witnesses and training pilots remain separately recorded. Pilots updated heads/adapters but ranking stayed 1.0 → 1.0; no workspace candidate activated. The same-chat-model four-condition comparison, measured multimodal retention and accepted held-out action-improvement/activation case remain open.

Evidence: docs/brand-package-verification.md and docs/carl-encoder-verification.md.

@wheattoast11 wheattoast11 changed the title feat: learn from confirmed interpretations with shared encoders feat: package CARL encoders and unify the 0.22 product identity Oct 9, 2026
Trainer and callbacks witness parameter updates and thread device placement; composite reward adds coherence_goal_penalty; comparison_baseline lets evaluation compare against the base model; preparation binds callbacks.py and composite.py as sources. Qualification procedure documented.
Trainer and callbacks witness parameter updates and thread device placement; composite reward adds coherence_goal_penalty; comparison_baseline lets evaluation compare against the base model; preparation binds callbacks.py and composite.py as sources. Qualification procedure documented.
Field plan ruling 63 (carl 354e98b receipt-kd256-linear-man1.json, judge 0.9203 on man1-256 at 256 bytes under the 512-byte budget of ruling 60, strix-mind rank_arm 9a3ac79). Carrier.scoring(256) returns the judged int8 view when the head is armed; CARL_VIEW_HEAD=prefix keeps the prefix. SemanticService.bind arms the shipped head and recall starts at its width. activate_view_head records the declared workspace effect with its predecessor.
Field plan ruling 66. heads/embeddinggemma2-view512.f32 is the top 512 principal directions of the 5771 c2 rows (man1-256 judge 0.9934 at 512 bytes; held-out validation draws 0.9930, 0.9891, 0.9887, rank_arm 9a3ac79). KD 256 stays shipped as the half-budget head. arm_shipped registers every accepted head in heads/; recall starts at CARL_VIEW_WIDTH (default 512); a head whose acceptance fails leaves its prefix in place.
# Conflicts:
#	src/carl_studio/semantic/types.py
Field plan ruling 63 (carl 354e98b receipt-kd256-linear-man1.json, judge 0.9203 on man1-256 at 256 bytes under the 512-byte budget of ruling 60, strix-mind rank_arm 9a3ac79). Carrier.scoring(256) returns the judged int8 view when the head is armed; CARL_VIEW_HEAD=prefix keeps the prefix. SemanticService.bind arms the shipped head and recall starts at its width. activate_view_head records the declared workspace effect with its predecessor.
Field plan ruling 66. heads/embeddinggemma2-view512.f32 is the top 512 principal directions of the 5771 c2 rows (man1-256 judge 0.9934 at 512 bytes; held-out validation draws 0.9930, 0.9891, 0.9887, rank_arm 9a3ac79). KD 256 stays shipped as the half-budget head. arm_shipped registers every accepted head in heads/; recall starts at CARL_VIEW_WIDTH (default 512); a head whose acceptance fails leaves its prefix in place.
Ports codex/goal-conditioned-environments (goal_circuit, episode, tokenization, rewards.environment) onto 72560b8 plus the accepted view heads. Mainline keeps its token-bound HF script URL and dataset loader; the reward cascade keeps custom task rewards and privacy wrapping and takes AUXILIARY_REWARD_SPECS as its default; bundled goal scripts pin the training extra's trl and transformers. Full suite: 4436 passed, 29 skipped.
scripts/shader_census.py walks the 15 shader-bearing trees and writes docs/shader-model/census.json (carl.shader-census/v1): 203 sources, owned 69, projection 2, twin 25 in 19 groups, loose 107. --write rewrites only on change; --check exits 1 with shader_census_stale. Tests cover roles, twin heads, pruning, idempotent write and an injected copy.
intuitionlabs-site src/gl, public/cymatica, src/pages/resonance, src/worlds and maxwell codex-marketplace plugins are the registered canonicals (estate twin.mjs, web/lib/worlds/twin.json, render_bindings.py); a twin group now names one of them as its head before falling back to the smallest path.
carl_studio.world drives the engine's kernel_operators binary (argv only, CARL_ENGINE_ROOT) to sample the plasma_torus field, which is world_map_neuro_confluent_reactor in fields/universes/neuro_confluent_reactor.wgsl evaluated on the GPU. The model is a tanh MLP fit on episode-disjoint splits. Its judge requires held-out R2 >= 0.9 on every varying channel, mse <= 0.25 of the train-mean predictor, and a shuffled-target control below the floor. Acceptance (carl.world-model-acceptance/v1) binds the engine source and shader sha256 and the weights sha256; load refuses failed judges and changed weights. TrainingMethod.WORLD_MODEL routes CARLTrainer to it on local compute. Live engine fit: 64 episodes x 1024 rows, held-out R2 0.9968 / 0.9988 / 0.9992 in the probe.
Site AGENTS.md:156 and twin.mjs list put maxwell frontend/resonance/gl on the canonical side of src/gl; AGENTS.md:158 and web/lib/worlds/twin.json put ~/.claude/skills/artist/kernel on the canonical side of src/worlds/kernel. The census now walks .claude/skills/artist and labels each row with its longest matching tree. 204 sources.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant