Skip to content

README: platform feature and deployment map - #12

Merged
Kohandezh merged 1 commit into
mainfrom
docs/readme-platform-map
Sep 29, 2026
Merged

Kohandezh merged 1 commit into
mainfrom
docs/readme-platform-map

Conversation

@Kohandezh

Copy link
Copy Markdown
Owner

Adds the platform feature and deployment map image (docs/assets/homayar-platform-map.webp) to the README, with the four deployment modes, capability areas, and repository layout. The public website guide stays below. Docs only. CI jobs could not start because of GitHub billing.

🤖 Generated with Claude Code

…tory layout

The README described only the public website. It now opens with the full
platform map (four deployment modes over one shared backend), the capability
areas, and the layout of the product backend, console, website, and infra,
and keeps the website guide below.
@Kohandezh
Kohandezh merged commit 2e834ed into main Sep 29, 2026
3 of 6 checks passed
Kohandezh added a commit that referenced this pull request Oct 18, 2026
… (HOM-113 review)

Integrator review of PR #43, required items:

D1 Bounded scrape: every scrape-time source runs on a worker pool with a
   deadline (SOURCE_TIMEOUT_SECONDS=3, two stages). A source that misses it is
   reported (dependency_up=0, homayar_metrics_collection_errors_total) and is
   not restarted while still running. The database source uses its own small
   pool with connect_timeout=2; the object-store probe uses a botocore client
   with 2 s connect/read timeouts and no retries. /metrics is async and renders
   through a CapacityLimiter(1), so scrapes never pile onto the API threadpool.
   Tests: a hung dependency and a down database and object store.
D2 Multiprocess: with PROMETHEUS_MULTIPROC_DIR the counters and histogram write
   per-process files that MultiProcessCollector sums; process_* series are
   only exported in single-process mode. compose.cloud sets the directory for
   the api service. Test: several worker processes summed.
D3 HTTP counter test compares deltas (previous commit).
D4 Logs: SQLAlchemy errors are logged by class, SQLSTATE and constraint/table/
   column names only (no bound parameters, no DETAIL). Every log message and
   exception text goes through diagnostic_text (bounded, credentials and text
   PII masked). UNHANDLED_ERROR logs the route template and runs inside the
   request's correlation scope. Tests use a registered user's real e-mail, a
   phone number and a share token in the path.
D5 METRICS_ALLOW_UNAUTHENTICATED is refused with DEPLOYMENT_MODE=cloud in
   staging/production and logged by name (never value) at startup on-prem.
D6 /metrics alone bypasses TrustedHostMiddleware (the internal scrape host);
   every other path keeps the host check (tested). METRICS_ENABLED,
   METRICS_BEARER_TOKEN and METRICS_CACHE_SECONDS are wired into the
   compose.cloud.yaml anchor; compose.onprem waits for PR #42.
D7 homayar_auth_failures_total and homayar_audit_write_failures_total are
   removed from this PR and its docs; HOM-114 adds them with their emitters.

Should-fix: scrub covers dict reprs, every SecretSetting name in any spelling
and URL passwords containing '/' or '@' (#10, #16); scrub input is bounded to
2000 characters and the patterns are bounded (#17); correlation id on the 500
path (#19); job correlation ids are per attempt (job:<id>:<delivery>) and the
docs say so (#20); the configured token is stripped too (#22); the PII test
uses e-mails that exist in the database (#24); runbook for jobs the sweepers
dead-letter (#25); build_info stays 'unknown' until HOM-28 lands (#12).

Known gap, documented: uvicorn and nginx access logs still print raw paths.
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.

1 participant