Skip to content

Layers & model boundaries (v0.4.6): asset layers, Atlas layer columns, move_asset - #52

Merged
SylonZero merged 1 commit into
masterfrom
claude/roadmap-plans-review-8t8gri
Aug 5, 2026
Merged

Layers & model boundaries (v0.4.6): asset layers, Atlas layer columns, move_asset#52
SylonZero merged 1 commit into
masterfrom
claude/roadmap-plans-review-8t8gri

Conversation

@SylonZero

Copy link
Copy Markdown
Owner

Implements docs/specs/layers-and-boundaries-spec.md (#51) — the products ship, assets change rule made operational.

assets.layer (migration 0016, both dialects)

Free text with a conventional taxonomy (edge · frontend · backend · domain · data · infra · shared). Unset layers get a display-time default from asset type (app→frontend, service→backend, datastore→data, platform→infra, library→shared) — computed on read, never written to rows, so existing instances get a sensible layered map with zero migration. Surfaced in the asset edit panel (taxonomy datalist), as a chip on the asset detail header, on Grid cards, and as a sortable Table column.

Atlas layer columns

A "Columns: Product | Layer" toggle joins the map toolbar, and the map auto-defaults to Layer columns when a single product is in scope — the exact case (e.g. a production single-SaaS instance with ~40 assets) where the product axis degenerates to one column. Layer columns order by the taxonomy so dependency edges mostly flow one direction; in layer mode with multi-product scope, node sublabels show the product. Lenses, hover blast-radius, and filters unchanged. Verified in the browser against the demo dataset.

move_asset — model refactoring with semantics

  • Blocked while draft/active plans target the asset — the error returns blockingPlans so an agent can retarget or complete them and retry.
  • Work items follow the asset to the new product; history is history — release stamps, completed-plan links, capabilities, and design-log entries are preserved untouched.
  • No-op when already in the target product; access validated for both products at the caller layer. (The "Move to product…" UI action follows in a later pass — MCP is the primary interface, and model refactoring is agent work.)

MCP (41 → 42 tools)

  • layer param on create_asset / update_asset; new move_asset tool.
  • get_modeling_guide gains a boundaries section (the rule, worked examples, a refining recipe) and the layers taxonomy with defaults.
  • One-line boundary heuristics added to create_product / create_asset descriptions — for agent-driven modeling, the tool description is the UX.

Seed, tests, docs

  • Demo seed assigns 4 explicit layers (API Gateway & Mobile BFF → edge, Plan Engine → domain, UI Component Library → frontend); the rest demonstrate type defaults.
  • 5 new tests — effective-layer derivation, inventory layers, move blocking/carrying/preserving — 206 total, all passing; typecheck and production build clean.
  • Docs synced: app-spec (schema, route, mutations, MCP), AI-agents guide (catalog + modeling-boundaries note), Atlas guide (columns toggle), MCP spec, site (badge v0.4.6, status row, spec card); spec marked shipped; package.json → 0.4.6.

🤖 Generated with Claude Code

https://claude.ai/code/session_01Y7FhGxYjnJHJ7m9MpH2dgJ


Generated by Claude Code

…, move_asset

Implements docs/specs/layers-and-boundaries-spec.md — the product-vs-
asset boundary rule made operational:

- assets.layer (migration 0016, both dialects): free text with a
  conventional taxonomy (edge/frontend/backend/domain/data/infra/
  shared). Unset layers display a default derived from asset type
  (app→frontend, service→backend, datastore→data, platform→infra,
  library→shared) — computed at display time, never written, so
  existing instances get a layered map with zero migration
- Atlas: 'Columns: Product | Layer' toggle; auto-defaults to Layer
  columns when a single product is in scope (the product axis
  degenerates to one column — the MindStaq case); layer columns order
  by the taxonomy so edges mostly flow one direction; node sublabels
  show the product in layer mode with multi-product scope. Grid gains
  a layer chip; Table a sortable Layer column
- moveAsset(assetId, targetProductId): blocked while draft/active
  plans target the asset (returns blockingPlans for retargeting);
  work items follow the asset; history — release stamps, completed-
  plan links, capabilities, design log — is preserved untouched;
  no-op when already home
- MCP: layer on create_asset/update_asset, new move_asset tool (42
  total), get_modeling_guide gains the boundaries section (rule,
  worked examples, refining recipe) and layer taxonomy; boundary
  heuristics added to create_product/create_asset descriptions
- UI: layer input (with taxonomy datalist) in the asset edit panel,
  layer chip on the asset detail header
- Demo seed assigns 4 explicit layers (API Gateway/Mobile BFF→edge,
  Plan Engine→domain, UI Component Library→frontend); the rest demo
  type defaults
- 5 new tests (206 total); docs synced (app-spec, ai-agents guide,
  atlas guide, mcp spec, site); spec marked shipped; version 0.4.6

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Y7FhGxYjnJHJ7m9MpH2dgJ
@SylonZero
SylonZero merged commit 86d30f7 into master Aug 5, 2026
1 check passed
@SylonZero
SylonZero deleted the claude/roadmap-plans-review-8t8gri branch August 5, 2026 19:28
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.

2 participants