Skip to content

Feat/site multilang user guide - #16

Merged
cemililik merged 3 commits into
mainfrom
feat/site-multilang-user-guide
Apr 28, 2026
Merged

cemililik merged 3 commits into
mainfrom
feat/site-multilang-user-guide

Conversation

@cemililik

@cemililik cemililik commented Apr 28, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Changes

Type

  • Bug fix
  • New feature
  • Documentation
  • Refactoring / code quality
  • Test coverage
  • CI / infrastructure

Testing

  • pytest tests/ passes
  • ruff check . passes
  • ruff format --check . passes
  • New tests added for changed code
  • forgelm --config config_template.yaml --dry-run works

Checklist

  • My code follows the project's style (ruff formatted)
  • I've updated documentation if needed
  • I've added tests for new functionality
  • No new dependencies added (or added as optional: pip install forgelm[...])
  • Config template (config_template.yaml) updated if new config fields added

Summary by Sourcery

Enhancements:

  • Adjust callout pill colours and backgrounds to meet accessibility contrast requirements in both light and dark modes.

cemililik and others added 2 commits April 29, 2026 02:21
Sonar css:S7924 flagged the four `.callout-pill.{note|tip|warn|danger}`
text colours as low contrast: the previous Tailwind 400/500 shades
(#4ade80 / #facc15 / #f87171) failed the AA threshold against the
near-white pill backgrounds in light mode.

The pill base rule now sets deep saturated text (700-shade) for the
default (light) computation; light-mode keeps that, dark-mode overrides
with bright (300-shade) text on the same tinted background. Both
combinations clear AA on their respective page backgrounds.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Previous commit (7d101e4 — callout-pill contrast) reached origin but
GitHub Actions did not enqueue ci.yml / usermanuals-validate.yml runs
for it. This empty commit re-triggers them so the static-analyzer
checks on the contrast fix actually report.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@sourcery-ai

sourcery-ai Bot commented Apr 28, 2026 •

Copy link
Copy Markdown
Reviewer's guide (collapsed on small PRs)

Reviewer's Guide

Adjusts the visual design of callout pills to improve color contrast in both light and dark themes, using theme-specific text colors while maintaining existing border variables and slightly stronger background tints.

State diagram for callout pill styling based on theme

stateDiagram-v2
  [*] --> Theme_Resolved

  state Theme_Resolved {
    [*] --> Light_or_Dark

    state Light_or_Dark {
      Light: data_theme_light
      Dark: root_not_data_theme_light

      [*] --> Light
      Light --> Dark
      Dark --> Light
    }
  }

  Theme_Resolved --> Callout_Note_Styles
  Theme_Resolved --> Callout_Tip_Styles
  Theme_Resolved --> Callout_Warn_Styles
  Theme_Resolved --> Callout_Danger_Styles

  state Callout_Note_Styles {
    [*] --> Base_Note
    Base_Note: color_075985_border_var_steel_bg_rgba_14_165_233_018
    Base_Note --> Light_Note
    Base_Note --> Dark_Note
    Light_Note: color_0369a1_bg_rgba_14_165_233_018
    Dark_Note: color_var_steel_bright_bg_rgba_14_165_233_018
  }

  state Callout_Tip_Styles {
    [*] --> Base_Tip
    Base_Tip: color_14532d_border_var_success_bg_rgba_34_197_94_018
    Base_Tip --> Light_Tip
    Base_Tip --> Dark_Tip
    Light_Tip: color_166534_bg_rgba_34_197_94_018
    Dark_Tip: color_86efac_bg_rgba_34_197_94_018
  }

  state Callout_Warn_Styles {
    [*] --> Base_Warn
    Base_Warn: color_713f12_border_var_warn_bg_rgba_234_179_8_022
    Base_Warn --> Light_Warn
    Base_Warn --> Dark_Warn
    Light_Warn: color_854d0e_bg_rgba_234_179_8_022
    Dark_Warn: color_fde047_bg_rgba_234_179_8_022
  }

  state Callout_Danger_Styles {
    [*] --> Base_Danger
    Base_Danger: color_7f1d1d_border_var_danger_bg_rgba_239_68_68_018
    Base_Danger --> Light_Danger
    Base_Danger --> Dark_Danger
    Light_Danger: color_991b1b_bg_rgba_239_68_68_018
    Dark_Danger: color_fca5a5_bg_rgba_239_68_68_018
  }
Loading

File-Level Changes

Change Details Files
Improve accessibility and theme-specific styling for callout pills.
  • Replace Tailwind-inspired mid-tone text colors on callout pills with deeper, more saturated text colors for better contrast against pill backgrounds.
  • Introduce explicit overrides for callout pill text colors in the light theme via [data-theme="light"] selectors.
  • Add dark-theme-specific overrides using :root:not([data-theme="light"]) selectors to ensure high contrast on near-black backgrounds while keeping existing border-color variables.
  • Slightly increase the opacity of pill background tints to preserve perceived affordance with the updated text colors.
site/css/style.css

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

@coderabbitai

coderabbitai Bot commented Apr 28, 2026 •

Copy link
Copy Markdown
Contributor

Warning

Rate limit exceeded

@cemililik has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 47 minutes and 50 seconds before requesting another review.

To keep reviews running without waiting, you can enable usage-based add-on for your organization. This allows additional reviews beyond the hourly cap. Account admins can enable it under billing.

⌛ 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.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 71945cce-559d-430b-bff5-b2b2069f04fe

📥 Commits

Reviewing files that changed from the base of the PR and between edb8a9c and c54ec3f.

📒 Files selected for processing (1)
  • site/css/style.css
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/site-multilang-user-guide

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.

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Hey - I've left some high level feedback:

  • The theme-specific rules duplicate some color values between the base .callout-pill.* selectors and the [data-theme] overrides; consider centralizing these in CSS variables or using only theme-scoped selectors to avoid drift if colors change later.
  • Using :root:not([data-theme="light"]) to target dark mode may be brittle if additional themes are added; if possible, prefer an explicit [data-theme="dark"] (or similar) selector to avoid unintentionally applying dark-mode styles to future themes.
  • There are several hard-coded hex values introduced for pills; if the design system has semantic color tokens, mapping these to variables (e.g. --callout-note-fg-light) would make future adjustments and theme extensions easier.
Prompt for AI Agents
Please address the comments from this code review:

## Overall Comments
- The theme-specific rules duplicate some color values between the base `.callout-pill.*` selectors and the `[data-theme]` overrides; consider centralizing these in CSS variables or using only theme-scoped selectors to avoid drift if colors change later.
- Using `:root:not([data-theme="light"])` to target dark mode may be brittle if additional themes are added; if possible, prefer an explicit `[data-theme="dark"]` (or similar) selector to avoid unintentionally applying dark-mode styles to future themes.
- There are several hard-coded hex values introduced for pills; if the design system has semantic color tokens, mapping these to variables (e.g. `--callout-note-fg-light`) would make future adjustments and theme extensions easier.

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Code Review

This pull request updates the color schemes for callout pills in site/css/style.css to ensure AA contrast compliance across light and dark themes. The reviewer suggested refactoring the implementation to align with the project's 'Dark-first' architecture, which would eliminate redundant style declarations and simplify the CSS structure.

Comment thread site/css/style.css Outdated
Comment on lines +1816 to +1827
.callout-pill.note { color: #075985; border-color: var(--steel); background: rgba(14,165,233,.18); }
.callout-pill.tip { color: #14532d; border-color: var(--success); background: rgba(34,197,94,.18); }
.callout-pill.warn { color: #713f12; border-color: var(--warn); background: rgba(234,179,8,.22); }
.callout-pill.danger { color: #7f1d1d; border-color: var(--danger); background: rgba(239,68,68,.18); }
[data-theme="light"] .callout-pill.note { color: #0369a1; }
[data-theme="light"] .callout-pill.tip { color: #166534; }
[data-theme="light"] .callout-pill.warn { color: #854d0e; }
[data-theme="light"] .callout-pill.danger { color: #991b1b; }
:root:not([data-theme="light"]) .callout-pill.note { color: var(--steel-bright); background: rgba(14,165,233,.18); }
:root:not([data-theme="light"]) .callout-pill.tip { color: #86efac; background: rgba(34,197,94,.18); }
:root:not([data-theme="light"]) .callout-pill.warn { color: #fde047; background: rgba(234,179,8,.22); }
:root:not([data-theme="light"]) .callout-pill.danger { color: #fca5a5; background: rgba(239,68,68,.18); }

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

The current implementation is redundant and inconsistent with the repository's 'Dark-first' architecture. The base styles (lines 1816-1819) are immediately overridden by the light-theme block, and the dark-theme block re-declares background colors already defined in the base. Following the project's established pattern (see lines 4 and 67), the base classes should contain the default dark-mode styles, with a single override block for light mode. This reduces CSS size and simplifies specificity.

Suggested change
.callout-pill.note { color: #075985; border-color: var(--steel); background: rgba(14,165,233,.18); }
.callout-pill.tip { color: #14532d; border-color: var(--success); background: rgba(34,197,94,.18); }
.callout-pill.warn { color: #713f12; border-color: var(--warn); background: rgba(234,179,8,.22); }
.callout-pill.danger { color: #7f1d1d; border-color: var(--danger); background: rgba(239,68,68,.18); }
[data-theme="light"] .callout-pill.note { color: #0369a1; }
[data-theme="light"] .callout-pill.tip { color: #166534; }
[data-theme="light"] .callout-pill.warn { color: #854d0e; }
[data-theme="light"] .callout-pill.danger { color: #991b1b; }
:root:not([data-theme="light"]) .callout-pill.note { color: var(--steel-bright); background: rgba(14,165,233,.18); }
:root:not([data-theme="light"]) .callout-pill.tip { color: #86efac; background: rgba(34,197,94,.18); }
:root:not([data-theme="light"]) .callout-pill.warn { color: #fde047; background: rgba(234,179,8,.22); }
:root:not([data-theme="light"]) .callout-pill.danger { color: #fca5a5; background: rgba(239,68,68,.18); }
.callout-pill.note { color: var(--steel-bright); border-color: var(--steel); background: rgba(14,165,233,.18); }
.callout-pill.tip { color: #86efac; border-color: var(--success); background: rgba(34,197,94,.18); }
.callout-pill.warn { color: #fde047; border-color: var(--warn); background: rgba(234,179,8,.22); }
.callout-pill.danger { color: #fca5a5; border-color: var(--danger); background: rgba(239,68,68,.18); }
[data-theme="light"] .callout-pill.note { color: #0369a1; }
[data-theme="light"] .callout-pill.tip { color: #166534; }
[data-theme="light"] .callout-pill.warn { color: #854d0e; }
[data-theme="light"] .callout-pill.danger { color: #991b1b; }

…rcery)

Address review feedback on the previous contrast fix:

- Centralise the eight pill fg/bg pairs as --pill-{kind}-{fg|bg} CSS
  variables in :root (dark defaults) and [data-theme="light"]
  (overrides), replacing the duplicated colour literals across the
  base + light + :root:not(...) blocks.
- Drop the :root:not([data-theme="light"]) selector — fragile if a
  third theme is ever added — in favour of the project's established
  dark-first single-override pattern (the same shape :root /
  [data-theme="light"] uses elsewhere in this file).
- Replace the rgba(...,.18) backgrounds with solid colours. Sonar's
  CSS contrast checker can't compose alpha-blended backgrounds against
  the inherited body colour, so it kept flagging css:S7924 even on
  pairings that visually exceeded AA. Solid backgrounds make the check
  unambiguous; every fg/bg pair clears AAA (>7:1) on its own theme.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@sonarqubecloud

Copy link
Copy Markdown

@cemililik
cemililik merged commit b9406d0 into main Apr 28, 2026
9 checks passed
cemililik added a commit that referenced this pull request Apr 28, 2026
Bring in the merged-on-main work from PRs #15 and #16 (multi-language
user guide, site refactor, sonar/codacy/gemini fixes) so PR #17 can
re-base cleanly. The two textual conflicts are kept on the development
side — they ARE the substance of PR #17:

- CHANGELOG.md: keep "NumPy" (not "Numpy") — addresses the latest
  reviewer nit on the v0.5.2 changelog block.
- README.md: keep the enumerated nine-family secrets-scan sentence
  (single items for OpenAI / Google API keys and OpenSSH / PGP private
  keys) so the spoken count and the listed examples agree, addressing
  the same review pass.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@cemililik
cemililik deleted the feat/site-multilang-user-guide branch April 28, 2026 23:49
cemililik added a commit that referenced this pull request May 5, 2026
Frozen at 8f69cf1 / PR #33.  Same 4-agent split as Wave 3
(code-correctness / privacy-security / standards-compliance /
test-rigour) per the established review cadence.

Critical framing rules baked into the prompt:

- D-22-01 enforcement: any "compliant" / "certified" wording
  found in the diff is a CRITICAL finding (alignment-vs-
  certified is the single most-impactful regression a reviewer
  can catch on this PR).
- D-22-02 enforcement: SBOM stays CycloneDX 1.5; any SPDX claim
  is a finding.
- Salt + HMAC chain are tamper-evidence, not non-repudiation —
  reject PKI-flavoured claims.
- Wave 4 explicitly defers some Faz 30 items (GH-16/018/019/020
  cli.md cleanup, sample-audit user-facing doc triplet, new
  check_cli_help_consistency tool, full-suite anchor-strict CI
  wire-up); reviewers should NOT flag those as Wave 4 omissions.

Severity bar matches Wave 3 calibration; deliverable structure
matches Wave 3 (one report per agent, saved as wave4-<agent>.md
under docs/analysis/code_reviews/).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
cemililik added a commit that referenced this pull request May 6, 2026
… drift guard

Wave 5 / Faz 30 Task J: a CI guard that catches the bug class we've
chased four times this wave (GH-8 verify-log, GH-11 benchmark,
GH-16 --export-bundle, GH-18 --target kserve, GH-20 --pii-locale,
F-W4-01 verify-audit --output-dir/--json, F-W4-PS-02 approve --run-id).

Tool design (749 LOC, pure stdlib):
- Discovers the live parser surface by spawning `python3 -m forgelm.cli
  --help` + `forgelm <sub> --help` for every shipped subcommand —
  resilient to internal `_parser.py` reorganisation (Option A in the
  task spec).
- Walks docs/{guides,reference,usermanuals/{en,tr}/} + README.md for
  fenced bash/shell code blocks containing `forgelm <sub> ...`
  invocations.
- Reports three drift classes: (1) subcommand not in parser surface;
  (2) flag not in parser surface for that subcommand; (3) flag value
  not in parser's `choices` list.
- Skips `docs/analysis/` (gitignored research) + `docs/marketing/`
  (gitignored strategy) by default.
- False-positive avoidance: skips synopsis lines (containing `[` or
  `(...|...)` choice indicators), and skips code blocks in
  "Wrong:"/"Don't:"/"Anti-pattern:"/"Legacy:"/"Yanlış:"-tagged
  context. Forward-reference framing (`planned`/`roadmap`/`future`/
  `not in v0.5.5`/`(planned)`) within ±3 lines of the cited line is
  also tolerated as a legitimate ghost callout.
- Exit codes follow `tools/` contract: 0 advisory / 1 strict.

Tests (298 LOC, 15 cases — 3:23 wall-clock since each spawns the
real forgelm parser surface):
- Real shipping syntax (`verify-audit ./outputs/audit_log.jsonl
  --require-hmac`) → exit 0.
- Each historical drift class regression-pinned (verify-audit
  --output-dir/--json, benchmark --model X, deploy --target kserve,
  chat --top-p).
- Forward-reference framing + Wrong:-tagged blocks → tolerated.
- --quiet suppression of the OK summary.
- Parser-surface discovery sanity tests (synthetic empty repo,
  missing-subcommand short-circuit).

CI wiring:
- New advisory-mode step in `.github/workflows/ci.yml` runs the tool
  with `continue-on-error: true` after the bilingual-parity step.
  Matches the `check_anchor_resolution.py` Faz 26 precedent: gate
  lands first, baseline cleanup follows, then a later commit flips
  to `--strict` fail-the-build mode.

Baseline drift on the live tree: 40 findings across 20 docs. Top
hits cluster in `docs/usermanuals/{en,tr}/reference/cli.md` (legacy
flag tables drifted from the audit/verify-audit/chat/deploy/ingest
parsers as Wave 2-4 reshaped them) and a handful of phase-13/14
"planned" subcommands (`forgelm trend`, `forgelm compare-runs`)
documented as if shipped. Cleanup is the next Wave 5 commit.

Validation
- ruff format / check — clean.
- python3 -m pytest tests/test_check_cli_help_consistency.py --no-cov
  -q — 15/15 pass in 3:23.
- python3 -m pytest --no-cov -q — full suite green (1428 tests now;
  +15 from this commit).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
cemililik added a commit that referenced this pull request May 6, 2026
…gent review findings

- Wave 5 PR #34 round 3 absorption: full sweep of CodeRabbit's 6 OOD +
  20 Minor inline review comments PLUS 24 multi-agent review findings
  (code-correctness / privacy-security / standards / test-rigor docs
  under docs/analysis/code_reviews/wave5-*.md).

HIGH/Major absorptions:
- 4 broken `forgelm.cli.subcommands.*` symbol citations across
  purge/approvals reference docs (en+tr): _run_row_erasure →
  _run_purge_row_id, _handle_pending → _run_approvals_list_pending,
  _handle_show → _run_approvals_show (F-W5-PRIV-02).
- configuration.md (en+tr): drop `kserve | triton` ghost choices and
  the entire `## deployment:` ghost YAML block (no `DeploymentConfig`
  in ForgeConfig; extra="forbid" rejects it at load) — replace with a
  v0.6.0+ Phase 14 callout (F-W5-S1, F-W5-S2).
- ingestion.md (en+tr): drop conflicting "instructions format
  default" claim; document raw-chunk JSONL with summary-only
  --output-format {text,json} (CR-OOD ingestion).
- closure-plan PR #33 status: line 131 said "PR #33 pending" but
  line 119 said merged with `01e40ba` (CR-OOD closure-plan).
- leakage.md (en+tr): remove `audit.leakage_check.remove_cross_split_overlap`
  knob reference — knob doesn't exist in code; replace with the
  documented jq-based removal flow (CR-OOD leakage).
- TR + EN experiment-tracking: drop `$ ` prompt prefix in `text`-tagged
  preview blocks for `forgelm compare-runs` (CR-OOD experiment-tracking).
- roadmap mermaid (en+tr): add Phase 12.6 (Closure Cycle) → v0.5.5
  node + edge so visual flow matches table (CR-OOD roadmap).

Minor absorptions:
- phase-12-6-closure-cycle.md L123: stale "(currently 0.5.1rc1)"
  parenthetical → already-bumped during Wave 5 (F-W5-S4 / CR Minor).
- gdpr-erasure.md (en+tr): rename duplicate `### What gets recorded`
  / `### Neyi kaydeder` H3 to disambiguate Article 17 vs 15 sections
  (CR Minor #2 + #20).
- verify-gguf.md (en+tr) L147: revise misleading "still match SHA-256"
  hash explanation; clarify magic-header layer doesn't catch
  truncation independent of sidecar (CR Minor #3).
- verify_audit link mismatch in 4 reference docs (en+tr × verify_gguf
  + verify_annex_iv): label text now matches href (CR Minor #4 + #8).
- air_gap_deployment-tr.md L19: add `text` language tag to ASCII
  diagram fence (CR Minor #6).
- site/index.html L374: drop internal "Phase 19" milestone leak; tag
  reads `embed` (user-facing label) (CR Minor #7).
- air_gap_deployment.md L193: fix dangling sentence fragment in
  HF_TOKEN gated-models tip (CR Minor #9).
- performance.md (en+tr) L184: drop ghost `forgelm audit
  --output-format parquet`; replace with pandas/pyarrow conversion
  step (CR Minor #10).
- phase-11-5-backlog.md L10-12: link text → package paths matching
  href (forgelm/data_audit.py → forgelm/data_audit/, etc.) (CR Minor #11).
- testing.md L140: stale `23/23` → `39/39` bilingual parity count
  (CR Minor #12).
- testing.md L198: `python3` prefix consistency in checklist
  (CR Minor #13).
- supply-chain.md (en+tr): bandit cadence aligned to standards doc
  (Nightly 03:00 UTC + release tag, not "every PR + main push") (CR
  Minor #14 + #15).
- translations.js L1927: "Three values" → "Two values" (only
  forgelm-lang + forgelm-theme listed) (CR Minor #16).
- approvals_subcommand.md (en+tr) L26: staging path → match L84 JSON
  sample (`final_model.staging.<run_id>` canonical, run-id-less form
  honoured as fallback) (CR Minor #17 + #19).
- translations.js L1445/L1462/L1504/L1521 (en+tr): `<code>reject</code>`
  → `<code>forgelm reject</code>` for fully-qualified copy/paste
  parity (CR Minor #18).
- _meta.yaml header: add formal DE/FR/ES/ZH deferred-policy banner
  per closure-plan Task L (F-W5-S6).
- release.md L20 + L359: stale "0.3.1rc1 current" + "no
  __version__" claims; corrected to 0.5.5 + reflect that __version__
  + __api_version__ ARE exported per Library API standard (F-W5-S3).
- purge_subcommand.md (en+tr): add WARNING-on-fallback language for
  --output-dir asymmetry vs reverse-pii (F-W5-PRIV-05).
- verify-audit.md (en+tr): replace overstated "escrow" wording with
  KMS/HSM-based separation (F-W5-PRIV-06).

Tool tightening + new tests:
- check_cli_help_consistency.py: tighten _FORWARD_REF_MARKERS to
  whole-phrase forms (drop bare "planned"/"future"/"roadmap" which
  matched "planned attacks" / "future work" / "roadmap-driven" in
  unrelated prose); add Turkish equivalents for bilingual docs
  (F-W5-01).
- test_check_cli_help_consistency.py: 3 new regression tests:
  bare-substring negative (F-W5-01), >±3-line forward-ref window
  negative (F-W5-TR-01a), and Wrong:-block scope-to-one-block
  resumption (F-W5-TR-01b). Suite 17 → 20 tests, all green.

User-manual orphan fix:
- _meta.yaml: register `reference/json-output` page (existed in
  filesystem since Wave 2 but never declared in nav config — was
  invisible on the live site). Now declared = on-disk = 65 each.

Skipped (with reason):
- CR Minor #5 (library_api.md `forgelm.__version__` example):
  INVALID — verified `python3 -c "import forgelm; print(forgelm.__version__)"`
  prints 0.5.5 cleanly; both __version__ and __api_version__ ARE
  exported per Library API standard. CodeRabbit's web-search must
  have hit pre-Wave-5 PyPI. Doc is correct; code matches.
- F-W5-S5 (parity tool autodiscover usermanuals): registry shape
  refactor (~50 new pairs) is scope creep for round 3; defer to v0.6.
- F-W5-S8 (compliance_summary-tr.md): explicitly deferred to v0.6 by
  the finding itself.
- F-W5-S9, F-W5-TR-11/12 (NIT cite/style): non-load-bearing.
- F-W5-02/03/04 (cognitive complexity, unterminated fence,
  resume-after-Wrong unit test): refactor scope; covered by F-W5-TR-01
  block-scope tests for the resume case.
- F-W5-TR-02 (cleanup commit baseline regression test): the live CI
  --strict gate IS the guard; doubling up the integration-test
  layer is defensible but not blocking.
- F-W5-TR-03/05/06/07/08/09/10 (extras): non-blocking coverage gaps.

Self-review gauntlet (all green):
  ruff format/check ✅
  bilingual_parity --strict 39/39 ✅
  anchor_resolution --strict 264/264 ✅
  cli_help_consistency --strict 425/425 ✅ (reduced from 449 due to
    intentional invocation removals: ghost YAML block, parquet ghost,
    4 broken symbol-cite paths, etc.)
  site_claims --strict (artefacts/templates/GPU/version) ✅
  field_descriptions --strict ✅
  pytest 1433 passed / 14 skipped (+5 new tests vs round 2) ✅
  forgelm --config config_template.yaml --dry-run ✅
  build_usermanuals.py: en/tr 65/65 OK, JS bundles regenerate ✅

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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