Codex/huawei aom integration docs 20260901 - #329
Open
alick-liming wants to merge 417 commits into
Open
Conversation
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
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.