Skip to content

Codex/huawei aom integration docs 20260901 - #329

Open
alick-liming wants to merge 417 commits into
testfrom
codex/huawei-aom-integration-docs-20260901
Open

Codex/huawei aom integration docs 20260901#329
alick-liming wants to merge 417 commits into
testfrom
codex/huawei-aom-integration-docs-20260901

Conversation

@alick-liming

Copy link
Copy Markdown
Contributor

No description provided.

Fiona2016 and others added 30 commits July 29, 2026 19:16
Fiona settled the open question: normalize stack paths in `beforeSend`. This
is not a new proposal — it is the workaround already given to customers — so
the section states it directly rather than weighing alternatives.

Restructures the source map section around the matching rule, in her framing:
the uploaded minified prefix and the path in the stack must correspond.
That resolves into two steps, and the whole section is organized around them:

1. Run the CLI where the source maps are and declare a prefix with
   `--minified-path-prefix`
2. Rewrite the stack path in the renderer's `beforeSend` to align with it

Both halves are shown as copy-pasteable code, and the prefix is lifted into a
`MINIFIED_PATH_PREFIX` constant so the two places that must agree are visually
obvious, with a warning naming them as the only coupling point.

Adds a "why the second step is needed" table: stack frames carry the runtime
install path, which is unknowable at build time — the macOS install location
is the user's choice, Windows embeds the user name, and Linux AppImage mounts
somewhere new on every launch. Uploading an install path as the prefix would
match exactly one machine.

The regex was checked against the real stack shapes measured during the W5
verification (`at r @ file:///…/dist/renderer.js:1:21`), for all three
platforms; `[^\s()]*?` rather than `\S*?` so a V8-format frame keeps its
enclosing paren.

The `app://` custom protocol drops to an optional tip under "when
normalization is unnecessary", alongside dev-server and remote-page setups
whose paths are already stable. It no longer leads, since `beforeSend` solves
the same problem without asking anyone to restructure page loading.

Main-process stacks are stated as unsupported for v1 across all six affected
pages: they are raw V8 format and the backend parser extracts zero frames.

Verified with `mint broken-links`.
…pported

docs(rum): say that Flutter iOS Dart stacks are not symbolicated
docs(rum): restore Flutter SDK nav and sync it to the 0.1.3 release
v1 drops the hardcoded site allowlist: `site` becomes optional, defaults to
`browser.flashcat.cloud`, and is only checked for non-emptiness. The docs no
longer tell self-hosted users to pass a SaaS host as a placeholder and route
everything through `proxy`.

Self-hosted now splits into two cases, which is the part worth getting right:

- HTTPS intake: just set `site` to your own domain, no proxy involved
- Plain-HTTP intake: `site` cannot help, because the upload URL is built from
  the template `https://<site>/api/v2/rum` and the scheme is hardcoded. This
  needs `proxy`

That second case is easy to miss once the allowlist is gone — removing it
looks like it unblocks arbitrary endpoints, and it does not. It is called out
in all six affected pages: as a note under the `site` parameter, as its own
"when a proxy is required" subsection, and as a row in the limits table.

Also aligns two details with decisions from the release work:
- The console special-cases the synthetic main-process view and hides the
  performance section, so LCP/FCP no longer render as zero. Noted where the
  docs explain that the main process has no Web Vitals
- Section renames moved four anchors; all inbound links updated

Verified with `mint broken-links`.
docs(rum): align Flutter integration with production
- platform/sso: document stable user ID field and member association modes
- rum: Flutter symbolication (source-mapping, error-viewing, error-aggregation),
  Flutter app type & native dashboard differences, UV metric basis,
  private-deployment replay fetch mode
- monitors: MySQL/PostgreSQL TLS/SSL modes, TLS client config rework,
  remove label_fields (auto-derived), query time offset rename & relocation
- ai-sre: session sharing, list search/filters for skills/MCP/A2A agents,
  wording alignment (AI SRE server)
Deployment-level setting handled by support/delivery, not end-user facing.
docs: sync doc-review findings (2026-07-29)
Data source payload schemas:
- drop tls_key_pwd (removed from the API payload) from the MySQL,
  PostgreSQL, ClickHouse, Loki, Prometheus, and VictoriaLogs configs
- add tls_mode to the MySQL config (disable / require / verify-full)
- add ssl_mode to the PostgreSQL config (disable / require / verify-ca /
  verify-full)

Notification template schemas:
- add detail and ai_analysis to the incident_card_hidden_fields enum so
  the documented values match what the API accepts
- document incident_card_hidden_fields on template create, update, and
  detail responses
docs(api): sync datasource TLS modes and incident-card hidden fields
Six places (zh and en, across three pages) told readers that Flutter's iOS
`.symbols` file "contains no build id", citing flutter/flutter#138182, and
concluded the file could never be uploaded.

That is not what happens. flutter_tools passes
`--snapshot_kind=app-aot-macho-dylib` for Apple targets, so iOS
`--split-debug-info` produces a Mach-O dSYM companion whose identity is in
LC_UUID. Verified on Flutter 3.44.4: `app.ios-arm64.symbols` is a "Mach-O 64-bit
dSYM companion file arm64" and its LC_UUID matches the App binary's. The file has
a perfectly good identity — our platform reads only the ELF build-id used on
Android, so it rejects the upload. The limitation is ours, not Flutter's.

The old wording sent readers to a 2023 upstream issue to wait for a fix that
would not change anything for them. The pages now say the platform does not parse
Mach-O symbol files yet.

Also corrected the advice that followed from it. "Do not enable `--obfuscate` for
iOS builds" reads as a blanket instruction, but a single `flutter build` cannot
obfuscate one platform and not the other, so an app shipping both would have had
to give up Android symbolication to follow it. The pages now state the actual
trade-off: keep `--obfuscate` and iOS Dart stacks stay obfuscated while Android
resolves normally, or drop it for the iOS build if readable iOS stacks matter
more.

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

docs(rum): correct why iOS Dart stacks are not symbolicated
…result-fields

docs(monitors): 说明查询结果字段映射
…fields

docs(monitors): 调整查询结果字段映射菜单顺序
…e, crash resilience

Review of PR#1..#5 on `origin/publish`, which landed after these pages were
written. Three capability changes and one stale claim.

Main-process stacks are now symbolicatable. `ErrorCollection.formatError()`
runs `toStackTraceString(computeStackTrace(error))`, so main-process stacks
come out in the backend's `at <fn> @ <url>:<line>:<col>` frame format instead
of V8's native shape, and frame URLs are the absolute paths of the bundled
main-process code — the same key source map upload uses. The docs said the
opposite in six places; all corrected, and users are now told to upload the
main-process bundle's source maps too.

Two caveats kept, because they are still true and easy to over-read:
- Native crash stacks remain address-based and unsymbolicated
- `beforeSend` is a renderer-only hook, so main-process path normalization
  depends on the install path being predictable. Called out in
  advanced-config and in the limits table rather than left implicit

`ProcessGoneCollection` was entirely undocumented. Added a data-collection
section and a compatibility row covering `render-process-gone` /
`child-process-gone`: the full `meta` shape, `is_crash: false` and why (the
host app is alive, and the backend escalates every `is_crash` to a critical
alert), the absence of a stack, `container.view.id` attribution for
renderers, and the deduplication rule — dump-producing reasons (`crashed`,
`oom`) are left to crash collection, `clean-exit` is silent, everything else
including `killed` is reported.

Crash collection degradation: dumps with no exception stream are now
reported with threads and binary images rather than dropped, and dumps are
deleted whether or not parsing succeeded. Both documented, with the field
table noting which values go missing.

dd-trace's instrumentation telemetry is off by default. Documented because
it is a network-behavior fact worth knowing (`127.0.0.1:8126`, and a direct
Datadog fallback when `DD_API_KEY` is set), including that it is controlled
by environment variable — `telemetry: false` on `tracer.init()` is silently
ignored on dd-trace 5.x — and that an explicit host setting is preserved.

Re-verified the `site` changes from the previous round against `config.ts`:
optional, `DEFAULT_SITE`, non-empty validation only. Already accurate.

The source map section keeps "why the second step is needed" as its own
subsection, so the `beforeSend` flow can be demoted to an alternative once
SDK-side path normalization lands without restructuring the page.

zh/en section counts match on all four pages. Verified with
`mint broken-links`.
- Correct the postmortem row: Flashduty offers full postmortems including
  AI-generated reports, previously listed as PagerDuty-only
- Add AI capability comparison (Flashduty AI SRE vs PagerDuty AIOps /
  Advance / AI Agents), with sourcing-mode and remediation-path framing
- Expand integrations: pull-based ingestion (HTTP/DB Pull), external
  incident submission, Link integration, and an on-demand integration
  support commitment; update PagerDuty integration count to 750+
- Add first-class sections for customization, status pages, and the
  developer ecosystem (Open API / CLI / SDK / Terraform / MCP)
- Add a migration section covering PagerDuty protocol compatibility and
  the Opsgenie 2027-04-05 end of service
- Refresh pricing facts as of 2026-07 (PagerDuty Advance AI Action
  allowances, annual-billing framing) and point pricing links to
  flashduty.com; add missing keywords frontmatter to the EN page
docs: refresh on-call product comparison page
…r pricing points

- Status page section: expand to feature-depth comparison — public+internal
  pages in one product, free no-account subscribers vs per-tier subscriber
  quotas (250/500/1,000) and paid Stakeholder seats for internal viewing,
  three-level subscription granularity, native multilingual notifications
  (not found in PagerDuty public materials), maintenance excluded from
  uptime, display customization, CLI-based Atlassian migration
- AI SRE billing: free during public beta, usage-based credits billing
  after general availability (was: included with Professional)
- Pricing section: emphasize active-user-only charging — add a status page
  subscription row and Stakeholder-seat bullets on both billing-model tabs
- Summary card: add status page advantage bullet
docs(comparison): sharpen status page, AI SRE billing, and stakeholder pricing points
- Reorganize the product dimension into the current module split:
  On-call (noise reduction, schedules, dispatch & escalation,
  notification channels), Response, Status Pages, AI SRE, and Platform
  (ingestion & integrations, alert pipelines & label enrichment,
  insights & reporting, account & security, developer ecosystem) —
  replacing the legacy integration/incident-handling/platform grouping
- Keep the guide at three purchase dimensions: product, service, pricing
- Flatten all Accordions and product-section Tabs into plain headings
  and tables so the whole comparison is scannable without clicks
- Dissolve the standalone customization table into its owning modules
  and deduplicate rows that appeared in multiple sections
…ar rendering

- War room: supported on Slack too, drop the China-IM-only qualifier (Teams not yet supported)
- Status Pages: full feature parity from the free tier vs plan-tiered features
- AI SRE: reflect PagerDuty's four preset AI Agents (SRE/Scribe/Shift/Insights) and their
  extensibility model (preset connector list + prompt-style Skills, outward-facing MCP);
  contrast with the open-ended Agent loop (Skills/MCP/Subagents/A2A); concretize AI Actions
  allowances per plan
- Developer ecosystem: add a PagerDuty column (CLI status, official client libraries)
- SSO: compare protocols only
- Escape bare dollar signs that triggered LaTeX math rendering in tables
- Add an SVG cost-curve chart (zh/en) to the cost comparison example
docs(comparison): restructure product section by current product modules
The CLI's agent skills were consolidated into one skill named flashduty,
structured as a router SKILL.md plus per-domain reference cards. The docs
still described the previous layout of 10 separate skills; replace the
stale count and skill table with the current model, without hardcoding a
card count that would drift again.
docs(cli): reflect the single consolidated flashduty agent skill
- on-call: document @mention notifications in incident comments and
  post-mortem reports, and assignee notifications for follow-up items
- platform: mark SSO stable user ID field as optional and describe the
  email/phone fallback for member association
- rum: document FLASHCAT_SOURCEMAP_INTAKE_URL custom intake for Web and
  iOS symbol uploads on private deployments
- cli: document --since/--until aliases and human-friendly time formats
  on generated commands
- ai-sre: document session reply language resolution, the no-DUTY.md
  file-index fallback, and the document distillation flow
ysyneu and others added 30 commits August 25, 2026 02:34
docs(rum): daily doc-review 2026-08-25 — issue priority column, resource timing phases, resource attributes
docs(rum): add React Native SDK documentation
…native

docs(rum): correct React Native SDK guidance
- New public op rum-issue-read-export (registry row rumIssue:read:export,
  fc-pgy e90419d8 + fde7843b; handler fc-rum cmd/server/controller/issue/export.go)
  response modeled as text/csv attachment (not envelope) with X-Export-Total /
  X-Export-Truncated headers; new schema RumIssueExportRequest
- RumIssueListRequest.orderby enum + usage bullets now include severity
  (Go oneof since fc-rum 67c6b92); split + consolidated, en + zh
- docs.json nav (+2) and api-catalog rows/counts (337->338, RUM 35->36) reconciled
…-review 2026-08-26)

- error-viewing: document Issue CSV export button (100-row cap, sample switches, timezone headers, formula-injection guard) and React Native crash detail rendering
- source-mapping: add React Native platform bullet, upload section (Android Gradle build-time upload / iOS flashcat-cli upload-react-native), symbol management table rows
- app-management: add React Native app type and SDK-config wizard bullet
- sdk/react-native: document withDatadogMetroConfig Metro Debug ID config
- error-aggregation: extend native-crash rule to React Native (source_type resolution like Flutter)
- analytics/native: add JS thread frame rate metric, columns and thresholds
- changelog: RUM Issue CSV export + React Native RUM support (zh/en)
api-review(rum): add POST /rum/issue/export + fix stale orderby enum
docs(rum): React Native coverage + Issue CSV export (doc-review 2026-08-26)
- New: monitors/explore/explore.mdx (Query Workbench)
- Fix: ai-sre/skills.mdx (@-qualified skill address syntax)
- Fix: ai-sre/skills.mdx (skill name uniqueness per team scope)
- Fix: on-call escalation-rule.mdx (cross-team webhook scoping)
- Fix: on-call handle-update-incident.mdx (AI batch button)
- Fix: on-call search-view-incident.mdx (explore link)
- Fix: rum analytics/native.mdx (memory thresholds 200/400MB)
- Fix: rum analytics/native.mdx (React Native OS filter)
- Fix: rum sdk/react-native/sdk-integration.mdx (DatadogProvider)
- Fix: rum explorer/overview.mdx (CSV export)
Three corrections to the hvigor-plugin integration steps:

Installation. A HarmonyOS project root has no package.json, so the documented
`npm install -D` walks up the directory tree and installs into whatever unrelated
project it finds in a parent directory. Declaring the plugin in
hvigor/hvigor-config.json5 is now the documented path, with `npm init -y` called
out as the prerequisite for the npm route.

Build directory. The sample command used `-p product=default`, where the build
output happens to coincide with the plugin's hard-coded `build/default`. Any
other product silently scanned the wrong directory, and the `buildDir` option
that fixes it was never mentioned. Plugin 0.1.4 derives the directory from the
product being built; the docs now say so and keep `buildDir` as an override.

Daemon. hvigor builds through a long-lived daemon that copies the environment
once when it is created and refreshes only a fixed allowlist afterwards, so a
reused daemon hands the plugin stale or empty values — silently skipping the
upload, or uploading under the previous version number. The upload command now
carries --no-daemon, with the reason spelled out.

Also require 0.1.4 or later: 0.1.3 registered the task with a dependency on
assembleHar, which a HAP module does not have, failing the build.
docs: doc-review 2026-08-27 incremental fixes
docs(api): translate safari zh envelope descriptions (daily audit 2026-08-27)
The plugin no longer takes an enabled flag: the upload task declares no build
dependencies, so naming it on the command line is already the switch. The samples
and the run commands carried both, which would now be a hard error in the sample
and a meaningless variable in the command.

FLASHCAT_API_KEY is the only value the documented setup still reads from the
environment, so the daemon warning now uses it as the example of a silent skip.
Fix the HarmonyOS symbol-upload instructions
…on pages, alert-source nav, accuracy fixes (doc-review 2026-08-27)
- Field-level corrections across all modules (on-call, monitors, rum,
  platform, safari): fix request/response property types, binding-derived
  constraints (required/min/max/oneof), omitempty nullability, enums, and
  missing or inaccurate descriptions
- Remove retired monitors endpoints /monit/rule/status, /monit/preview/sync
  and /monit/query/rows from the specs and API catalog; update CLI and
  Go SDK references accordingly
- Enrichment mapping data: document the real CSV download stream and the
  multipart/form-data upload contract (schema_id query param, file field)
- Unify request/response examples between the English and Chinese specs
…60828

docs(api): sync OpenAPI specs with current backend handlers
docs(sso): keep Flashduty branding in service provider section names
…nts-20260828

docs(glossary): intentional per-context variants + plural-pair convention
The backend serializes these plain (non-omitempty) fields on every
response and the update endpoint treats the alerting/tracing/links
containers as full replacements, so they are always present in practice:
- RumApplicationAlerting.enabled, RumApplicationLinks.enabled,
  RumApplicationLink.enabled (plain bools)
- RumApplicationTracing.open_type/endpoint (validated whenever the
  tracing object is supplied)

Marking them required keeps generated SDKs from tagging them omitempty,
which would silently drop explicit `false` values in serialized output.
/rum/application/update branches on the mere presence of the alerting
and links objects: omitted means "leave unchanged", while a present
object fully replaces the stored configuration. Code generators that
map optional objects to bare struct values cannot express that
distinction for the all-zero payload (e.g. disabling alerting with no
other fields set), so mark both properties with the existing
x-flashduty-preserve-absence extension.
…nvelope shape

Every other operation wraps its 200 schema as
allOf[SuccessEnvelope, {data}]; this one inlined a bare {data} object,
which spec-driven code generators cannot recognize as an envelope and
therefore skip typed decoding for. Fold it back into the canonical
shape and add the request_id field to the example.
Registered in fc-pgy (flashcatcloud/fc-pgy#870, auth=all) but missing from
the API reference. Adds the operation + CreateStatusPageDraftRequest /
StatusPageDraftCreateResponse schemas to the on-call module and consolidated
specs (EN+ZH), and reconciles docs.json nav and api-catalog.mdx counts
(On-call 191 -> 192, total 335 -> 336).
docs(api): add POST /status-page/draft/create to OpenAPI specs
docs(glossary): intentional per-context variants and plural-pair convention
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.

6 participants