Build(deps): Bump actions/setup-node from 4 to 5#120
Closed
dependabot[bot] wants to merge 1 commit into
Closed
Conversation
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 4 to 5. - [Release notes](https://github.com/actions/setup-node/releases) - [Commits](actions/setup-node@v4...v5) --- updated-dependencies: - dependency-name: actions/setup-node dependency-version: '5' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
Contributor
Author
|
Superseded by #151. |
joelteply
added a commit
that referenced
this pull request
Jun 2, 2026
…ask #120) ## Doctrine (Joel, 2026-06-01) > "We don't get away with singular AI's. We are just clever with > resources." Multi-persona is the floor, not a luxury. Even the lowest tier (Intel Mac discrete-Metal, CPU-only) runs Helper + Coder, sharing a base model and paging per-persona LoRAs. The substrate's `defaults_for_tier(tier)` function ALWAYS returns >= 2 templates; "singular AI" is structurally impossible. ## What ships `persona/role_template.rs`: - `RoleId` — Helper, Coder, Sentinel, Custom - `SpawnPriority` — Required (Helper), HighlyRecommended (Coder), OnRequest (Sentinel and explicit-need roles) - `ModelChoice` — model_id + gguf_file + size + quant + optional base_model_id (the lever for shared-base LoRA paging) - `ModelChoicePerTier` with a safety-floor `choose(tier)` fallback so any unmapped tier still gets the lowest known runnable choice - `IdentityDefaults` (name_pool + bio_template) — feeds the deterministic identity projection from `persona-identity-derives-from-source-id` - `CognitionDefaults` (depth_preference, voice, max_response_chars, asks_before_guessing) — Helper sits clippy-shaped (depth=20, voice="clippy", 400 chars, asks); Coder sits engineer-shaped (depth=70, voice="engineer", 4000 chars, doesn't ask) - `RoleTemplate` bundles all of the above - `helper_template()` + `coder_template()` populated concretely across the HwCapabilityTier ladder, from CpuOnly (Qwen2.5-0.5B-Instruct for Helper, DeepSeek-Coder-1.3B for Coder) up through Sm120 / M5UmaProMax (14B classes) - `defaults_for_tier(tier)` ALWAYS returns >= Helper + Coder ## Tier-shaped expectations | Tier | Helper | Coder | |----------------------------|------------------------------|------------------------------------| | CpuOnly / MacIntelMetalDsc | Qwen2.5-0.5B Q4_K_M (380 MiB)| DeepSeek-Coder-1.3B Q4_K_M (870) | | M1Uma8Gb | Qwen2.5-1.5B (1.1 GiB) | Qwen2.5-Coder-1.5B (1.1 GiB) | | M1Uma16Gb | Qwen2.5-3B (2 GiB) | Qwen2.5-Coder-3B (2 GiB) | | M3UmaProMax / Sm60 | Qwen2.5-7B (4.4 GiB) | Qwen2.5-Coder-7B (4.4 GiB) | | M5UmaProMax / Sm120 | Qwen2.5-14B (8.5 GiB) | Qwen2.5-Coder-14B (8.5 GiB) | Same role identity + cognition shape; just bigger models at higher tiers. At low tiers Helper and Coder may share a base model family (both qwen2.5-1.5b family at M1Uma8Gb, for example) — the base_model_id field is the lever a future LoRA-paging module uses to share weights. ## Tests (9 / 9 green) - `defaults_for_tier_returns_at_least_helper_and_coder_for_every_tier` — the load-bearing invariant. Every variant of HwCapabilityTier yields at least Helper + Coder. If a future refactor narrows the floor at any tier, the test screams. "No singular AI" is structural. - `helper_priority_is_required` — Helper's SpawnPriority pins the always-on contract. - `coder_priority_is_highly_recommended` — Coder shows up by default but is disable-able. - `helper_model_choice_resolves_for_every_tier` — including tiers the template doesn't cover, via the safety floor. - `coder_low_tier_targets_swiss_army_code_family` — names the acceptable model families (Qwen-Coder / DeepSeek-Coder / StarCoder), catches accidental swaps to non-code-capable models. - `helper_cognition_defaults_are_brief_and_friendly` — pins clippy DNA (depth <= 30, max_chars <= 600, asks_before_guessing, voice=clippy). - `coder_cognition_defaults_allow_depth` — pins the contrasting engineer profile (depth >= 50, max_chars >= 2000). - `model_choice_per_tier_falls_back_to_first_entry` — the safety floor stays operative. - `role_id_stable_strings` — header / kanban metadata strings pinned. ## What this enables (follow-ups, separate cards) 1. **PersonaSpawnerModule** — ever-present substrate ServiceModule that reconciles `defaults_for_tier(current_tier)` against currently-running personas. Required → always-spawned. HighlyRecommended → spawn unless explicitly opted out. 2. **Shared-base + LoRA paging** — when Helper + Coder pick the same `base_model_id` at the current tier, the substrate hosts ONE model in memory and pages LoRAs. `[[host-the-seemingly-impossible]]` in concrete form on a laptop. 3. **Hardware-probe wiring** — `HostCapabilityProbe` (already exists, task #115) reports tier; substrate spawns Helper + Coder by default; the user never sees a model selector. 4. **Bootstrap experience** — `airc init` (or continuum equivalent) on first run probes hardware, picks templates from this layer, downloads the GGUFs, spawns the personas, posts a greeting in the default room. Naive users get a working substrate on day 1. ## References - `[[host-the-seemingly-impossible]]` — shared base, page LoRAs - `[[individuality-is-the-substrate-strength]]` — diversity via LoRA - `[[personas-have-names-not-function-labels]]` — role in bio, identity from deterministic projection - `[[substrate-is-communities-of-specialization]]` — even N=2 is a community - Built on: #87 PersonaInstanceManagerModule, #115 HwCapabilityTier, #116 FilesystemPersonaResolver, #109/#110/#111 InferenceCoordinator Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
joelteply
added a commit
that referenced
this pull request
Jun 2, 2026
…eriesPro/Cuda/Cloud (#133 slice 1) ## Why Joel (2026-06-01): "We will build a more intelligent model selection system, but for now get the main ones in shape. And we iterate on a workable one you should be able to talk with (plural many of them) and start optimizing obsessively. This will speed up all the other hardware too." The previous 3-variant (Floor/Base/Pro) framing was a transitional shape captured in #120. It clusters too coarsely: Sm60 (1080Ti) and Sm120 (5090) both landed in `Pro` despite spanning 5+ years of NVIDIA architectures; M-series Pro/Max and discrete CUDA shared a bucket despite very different cost/perf profiles; cloud-routed inference had no natural home. The 5-variant taxonomy maps to hardware classes the substrate actually targets and authors per-tier role rosters against. Each variant names the hardware class, not a "tier number" — easier for operators to recognize and reason about. Joel's exact framing: LCD/Compat is the substrate's lowest-common-denominator safe mode (works everywhere); M-series is the design center; M5+/MSeriesPro carries the headroom; CUDA owns the discrete-NVIDIA spectrum; Cloud is the always-eligible peer per [[inference-is-an-adapter-always-in-the-loop]]. ## What ships ### src/persona/hw_tier_descriptor.rs - `HwTierCategory` enum replaces `Floor | Base | Pro` with `Compat | MSeries | MSeriesPro | Cuda | Cloud`. Each variant documented with the hardware class it represents and the substrate expectations at that tier. - Test `category_serializes_as_lowercase` updated to cover all 5 variants — each serializes as a lowercase string token to match the JSON seed shape. - Test `seeds_cover_all_three_categories` renamed and broadened to `seeds_cover_required_categories` — all 5 variants now required to have at least one shipping seed. Seeds without representatives fail the build loud, surfacing roster gaps at CI time. - Test `serde_roundtrip_uses_camel_case` updated from `HwTierCategory::Base` to `HwTierCategory::MSeries` (the same M1 8 GiB descriptor under the new taxonomy). ### seeds/hw_tiers/*.json (9 files) Category fields updated to match the new enum tokens: cpu_only.json floor → compat mac_intel_metal_discrete.json floor → compat m1_uma_8gb.json base → mseries m1_uma_16gb.json base → mseries m3_uma_pro_max.json pro → mseriespro m5_uma_pro_max.json pro → mseriespro sm60.json pro → cuda sm120.json pro → cuda cloud.json pro → cloud Note text in seed files still references the old taxonomy in places ("Floor tier"/"Base tier"/"Pro tier") — these are human-readable prose and follow up in a subsequent slice that authors proper LCD/Compat-targeted role templates. The structural change is the enum + category tokens; prose comes second. ## Tests (25/25 green) - 12 generator concurrency tests (regression check) - 11 hw_tier_descriptor tests (schema invariants, seed parsing, category coverage, serde shapes) - 2 persona orm entity registration tests (cross-collection BaseEntity check still holds) ## What's next (#133 slices) This is slice 1 (rename only). Following slices: - Slice 2: add models.toml row for qwen2.5-0.5b-instruct with ALL per-model knobs (n_ubatch, context_length, chat_template, etc.) — retire the hardcoded constants from LlamaCppAdapter source per [[intent-driven-api-not-hot-patches]]. - Slice 3: LlamaCppAdapter::for_persona(persona) constructor — derive every knob from declared persona intent. - Slice 4: author proper Compat-tier role_template seeds for Helper and Coder targeting LCD Qwen2.5-0.5B. - Slice 5: PersonaSpawnerModule (#121) — detect tier, read role templates, spawn personas, attach to airc, join continuum room. - Slice 6: hardware probe → tier mapping wired so substrate auto- detects Compat on this Intel Mac without operator override. - Slice 7: verify multi-persona LCD chat through the substrate-managed path, then begin obsessive optimization on this Mac. References: [[intent-driven-api-not-hot-patches]], [[lcd-model-qwen25- 05b-and-foundry-lora]], [[optimizing-for-low-end-compounds-on-high-end]], [[orm-everything-not-hand-edited-files]], #120 (the original 3-variant shape this supersedes), #121 (PersonaSpawnerModule that consumes this), #129 (cognition proven on this Intel Mac), #130 (rigged-up demo binary that this proper path supersedes). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Bumps actions/setup-node from 4 to 5.
Release notes
Sourced from actions/setup-node's releases.
... (truncated)
Commits
a0853c2Bump actions/checkout from 4 to 5 (#1345)b7234ccUpgrade action to use node24 (#1325)d7a1131Enhance caching in setup-node with automatic package manager detection (#1348)5e2628cBumps form-data (#1332)65becefBump undici from 5.28.5 to 5.29.0 (#1295)7e24a65Bump uuid from 9.0.1 to 11.1.0 (#1273)08f58d1Bump@octokit/request-errorand@actions/github(#1227)Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebasewill rebase this PR@dependabot recreatewill recreate this PR, overwriting any edits that have been made to it@dependabot mergewill merge this PR after your CI passes on it@dependabot squash and mergewill squash and merge this PR after your CI passes on it@dependabot cancel mergewill cancel a previously requested merge and block automerging@dependabot reopenwill reopen this PR if it is closed@dependabot closewill close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually@dependabot show <dependency name> ignore conditionswill show all of the ignore conditions of the specified dependency@dependabot ignore this major versionwill close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this minor versionwill close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this dependencywill close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)