Skip to content

Build(deps-dev): Bump eslint from 9.24.0 to 9.35.0#118

Closed
dependabot[bot] wants to merge 1 commit intomainfrom
dependabot/npm_and_yarn/eslint-9.35.0
Closed

Build(deps-dev): Bump eslint from 9.24.0 to 9.35.0#118
dependabot[bot] wants to merge 1 commit intomainfrom
dependabot/npm_and_yarn/eslint-9.35.0

Conversation

@dependabot
Copy link
Copy Markdown
Contributor

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

Bumps eslint from 9.24.0 to 9.35.0.

Release notes

Sourced from eslint's releases.

v9.35.0

Features

  • 42761fa feat: implement suggestions for no-empty-function (#20057) (jaymarvelz)
  • 102f444 feat: implement suggestions for no-empty-static-block (#20056) (jaymarvelz)
  • e51ffff feat: add preserve-caught-error rule (#19913) (Amnish Singh Arora)

Bug Fixes

  • 10e7ae2 fix: update uncloneable options error message (#20059) (soda-sorcery)
  • bfa4601 fix: ignore empty switch statements with comments in no-empty rule (#20045) (jaymarvelz)
  • dfd11de fix: add before and after to test case types (#20049) (Francesco Trotta)
  • dabbe95 fix: correct types for no-restricted-imports rule (#20034) (Milos Djermanovic)
  • ea789c7 fix: no-loss-of-precision false positive with uppercase exponent (#20032) (sethamus)

Documentation

  • d265515 docs: improve phrasing - "if" → "even if" from getting-started section (#20074) (jjangga0214)
  • a355a0e docs: invert comparison logic for example in no-var doc page (#20064) (OTonGitHub)
  • 5082fc2 docs: Update README (GitHub Actions Bot)
  • 99cfd7e docs: add missing "the" in rule deprecation docs (#20050) (Josh Goldberg ✨)
  • 6ad8973 docs: update --no-ignore and --ignore-pattern documentation (#20036) (Francesco Trotta)
  • 8033b19 docs: add documentation for --no-config-lookup (#20033) (Francesco Trotta)

Chores

  • da87f2f chore: upgrade @​eslint/js@​9.35.0 (#20077) (Milos Djermanovic)
  • af2a087 chore: package.json update for @​eslint/js release (Jenkins)
  • 7055764 test: remove tests/lib/eslint/eslint.config.js (#20065) (Milos Djermanovic)
  • 84ffb96 chore: update @eslint-community/eslint-utils (#20069) (Francesco Trotta)
  • d5ef939 refactor: remove deprecated context.parserOptions usage across rules (#20060) (sethamus)
  • 1b3881d chore: remove redundant word (#20058) (pxwanglu)

v9.34.0

Features

  • 0bb777a feat: multithread linting (#19794) (Francesco Trotta)
  • 43a5f9e feat: add eslint-plugin-regexp to eslint-config-eslint base config (#19951) (Pixel998)

Bug Fixes

  • 9b89903 fix: default value of accessor-pairs option in rule.d.ts file (#20024) (Tanuj Kanti)
  • 6c07420 fix: fix spurious failure in neostandard integration test (#20023) (Kirk Waiblinger)
  • 676f4ac fix: allow scientific notation with trailing zeros matching exponent (#20002) (Sweta Tanwar)

Documentation

  • 0b4a590 docs: make rulesdir deprecation clearer (#20018) (Domenico Gemoli)
  • 327c672 docs: Update README (GitHub Actions Bot)
  • bf26229 docs: Fix typo in core-concepts/index.md (#20009) (Tobias Hernstig)
  • 2309327 docs: fix typo in the "Configuring Rules" section (#20001) (ghazi-git)
  • 2b87e21 docs: [no-else-return] clarify sample code. (#19991) (Yuki Takada (Yukinosuke Takada))
  • c36570c docs: Update README (GitHub Actions Bot)

Chores

  • f19ad94 chore: upgrade to @eslint/js@9.34.0 (#20030) (Francesco Trotta)
  • b48fa20 chore: package.json update for @​eslint/js release (Jenkins)

... (truncated)

Changelog

Sourced from eslint's changelog.

v9.35.0 - September 5, 2025

  • da87f2f chore: upgrade @​eslint/js@​9.35.0 (#20077) (Milos Djermanovic)
  • af2a087 chore: package.json update for @​eslint/js release (Jenkins)
  • d265515 docs: improve phrasing - "if" → "even if" from getting-started section (#20074) (jjangga0214)
  • 7055764 test: remove tests/lib/eslint/eslint.config.js (#20065) (Milos Djermanovic)
  • 10e7ae2 fix: update uncloneable options error message (#20059) (soda-sorcery)
  • 42761fa feat: implement suggestions for no-empty-function (#20057) (jaymarvelz)
  • 102f444 feat: implement suggestions for no-empty-static-block (#20056) (jaymarvelz)
  • 84ffb96 chore: update @eslint-community/eslint-utils (#20069) (Francesco Trotta)
  • a355a0e docs: invert comparison logic for example in no-var doc page (#20064) (OTonGitHub)
  • e51ffff feat: add preserve-caught-error rule (#19913) (Amnish Singh Arora)
  • 5082fc2 docs: Update README (GitHub Actions Bot)
  • d5ef939 refactor: remove deprecated context.parserOptions usage across rules (#20060) (sethamus)
  • 1b3881d chore: remove redundant word (#20058) (pxwanglu)
  • 99cfd7e docs: add missing "the" in rule deprecation docs (#20050) (Josh Goldberg ✨)
  • bfa4601 fix: ignore empty switch statements with comments in no-empty rule (#20045) (jaymarvelz)
  • dfd11de fix: add before and after to test case types (#20049) (Francesco Trotta)
  • 6ad8973 docs: update --no-ignore and --ignore-pattern documentation (#20036) (Francesco Trotta)
  • dabbe95 fix: correct types for no-restricted-imports rule (#20034) (Milos Djermanovic)
  • 8033b19 docs: add documentation for --no-config-lookup (#20033) (Francesco Trotta)
  • ea789c7 fix: no-loss-of-precision false positive with uppercase exponent (#20032) (sethamus)

v9.34.0 - August 22, 2025

  • f19ad94 chore: upgrade to @eslint/js@9.34.0 (#20030) (Francesco Trotta)
  • b48fa20 chore: package.json update for @​eslint/js release (Jenkins)
  • 4bce8a2 chore: package.json update for eslint-config-eslint release (Jenkins)
  • 0c9999c refactor: prefer default options in grouped-accessor-pairs (#20028) (루밀LuMir)
  • 0b4a590 docs: make rulesdir deprecation clearer (#20018) (Domenico Gemoli)
  • 9b89903 fix: default value of accessor-pairs option in rule.d.ts file (#20024) (Tanuj Kanti)
  • 6c07420 fix: fix spurious failure in neostandard integration test (#20023) (Kirk Waiblinger)
  • 676f4ac fix: allow scientific notation with trailing zeros matching exponent (#20002) (Sweta Tanwar)
  • 327c672 docs: Update README (GitHub Actions Bot)
  • d503f19 ci: fix stale.yml (#20010) (루밀LuMir)
  • 0bb777a feat: multithread linting (#19794) (Francesco Trotta)
  • bf26229 docs: Fix typo in core-concepts/index.md (#20009) (Tobias Hernstig)
  • 43a5f9e feat: add eslint-plugin-regexp to eslint-config-eslint base config (#19951) (Pixel998)
  • e2dc67d ci: centralize stale.yml (#19994) (루밀LuMir)
  • 7093cb8 ci: bump actions/checkout from 4 to 5 (#20005) (dependabot[bot])
  • 2309327 docs: fix typo in the "Configuring Rules" section (#20001) (ghazi-git)
  • 2b87e21 docs: [no-else-return] clarify sample code. (#19991) (Yuki Takada (Yukinosuke Takada))
  • c36570c docs: Update README (GitHub Actions Bot)

v9.33.0 - August 8, 2025

  • 4258046 chore: update dependency @​eslint/js to v9.33.0 (#19998) (renovate[bot])
  • ad28371 chore: package.json update for @​eslint/js release (Jenkins)
  • 06a22f1 test: resolve flakiness in --mcp flag test (#19993) (Pixel998)
  • 732433c fix: allow any type for meta.docs.recommended in custom rules (#19995) (Francesco Trotta)

... (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 [eslint](https://github.com/eslint/eslint) from 9.24.0 to 9.35.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](eslint/eslint@v9.24.0...v9.35.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-version: 9.35.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file javascript Pull requests that update javascript code labels Sep 8, 2025
@dependabot dependabot Bot requested a review from joelteply September 8, 2025 21:35
@dependabot @github
Copy link
Copy Markdown
Contributor Author

dependabot Bot commented on behalf of github Sep 22, 2025

Superseded by #132.

@dependabot dependabot Bot closed this Sep 22, 2025
@dependabot dependabot Bot deleted the dependabot/npm_and_yarn/eslint-9.35.0 branch September 22, 2025 21:41
joelteply added a commit that referenced this pull request Mar 31, 2026
Added ForgeAlloy section to Phase 12 with 10 new issues:
- forge-alloy repo: #1-6 (JCS signing, key registry, hardware keys, enclave, dataset hashing, PQC)
- continuum: #660 (widget import/export), #661 (attestation verification)
- sentinel-ai: #118 (full alloy results in forge)
- #659 marked DONE (portable entity shipped)
joelteply added a commit that referenced this pull request Apr 1, 2026
* Fix: register factory-widget as custom element + add to browser bundle

Widget was blank because it wasn't imported in browser/generated.ts
and didn't have customElements.define.

* Factory operational: forge command, live HF models, generator fixes

- Fix generator PascalCase for hyphenated commands (ModelForge-status → ModelForgeStatus)
- Restore CLI entry points for generate-structure.ts and generate-command-schemas.ts
- Create generator/cli.ts — unified CLI for all generator types
- Regenerate model/forge-status and model/list-published with proper naming
- Add model/forge command — starts forge jobs on grid nodes via SSH/grid
- Factory widget: leaderboard-style published models sorted by downloads
- Published models now show rank, domain badge, variant badge, download/like stats
- 14,967 total downloads across 11 published models on HuggingFace

* Gap analysis: Factory operational, lifecycle pipeline mapped

- Update Phase 12 with all new factory issues (#648-658)
- Add recipe system, lifecycle pipeline, benchmarking sections
- Update published models: 11 models, 14,967 total downloads
- Map full pipeline: Factory → HF Leaderboards → Grid → Academy → Re-forge
- Update command count to 339

* ForgeAlloy spec: portable pipeline entity for model forging

* model/forge sends alloy JSON to forge runner instead of loose params

buildAlloy() constructs a proper forge-alloy from UI params.
buildForgeArgs() writes alloy to temp file on remote node, passes --alloy flag.
The forge runner reads the alloy and extracts all parameters from it.

* Gap analysis: ForgeAlloy integration issues tracked

Added ForgeAlloy section to Phase 12 with 10 new issues:
- forge-alloy repo: #1-6 (JCS signing, key registry, hardware keys, enclave, dataset hashing, PQC)
- continuum: #660 (widget import/export), #661 (attestation verification)
- sentinel-ai: #118 (full alloy results in forge)
- #659 marked DONE (portable entity shipped)

* Factory widget: live grid status, expandable models, alloy results panel

forge-status: SSH to grid nodes (bigmama) for remote forge status.
Detects running forge process even before status.json exists.

Factory widget:
- Polls model/forge-status every 15s for live grid updates
- Alloy results panel with benchmarks table, device grid, trust badge
- Expandable model cards — click for details, HF link, alloy download
- Export Alloy button saves current controls as .alloy.json recipe
- forge-alloy badge on published models with the tag
- All forge phases recognized (loading, training, pruning, defrag, etc.)

* README: ForgeAlloy trust layer in Factory section

* Architecture doc: Left/Center/Right layout philosophy

Left = global navigation (persistent across recipes)
Center = primary activity (the focus)
Right = recipe-scoped tools (changes per content type)

Recipe is the MIME type for the UI. Each recipe declares what
tools belong in the right panel for that context. Anti-patterns
documented. Future: moveable widgets between panels.

* Factory widget: decompose god class into 5 composable components

1646-line god class → 5 clean components:
- FactoryWidget (333 lines) — thin orchestrator, data loading, event wiring
- ForgeControlsElement (397) — forge form, profiles, start button with progress fill
- ActiveForgeElement (225) — live status, metrics grid, loss sparkline
- PublishedModelsElement (268) — leaderboard cards, expandable details, alloy badges
- FactoryStatsWidget (497) — right panel: downloads, filters, device coverage

Each component extends ReactiveWidget with proper @reactive() decorators.
No inline styles in parent. Child components own their styles and logic.
Factory recipe updated to new layout format with right panel.
Layout philosophy documented: left=global, center=activity, right=recipe-scoped.

Also: forge-status command polls remote grid nodes via SSH.
model/forge builds alloy JSON and sends to remote nodes.
Gap analysis updated with ForgeAlloy integration issues.

* Stage element system: polymorphic UI components mirroring alloy spec

StageElement (abstract base):
- Shared styles, validation, config emission, stage header rendering
- Color-coded by stage type (prune=red, train=cyan, lora=purple, etc.)

PruneStageElement: strategy, level, min heads, analysis steps
TrainStageElement: domain, steps, LR, batch, scheduler, precision, optimizations

The alloy defines the interface. The UI implements it.

* PipelineComposer: visual alloy pipeline editor with add/remove/reorder

Stage registry maps alloy stage types to UI components.
Add stage → pick from color-coded menu → new block appears in pipeline.
Remove, reorder with hover actions. Connector lines between stages.
Emits pipeline-change event with complete alloy stages array.

Next: wire into ForgeControlsElement, add remaining 8 stage types.

* Architecture doc: Factory Pipeline UI — high-level language for model design

Documents the stage element system, pipeline composer, component hierarchy,
and how the alloy spec maps 1:1 to UI components. Commandable at every level:
CLI, UI, API, AI, marketplace, grid. Analogies: KSP, ComfyUI, SCADA, Terraform.

* Stage gates + pipeline composer wired into forge controls

Each stage has a gate: auto (continue), manual (review & adjust), conditional
(pass only if threshold met). Click to cycle modes. Gate represents the
human-in-the-loop: algorithm sets defaults, expert intuition overrides on feel.

Pipeline composer now renders inside ForgeControlsElement below the controls grid.

* Forge button at top — main action visible first, controls below

Winamp pattern: play button at top, settings underneath.
Pipeline composer shows between controls and the end of the form.

* Fix right panel: generator now detects new layout format widgets

The content type generator only checked layout.right (old format).
Factory uses layout.widgets with position: 'right' (new format).
Generator now detects both → hasRightPanel: true for factory.

Also: FactoryStatsWidget rewritten with persona-tile-quality visuals —
rank badges (gold/silver/bronze), gauge bars with glow, monospace tags,
alloy panel with trust indicator. Forge button moved to top.

* Right panel routing: generator fix + recipe format, still blocked by layout engine race

Generator now detects new format widgets with position: 'right' → hasRightPanel: true.
Recipe switched to old format (main + right.widgets) matching diagnostics pattern.
Right panel renders but defaults to chat-widget — suspected race condition where
factory tab opens before recipe layouts finish loading. Needs focused investigation (#662).

FactoryStatsWidget rewritten with persona-tile-quality visuals — ready for right panel
when routing is fixed. Published models stay in center widget for now.

* Full stage element system: 6 stages built, grouped pipeline composer

New stage elements matching alloy spec:
- SourceConfigStageElement — context window, modalities (text/vision/audio/video), target devices
- QuantStageElement — GGUF/MLX/ONNX format, quant type toggles (Q2_K through F16)
- EvalStageElement — benchmark grid (HumanEval, MMLU, GSM8K, IMO-ProofBench, etc.), threshold, leaderboard submit
- DeployStageElement — grid node target, health check, warmup, concurrency, auto-scale

PipelineComposer: add-stage menu grouped by position (INPUT/TRANSFORM/OUTPUT).
Stage colors organized by group. 13 total stage types in the alloy spec.

Take a small model, add vision + context extension + code training + quantize + deploy.
The pipeline IS the high-level language. The UI IS the IDE.

* Default pipeline: source-config → prune → train → quant → eval (full flow visible)

* Forge button: time estimate that reacts to pipeline configuration

Subtle estimate in top-right of button (~32m, ~3h) based on model size +
steps + cycles. Changes in real-time as you adjust sliders or switch models.
The contract shows its cost before you commit.

Estimation: steps/min by model size (benchmarked on 5090), plus prune/eval
overhead per cycle, plus model loading time.

* Fix: clear stale forge status when no active forges (LOADING stuck state)

* README: Factory is one room, not the product. Industry section rewrite.

Continuum is the world. Factory, Academy, and Genome are its industrial
sector — rooms where building happens. The factory forges base models,
the academy trains persona expertise, the genome is the living result.
They connect: forged base + academy training + genome = capable persona.
ForgeAlloy is the contract format the factory uses, not the product.

* Gap analysis: stage executors + stage UIs tracked, 52 factory issues total

* model/introspect command: detect model capabilities + possible forge stages

Generated via CommandGenerator from spec. Server implementation:
- Tries local sentinel-ai introspector first
- Falls back to SSH to grid nodes (bigmama)
- Last resort: reads config.json from HF cache directly

Returns: source (architecture, MoE), currentCapabilities (params, heads,
context, modalities), possibleStages (which alloy stages apply with reasons),
currentAlloy (model as starting recipe). Factory widget can use this to
show only compatible stages in the pipeline composer.

* Fix #663: remove hardcoded chat-widget default from right panel

Two fixes:
1. getRightPanelConfig returns null (not chat-widget) when no recipe declares
   a right panel. Removes the ghost assistant showing on every tab.
2. Re-emit RIGHT_PANEL_CONFIGURE after both recipes AND content tabs load,
   fixing the race where content renders before recipes are available.

Recipe is now the sole source of truth for right panel config.

* Architecture doc: Metaverse Vision — the world layer, districts, mixed reality

* Metaverse: themed universes — Tron, Warcraft, Cyberpunk, Ghibli, custom. Same data, different pixels.

* Themes span every environment: browser, 3D, AR, VR, CLI — one theme, every surface

* Fix right panel: un-hide and expand when valid config arrives after collapse

The race: page load → factory renders → recipes not loaded → right panel gets
null config → _collapse() called → panel width = 0px. Recipes load → re-emit
valid config → but panel stayed collapsed.

Fix: when _handleLayoutConfig receives a non-null config, explicitly set
_isHidden = false and call _expand() to restore the panel. The panel now
recovers from an initial null config.

* Factory widget self-declares right panel — bypasses recipe layout engine race

* Universe > theme. Complete terminology rewrite.

Universe = complete experience (not a skin)
Realm = neighborhood within (Industrial, Academy)
Surface = how you observe (browser, 3D, AR, VR, CLI)
Citizen = persona or human (exists in all surfaces)

A neural network in the Warcraft Universe is a living artifact forged
by orcs, not a "model with a fantasy skin." The universe determines
how everything is perceived. Same data, different reality.

* README: factory screenshot + universe vision images

* ForgeDeltaElement: delta-first forge UI — the diff IS the work

Load a model → see what it IS → modify what you want → diff shows the work.
No manual stage building. Pipeline emerges from the delta.

- Everything starts at "no change" — forge does NOTHING by default
- Edit a value → row highlights green → stage auto-derived
- Reset any change → delta disappears → cost drops
- Reset All → factory reset back to base model
- Forge button shows delta count + estimated cost
- Pipeline summary shows derived stages as color-coded badges
- Export Alloy exports the delta as a contract

Replaces ForgeControlsElement + PipelineComposer as the primary forge UI.
The pipeline stages are derived, not manually built.

* README: factory screenshot side-by-side with avatars at the top

* Restore forge controls + remove published models from center (right panel only)

* Factory: Console + Factory Floor (configure + monitor)

Console = the workstation where you configure forge jobs (2D widget / 3D terminal / orc alchemist table)
Factory Floor = active forges moving through stages (2D status / 3D assembly line / blacksmith anvils)

Published models moved to right panel only. Center is pure workspace.
Each section is a widget that maps to a physical object in the 3D universe.

* Universe adaptation formula: CLI to RAG, orcs talk like orcs

* Lore mapping: alloy stages as story across universes — prune is tempering, train is forging, eval is arena combat

* Fix: publish goes to the shopkeeper, not the battlefield

* Universe as schema: language pack for reality, LoRA-trained personas, genome paging

* Factory UX Vision: hot-rod shop for AI models — workbench, delta console, SCADA floor, viral strategy

* Hot Rod universe: strip the weight, tune the engine, take it to the drag strip, roll it into the car show

* Multilingual + multi-universe: genome stack as i18n layer, simultaneous observer translation

* Air Buddies x Stray universe: Sergeant Whiskers runs the forge, no rule says a dog can't

* Positron is the multiverse engine. Citizens exist — observers perceive. No switching, just looking differently.

* Metaverse → Multiverse. Positron runs them all.

* Grid job management: Rust-native handlers + dynamic node discovery

- Add grid/node-status, grid/job-submit, grid/job-control, grid/job-queue as Rust handlers
- TS commands are thin wrappers that delegate to Rust via IPC
- Rust handles local GPU query (nvidia-smi), process listing, filesystem-based job queue
- Remote delegation via grid/send for cross-node execution
- Factory widget discovers nodes dynamically from grid/nodes (no hardcoded names/IPs)
- Node status bar with GPU utilization, memory, temperature
- Job panel with pause/resume/cancel controls
- Fix: connection.rs falls back to TS when Rust returns "Unknown" command
- Fix: generator template userId cast for createParams factory

* Fix nvidia-smi path for WSL2 (check /usr/lib/wsl/lib/nvidia-smi first)

* Factory → Grid end-to-end: START FORGE routes through grid/job-submit

- Wire START FORGE button to grid/job-submit instead of SSH/shell path
- Remove hardcoded BigMama IP from model/forge and forge-status commands
- Unify forge status tracking via grid/job-queue polling (remove SSH polling)
- Factory floor links to Grid tab, Grid tab has Pair Node + Refresh actions
- Extract all inline CSS from 4 widgets into proper SCSS files using shared variables
- GridOverviewWidget shows local node immediately (no 20s timeout on missing commands)

* cleanup

* Wire pipeline composer stages into alloy recipe (was disconnected)

* Factory Floor: dismiss/clear buttons for dead jobs, live jobs sorted first

* Factory: 6 new pipeline stages, MUTAGEN button, Foreman badge

New stage elements (all schema-aligned):
- ContextExtendStageElement: YaRN/NTK/linear/dynamic-NTK, 32K-256K presets
- ModalityStageElement: Vision/Audio/Multimodal with auto-filled encoders
- LoraStageElement: Rank/alpha, target module toggles, QLoRA 4/8-bit
- CompactStageElement: Utilization threshold viz bar, 6 precision tiers
- ExpertPruneStageElement: MoE expert selection
- PublishStageElement: HuggingFace org/repo/tags/privacy config

Pipeline composer expanded from 8 to 12 registered stage types.

MUTAGEN button rolls random mutations from proven axes (context,
vision, audio, LoRA, compaction, aggressive prune). Each successful
forge proves an axis for future rolls.

Foreman ID badge on Factory Floor node bar — vacant placeholder
ready for persona wiring when #671 lands.
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 javascript Pull requests that update javascript code size: M

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants