Skip to content

Build(deps): Bump actions/setup-node from 4 to 5#120

Closed
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/github_actions/actions/setup-node-5
Closed

Build(deps): Bump actions/setup-node from 4 to 5#120
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/github_actions/actions/setup-node-5

Conversation

@dependabot
Copy link
Copy Markdown
Contributor

@dependabot dependabot Bot commented on behalf of github Sep 8, 2025

Bumps actions/setup-node from 4 to 5.

Release notes

Sourced from actions/setup-node's releases.

v5.0.0

What's Changed

Breaking Changes

This update, introduces automatic caching when a valid packageManager field is present in your package.json. This aims to improve workflow performance and make dependency management more seamless. To disable this automatic caching, set package-manager-cache: false

steps:
- uses: actions/checkout@v5
- uses: actions/setup-node@v5
  with:
    package-manager-cache: false

Make sure your runner is on version v2.327.1 or later to ensure compatibility with this release. See Release Notes

Dependency Upgrades

New Contributors

Full Changelog: actions/setup-node@v4...v5.0.0

v4.4.0

What's Changed

Bug fixes:

Enhancement:

Dependency update:

New Contributors

Full Changelogactions/setup-node@v4...v4.4.0

... (truncated)

Commits

Dependabot compatibility score

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 rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot merge will merge this PR after your CI passes on it
  • @dependabot squash and merge will squash and merge this PR after your CI passes on it
  • @dependabot cancel merge will cancel a previously requested merge and block automerging
  • @dependabot reopen will reopen this PR if it is closed
  • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will 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 version will 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 dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

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>
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file github_actions Pull requests that update GitHub Actions code labels Sep 8, 2025
@dependabot @github
Copy link
Copy Markdown
Contributor Author

dependabot Bot commented on behalf of github Oct 20, 2025

Superseded by #151.

@dependabot dependabot Bot closed this Oct 20, 2025
@dependabot dependabot Bot deleted the dependabot/github_actions/actions/setup-node-5 branch October 20, 2025 21:33
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file github_actions Pull requests that update GitHub Actions code size: S

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants