main
tag: launch-2026-06-01
tag: magicmirror-v0.1.1
tag: magicmirror-v0.3.0
tag: mnw-cli-v0.1.2
tag: mnw-cli-v0.1.3
tag: mnw-cli-v0.1.4
tag: pom-v0.4.1
tag: pom-v0.4.2
tag: pom-v0.4.3
tag: pom-v0.4.4
tag: pom-v0.4.5
tag: wam-v0.3.0
tag: wam-v0.3.1
Files
Commits
Tags
Notes
Issues
Drop the audit_review.md citations
Same cleanup as the server side: `docs/audit_review.md` was gitignored and
is gone, so the comments and test docstrings citing it pointed nowhere.
The regression each test guards is already described in the line after the
citation, so removing the pointer costs nothing. The crate header now says
where findings actually live, which is GoingsOn.
Cargo.lock picks up the patch-section entries a build writes back.
Co-Authored-By
Claude Opus 5 (1M context) <noreply@anthropic.com>
7 files changed,
+16 insertions,
-17 deletions
5009
5009
source = "registry+https://github.com/rust-lang/crates.io-index"
5010
5010
checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa"
5011
5011
5012
+
[[patch.unused]]
5013
+
name = "synckit-client"
5014
+
version = "0.6.0"
5015
+
5016
+
[[patch.unused]]
5017
+
name = "synckit-config"
5018
+
version = "0.1.2"
5019
+
5012
5020
[[patch.unused]]
5013
5021
name = "supernote-push"
5014
5022
version = "0.1.0"
5020
5028
[[patch.unused]]
5021
5029
name = "painhours"
5022
5030
version = "0.1.0"
5023
-
5024
-
[[patch.unused]]
5025
-
name = "synckit-client"
5026
-
version = "0.6.0"
5027
-
5028
-
[[patch.unused]]
5029
-
name = "synckit-config"
5030
-
version = "0.1.2"
382
382
// into the users table so *other* users' posts JOIN against the current author
383
383
// row, not a login-time freeze. This reuses the exact login upsert, including
384
384
// the stale-username vacate, so "refresh" and "login" can never drift into two
385
-
// different mirror shapes (audit_review.md: apply_userinfo stale mirror).
385
+
// different mirror shapes.
386
386
// Best-effort: rendering tolerates a momentarily stale row.
387
387
if let Err(e) = upsert_login_user(&state.db, info).await {
388
388
tracing::warn!(error = %e, "failed to mirror refreshed identity to users table");
3
3
//! # Design
4
4
//!
5
5
//! The competitive positioning, moderation policy, and rollback runbook live in
6
-
//! the maintainer wiki; the risk history is in the gitignored `docs/audit_review.md`.
6
+
//! the maintainer wiki; audit and fuzz findings are tracked as problems in
7
+
//! GoingsOn.
7
8
//! <!-- wiki: mt-overview -->
8
9
9
10
pub mod auth;
100
100
// afterwards. The `/p/{slug}/upload` route already carries a `DefaultBodyLimit`
101
101
// (routes/mod.rs), but that is a separately-configured layer that could drift;
102
102
// enforcing the same cap here keeps the handler self-defending against a
103
-
// memory-DoS regardless of the routing setup. See audit_review.md (uploads
104
-
// buffer-before-cap).
103
+
// memory-DoS regardless of the routing setup.
105
104
let mut data: Vec<u8> = Vec::new();
106
105
loop {
107
106
match field.chunk().await {
529
529
);
530
530
}
531
531
532
-
/// Regression (audit_review.md N3, verify_quotes scope gap): a `[quote:UUID:HASH]`
532
+
/// Regression (verify_quotes scope gap): a `[quote:UUID:HASH]`
533
533
/// marker must only verify against a post *in the same community*. Quoting a post
534
534
/// that lives in another community, even with the exact text and correct hash,
535
535
/// must be rejected, closing the cross-community matching-oracle.
26
26
assert_eq!(tags[0].slug, "bug");
27
27
}
28
28
29
-
/// Regression (audit_review.md, settings suspended authz gap): a suspended
29
+
/// Regression (settings suspended authz gap): a suspended
30
30
/// community's owner must be blocked from *mutating* settings, not just from
31
31
/// viewing the settings page. Prior to the fix `require_owner` let every write
32
32
/// handler through because only the GET page checked `suspended_at`.
114
114
/// Also rejects a suspended community (403): a suspended-community owner must not
115
115
/// be able to reach any settings route, GET or POST. All `require_owner` callers
116
116
/// are owner-only settings handlers, so the suspension gate belongs here rather
117
-
/// than duplicated per handler, see `docs/audit_review.md` (settings suspended
118
-
/// authz gap). The platform admin acts on suspended communities via the `_admin`
119
-
/// routes, not these.
117
+
/// than duplicated per handler. The platform admin acts on suspended communities
118
+
/// via the `_admin` routes, not these.
120
119
#[tracing::instrument(skip_all)]
121
120
pub(crate) async fn require_owner(
122
121
state: &AppState,