2bba424313
Integration Tests - PostgreSQL + Elasticsearch + Redis / Detect Changes (push) Has been cancelled
Integration Tests - PostgreSQL + OpenSearch / Detect Changes (push) Has been cancelled
Java Checkstyle / java-checkstyle (push) Has been cancelled
Maven Collate Tests / maven-collate-ci (push) Has been cancelled
OpenMetadata Service Unit Tests / Detect Changes (push) Has been cancelled
Publish Package to Maven Central Repository / publish-maven-packages (push) Has been cancelled
Integration Tests - MySQL + Elasticsearch / Detect Changes (push) Has been cancelled
Integration Tests - PostgreSQL + Elasticsearch + Redis / Build Integration Test Runtime (push) Has been cancelled
Integration Tests - PostgreSQL + Elasticsearch + Redis / Integration Test Lane (global-state) (push) Has been cancelled
Integration Tests - PostgreSQL + Elasticsearch + Redis / Integration Test Lane (multi-node) (push) Has been cancelled
Integration Tests - PostgreSQL + Elasticsearch + Redis / Integration Test Lane (parallel) (push) Has been cancelled
Integration Tests - PostgreSQL + Elasticsearch + Redis / Integration Test Lane (retry-queue) (push) Has been cancelled
Integration Tests - PostgreSQL + Elasticsearch + Redis / ${{ github.event_name == 'pull_request_target' && github.event.action == 'labeled' && github.event.label.name != 'safe to test' && 'integration-tests-postgres-elasticsearch-redis (ignored label)' || 'integration-tests-postgres-elasticsearch-redis' }} (push) Has been cancelled
Integration Tests - PostgreSQL + OpenSearch / Build Integration Test Runtime (push) Has been cancelled
Integration Tests - PostgreSQL + OpenSearch / Integration Test Lane (global-state) (push) Has been cancelled
Integration Tests - MySQL + Elasticsearch / Build Integration Test Runtime (push) Has been cancelled
Integration Tests - MySQL + Elasticsearch / Integration Test Lane (global-state) (push) Has been cancelled
Integration Tests - MySQL + Elasticsearch / Integration Test Lane (multi-node) (push) Has been cancelled
Integration Tests - MySQL + Elasticsearch / Integration Test Lane (parallel) (push) Has been cancelled
Integration Tests - MySQL + Elasticsearch / Integration Test Lane (retry-queue) (push) Has been cancelled
Integration Tests - MySQL + Elasticsearch / ${{ github.event_name == 'pull_request_target' && github.event.action == 'labeled' && github.event.label.name != 'safe to test' && 'integration-tests-mysql-elasticsearch (ignored label)' || 'integration-tests-mysql-elasticsearch' }} (push) Has been cancelled
Integration Tests - PostgreSQL + OpenSearch / Integration Test Lane (parallel) (push) Has been cancelled
Integration Tests - PostgreSQL + OpenSearch / Integration Test Lane (retry-queue) (push) Has been cancelled
Integration Tests - PostgreSQL + OpenSearch / ${{ github.event_name == 'pull_request_target' && github.event.action == 'labeled' && github.event.label.name != 'safe to test' && 'integration-tests-postgres-opensearch (ignored label)' || 'integration-tests-postgres-opensearch' }} (push) Has been cancelled
OpenMetadata Service Unit Tests / openmetadata-service-unit-tests (push) Has been cancelled
OpenMetadata Service Unit Tests / k8s_operator-unit-tests (push) Has been cancelled
OpenMetadata Service Unit Tests / openmetadata-service-unit-tests-status (push) Has been cancelled
Integration Tests - PostgreSQL + OpenSearch / Integration Test Lane (multi-node) (push) Has been cancelled
13 KiB
13 KiB
Documentation Index
The map to OpenMetadata's written knowledge — design docs, plans, generated references, and the
reference docs that live outside docs/ (in the UI, ingestion, and bootstrap trees). Use it to
find an existing doc before reverse-engineering the code or guessing.
Freshness was verified against the working tree on 2026-07-24 (not inferred from age — each verdict cites an artifact that was checked to still exist):
- CURRENT — its load-bearing references still exist and match the code.
- STALE — it references paths/classes/flags that no longer exist.
- SUPERSEDED — a newer doc or implementation replaced it (named in the row / footnotes).
- ⚠ — CURRENT overall, but with a specific caveat in the footnotes below.
- by construction — regenerated from source and CI-gated, so it cannot drift from its source.
This index lists one file each; it does not move or relink anything (migration is out of scope).
Start here — root guides (not under docs/)
| Guide | What it is |
|---|---|
CLAUDE.md |
Always-loaded session guidance; the pointer index to .claude/rules/* and skills |
ARCHITECTURE.md |
System map — modules, the request/ingestion/search paths, the invariants that hold |
DEVELOPER.md |
How to build, test, and add an entity or connector (end-to-end checklists) |
AGENTS.md |
Codex entry doc — carries known contradictions (Webpack→Vite, antd, Python ceiling); see docs/tech-debt.md #6 |
Backend & platform design docs (docs/)
| Doc | Purpose | Read when | Modified | Freshness |
|---|---|---|---|---|
docs/impersonation-design.md |
Bot→user impersonation: updatedBy=user / impersonatedBy=bot, gated by allowImpersonation + RBAC Impersonate policy scoping |
Touching bot impersonation auth — the flag, BotImpersonationPolicy seeds, checkImpersonationAuthorization (§4.4 is authoritative) |
2026-06-16 | CURRENT ⚠¹ |
docs/session-management-multi-node-design.md |
Shipped multi-node server-side session + websocket system: shared JDBC/Redis store, OM_SESSION cookie, session-bound JWTs, CAS refresh |
Working on login/refresh/logout across pods, SessionService/SessionStore, JWT session validation, websocket handshake |
2026-06-03 | CURRENT |
docs/streamable-logs.md |
S3/MinIO-backed streamable ingestion logs: HTTP append/close, partial.txt→logs.txt, SSE live tail, abandoned-run sweeper |
Working on ingestion log storage/streaming — S3LogStorage, LogStorageInterface, /logs/{fqn}/{runId} endpoints |
2026-05-15 | CURRENT |
docs/rdf-local-development.md |
Run RDF/knowledge-graph support locally with Apache Jena Fuseki — startup scripts, env vars, rdf.* config, /api/v1/rdf/*, RdfIndexApp |
Setting up or debugging local RDF/Fuseki development | 2026-07-16 | CURRENT |
docs/rdf-production-setup.md |
Production sizing/tuning for a remote Fuseki triple store — TDB2 heap vs page-cache, batch/timeout, weekly recreate, compaction | Sizing, scheduling, or troubleshooting a prod Fuseki deployment; tuning RDF bulk-write | 2026-07-16 | CURRENT |
docs/csv-relation-types-plan.md |
Carry glossary term relation types through CSV export/import via a relationType:termFQN prefix (default relatedTo) |
Modifying glossary CSV round-tripping — CsvUtil.addTermRelations, GlossaryRepository.getTermRelationsFromCsv |
2026-03-17 | CURRENT |
docs/auto-classification/add-support-for-another-entity.md |
Step-by-step: extend auto-classification (PII + sample data) to a new entity across schema/Java/Python/UI via the EntityAdapter registry |
Adding auto-classification/sample-data support for a new entity type | 2026-05-19 | CURRENT |
docs/perf/cdn-deployment-guide.md |
AWS design proposal: per-customer/per-release UI bundles from one CloudFront + S3 via an embedded CloudFront Function router (no Lambda@Edge) | Planning/reviewing CDN delivery of the UI bundle + per-customer version pinning — infra design, not existing code | 2026-05-25 | CURRENT (unimplemented proposal) |
Plans & specs (docs/plans/, docs/superpowers/)
| Doc | Purpose | Read when | Modified | Freshness |
|---|---|---|---|---|
docs/plans/2026-01-27-search-indexing-stats-redesign.md |
Rework SearchIndexingApp stats into a per-stage pipeline model (StageStatsTracker/StageCounter), index-alias promotion, vector bulk processor |
Before touching search reindex stats, search_index_server_stats, index promotion, vector indexing |
2026-01-29 | CURRENT (shipped design) |
docs/plans/2026-06-22-bulk-deletion-redesign.md |
Fast, orphan-free, resumable service-level recursive hard-deletion by id-set; self-audits what landed on main vs remaining gaps |
Before working on recursive/bulk deletion, entity_relationship orphan cleanup, the deletion-lock gate |
2026-06-26 | CURRENT (shipped design) |
docs/superpowers/specs/2026-06-22-logviewer-modal-design.md |
Design spec for the reusable LogViewerModal (dark terminal modal over @melloware/react-logviewer); self-marked "Implemented; revised 2026-06-24" |
Before modifying LogViewerModal, its log-level parser, theming, or streaming container/hook |
2026-07-16 | CURRENT |
docs/superpowers/plans/2026-06-22-logviewer-modal.md |
Original TDD build plan for LogViewerModal (built-in LazyLog search, CopyToClipboardButton) |
Historical context only — the shipped component follows the revised spec, not this plan | 2026-07-16 | SUPERSEDED ² |
Generated references (docs/generated/)
| Doc | Purpose | Read when | Modified | Freshness |
|---|---|---|---|---|
docs/generated/entity-index.md |
Auto-generated: 81 first-class entities → schema JSON, Java POJO, Python model, TS type, REST resource class | Locate every codegen artifact / the REST resource for an entity without grepping four trees | 2026-07-24 | CURRENT (by construction) ³ |
docs/generated/api-reference.md |
Auto-generated: all 1748 REST endpoints (method + path + @Operation summary) grouped by resource package |
Find an endpoint's exact path/method, or enumerate a package's routes without reading JAX-RS classes | 2026-07-24 | CURRENT (by construction) ³ |
Repo audit & quality (docs/)
| Doc | Purpose | Read when | Modified | Freshness |
|---|---|---|---|---|
docs/golden-principles.md |
8 candidate repo-wide invariants (DRAFT for ratification), each with a measured adherence number + reproducing command | Cite/enforce an invariant (acyclic modules, ServiceSpec contract, generated-as-sink, no bare except:, …) |
2026-07-24 | CURRENT |
docs/tech-debt.md |
Prioritized (impact÷size, 3 tiers) ledger of 21 audit findings, each with location, size, and agent-fixability | Pick up a bounded cleanup, or understand a known structural debt before working near it | 2026-07-24 | CURRENT |
docs/quality.md |
One evidence-cited quality grade (A–C / Not assessed) per Maven module | Gauge a module's structural health / known debt before a large change | 2026-07-24 | CURRENT |
Assets (docs/assets/)
| Doc | Purpose | Read when | Modified | Freshness |
|---|---|---|---|---|
docs/assets/ (4 PNGs) |
Architecture/marketing diagrams for the "Open Context Layer for AI" — hero, architecture, context graph, memory-primitives | Editing the root README.md visuals |
2026-06-10 | CURRENT (sole consumer: root README.md) |
UI reference docs (outside docs/)
| Doc | Purpose | Read when | Modified | Freshness |
|---|---|---|---|---|
openmetadata-ui/src/main/resources/ui/specs/ |
Machine-readable design system (41 files). README.md declares two stacks — go-forward = UntitledUI + Tailwind (tw:), legacy (deprecated) = Ant Design + Less — plus foundations/* (color, spacing, typography, radius, elevation, motion), tokens/* (Tailwind-utility + master token reference), untitled/* (go-forward component specs), and legacy components/* |
Before writing or modifying any UI code — start at specs/README.md, then the foundations/tokens and the untitled/<component>.md (or legacy components/*) spec for what you touch |
2026-07-27 | CURRENT ⁶ |
openmetadata-ui/src/main/resources/ui/docs/colors.md |
Semantic color-token system (tw:bg-primary, tw:text-fg-*, tw:border-*) with light/dark values + the mandatory ring→border migration (§2.3.1) |
Before writing/reviewing any Tailwind color class or dark-mode styling, or when tempted to use ring-* or a raw hex |
2026-07-23 | CURRENT |
openmetadata-ui/src/main/resources/ui/docs/formutils.md |
The modern react-hook-form + react-aria form stack (FieldProp, getField/FormFields/HookForm) vs the legacy antd @utils/formUtils API |
Before building/modifying any UI form — which API to use, and wiring to useFormDrawerWithHook + a pure transform |
2026-07-15 | CURRENT |
openmetadata-ui/src/main/resources/ui/playwright/docs/ |
Auto-generated E2E test-coverage catalog (README.md + Discovery/Governance/Integration/Observability/Platform) mapping component → spec file → scenarios |
Check what UI behavior is already E2E-covered before writing Playwright tests or reasoning about gaps | 2026-03-09 – 2026-07-16 | CURRENT (by construction) ³ |
Ingestion & bootstrap reference (outside docs/)
| Doc | Purpose | Read when | Modified | Freshness |
|---|---|---|---|---|
ingestion/docs/design/ingestion-diagnostics.md |
DEBUG-gated ingestion diagnostics subsystem (operation registry, watchdog, heartbeat, memory tracker, HTTP introspection, stage backpressure, signal dumps) | Understand why/how the diagnostics subsystem works before instrumenting ingestion hangs/OOMs | 2026-05-20 | CURRENT ⚠⁴ |
bootstrap/MIGRATION_SYSTEM.md |
Hybrid DB-migration architecture — Flyway→native→extension execution order, SERVER_CHANGE_LOG tracking, file layout (Flyway parsers only, not the Flyway runner) |
Before adding/debugging a migration under bootstrap/sql/migrations/, or reasoning about ordering / tracking tables / MySQL+Postgres dual paths |
2025-10-28 | CURRENT ⚠⁵ |
Caveats (verification notes)
- impersonation-design — §4.4 (v1.1) is authoritative and matches shipped code (
allowImpersonationincreateBot.json/user.json,checkImpersonationAuthorizationinDefaultAuthorizer.java, the four policy/role seeds,BotImpersonationIT). The earlier §4.1/4.2POST /users/impersonatetoken-exchange endpoint was never shipped — impersonation uses theX-Impersonate-Userheader (JwtFilter.java), which §4.4 supersedes 4.1/4.2 to reflect. Read §4.4. - logviewer-modal plan — superseded by the 2026-06-24 revision of the design spec (row above): the plan's built-in LazyLog search +
CopyToClipboardButtonwere reversed (search moved to the header, a footer status bar added). The shipped dir (LogViewerModal.utils.tsx,LogsViewerModalContainer.tsx,useLogStream.ts) follows the revised spec, not this plan. - by construction —
docs/generated/*are regenerated bymake generate-reference-docsand gated by the reference-docs freshness CI job; the Playwright docs byplaywright/doc-generator/generate.js+ theplaywright-docs-check.ymlworkflow. They cannot drift from their source on the watched paths. (One benign lag: the PlaywrightREADME.mdroll-up footer reads2026-03-09whileGovernance.mdregenerated2026-07-16; self-corrects on the next spec-touching PR.) - ingestion-diagnostics — the design shipped (
ingestion/src/metadata/ingestion/diagnostics/, activated atloggerLevel == DEBUG, installed inmetadata/workflow/base.py), but the doc's §5/§7 flat file map drifted: files now live undercollectors/,monitors/,samplers/; there is no standaloneheartbeat.py; wire-in isbase.py, not the doc'sbase_workflow.py. Treat the file map as design-era, the behavior as current. - MIGRATION_SYSTEM — accurate (the
flyway/+native/layout,SERVER_CHANGE_LOG,MigrationWorkflow/FlywayMigrationFile, andconf/openmetadata.yamlflywayPath/nativePath/extensionPathall verified) except: the runner class isMigrationProcessImpl(doc saysMigrationProcess), and theextensions/dir is not materialized on disk (extensionPath: "") though the path is still supported. - ui/specs — tracked (41 files) and CURRENT: all four audit commands its
README.mdcites resolve to realpackage.jsonscripts (tw-audit,tw-audit:report,tw-guard,token-audit), and the two-stack policy it states (go-forward UntitledUI+Tailwind, legacy Antd+Less deprecated) matches the enforced rules —tw-guardblocks newantdimports / new.lessfiles, and.claude/rules/frontend-styling.mdroutes agents intospecs/README.md.
Not indexed: docs/harness-audit/ exists in the working tree but is untracked (working audit notes, intentionally out of version control), so it is not part of the committed knowledge base.