Skip to content

Conversation

@cosmo0920
Copy link
Contributor

@cosmo0920 cosmo0920 commented Dec 4, 2025

Corresponding to fluent/fluent-bit#11250.

Summary by CodeRabbit

  • New Features

    • Added a TDA-based processor that analyzes metric streams and exports topology-based metrics (Betti numbers) to assist anomaly and regime detection.
  • Documentation

    • New processor documentation covering configuration options (windowing, embedding, thresholds), processing overview, interpretation of Betti metrics, and configuration examples.

✏️ Tip: You can customize this high-level summary in your review settings.

@cosmo0920 cosmo0920 requested review from a team as code owners December 4, 2025 09:13
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Dec 4, 2025

Warning

Rate limit exceeded

@cosmo0920 has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 8 minutes and 21 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

📥 Commits

Reviewing files that changed from the base of the PR and between fc6e1b2 and 14290e6.

📒 Files selected for processing (1)
  • pipeline/processors/tda.md (1 hunks)

Walkthrough

Added documentation for a new Topological Data Analysis (TDA) processor: pipeline/processors.md lists "TDA" and a new pipeline/processors/tda.md documents the processor, its configuration, processing pipeline, exported metrics, and examples (Betti 0–2 via Ripser).

Changes

Cohort / File(s) Summary
Processors overview
pipeline/processors.md
Added a new "TDA" entry to the processors list referencing the TDA-based processor.
TDA processor docs
pipeline/processors/tda.md
New documentation describing the tda processor: configuration options (window_size, min_points, embed_dim, embed_delay, threshold with defaults), processing steps (aggregation, normalization, sliding window, optional delay embedding, distance matrix, threshold selection), Ripser integration for persistent homology (H0–H2), exported metrics (fluentbit_tda_betti0, fluentbit_tda_betti1, fluentbit_tda_betti2), interpretation guidance, and example YAML snippets.

Sequence Diagram(s)

sequenceDiagram
    autonumber
    participant FluentBit as Fluent Bit pipeline
    participant TDA as TDA Processor
    participant Ripser as Ripser PH Library
    participant Exporter as Metrics Exporter

    FluentBit->>TDA: emit aggregated/normalized metrics (sliding window)
    TDA->>TDA: optional delay embedding -> distance matrix -> threshold selection
    TDA->>Ripser: compute persistent homology (H0..H2)
    Ripser-->>TDA: persistence intervals / Betti counts
    TDA->>Exporter: expose metrics (`fluentbit_tda_betti0/1/2`)
    Exporter-->>Monitoring: scrape/collect metrics
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

  • Verify the documented parameter names and defaults in pipeline/processors/tda.md match the implementation.
  • Confirm metric names and exporter conventions for fluentbit_tda_betti0/1/2.
  • Check Ripser integration description (H0–H2) and threshold selection modes correspond to actual code or dependency requirements.
  • Review examples/YAML for accurate field names and formatting.

Possibly related PRs

Poem

🐰 I hop through metrics, curious and bright,
Counting loops and holes into the night.
Betti numbers hum a hidden tune,
Ripser maps shapes beneath the moon,
Docs now bloom — we chase patterns in light. ✨

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and specifically describes the main change: adding documentation for the processor_tda component.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 9

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 17989cc and 08b3196.

📒 Files selected for processing (2)
  • pipeline/processors.md (1 hunks)
  • pipeline/processors/tda.md (1 hunks)
🧰 Additional context used
🪛 GitHub Actions: Lint PRs
pipeline/processors/tda.md

[error] 3-3: FluentBit.EmDash: Don't put a space before or after a dash.


[error] 3-3: FluentBit.EnDash: Use an em dash ('—') instead of '–'.


[error] 80-80: FluentBit.NonStandardQuotes: Use standard single quotes or double quotes only. Do not use left or right quotes.


[error] 112-112: FluentBit.EnDash: Use an em dash ('—') instead of '–'.


[error] 116-116: FluentBit.NonStandardQuotes: Use standard single quotes or double quotes only. Do not use left or right quotes.


[error] 136-136: FluentBit.EmDash: Don't put a space before or after a dash.


[error] 136-136: FluentBit.EnDash: Use an em dash ('—') instead of '–'.


[error] 138-138: FluentBit.NonStandardQuotes: Use standard single quotes or double quotes only. Do not use left or right quotes.


[error] 138-138: FluentBit.EnDash: Use an em dash ('—') instead of '–'.


[error] 138-138: FluentBit.NonStandardQuotes: Use standard single quotes or double quotes only. Do not use left or right quotes.


[error] 173-173: FluentBit.NonStandardQuotes: Use standard single quotes or double quotes only. Do not use left or right quotes.


[error] 173-173: FluentBit.NonStandardQuotes: Use standard single quotes or double quotes only. Do not use left or right quotes.


[error] 173-173: FluentBit.Latin: Use 'for example' instead of 'e.g.,'.


[warning] 173-173: FluentBit.Latin: Use 'for example' instead of 'e.g.,'.


[error] 173-173: FluentBit.NonStandardQuotes: Use standard single quotes or double quotes only. Do not use left or right quotes.


[error] 173-173: FluentBit.Latin: Use 'for example' instead of 'e.g.,'.


[error] 173-173: FluentBit.EnDash: Use an em dash ('—') instead of '–'.


[error] 173-173: FluentBit.NonStandardQuotes: Use standard single quotes or double quotes only. Do not use left or right quotes.


[error] 173-173: FluentBit.Latin: Use 'for example' instead of 'e.g.,'.


[error] 173-173: FluentBit.SentenceLengthLong: Improve readability by using fewer than 35 words in this sentence.


[error] 173-173: FluentBit.Latin: Use 'for example' instead of 'e.g.,'.


[error] 173-173: FluentBit.EnDash: Use an em dash ('—') instead of '–'.


[error] 173-173: FluentBit.NonStandardQuotes: Use standard single quotes or double quotes only. Do not use left or right quotes.


[error] 173-173: FluentBit.NonStandardQuotes: Use standard single quotes or double quotes only. Do not use left or right quotes.


[error] 173-173: FluentBit.Latin: Use 'for example' instead of 'e.g.,'.


[error] 173-173: FluentBit.SentenceLengthLong: Improve readability by using fewer than 35 words in this sentence.


[error] 173-173: FluentBit.Latin: Use 'through or by using' instead of ' via '.


[warning] 173-173: FluentBit.Headings: 'Interpreting Betti numbers' should use sentence-style capitalization.


[error] 173-173: FluentBit.NonStandardQuotes: Use standard single quotes or double quotes only. Do not use left or right quotes.


[error] 173-173: FluentBit.EnDash: Use an em dash ('—') instead of '–'.


[error] 283-283: FluentBit.NonStandardQuotes: Use standard single quotes or double quotes only. Do not use left or right quotes.


[error] 283-283: FluentBit.NonStandardQuotes: Use standard single quotes or double quotes only. Do not use left or right quotes.


[error] 283-283: FluentBit.EnDash: Use an em dash ('—') instead of '–'.


[error] 283-283: FluentBit.Latin: Use 'for example' instead of 'e.g.,'.


[error] 283-283: FluentBit.NonStandardQuotes: Use standard single quotes or double quotes only. Do not use left or right quotes.


[error] 283-283: FluentBit.NonStandardQuotes: Use standard single quotes or double quotes only. Do not use left or right quotes.


[error] 283-283: FluentBit.EnDash: Use an em dash ('—') instead of '–'.


[error] 283-283: FluentBit.Latin: Use 'for example' instead of 'e.g.,'.


[error] 283-283: FluentBit.SentenceLengthLong: Improve readability by using fewer than 35 words in this sentence.


[error] 283-283: FluentBit.Latin: Use 'through or by using' instead of ' via '.


[error] 283-283: FluentBit.Headings: 'Interpreting Betti numbers' should use sentence-style capitalization.


[error] 283-283: FluentBit.NonStandardQuotes: Use standard single quotes or double quotes only. Do not use left or right quotes.


[error] 283-283: FluentBit.EnDash: Use an em dash ('—') instead of '–'.


[warning] 283-283: FluentBit.Latin: Use 'for example' instead of 'e.g.,'.


[error] 283-283: FluentBit.NonStandardQuotes: Use standard single quotes or double quotes only. Do not use left or right quotes.


[warning] 283-283: FluentBit.SentenceLengthLong: Improve readability by using fewer than 35 words in this sentence.


[error] 283-283: FluentBit.EnDash: Use an em dash ('—') instead of '–'.


[error] 283-283: FluentBit.NonStandardQuotes: Use standard single quotes or double quotes only. Do not use left or right quotes.


[error] 283-283: FluentBit.Latin: Use 'for example' instead of 'e.g.,'.


[error] 283-283: FluentBit.SentenceLengthLong: Improve readability by using fewer than 35 words in this sentence.


[error] 283-283: FluentBit.NonStandardQuotes: Use standard single quotes or double quotes only. Do not use left or right quotes.

🪛 GitHub Check: runner / vale
pipeline/processors.md

[warning] 24-24:
[vale] reported by reviewdog 🐶
[FluentBit.Acronyms] Spell out 'TDA', if it's unfamiliar to the audience.

Raw Output:
{"message": "[FluentBit.Acronyms] Spell out 'TDA', if it's unfamiliar to the audience.", "location": {"path": "pipeline/processors.md", "range": {"start": {"line": 24, "column": 4}}}, "severity": "INFO"}

pipeline/processors/tda.md

[failure] 99-99:
[vale] reported by reviewdog 🐶
[FluentBit.Latin] Use 'for example' instead of 'e.g. '.

Raw Output:
{"message": "[FluentBit.Latin] Use 'for example' instead of 'e.g. '.", "location": {"path": "pipeline/processors/tda.md", "range": {"start": {"line": 99, "column": 93}}}, "severity": "ERROR"}


[failure] 80-80:
[vale] reported by reviewdog 🐶
[FluentBit.NonStandardQuotes] Use standard single quotes or double quotes only. Do not use left or right quotes.

Raw Output:
{"message": "[FluentBit.NonStandardQuotes] Use standard single quotes or double quotes only. Do not use left or right quotes.", "location": {"path": "pipeline/processors/tda.md", "range": {"start": {"line": 80, "column": 54}}}, "severity": "ERROR"}


[failure] 80-80:
[vale] reported by reviewdog 🐶
[FluentBit.NonStandardQuotes] Use standard single quotes or double quotes only. Do not use left or right quotes.

Raw Output:
{"message": "[FluentBit.NonStandardQuotes] Use standard single quotes or double quotes only. Do not use left or right quotes.", "location": {"path": "pipeline/processors/tda.md", "range": {"start": {"line": 80, "column": 45}}}, "severity": "ERROR"}


[warning] 68-68:
[vale] reported by reviewdog 🐶
[FluentBit.We] Try to avoid using first-person plural like 'we'.

Raw Output:
{"message": "[FluentBit.We] Try to avoid using first-person plural like 'we'.", "location": {"path": "pipeline/processors/tda.md", "range": {"start": {"line": 68, "column": 9}}}, "severity": "INFO"}


[warning] 63-63:
[vale] reported by reviewdog 🐶
[FluentBit.Spelling] Spelling check: 'x_t'?

Raw Output:
{"message": "[FluentBit.Spelling] Spelling check: 'x_t'?", "location": {"path": "pipeline/processors/tda.md", "range": {"start": {"line": 63, "column": 12}}}, "severity": "INFO"}


[warning] 63-63:
[vale] reported by reviewdog 🐶
[FluentBit.Spelling] Spelling check: 'x_t'?

Raw Output:
{"message": "[FluentBit.Spelling] Spelling check: 'x_t'?", "location": {"path": "pipeline/processors/tda.md", "range": {"start": {"line": 63, "column": 1}}}, "severity": "INFO"}


[failure] 51-51:
[vale] reported by reviewdog 🐶
[FluentBit.Latin] Use 'through or by using' instead of ' via '.

Raw Output:
{"message": "[FluentBit.Latin] Use 'through or by using' instead of ' via '.", "location": {"path": "pipeline/processors/tda.md", "range": {"start": {"line": 51, "column": 101}}}, "severity": "ERROR"}


[warning] 49-49:
[vale] reported by reviewdog 🐶
[FluentBit.Contractions] Feel free to use 'that's' instead of 'that is'.

Raw Output:
{"message": "[FluentBit.Contractions] Feel free to use 'that's' instead of 'that is'.", "location": {"path": "pipeline/processors/tda.md", "range": {"start": {"line": 49, "column": 87}}}, "severity": "INFO"}


[warning] 48-48:
[vale] reported by reviewdog 🐶
[FluentBit.Spelling] Spelling check: 'bursty'?

Raw Output:
{"message": "[FluentBit.Spelling] Spelling check: 'bursty'?", "location": {"path": "pipeline/processors/tda.md", "range": {"start": {"line": 48, "column": 47}}}, "severity": "INFO"}


[warning] 34-34:
[vale] reported by reviewdog 🐶
[FluentBit.Spelling] Spelling check: 'untyped'?

Raw Output:
{"message": "[FluentBit.Spelling] Spelling check: 'untyped'?", "location": {"path": "pipeline/processors/tda.md", "range": {"start": {"line": 34, "column": 30}}}, "severity": "INFO"}


[warning] 19-19:
[vale] reported by reviewdog 🐶
[FluentBit.Spelling] Spelling check: 'Takens'?

Raw Output:
{"message": "[FluentBit.Spelling] Spelling check: 'Takens'?", "location": {"path": "pipeline/processors/tda.md", "range": {"start": {"line": 19, "column": 189}}}, "severity": "INFO"}


[failure] 3-3:
[vale] reported by reviewdog 🐶
[FluentBit.NonStandardQuotes] Use standard single quotes or double quotes only. Do not use left or right quotes.

Raw Output:
{"message": "[FluentBit.NonStandardQuotes] Use standard single quotes or double quotes only. Do not use left or right quotes.", "location": {"path": "pipeline/processors/tda.md", "range": {"start": {"line": 3, "column": 120}}}, "severity": "ERROR"}


[failure] 3-3:
[vale] reported by reviewdog 🐶
[FluentBit.EnDash] Use an em dash ('—') instead of '–'.

Raw Output:
{"message": "[FluentBit.EnDash] Use an em dash ('—') instead of '–'.", "location": {"path": "pipeline/processors/tda.md", "range": {"start": {"line": 3, "column": 105}}}, "severity": "ERROR"}


[failure] 3-3:
[vale] reported by reviewdog 🐶
[FluentBit.EmDash] Don't put a space before or after a dash.

Raw Output:
{"message": "[FluentBit.EmDash] Don't put a space before or after a dash.", "location": {"path": "pipeline/processors/tda.md", "range": {"start": {"line": 3, "column": 104}}}, "severity": "ERROR"}


[failure] 3-3:
[vale] reported by reviewdog 🐶
[FluentBit.EnDash] Use an em dash ('—') instead of '–'.

Raw Output:
{"message": "[FluentBit.EnDash] Use an em dash ('—') instead of '–'.", "location": {"path": "pipeline/processors/tda.md", "range": {"start": {"line": 3, "column": 65}}}, "severity": "ERROR"}


[failure] 3-3:
[vale] reported by reviewdog 🐶
[FluentBit.EmDash] Don't put a space before or after a dash.

Raw Output:
{"message": "[FluentBit.EmDash] Don't put a space before or after a dash.", "location": {"path": "pipeline/processors/tda.md", "range": {"start": {"line": 3, "column": 64}}}, "severity": "ERROR"}


[warning] 1-1:
[vale] reported by reviewdog 🐶
[FluentBit.Acronyms] Spell out 'TDA', if it's unfamiliar to the audience.

Raw Output:
{"message": "[FluentBit.Acronyms] Spell out 'TDA', if it's unfamiliar to the audience.", "location": {"path": "pipeline/processors/tda.md", "range": {"start": {"line": 1, "column": 3}}}, "severity": "INFO"}


[warning] 1-1:
[vale] reported by reviewdog 🐶
[FluentBit.Headings] 'TDA' should use sentence-style capitalization.

Raw Output:
{"message": "[FluentBit.Headings] 'TDA' should use sentence-style capitalization.", "location": {"path": "pipeline/processors/tda.md", "range": {"start": {"line": 1, "column": 3}}}, "severity": "INFO"}

🪛 LanguageTool
pipeline/processors/tda.md

[style] ~5-~5: To elevate your writing, try using a synonym here.
Context: ...intermittent instabilities that are hard to see from individual counters, gauges...

(HARD_TO)


[style] ~122-~122: As an alternative to the over-used intensifier ‘very’, consider replacing this phrase.
Context: ...ath})) from Ripser. * Intervals with very small persistence are filtered out, and the r...

(EN_WEAK_ADJECTIVE)


[style] ~150-~150: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...dimensional holes (loops / cycles). * Betti₂ – 2-dimensional voids, and so on. I...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~163-~163: As an alternative to the over-used intensifier ‘very’, consider replacing this phrase.
Context: ... Betti₁ and Betti₂ are typically 0 or very small. 2. Single, one-off failure * ...

(EN_WEAK_ADJECTIVE)


[style] ~266-~266: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ...ise hides coherent structure. * You want to build alerts not just on “levels” of me...

(REP_WANT_TO_VB)

🔇 Additional comments (1)
pipeline/processors/tda.md (1)

112-140: Fix em-dash formatting and non-standard quotes in middle sections.

Lines 112–139 contain multiple linting violations:

  • Line 112: En-dash/em-dash formatting issues
  • Lines 116, 138: Non-standard quotes with em-dashes
  • Line 136: Space before/after em-dash

These must be corrected to conform to documentation standards. Apply the following fixes:

-Once the compressed lower-triangular distance matrix is built, it is passed to a thin wrapper around **Ripser**, a well-known implementation of Vietoris–Rips persistent homology:
+Once the compressed lower-triangular distance matrix is built, it is passed to a thin wrapper around **Ripser**, a well-known implementation of Vietoris—Rips persistent homology:
-   * The dense `n_embed × n_embed` matrix is converted into Ripser's `compressed_lower_distance_matrix`.
+   * The dense `n_embed × n_embed` matrix is converted into Ripser's "compressed_lower_distance_matrix".
-| `fluentbit_tda_betti0` | gauge | Approximate Betti₀ – number of connected components (clusters) in the embedded point cloud at the selected scale. Large values indicate fragmentation into many "micro-regimes".                                                                 |
+| `fluentbit_tda_betti0` | gauge | Approximate Betti₀—number of connected components (clusters) in the embedded point cloud at the selected scale. Large values indicate fragmentation into many "micro-regimes".                                                                 |
-| `fluentbit_tda_betti1` | gauge | Approximate Betti₁ – number of 1-dimensional loops / cycles in the Rips complex. Non-zero values often signal **recurrent, quasi-periodic, or cycling behavior**, typical of intermittent failure / recovery patterns and other regime switches. |
+| `fluentbit_tda_betti1` | gauge | Approximate Betti₁—number of 1-dimensional loops / cycles in the Rips complex. Non-zero values often signal **recurrent, quasi-periodic, or cycling behavior**, typical of intermittent failure / recovery patterns and other regime switches. |
-| `fluentbit_tda_betti2` | gauge | Approximate Betti₂ – number of 2-dimensional voids (higher-order structures). These can appear when the system explores different "surfaces" in state space, e.g., transitioning between distinct operating modes.                               |
+| `fluentbit_tda_betti2` | gauge | Approximate Betti₂—number of 2-dimensional voids (higher-order structures). These can appear when the system explores different "surfaces" in state space, for example, transitioning between distinct operating modes.                               |

Likely an incorrect or invalid review comment.

@cosmo0920 cosmo0920 force-pushed the cosmo0920-add-tda-documentation branch from 390e607 to 155e3f9 Compare December 4, 2025 09:22
Signed-off-by: Hiroshi Hatake <[email protected]>
@cosmo0920 cosmo0920 force-pushed the cosmo0920-add-tda-documentation branch from 33bb56d to a416f40 Compare December 4, 2025 09:31
Signed-off-by: Hiroshi Hatake <[email protected]>
| ------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- |
| `window_size` | Number of samples to keep in the TDA sliding window. This controls how far back in time the topology is estimated. | `60` |
| `min_points` | Minimum number of samples required in the window before running TDA. Until this limit is reached, no Betti metrics are emitted. | `10` |
| `embed_dim` | Delay embedding dimension `m`. `m = 1` disables embedding (original behavior). For example, `m = 3` reconstructs state vectors `(x_t, x_{t-τ}, x_{t-2τ})` as suggested by Takens theorem. | `3` |
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Takens is a name of researcher. So, it should be valid but vale complains its term.

On each metrics flush, `tda`:

1. **Groups metrics by `(namespace, subsystem)`**
All counters, gauges, and untyped metrics are traversed. For each `cmt_map`, the pair `(ns, subsystem)` is hashed and assigned a **feature index**. This produces a fixed-dimensional feature vector of length `feature_dim` (number of `(ns, subsystem)` groups).
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Untyped is one of the metrics types of Prometheus like library which is called as cmetrics in Fluent Bit. It should be valid but vale complains this.

For each valid time index `t`, a reconstructed state vector is built as:

$$
x_t ;\to; (x_t,; x_{t-\tau},; \dots,; x_{t-(m-1)\tau})
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is KaTeX style of notation but vale complains this.


If `n_raw < (m − 1)τ + 1`, TDA is skipped until enough data has accumulated.

This embedding follows the idea of **Takens theorem**, which states that, under mild conditions, the dynamics of a system can be reconstructed from delay-embedded observations of a single time series or a low-dimensional observable [2]. In this plugin, the observable is the multi-dimensional vector of aggregated metrics.
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Takens is a name of person who is a researcher for mathematics.

@cosmo0920 cosmo0920 force-pushed the cosmo0920-add-tda-documentation branch 2 times, most recently from 7cf8133 to 4359221 Compare December 9, 2025 09:41
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
pipeline/processors/tda.md (1)

287-289: Replace en-dashes with em-dashes in references.

Line 288 uses en-dashes in page ranges that should be em-dashes per Fluent Bit documentation style.

-2. F. Takens, "Detecting strange attractors in turbulence," in D. Rand and L.-S. Young (eds.), _Dynamical Systems and Turbulence_, Lecture Notes in Mathematics, vol. 898, Springer, 1981, pp. 366–381.
+2. F. Takens, "Detecting strange attractors in turbulence," in D. Rand and L.-S. Young (eds.), _Dynamical Systems and Turbulence_, Lecture Notes in Mathematics, vol. 898, Springer, 1981, pp. 366—381.
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 155e3f9 and 4359221.

📒 Files selected for processing (2)
  • pipeline/processors.md (1 hunks)
  • pipeline/processors/tda.md (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • pipeline/processors.md
🧰 Additional context used
🪛 GitHub Actions: Lint PRs
pipeline/processors/tda.md

[INFO] 1-1: [FluentBit.Acronyms] Spell out 'TDA', if it's unfamiliar to the audience.


[INFO] 1-1: [FluentBit.Headings] 'TDA (Topological Data Analysis)' should use sentence-style capitalization.


[INFO] 21-21: [FluentBit.Spelling] Spelling check: 'Takens'?


[INFO] 36-36: [FluentBit.Spelling] Spelling check: 'untyped'?


[INFO] 50-50: [FluentBit.Spelling] Spelling check: 'bursty'?


[INFO] 51-51: [FluentBit.Contractions] Feel free to use 'that's' instead of 'that is'.


[INFO] 66-66: [FluentBit.Spelling] Spelling check: 'x_t'?


[INFO] 66-66: [FluentBit.Spelling] Spelling check: 'x_t'?


[INFO] 79-79: [FluentBit.SentenceLengthLong] Improve readability by using fewer than 35 words in this sentence.


[INFO] 113-113: [FluentBit.Headings] '5. Persistent Homology through Ripser' should use sentence-style capitalization.


[INFO] 113-113: [FluentBit.Spelling] Spelling check: 'Ripser'?


[INFO] 115-115: [FluentBit.Contractions] Feel free to use 'it's' instead of 'it is'.


[INFO] 115-115: [FluentBit.Spelling] Spelling check: 'Ripser'?


[INFO] 119-119: [FluentBit.Spelling] Spelling check: 'Ripser's'?


[INFO] 120-120: [FluentBit.Spelling] Spelling check: 'Ripser'?


[INFO] 124-124: [FluentBit.Spelling] Spelling check: 'Ripser'?


[INFO] 139-139: [FluentBit.Quotes] Commas and periods go inside quotation marks.


[INFO] 143-143: [FluentBit.SentenceLengthLong] Improve readability by using fewer than 35 words in this sentence.


[INFO] 147-147: [FluentBit.Headings] 'Interpreting Betti numbers' should use sentence-style capitalization.


[INFO] 155-155: [FluentBit.We] Try to avoid using first-person plural like 'our'.


[ERROR] 166-166: [FluentBit.EnDash] Use an em dash ('—') instead of '–'.


[ERROR] 166-166: [FluentBit.EnDash] Use an em dash ('—') instead of '–'.


[INFO] 172-172: [FluentBit.Contractions] Feel free to use 'doesn't' instead of 'does not'.


[WARNING] 192-192: [FluentBit.Possessives] Rewrite 'Bit's' to not use 's.


[ERROR] 261-261: [FluentBit.EnDash] Use an em dash ('—') instead of '–'.


[WARNING] 267-267: [FluentBit.Simplicity] Avoid words like "useful" that imply ease of use, because the user may find this action difficult.


[ERROR] 269-269: [FluentBit.Latin] Use 'for example' instead of 'e.g.,'.


[ERROR] 271-271: [FluentBit.DontUse] We don't use 'just'.


[ERROR] 271-271: [FluentBit.EmDash] Don't put a space before or after a dash.


[ERROR] 271-271: [FluentBit.EnDash] Use an em dash ('—') instead of '–'.


[INFO] 273-273: [FluentBit.Directional] Verify your use of 'above' with the Style Guide.


[INFO] 280-280: [FluentBit.Acronyms] Spell out 'DLQ', if it's unfamiliar to the audience.


[INFO] 287-287: [FluentBit.Spelling] Spelling check: 'Donato'?


[INFO] 287-287: [FluentBit.Spelling] Spelling check: 'Gori'?


[INFO] 287-287: [FluentBit.Spelling] Spelling check: 'Sarti'?


[INFO] 288-288: [FluentBit.Spelling] Spelling check: 'Takens'?


[ERROR] 288-288: [FluentBit.EnDash] Use an em dash ('—') instead of '–'.


[ERROR] 288-288: [FluentBit.EnDash] Use an em dash ('—') instead of '–'.


[INFO] 289-289: [FluentBit.SentenceLengthLong] Improve readability by using fewer than 35 words in this sentence.


[INFO] 289-289: [FluentBit.Headings] '5. Persistent Homology through Ripser' should use sentence-style capitalization.


[INFO] 289-289: [FluentBit.Spelling] Spelling check: 'Ripser'?


[INFO] 291-291: [FluentBit.Contractions] Feel free to use 'it's' instead of 'it is'.


[INFO] 291-291: [FluentBit.Spelling] Spelling check: 'Ripser'?


[INFO] 295-295: [FluentBit.Spelling] Spelling check: 'Ripser's'?


[INFO] 296-296: [FluentBit.Spelling] Spelling check: 'Ripser'?


[INFO] 300-300: [FluentBit.Quotes] Commas and periods go inside quotation marks.


[INFO] 303-303: [FluentBit.SentenceLengthLong] Improve readability by using fewer than 35 words in this sentence.


[INFO] 147-147: [FluentBit.Headings] 'Interpreting Betti numbers' should use sentence-style capitalization.


[INFO] 155-155: [FluentBit.We] Try to avoid using first-person plural like 'our'.


[ERROR] 166-166: [FluentBit.EnDash] Use an em dash ('—') instead of '–'.


[ERROR] 269-269: [FluentBit.Latin] Use 'for example' instead of 'e.g.,'.


[ERROR] 271-271: [FluentBit.DontUse] We don't use 'just'.


[ERROR] 271-271: [FluentBit.EmDash] Don't put a space before or after a dash.


[ERROR] 271-271: [FluentBit.EnDash] Use an em dash ('—') instead of '–'.


[ERROR] 288-288: [FluentBit.EnDash] Use an em dash ('—') instead of '–'.


[ERROR] 288-288: [FluentBit.EnDash] Use an em dash ('—') instead of '–'.


[INFO] 288-288: [FluentBit.SentenceLengthLong] Improve readability by using fewer than 35 words in this sentence.


[INFO] 289-289: [FluentBit.Headings] '5. Persistent Homology through Ripser' should use sentence-style capitalization.


[INFO] 289-289: [FluentBit.Spelling] Spelling check: 'Ripser'?


[INFO] 291-291: [FluentBit.Contractions] Feel free to use 'it's' instead of 'it is'.


[INFO] 291-291: [FluentBit.Spelling] Spelling check: 'Ripser'?


[INFO] 295-295: [FluentBit.Spelling] Spelling check: 'Ripser's'?


[INFO] 296-296: [FluentBit.Spelling] Spelling check: 'Ripser'?


[INFO] 300-300: [FluentBit.Quotes] Commas and periods go inside quotation marks.


[INFO] 303-303: [FluentBit.SentenceLengthLong] Improve readability by using fewer than 35 words in this sentence.

🪛 GitHub Check: runner / vale
pipeline/processors/tda.md

[failure] 288-288:
[vale] reported by reviewdog 🐶
[FluentBit.EnDash] Use an em dash ('—') instead of '–'.

Raw Output:
{"message": "[FluentBit.EnDash] Use an em dash ('—') instead of '–'.", "location": {"path": "pipeline/processors/tda.md", "range": {"start": {"line": 288, "column": 195}}}, "severity": "ERROR"}


[failure] 271-271:
[vale] reported by reviewdog 🐶
[FluentBit.EnDash] Use an em dash ('—') instead of '–'.

Raw Output:
{"message": "[FluentBit.EnDash] Use an em dash ('—') instead of '–'.", "location": {"path": "pipeline/processors/tda.md", "range": {"start": {"line": 271, "column": 115}}}, "severity": "ERROR"}


[failure] 271-271:
[vale] reported by reviewdog 🐶
[FluentBit.EmDash] Don't put a space before or after a dash.

Raw Output:
{"message": "[FluentBit.EmDash] Don't put a space before or after a dash.", "location": {"path": "pipeline/processors/tda.md", "range": {"start": {"line": 271, "column": 114}}}, "severity": "ERROR"}


[failure] 271-271:
[vale] reported by reviewdog 🐶
[FluentBit.DontUse] We don't use 'just'.

Raw Output:
{"message": "[FluentBit.DontUse] We don't use 'just'.", "location": {"path": "pipeline/processors/tda.md", "range": {"start": {"line": 271, "column": 32}}}, "severity": "ERROR"}


[failure] 269-269:
[vale] reported by reviewdog 🐶
[FluentBit.Latin] Use 'for example' instead of 'e.g.,'.

Raw Output:
{"message": "[FluentBit.Latin] Use 'for example' instead of 'e.g.,'.", "location": {"path": "pipeline/processors/tda.md", "range": {"start": {"line": 269, "column": 70}}}, "severity": "ERROR"}


[failure] 261-261:
[vale] reported by reviewdog 🐶
[FluentBit.EnDash] Use an em dash ('—') instead of '–'.

Raw Output:
{"message": "[FluentBit.EnDash] Use an em dash ('—') instead of '–'.", "location": {"path": "pipeline/processors/tda.md", "range": {"start": {"line": 261, "column": 153}}}, "severity": "ERROR"}


[failure] 166-166:
[vale] reported by reviewdog 🐶
[FluentBit.EnDash] Use an em dash ('—') instead of '–'.

Raw Output:
{"message": "[FluentBit.EnDash] Use an em dash ('—') instead of '–'.", "location": {"path": "pipeline/processors/tda.md", "range": {"start": {"line": 166, "column": 39}}}, "severity": "ERROR"}


[warning] 79-79:
[vale] reported by reviewdog 🐶
[FluentBit.Spelling] Spelling check: 'Takens'?

Raw Output:
{"message": "[FluentBit.Spelling] Spelling check: 'Takens'?", "location": {"path": "pipeline/processors/tda.md", "range": {"start": {"line": 79, "column": 38}}}, "severity": "INFO"}


[warning] 79-79:
[vale] reported by reviewdog 🐶
[FluentBit.SentenceLengthLong] Improve readability by using fewer than 35 words in this sentence.

Raw Output:
{"message": "[FluentBit.SentenceLengthLong] Improve readability by using fewer than 35 words in this sentence.", "location": {"path": "pipeline/processors/tda.md", "range": {"start": {"line": 79, "column": 1}}}, "severity": "INFO"}


[warning] 66-66:
[vale] reported by reviewdog 🐶
[FluentBit.Spelling] Spelling check: 'x_t'?

Raw Output:
{"message": "[FluentBit.Spelling] Spelling check: 'x_t'?", "location": {"path": "pipeline/processors/tda.md", "range": {"start": {"line": 66, "column": 12}}}, "severity": "INFO"}


[warning] 66-66:
[vale] reported by reviewdog 🐶
[FluentBit.Spelling] Spelling check: 'x_t'?

Raw Output:
{"message": "[FluentBit.Spelling] Spelling check: 'x_t'?", "location": {"path": "pipeline/processors/tda.md", "range": {"start": {"line": 66, "column": 1}}}, "severity": "INFO"}


[warning] 51-51:
[vale] reported by reviewdog 🐶
[FluentBit.Contractions] Feel free to use 'that's' instead of 'that is'.

Raw Output:
{"message": "[FluentBit.Contractions] Feel free to use 'that's' instead of 'that is'.", "location": {"path": "pipeline/processors/tda.md", "range": {"start": {"line": 51, "column": 87}}}, "severity": "INFO"}


[warning] 50-50:
[vale] reported by reviewdog 🐶
[FluentBit.Spelling] Spelling check: 'bursty'?

Raw Output:
{"message": "[FluentBit.Spelling] Spelling check: 'bursty'?", "location": {"path": "pipeline/processors/tda.md", "range": {"start": {"line": 50, "column": 47}}}, "severity": "INFO"}


[warning] 36-36:
[vale] reported by reviewdog 🐶
[FluentBit.Spelling] Spelling check: 'untyped'?

Raw Output:
{"message": "[FluentBit.Spelling] Spelling check: 'untyped'?", "location": {"path": "pipeline/processors/tda.md", "range": {"start": {"line": 36, "column": 30}}}, "severity": "INFO"}


[warning] 21-21:
[vale] reported by reviewdog 🐶
[FluentBit.Spelling] Spelling check: 'Takens'?

Raw Output:
{"message": "[FluentBit.Spelling] Spelling check: 'Takens'?", "location": {"path": "pipeline/processors/tda.md", "range": {"start": {"line": 21, "column": 189}}}, "severity": "INFO"}


[warning] 1-1:
[vale] reported by reviewdog 🐶
[FluentBit.Headings] 'TDA (Topological Data Analysis)' should use sentence-style capitalization.

Raw Output:
{"message": "[FluentBit.Headings] 'TDA (Topological Data Analysis)' should use sentence-style capitalization.", "location": {"path": "pipeline/processors/tda.md", "range": {"start": {"line": 1, "column": 3}}}, "severity": "INFO"}


[warning] 1-1:
[vale] reported by reviewdog 🐶
[FluentBit.Acronyms] Spell out 'TDA', if it's unfamiliar to the audience.

Raw Output:
{"message": "[FluentBit.Acronyms] Spell out 'TDA', if it's unfamiliar to the audience.", "location": {"path": "pipeline/processors/tda.md", "range": {"start": {"line": 1, "column": 3}}}, "severity": "INFO"}

🪛 LanguageTool
pipeline/processors/tda.md

[style] ~125-~125: As an alternative to the over-used intensifier ‘very’, consider replacing this phrase.
Context: ...ath}$) from Ripser. * Intervals with very small persistence are filtered out, and the r...

(EN_WEAK_ADJECTIVE)


[style] ~153-~153: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...dimensional holes (loops / cycles). * Betti₂: 2-dimensional voids, and so on. In...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~166-~166: As an alternative to the over-used intensifier ‘very’, consider replacing this phrase.
Context: ... Betti₁ and Betti₂ are typically 0 or very small. 2. Single, one-off failure * ...

(EN_WEAK_ADJECTIVE)


[style] ~271-~271: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ...ise hides coherent structure. * You want to build alerts not just on "levels" of me...

(REP_WANT_TO_VB)

@cosmo0920 cosmo0920 force-pushed the cosmo0920-add-tda-documentation branch 2 times, most recently from fc6e1b2 to d4d1aa0 Compare December 9, 2025 09:59
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

♻️ Duplicate comments (3)
pipeline/processors/tda.md (3)

261-261: Replace en-dash with em-dash in range notation.

Line 261 uses an en-dash () in the range 4–10, which should be an em-dash () per Fluent Bit documentation style:

-This configuration reconstructs the system in an effective dimension of `4 × feature_dim` and tends to highlight tight loops that occur within roughly 4–10 sampling intervals.
+This configuration reconstructs the system in an effective dimension of `4 × feature_dim` and tends to highlight tight loops that occur within roughly 4—10 sampling intervals.

3-3: Add alt attribute to image for accessibility.

Line 3 is missing an alt attribute on the tracking pixel image, which violates accessibility requirements and fails markdownlint's MD045 rule. Add an empty alt attribute (acceptable for tracking pixels):

-<img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=ee1ad690-a3e9-434f-9635-3e53c670e96c" />
+<img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=ee1ad690-a3e9-434f-9635-3e53c670e96c" alt="" />

269-271: Fix remaining linting errors: replace "e.g.", remove "just", and fix em-dash spacing.

Lines 269 and 271 still contain style violations that must be resolved:

  • Line 269: "e.g." must be replaced with "for example"
  • Line 271: Remove the word "just" (disallowed by FluentBit.DontUse) and fix em-dash spacing ( should become without spaces)
-* You suspect **non-linear or multi-modal behavior** in your system (e.g., on/off regimes, congestion collapse, periodic retries).
+* You suspect **non-linear or multi-modal behavior** in your system (for example, on/off regimes, congestion collapse, periodic retries).
-* You want to build alerts not just on "levels" of metrics, but on **changes in the topology** of system behavior – for example:
+* You want to build alerts on "levels" of metrics and on **changes in the topology** of system behavior—for example:
🧹 Nitpick comments (1)
pipeline/processors/tda.md (1)

113-113: Heading style note for section 5.

Line 113 ("5. Persistent Homology through Ripser") receives an INFO-level vale suggestion for sentence-style capitalization. If you adopt sentence case, this would become "5. Persistent homology through Ripser". This is optional and low priority compared to the critical linting errors above.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 4359221 and fc6e1b2.

📒 Files selected for processing (1)
  • pipeline/processors/tda.md (1 hunks)
🧰 Additional context used
🪛 GitHub Actions: Lint PRs
pipeline/processors/tda.md

[info] 1-1: [FluentBit.Acronyms] Spell out 'TDA', if it's unfamiliar to the audience.


[info] 1-1: [FluentBit.Headings] 'TDA (Topological Data Analysis)' should use sentence-style capitalization.


[info] 21-21: [FluentBit.Spelling] Spelling check: 'Takens'?


[info] 36-36: [FluentBit.Spelling] Spelling check: 'untyped'?


[info] 50-50: [FluentBit.Spelling] Spelling check: 'bursty'?


[info] 51-51: [FluentBit.Contractions] Feel free to use 'that's' instead of 'that is'.


[info] 66-66: [FluentBit.Spelling] Spelling check: 'x_t'?


[info] 79-79: [FluentBit.SentenceLengthLong] Improve readability by using fewer than 35 words in this sentence.


[info] 113-113: [FluentBit.Headings] '5. Persistent Homology through Ripser' should use sentence-style capitalization.


[error] 271-271: [FluentBit.EnDash] Don't put a space before or after a dash.

🪛 GitHub Check: runner / vale
pipeline/processors/tda.md

[failure] 288-288:
[vale] reported by reviewdog 🐶
[FluentBit.EnDash] Use an em dash ('—') instead of '–'.

Raw Output:
{"message": "[FluentBit.EnDash] Use an em dash ('—') instead of '–'.", "location": {"path": "pipeline/processors/tda.md", "range": {"start": {"line": 288, "column": 195}}}, "severity": "ERROR"}


[failure] 271-271:
[vale] reported by reviewdog 🐶
[FluentBit.EnDash] Use an em dash ('—') instead of '–'.

Raw Output:
{"message": "[FluentBit.EnDash] Use an em dash ('—') instead of '–'.", "location": {"path": "pipeline/processors/tda.md", "range": {"start": {"line": 271, "column": 115}}}, "severity": "ERROR"}


[failure] 271-271:
[vale] reported by reviewdog 🐶
[FluentBit.EmDash] Don't put a space before or after a dash.

Raw Output:
{"message": "[FluentBit.EmDash] Don't put a space before or after a dash.", "location": {"path": "pipeline/processors/tda.md", "range": {"start": {"line": 271, "column": 114}}}, "severity": "ERROR"}


[failure] 271-271:
[vale] reported by reviewdog 🐶
[FluentBit.DontUse] We don't use 'just'.

Raw Output:
{"message": "[FluentBit.DontUse] We don't use 'just'.", "location": {"path": "pipeline/processors/tda.md", "range": {"start": {"line": 271, "column": 32}}}, "severity": "ERROR"}


[failure] 269-269:
[vale] reported by reviewdog 🐶
[FluentBit.Latin] Use 'for example' instead of 'e.g.,'.

Raw Output:
{"message": "[FluentBit.Latin] Use 'for example' instead of 'e.g.,'.", "location": {"path": "pipeline/processors/tda.md", "range": {"start": {"line": 269, "column": 70}}}, "severity": "ERROR"}


[failure] 261-261:
[vale] reported by reviewdog 🐶
[FluentBit.EnDash] Use an em dash ('—') instead of '–'.

Raw Output:
{"message": "[FluentBit.EnDash] Use an em dash ('—') instead of '–'.", "location": {"path": "pipeline/processors/tda.md", "range": {"start": {"line": 261, "column": 153}}}, "severity": "ERROR"}


[warning] 79-79:
[vale] reported by reviewdog 🐶
[FluentBit.Spelling] Spelling check: 'Takens'?

Raw Output:
{"message": "[FluentBit.Spelling] Spelling check: 'Takens'?", "location": {"path": "pipeline/processors/tda.md", "range": {"start": {"line": 79, "column": 38}}}, "severity": "INFO"}


[warning] 79-79:
[vale] reported by reviewdog 🐶
[FluentBit.SentenceLengthLong] Improve readability by using fewer than 35 words in this sentence.

Raw Output:
{"message": "[FluentBit.SentenceLengthLong] Improve readability by using fewer than 35 words in this sentence.", "location": {"path": "pipeline/processors/tda.md", "range": {"start": {"line": 79, "column": 1}}}, "severity": "INFO"}


[warning] 66-66:
[vale] reported by reviewdog 🐶
[FluentBit.Spelling] Spelling check: 'x_t'?

Raw Output:
{"message": "[FluentBit.Spelling] Spelling check: 'x_t'?", "location": {"path": "pipeline/processors/tda.md", "range": {"start": {"line": 66, "column": 12}}}, "severity": "INFO"}


[warning] 66-66:
[vale] reported by reviewdog 🐶
[FluentBit.Spelling] Spelling check: 'x_t'?

Raw Output:
{"message": "[FluentBit.Spelling] Spelling check: 'x_t'?", "location": {"path": "pipeline/processors/tda.md", "range": {"start": {"line": 66, "column": 1}}}, "severity": "INFO"}


[warning] 51-51:
[vale] reported by reviewdog 🐶
[FluentBit.Contractions] Feel free to use 'that's' instead of 'that is'.

Raw Output:
{"message": "[FluentBit.Contractions] Feel free to use 'that's' instead of 'that is'.", "location": {"path": "pipeline/processors/tda.md", "range": {"start": {"line": 51, "column": 87}}}, "severity": "INFO"}


[warning] 50-50:
[vale] reported by reviewdog 🐶
[FluentBit.Spelling] Spelling check: 'bursty'?

Raw Output:
{"message": "[FluentBit.Spelling] Spelling check: 'bursty'?", "location": {"path": "pipeline/processors/tda.md", "range": {"start": {"line": 50, "column": 47}}}, "severity": "INFO"}


[warning] 36-36:
[vale] reported by reviewdog 🐶
[FluentBit.Spelling] Spelling check: 'untyped'?

Raw Output:
{"message": "[FluentBit.Spelling] Spelling check: 'untyped'?", "location": {"path": "pipeline/processors/tda.md", "range": {"start": {"line": 36, "column": 30}}}, "severity": "INFO"}


[warning] 21-21:
[vale] reported by reviewdog 🐶
[FluentBit.Spelling] Spelling check: 'Takens'?

Raw Output:
{"message": "[FluentBit.Spelling] Spelling check: 'Takens'?", "location": {"path": "pipeline/processors/tda.md", "range": {"start": {"line": 21, "column": 189}}}, "severity": "INFO"}


[warning] 1-1:
[vale] reported by reviewdog 🐶
[FluentBit.Headings] 'TDA (Topological Data Analysis)' should use sentence-style capitalization.

Raw Output:
{"message": "[FluentBit.Headings] 'TDA (Topological Data Analysis)' should use sentence-style capitalization.", "location": {"path": "pipeline/processors/tda.md", "range": {"start": {"line": 1, "column": 3}}}, "severity": "INFO"}


[warning] 1-1:
[vale] reported by reviewdog 🐶
[FluentBit.Acronyms] Spell out 'TDA', if it's unfamiliar to the audience.

Raw Output:
{"message": "[FluentBit.Acronyms] Spell out 'TDA', if it's unfamiliar to the audience.", "location": {"path": "pipeline/processors/tda.md", "range": {"start": {"line": 1, "column": 3}}}, "severity": "INFO"}

🪛 LanguageTool
pipeline/processors/tda.md

[style] ~125-~125: As an alternative to the over-used intensifier ‘very’, consider replacing this phrase.
Context: ...ath}$) from Ripser. * Intervals with very small persistence are filtered out, and the r...

(EN_WEAK_ADJECTIVE)


[style] ~153-~153: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...dimensional holes (loops / cycles). * Betti₂: 2-dimensional voids, and so on. In...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~166-~166: As an alternative to the over-used intensifier ‘very’, consider replacing this phrase.
Context: ... Betti₁ and Betti₂ are typically 0 or very small. 2. Single, one-off failure * ...

(EN_WEAK_ADJECTIVE)


[style] ~271-~271: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ...ise hides coherent structure. * You want to build alerts not just on "levels" of me...

(REP_WANT_TO_VB)

🔇 Additional comments (1)
pipeline/processors/tda.md (1)

1-1: Heading capitalization guidance.

The heading "TDA (Topological Data Analysis)" flags a vale INFO-level suggestion for sentence-style capitalization. However, this is a stylistic choice for acronyms in headings and may be acceptable. If your project style guide requires title case for processor names, consider: "Tda (Topological data analysis)" or similar. Otherwise, this can be left as-is for now.

Please confirm the preferred heading style with your documentation maintainers.

Signed-off-by: Hiroshi Hatake <[email protected]>
@cosmo0920 cosmo0920 force-pushed the cosmo0920-add-tda-documentation branch from d4d1aa0 to 14290e6 Compare December 9, 2025 10:01
@cosmo0920
Copy link
Contributor Author

@eschabell I supressed vale errors on my written doc. How do we proceed further revising on this?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants