Skip to content

docs: navigation overhaul, AI-agent access, and design pass - #627

Open
MagicLex wants to merge 145 commits into
logicalclocks:mainfrom
MagicLex:docs-ai-native-artifacts
Open

MagicLex wants to merge 145 commits into
logicalclocks:mainfrom
MagicLex:docs-ai-native-artifacts

Conversation

@MagicLex

@MagicLex MagicLex commented Aug 4, 2026

Copy link
Copy Markdown
Collaborator

Documentation overhaul: navigation, AI-agent access, and a design pass.

Navigation

  • Column drill-in nav: the left rail shows one level at a time (flat, no deep indent), with an up-header and a left/right slide between levels.
  • navigation.prune + navigation.path (breadcrumbs) keep deep trees scannable; navigation.indexes section hubs.
  • Sidebar collapse toggle (plain show/hide, no icon rail).
  • Divider now meets the header; nav scrollbar hidden.
  • Logo keeps its aspect ratio; search magnifier visible on the light field.

Docs for AI agents

  • New page documenting the machine-readable surface: llms.txt / llms-full.txt, per-page .md, Copy-for-LLM, and the hosted MCP server at mcp.hopsworks.ai.
  • mcp-server/ gains a hosted streamable-HTTP transport (per-IP rate limit, configurable allowed hosts), live reindex on docs change, and a Dockerfile + entrypoint that syncs the docs from main.

Diagrams

  • Docs diagrams run on a shared inline-SVG viz kit (docs/css/custom.css + docs/js/hops-viz.js): design tokens, semantic tone families, DATA and COMPUTE node families, animated scenes where the mechanism is the message, static kit SVG for structure.
  • Figures live as files under diagrams/ mirroring each page path, pulled in with snippet includes.
  • Edge finish: docs/js/diagram-edges.js lifts edges to paint above nodes; a standard concave arrow marker; play-once animation with a replay control; a code surface for inline expressions; social-card tooltips.
  • Type scale raised one step for legibility, with every diagram refit to the new size.
  • The data transformations page reworked end to end: animated taxonomy with code surfaces, the on-demand duality, a data-over-time placement scene, a split FTI waterfall, a feature-store and storage view, and the tooling quadrant.
  • .claude/docs/viz_overlap_check.py measures every diagram's text against its box and the viewBox (monospace advance, skipping transformed text) and fails on overflow; run across the fleet with zero overflows.

Content and chrome

  • Drop the Community forum (nav, social, index); refresh the Slack invite.
  • Self-hosted Umami analytics.
  • Remove unused brewer_* config variables from the generated configuration reference.

For agents

  • Design-system charter in .claude/docs/design-system.md, wired into CLAUDE.md: tokens, logo, nav conventions, and the diagram kit (node families, code surface, tone persistence, the overlap floor and checker).

MagicLex and others added 30 commits July 31, 2026 09:56
…for-LLM)

Emit machine-readable artifacts for AI agents from the mkdocs build, with no
new pip dependency (pure build hook):

- llms.txt: curated index following the site nav, HTML + .md links per page
- llms-full.txt: full Markdown corpus in one file
- <page>.md: raw Markdown source served next to every rendered HTML page (338)
- "Copy for LLM" per-page action (progressive enhancement over the static .md)

Validated against `mkdocs build -s` (strict, CI parity).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Self-contained MCP 2.0 server (mcp-server/) that indexes the docs/ Markdown
tree and exposes retrieval tools to AI agents. Read-only by design: no write
path, no network, reads confined to docs/, 12k-char output cap, read_only_hint
on every tool.

Tools: search_docs (BM25), get_page, list_sections, get_section, list_pages.
Page titles come from the mkdocs nav (208 mapped) with a filename fallback.
Tools whose data doesn't exist yet (error catalogue, sizing, config validation)
are intentionally omitted, not stubbed.

Smoke-tested against the real docs/ tree: index build, tool registration and
every tool call.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Theme-aware, in-repo, diffable diagrams. Unblocks most of the missing concept
visuals without adding asset files. Validated: a mermaid fence renders as a
diagram (class=mermaid) in the built output, not a code listing.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Four documented defaults contradicted the shipped defaults in
hopsworks-ee Settings.java (verified against source):

- superset_enabled: documented true, ships false
- superset_user_roles: documented "Gamma,sql_lab,Dataset,Examples", ships "Gamma,sql_lab"
- superset_admin_users: phantom key; the real key is superset_admin_roles (SUPERSET_ADMIN_ROLES)
- trino_enabled: documented true, ships false

Both enabled flags read on-by-default while the product ships them off.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The Stream API sentence claimed data arrives at-most-once (implies loss),
while describing the exact mechanism (idempotent online writes + Hudi
deduplication) that upgrades Kafka's at-least-once delivery to exactly-once.
Internally contradictory; corrected to state the at-least-once to exactly-once
upgrade. Matches the book (Ch09).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…esign

Draft for review on the branch. Aligns the Concepts section with the framing
in the book (Dowling, MLFS), verified against the source chapters.

Concepts:
- New concepts/fti.md: the FTI (feature/training/inference) pipeline
  architecture and the four classes of AI system, with a mermaid diagram.
  Every agent review flagged this as the missing top of the section.
- New concepts/index.md: section landing page with the reading path.
- fg_overview: foreign keys as index columns (not features), feature groups
  store untransformed data, vector index as a third store, RonDB named,
  online store "only latest" qualified as the default, partitioning moved to
  a collapsible.
- fv_overview: root and label feature groups, graph traversal, and serving
  keys (a feature view has no primary key).
- online_api: retrieve by serving keys (foreign keys of the label feature
  group), not "primary keys", fixing a direct contradiction with the book.
- model_monitoring: distribution comparison detects feature drift, not skew;
  skew is a code difference and is prevented, not monitored.
- feature_pipelines, fv/statistics: "feature shift" -> "feature drift" (the
  book's term; it rejects "shift").
- nav: Concepts landing + FTI page wired in.

Home:
- Apply the validated grid-cards redesign (Material native cards, no new CSS):
  start-here, hello-world, deployment models, by role, by task, reference.
- Surface the machine-readable layer (llms.txt) and fix the dark-mode homepage
  (was blanked to "switch to the light theme").
- Delete marctech.css (1073 lines, single-use) and its dark-mode override.

Validated: mkdocs build -s clean, markdownlint 0 errors.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…codes

Two reference surfaces generated from the hopsworks-ee product source, closing
gaps where the docs had zero coverage. Both generators are stdlib-only parsers
(no Java build), mirroring the existing gen_helm_values marker-injection pattern.

- REST API Status Codes (docs/reference/rest_error_codes.md): 1003 codes across
  37 categories from RESTCodes.java, with resolved 6-digit code, name, HTTP
  status and message. scripts/gen_error_codes.py. Bracketed regex messages are
  escaped so mkdocs does not mangle them; the Schema Registry 5-digit exception
  and one dynamic-status code are footnoted.
- Cluster Configuration Variables Reference
  (docs/setup_installation/admin/configuration_reference.md): 502 keys from
  Settings.java, CAConf.java, KubeSettings.java and VariablesHelper.java, with
  type, default and source module. scripts/gen_config_vars.py, registered as a
  hopsworks-docs CLI command. Computed (non-literal) defaults and cross-source
  duplicate/divergent keys are flagged rather than guessed. No description
  column: the source carries no description field, so one would be invented;
  it is unlocked by a 4-arity constructor in Settings.java (follow-up).

Validated: mkdocs build -s clean, markdownlint 0 errors, ruff clean.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The serverless product no longer exists; it is a SaaS at run.hopsworks.ai.

- Getting Started nav and the home start-here card point to run.hopsworks.ai
  instead of the Colab quickstart notebook.
- Rename the 'Serverless' deployment card to 'SaaS'.
- Replace app.hopsworks.ai with run.hopsworks.ai across the home, tutorials
  intro, and the feature monitoring / data validation guides.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Replace the off-palette single-use architecture.svg on the platform concept
page with an inline SVG on the product design-system palette (teal for the
Hopsworks-owned data layer, blue for external engines and frameworks, neutral
for structure). Uses currentColor for text and strokes plus tinted fills, so
it adapts to light and dark themes without the white-box image hack. Renders
full width, verified in both themes.

Keeps the information of the old diagram (feature engineering, feature store
and MLOps, model training, multi-tenant platform) in a cleaner, less busy
layout. Delete the orphaned architecture.svg.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Each box in the platform diagram links to its concept page (feature groups,
feature views, vector index, registry, serving, monitoring, training,
governance, pipelines). Uses version-safe relative hrefs and a hover state.
Navigation verified with a real click: Feature Groups reaches fg_overview.

Establishes the pattern: diagrams of this type are navigation, not decoration.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…e SVG

Extract the architecture diagram styles into a reusable .hops-diagram kit in
custom.css (theme-adaptive: currentColor for text and strokes, tinted brand
fills, no inline styles). The platform diagram now uses the kit.

Convert the FTI page diagram from mermaid to an inline SVG in the same kit, so
its nodes are clickable navigation (feature pipeline, feature store, training,
registry, inference, predictions, logs each link to their concept page).
Mermaid stays for non-navigational illustrations: its click directives break
rendering under Material's strict security level, so navigational diagrams use
the SVG kit instead.

Verified in the browser: both diagrams render full width, and clicks navigate
(FTI Training pipeline reaches mlops/training).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Replace the off-palette architecture.svg on the Feature Store concept page with
an inline SVG in the shared diagram kit: a feature pipeline writes to feature
groups (online and offline stores), feature views read from them and serve
through the online API (operational models) and offline API (training data,
batch scoring). Each box links to its concept page. Verified in the browser:
renders full width and Online API navigates to feature_view/online_api. Delete
the orphaned architecture.svg.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ning)

Add three inline-SVG diagrams in the shared kit, on concept pages that were
walls of text with no visual:

- model_monitoring: drift detection over time. Training-dataset distribution as
  the reference, a detection window sliding over logged inference data, and the
  distance metric crossing an alert threshold.
- offline_api: the point-in-time correct join. For each label row, the join
  picks the most recent feature row whose event_time is at or before the label,
  and marks newer rows as excluded.
- fv/versioning: a feature-view-version by training-dataset-version grid showing
  which training data each model was pinned to.

Explanatory, not navigation, so no clickable nodes. Theme-adaptive via the kit,
verified rendered in the browser. Structural validation: mkdocs build -s clean,
markdownlint 0 errors.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
27 concept pages opened with no H1 (or an orphan ### under nothing),
so the per-page TOC was built from sub-headings and pages were not
self-identifying from search. Add an H1 matching the concept to each,
and demote the six pages that opened at ### by one level so the
outline nests correctly. prediction_services.md left for the AI
Systems reframe.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The page split the world into analytical vs operational ML, which
classifies by who consumes the prediction, the exact criterion the
book rules out, and left streaming and agentic systems with no home.
Reframe on the book's definition: an AI system is feature + training +
inference pipelines connected via a feature store and model registry,
classified by how it computes predictions. Four classes (real-time,
batch, stream, agentic); the two existing figures now illustrate the
batch and real-time classes. Rename nav Prediction Services -> AI
Systems. Use inference store, not database sink.

Add a Deployment API section to serving.md: it, not the model
signature, is the versioned client contract; serving keys vs request
parameters; SLO framing. Reframe the opener as deploying an online
inference pipeline, of which the model is one part.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Rename 'Training Serving Skew' to 'Offline-Online Feature Skew' and
state it as a code difference (invisible to distribution comparison),
per the book's definition; 'training-serving skew' is not the book's
term.

The CI/CD versioning list said deployments are versioned. The book is
explicit that a deployment is the one mutable, unversioned asset:
new deployments get a new name, upgrade/rollback is blue/green, and
clients version against the deployment API. Also state the model-to-
feature-view coupling (fallacy logicalclocks#7).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The book uses vector index because it is a property of an online-
enabled feature group, a third store alongside online and offline,
not a separate service. Rename across hopsworks.md, opensearch.md,
storage.md and the nav. Reframe opensearch.md to lead with what a
vector index is and when you want one, with OpenSearch as the backing
implementation. Fix typos (nmslib, OpenSearch, vector similarity).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Feature monitoring was two ~90% identical pages (FG and FV). Merge
into one page that names what each level detects: FG monitoring =
data ingestion drift, FV monitoring against the training dataset =
feature drift. Fold in the training-data statistics page. Delete
fs/feature_view/feature_monitoring.md and .../statistics.md.

Versioning was spread across three partial lists (fg, fv, cicd).
Merge into one page: FG schema + data versioning (with the two ASOFs,
ingestion-time vs event-time), FV + training-data versioning (keeps
the grid diagram), models + deployments. Delete
fs/feature_view/versioning.md; reduce cicd Versioning to a link.

Connector API and External Feature Groups rendered the same SVG
twice. Keep the diagram on external_fg.md, link to it from write_apis.

Also finish the vector-index rename in governance.md and index.md.

32 concept pages -> 29.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The nav taught concepts before their prerequisites: FTI architecture
was on the second-to-last page, Projects on page 20 but assumed from
page 2, the transformation taxonomy last but needed early, Spine
before the point-in-time join that explains it.

Restructure into reading-order tiers: Platform (incl. Projects and
FTI up front) -> Feature Store (Data Transformations pulled in) ->
Feature Views (Spine and On-Demand moved here, after the joins that
motivate them) -> Data Quality -> Versioning and Lifecycle -> Models
and Serving (AI Systems now the capstone, not the opener) -> More.
Page files unmoved; nav paths only.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- On-demand features: add the shift-left vs shift-right decision
  (precompute vs compute at request time) and its trade-off.
- Spine Group: state the label feature group as the default and add
  the book's discouragement (spines externalise work to clients, can
  only be root/label FG, best for batch inference).
- Model Training: define a training pipeline, its five steps, and the
  evaluation (test-set metric) vs validation (pass/fail gate, bias
  slices, scorecard) distinction that decides registry admission.
- Model Serving: distinguish blue/green tests (the deployment) from
  A/B tests (the model's effect on an application KPI).
- Model Monitoring: log untransformed features for monitoring and
  debugging, transformed for model monitoring and SHAP.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Hopsworks Platform: define MLOps (automated testing, versioning,
  monitoring of ML pipelines and assets), the term the page used
  undefined.
- Tags/Search/Lineage: state the end-to-end lineage chain (data
  source -> feature group -> feature view -> training data -> model
  -> deployment) and that schematized tags enforce policy, not just
  aid discovery.
- Model Monitoring: concept drift is detected by comparing outcomes
  against past predictions, not by comparing distributions.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Two chapters of the book had no representation in Concepts.

Streaming Feature Pipelines: the backfill-and-incremental duality as
a defining property, feature freshness (event-read to feature-
available, with a kit SVG), tumbling/hopping/rolling windows and
watermarks, streaming-native (Kappa) vs hybrid (Lambda), the four
operational modes.

Agents and LLM Systems: agentic workflows as an AI system class, the
feature store as a RAG retrieval source keyed by entity ID via the
deployment API (kit SVG of the retrieval flow), workflow vs agent,
MCP vs A2A. Links to the agent user guides.

Both wired into the nav and cross-linked from feature pipelines and
AI Systems.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…UDFs)

- Online API: the ordered get_feature_vector sequence (precomputed ->
  passed -> ODT -> MDT -> drop index/helpers -> return), the
  composition constraint made concrete.
- Feature Pipelines: data validation as a shift-left property, and
  the default STRICT ingestion policy.
- Features and Feature Groups: the online store keeps only the latest
  values by default, but event_time + TTL keeps many rows per entity
  for shift-right aggregations.
- Data Transformations: state the registration-locus rule (ODTs on
  feature groups, MDTs on feature views) and mixed-mode UDFs.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Replace transformation-in-modular-AI-pipeline.jpg with a kit SVG that
places the three transformation types across the FTI pipeline (MIT in
the feature pipeline, MDT in training and inference, ODT in inference
and backfill), using only the .hops-diagram vocabulary: green =
reusable/owned, blue = external/request, neutral = structure.

No diagram may carry off-kit inline colors. Add standard .d-alert and
.d-alert-line classes for the alert/excluded-row red, and route the
model-monitoring drift SVG, the point-in-time-join SVG, and the
streaming freshness dots onto kit classes / currentColor. No inline
hex remains in any concept diagram.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The most important concept page carried 5 off-palette, lossy JPGs.
Re-cut every one as a theme-adaptive .hops-diagram SVG:

- types of features (reusable / model-specific / on-demand)
- types of transformations (MIT / MDT / ODT)
- the MIT/MDT/ODT placement across the FTI pipeline (earlier commit)
- the Hopsworks decomposition: three bands (AI pipelines, feature
  store, storage) showing on-demand UDFs on feature groups and
  model-dependent UDFs on feature views
- the supported-tools quadrant (streaming/batch x smaller/bigger data)

Green = reusable/owned, blue = external/request, neutral = structure,
consistent with the rest of the kit. Delete the four orphaned JPGs.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Full standardization sweep across 21 concept pages: every legacy
off-palette Inkscape SVG and raster diagram is now a theme-adaptive
.hops-diagram inline SVG using only kit classes (green = owned, blue =
external, neutral = structure, red = alert). Same information and
labels as the source art, redrawn on the palette, dark-safe, no more
white-box hack, no inline hex anywhere.

Authored via a fan-out workflow (one agent per page), then verified:
strict build, no inline hex, no stray classes, one H1 per page, and
spot-checked rendering on the complex pages (dev-inside capability
grid, model-registry columns, GE data-validation flow, AI-systems,
feature-view joins). Fixed 'Vector Database' back to 'vector index'
where the source term leaked in.

Delete 37 orphaned assets (the replaced sources plus 6 long-unused
files). Only the two product UI screenshots remain under concepts.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The docs read intense and dense: a double green band (green header
plus a darker green tab strip), a boxed-in dense left nav, washed-out
headings, and blue admonition billboards clashing with the brand.

Refurbish, grounded in hopsworks-front's current (post-quartz) tokens:
- one green band: the tab strip goes clean, green only on the active
  tab, so the header is the single brand block.
- brand green unified to the product --primary #1eb182 (was #1eb382 in
  the theme and #21b182 in the diagram kit; now one green everywhere).
- typography switched to the product's native system font stack
  (theme.font: false), zero network cost, matches the app.
- left nav de-boxed, roomier vertical rhythm, quiet uppercase section
  labels, brand-green active item.
- headings firmer (darker, tighter); body line-height calmer.
- admonitions and collapsibles are calm monochrome cards, not
  saturated billboards.
- remove dead marctech CSS (.wrapper/.one-.six grid, .image_logo_02).

Additive refurbish block at the end of custom.css; revertable.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Two things still off after the refurbish: a drop shadow under the
header/tabs (the design system is flat, all shadow tokens are zero),
and a muddy green-on-green search box. Kill the header shadow (the 1px
hairline under the tabs is the only separation now), and make the
search field translucent white on the green header, turning solid
white with dark text once focused. Verified in light and dark.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The green header and the tab strip stacked to 97px of chrome before
any content, and the tab band was the bulk of it. Lighter logo, and
let the tab items size to their content with a tighter link margin, so
the header + sub-header come down to ~85px with a much tighter tab
band. Header stays 48px, tabs 49 -> 37.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Move the primary navigation from top tabs to a left sidebar, the modern
docs convention and what the product UI uses. This collapses the top
chrome to a single slim green header (was a green header + a second
green tab strip) and makes the whole nav tree visible and collapsible.

The sidebar mimics the app sidebar: a distinct panel background with a
right border, rounded items, and a green-tint active/hover state
(sidebar-accent #e6f2ee with green text), collapsible sections. The
logo and title in the header keep the 'you are in the docs' anchor.

Also: content links use the brand green (like the app), cards get the
platform card border/radius plus a hover border, single-link cards
become fully clickable (js/card-links.js) with an honest pointer, the
TOC keeps a tight rhythm, and anchor jumps land below the sticky header
(scroll-padding-top) so the TOC highlights the heading you clicked.
Hide the TOC on the landing page, where its scrollspy can't resolve
and a landing page needs no TOC.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
MagicLex and others added 25 commits August 26, 2026 12:17
- Codify + enforce M1-M4 on the 8-unit grid in viz_overlap_check.py
  (run-in, force field, arrowhead cap, anchored connectors) with
  edge-connected and axis exemptions, scene-edge resolution, and an
  ATTR word-boundary fix that had mis-parsed id-bearing edges
- Resize every arrowhead 12 to 9, unify to one canonical triangle, and
  make the edge stroke opaque so heads read solid and cover the line
- Add source knobs to all connectors; re-grid 18 diagrams to 24u clearance
- Router (diagram-edges.js) reserves a straight run-in so arrows dock square
- design-system.md: new "Edge and layout mechanics (enforced)" section

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ions

- Bake the router elbow into static edge `d` across the diagrams (perpendicular
  exit, bend, straight run-in), so the shape needs no runtime JS and stays
  SSG-safe; aligned edges collapse to straight, tight gaps to a clean curve,
  feedback loops and axes left as authored
- Edge labels over a line get a lifted paper "stabilo" halo (viz-edge-label)
  so the connector reads as broken behind them instead of through them
- Checker enforces text-vs-text collision (per-class advance) and arrow-into-
  pill; ignores animation-hidden (opacity:0) swap pairs
- Fix the surfaced collisions: drop redundant store metas, move/drop pipeline
  pills off the vertical dock, drop feature-group metas over long names

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sweep every label a connector line passes through and mark it viz-edge-label,
so the kit lifts it above the edges and paints the paper halo behind it. The
label reads as breaking the line instead of the line crossing through it.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- redraw features-and-feature-groups as a data table with column roles and a row callout, mirroring the original figure
- add .claude/docs/parity-review.md, 149 changed pages in nav order
- refresh the stale old-kit fragment list in the diagram todo

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
- redraw write_apis stream-api: fg.insert(df) call, brand marks for pandas/spark/python/kafka, onlinefs and delta streamer branches, dashed common-schema rail, two-row layout
- HSFS -> Hopsworks in batch-api; HSFS/HSML API -> Feature Store / Model Registry API in dev/outside and model-registry
- parity ledger: fg_overview reviewed, write_apis flagged (Hudi vs Delta wording)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…, checker covers scene text

- feature-pipelines: store frame fits the animated row count, pipeline frame fits its chips, content centred under the band
- transformations: redrawn to the original composition, three iconed sources merging into one trunk, pipeline pill node, store
- nine figures: band title and meta moved from the band's top half to its centre (frame top + 19); band icons centred on the title
- viz_overlap_check: measures the longest scene text value, flat texts against their block, kv cells with measured widths; new band-title and band-icon centre passes
- feature-views-2: role column nudged inside its cell
- parity ledger: feature_pipelines reviewed; design-system documents the band rule and checker coverage

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…directs for merged pages

- versioning: schema-change figure shows the real create/insert code in a code box, tables to the right
- online_api: get_feature_vector figure is a notebook (In cell, tagged per-stage trace, Out cell); passed_features call shown as a code block
- feature-views: code indentation via explicit x offsets (the tspan indent idiom collapsed)
- nav: Spine Group back under Feature Store
- mkdocs-redirects for the three merged feature-view concept pages and the removed Flink guide
- checker: reads scene type ops, sizes viz-codeln

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Snapshot of the docs-ai-native-artifacts branch:
- Diagrams moved to the hops-viz kit under diagrams/, edge and spacing
  mechanics enforced by .claude/docs/viz_overlap_check.py.
- Nav restructured: Projects split into Projects, Compute, Analytics and
  Clients, with section landings on the three-beat shape; Tutorials removed
  with a redirect; CLI and Wizard pages added.
- UI captures recaptured on the current Quartz UI: deployment troubleshooting
  (list, condition banners, see-logs), python-deployment adapted to the agent
  form, HuggingFace import (modal, formats, success), kube scheduler queue and
  topology, terminal panel, session-capacity badges.
- Sidebar full-height fix so the nav is not clipped near the footer.
- Content parity and diagram-refresh ledgers updated.
- Ray docs captures and guides.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NDHgGoXVViiWdzYQibDyBS
Resolved conflicts:
- mkdocs.yml: kept the restructured nav (Projects / Compute / Analytics /
  Clients), added main's new Mountable Secrets page under Projects.
- 11 Trino screenshots: took main's versions to match the latest Trino
  ticket captures.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NDHgGoXVViiWdzYQibDyBS
- Home: install lines fold into step 1 of the stepper, rail runs horizontally above a full-width panel, linked Python/CLI tabs per step, SaaS and on-prem as a two-card row below.
- Install pages: create the venv before `uv pip install` / `pip install`, so a fresh machine does not fail on the first line.
- Code blocks site-wide: header row (language tag, copy button, hairline) on a slightly offset tone, code surface moved from near-black to GitHub dark-dimmed for legibility; stepper tabs sit in that header row.
- CLI steps verified end to end on the dev cluster with a key minted by `hops setup`.
- Caveat: content tabs inside raw HTML need `markdown` on the outermost block.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FfY7R8ufe2wrQ9RjnEPAkb
…eparator

- "All | API" switch above the search results; the API scope runs Material's search worker a second time on the same index and renders a flat symbol list (title, dotted path), since Material's lazy page list cannot be filtered without losing hits.
- Search separator splits on dots, underscores, brackets and camel case, so "feature vector" reaches get_feature_vector and FeatureView.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FfY7R8ufe2wrQ9RjnEPAkb
Inside the Python API section the search box reads "Search the Python API" and returns symbols only; everywhere else Material's full search runs untouched. The All | API buttons and the stored choice are gone.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FfY7R8ufe2wrQ9RjnEPAkb
The scope control is attached to the left of the search pill, sharing its border, magnifier and text shifted right, so it is visible before anything is typed; below the sidebar breakpoint it sits right of the text. The section sets the initial scope, a click overrides it and persists. Idle pill widened to keep the placeholder.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FfY7R8ufe2wrQ9RjnEPAkb
…th the same hairline

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FfY7R8ufe2wrQ9RjnEPAkb
…rnal links open in a new tab

Work from the peer docs session, committed on request:
- On-demand features figure gets its code box back; page prose adjusted.
- Home stepper rail: two-digit step numerals.
- external-links.js: off-site links open in a new tab with rel=noopener.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FfY7R8ufe2wrQ9RjnEPAkb
Data sources list, SQL data source edit form, table and query configuration, and the review dialog captured from the dev cluster on a SQL data source that supports table browsing. Prose notes which source types offer Select Tables, the preview buttons and Fetch Schema.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FfY7R8ufe2wrQ9RjnEPAkb
… strategies figure

- Configure step with the ingest option, ingestion job page, incremental block with a cursor field and the review dialog captured on the dev cluster from a SQL data source.
- Kit figure: full load versus incremental by id on the rows of the source table, cursor advancing per run.
- Common job settings now list Environment, Data Transformation and Estimate resources, which the 5.0 form shows.
- CRM capture dropped (no CRM source to capture from); REST pagination capture kept, it was already current.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FfY7R8ufe2wrQ9RjnEPAkb
captures.md: where the pixels come from (dev cluster, realistic project, faking states), the dedicated agent-browser session and viewport, scoping rules per capture kind (card, row range, modal, list), the measure-then-crop recipe, GIF assembly, naming and placement. capture_crop.py and capture_gif.py checked in next to the diagram checker. Pointers from CLAUDE.md, the agent README and the design system.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FfY7R8ufe2wrQ9RjnEPAkb
The page described enabling the service on managed Hopsworks; the service is enabled by default now (confirmed with the platform team). What still holds, that Python clients read through it and can fall back to Spark with read_options use_hive, is now one line on the training data, batch data and external feature group guides. Old URL redirects to the training data guide; nav entry and the managed-console screenshot removed.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FfY7R8ufe2wrQ9RjnEPAkb
The install block ends with `python`, so the interpreter is open before the Python lines, which readers were pasting into the shell.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FfY7R8ufe2wrQ9RjnEPAkb
…ached key up

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FfY7R8ufe2wrQ9RjnEPAkb
…ed tab labels

Material compares linked tab labels with innerText, which applies CSS text-transform on the visible label only, so an uppercased Python tab never matched the hidden sets. Caveat recorded.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FfY7R8ufe2wrQ9RjnEPAkb
hops fg insert and hops fv get default to version 1, not latest, so a project that already holds a same-named group of another shape breaks the flow without an explicit version.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FfY7R8ufe2wrQ9RjnEPAkb
MagicLex and others added 4 commits September 11, 2026 11:27
Resolves docs/user_guides/mlops/serving/deployment.md: keeps main's new
Step 3b (deploy a model with its feature view) and Step 3c (deploy a
feature view without a model), with the branch's api admonition in place
of the bare API Reference heading.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K13hwcNi8U2kuUBGBwmNqW
…yment guides

The two guides that came in from main still ended on a bare API Reference
heading with unlinked symbols. They now carry the api box every other guide
has, with the methods each guide calls, and the deployment creation guide
lists Deployment.predict since Step 3b calls it.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K13hwcNi8U2kuUBGBwmNqW
…ta source indexes

markdownlint MD030 rejects the three-space marker the grid cards used.
The cards render the same with a single space and four-space continuation.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K13hwcNi8U2kuUBGBwmNqW
Ruff's isort rule in the snakeoil gate rewrote the block; committing the
result so the gate sees no diff.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01K13hwcNi8U2kuUBGBwmNqW
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