You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
keep lesson 50 attached until signal/duration, emit READY, then detach before reporting a stable final counter snapshot;
make lesson 51 dry-run by default and require an exact local+remote 4-tuple before destroying one socket;
add device, inode, and file-type identity to lesson 52 slow-read events;
make lesson 53 report qdisc conflicts and an explicit, manual crash-recovery command;
strengthen topic-selection and tutorial-writing skills so practical operator workflows are checked before publication;
preserve the original bilingual tutorial narratives and keep public examples on the normal operator path rather than showing test-harness output.
Why
The existing examples loaded successfully but had lifecycle, safety, or actionability gaps. These changes make the public workflows usable without turning the tutorials into test fixtures.
Validation
clean host builds for lessons 50–53;
documentation unit tests, generated-index check, relative-link check, and exact embedded-source checks;
KVM integration tests on x86_64 Linux 7.2.0-rc4 for all four lessons, covering READY/signal cleanup, exact socket selection, VFS object identity, qdisc conflicts, pacing, and crash recovery.
Lesson 54 is intentionally excluded and remains in a separate PR for further revision.
Reviewed final pushed head ac8008aaf8b04ea405fd11371bae93c753b27901 against origin/main.
Verdict: no blocking or actionable findings.
The review specifically rechecked the prior lesson 53 blocker: global struct_ops conflicts now print qdisc state across all interfaces and do not suggest deleting the requested interface, while target-interface root-qdisc conflicts retain the interface-specific diagnostic and recovery command. The cross-interface regression exercises a stale bpf_pacer owner on one interface and a launch attempt on another.
Also verified:
changed-path scope is limited to tutorial skills and lessons 50–53; no lesson 54 path is in the diff;
50–53 safety/lifecycle behavior matches the requested improvements;
English and Chinese complete kernel/BPF source blocks match the checked-in source exactly;
long user-space loaders use focused excerpts under the final skill rule, while concise loaders remain complete;
public tutorial paths contain no repository test commands, harness output, fixtures, or migration-history narration;
both updated skills pass quick_validate.py; documentation tests (15/15), source-sync tests (13/13), link checks, git diff --check, host builds, and KVM functional runs passed.
Code-growth review: exact diff is 27 files, +1606/-620 (production/build +389/-134, docs/skills +913/-386, tests +304/-100). The size is justified by the requested operational and safety coverage across four existing tutorials plus bilingual source synchronization; no fixture bloat or unrelated abstraction was found.
A separate Kimi reviewer inspected final pushed head ac8008aaf8b04ea405fd11371bae93c753b27901 against origin/main in an externally enforced read-only workspace.
Verdict: approve; no blocking or actionable findings.
The review verified:
exact scope: 27 files, +1606/-620, with no lesson 54 path;
lessons 50 and 52 contain complete kernel/BPF source and permitted focused excerpts for their long user-space loaders; lessons 51 and 53 retain complete embedded loaders;
src/53-egress-pacer/tests/test_egress_pacer.py explicitly verifies the stale bpf_pacer owner before the cross-interface conflict check;
global and target-interface qdisc conflicts remain safely distinguished;
the final EN/ZH prose substitutions remove repository-test narration from lessons 51 and 52;
the updated tutorial-writing skills consistently encode complete kernel source, focused long-user-space excerpts, normal user workflows, and private test infrastructure;
remaining upstream selftest links are references, not reader-facing repository test steps.
Code-growth verdict: production/build +389/-134, docs/skills +913/-386, tests +304/-100; growth is focused and proportionate, and fixtures are minimal. Scope-boundary verdict: all public behavior, documentation, and skill changes are authorized by the requested 50–53 safety/usability work; no shared architecture or unrelated API was added.
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
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.
What changed
READY, then detach before reporting a stable final counter snapshot;Why
The existing examples loaded successfully but had lifecycle, safety, or actionability gaps. These changes make the public workflows usable without turning the tutorials into test fixtures.
Validation
Lesson 54 is intentionally excluded and remains in a separate PR for further revision.