@algora-pbc /claim #15
Summary
Adds a distinct peer-review-evidence-recertification-guard/ slice for the Community & User Reputation System.
The guard evaluates whether structured peer reviews and inline comments still apply after reviewed documents, datasets, code, or notebooks change. It freezes stale review reputation deltas, blocks reputation updates when stale review, inline-comment, or project snapshot evidence is not recertified, validates reputation-delta evidence before profile credit is applied, blocks recertification timestamps that predate the original review submission, marks inline comment anchors stale when artifact evidence changes even if a selector line did not move, holds missing or malformed review, artifact, inline-comment, project timestamp, and top-level packet evidence for recertification, validates artifact timestamp evidence for both review and inline-comment paths, freezes public/semi-private review credit when the reviewer identity is missing, converts malformed evidence entries and malformed non-array evidence collections into recertification holds, preserves anonymous/double-blind reviewer labels, emits deterministic JSON/Markdown/SVG/video audit artifacts, and tolerates sparse project snapshots that omit review, comment, or artifact collections.
Latest Hardening
bb47f47: invalid project snapshot timestamps such as asOf: "not-a-date" now create a high-priority project-evidence recertification task instead of releasing a timeline audit packet with invalid generatedAt evidence.
- Added a red regression showing the prior behavior emitted
timelinePacket.generatedAt as not-a-date while allowing an otherwise current review packet to proceed.
- Added
reports/invalid-project-timestamp-packet.json and refreshed README, acceptance notes, requirements map, generated Markdown, and packet evidence so maintainers can inspect the path directly.
Prior Hardening Coverage
- Malformed top-level recertification packets such as
evaluateRecertification(null) emit a reviewer-visible malformed-project-evidence hold for unidentified-project instead of crashing at project.reviews before timeline evidence can be generated.
- Recertification timestamps that predate original submission create
recertification-before-submission holds instead of preserving current reputation credit.
- Malformed non-array
reviews and inlineComments collections create explicit recertification holds instead of being treated like omitted evidence.
- Invalid review reputation deltas are frozen before any profile credit, leaderboard, or badge update can apply.
- Malformed review and inline-comment entries inside otherwise valid arrays create recertification holds instead of crashing or being silently ignored.
- Space-separated blind and fully anonymous mode names normalize before redaction, so labels like
Double Blind and Fully Anonymous do not leak raw reviewer IDs.
- Inline comment anchors become stale when the underlying artifact digest changes, even if the selector line remains unchanged.
- Blind and anonymous review mode variants are redacted consistently in decisions, timelines, and audit output.
- Malformed or missing review submission and recertification timestamps require recertification instead of preserving reputation credit.
- Malformed or missing inline-comment timestamps require comment recertification with explicit audit reasons.
- Missing inline-comment anchor metadata and missing artifact anchor maps require recertification instead of crashing evidence evaluation.
- Stale inline-comment evidence blocks reputation updates even when no stale review is present.
- Malformed or missing artifact change timestamps require review and inline-comment recertification before credit or comment evidence can remain current.
- Public or semi-private reviews without a reviewer identity freeze reputation credit with
reviewer-identity-missing instead of applying credit to reviewer:undefined.
- Sparse project snapshots that omit review, comment, or artifact collections produce deterministic audit packets instead of runtime failures; missing artifact collections yield
artifact-missing recertification evidence.
Non-overlap
This is scoped to stale peer-review, inline-comment, and project audit snapshot evidence recertification before reputation updates. It does not duplicate reviewer workload equity, broad reputation ledgers, COI/recusal, civility, workload, accessibility, rubric validation, edit history, badge renewal, profile visibility, identity impersonation, citation venue integrity, or other issue #15 slices.
Validation
- Red regression failed before implementation with
AssertionError [ERR_ASSERTION]: 'not-a-date' == null.
npm test from peer-review-evidence-recertification-guard passed: 30 tests.
npm run check passed: test, demo, and video generation.
node --check index.js, node --check demo.js, and node --check test.js passed.
npm run demo regenerated deterministic packet/report/SVG artifacts, including invalid-project-timestamp-packet.json.
npm run video regenerated reports/demo.mp4.
ffprobe verified peer-review-evidence-recertification-guard/reports/demo.mp4 as H.264, 1280x720, 30 fps, 4.0s, 120 frames, 52,113 bytes.
- All 8 generated JSON packets parsed successfully.
git diff --check and git diff --cached --check passed; only Windows line-ending normalization warnings appeared before staging.
- Staged allowlist validation confirmed all 15 staged files were under
peer-review-evidence-recertification-guard/.
- Focused restricted-string scan found no credential, payout, or token strings.
- GitHub PR head after push:
bb47f47.
Demo Artifacts
peer-review-evidence-recertification-guard/reports/recertification-packet.json
peer-review-evidence-recertification-guard/reports/empty-evidence-packet.json
peer-review-evidence-recertification-guard/reports/invalid-reputation-delta-packet.json
peer-review-evidence-recertification-guard/reports/malformed-evidence-packet.json
peer-review-evidence-recertification-guard/reports/malformed-collection-packet.json
peer-review-evidence-recertification-guard/reports/backdated-recertification-packet.json
peer-review-evidence-recertification-guard/reports/malformed-project-packet.json
peer-review-evidence-recertification-guard/reports/invalid-project-timestamp-packet.json
peer-review-evidence-recertification-guard/reports/recertification-report.md
peer-review-evidence-recertification-guard/reports/summary.svg
peer-review-evidence-recertification-guard/reports/demo.mp4
Synthetic data only. No credentials, private user data, live profile systems, payment systems, or external APIs are used.
AI-assisted with OpenAI Codex; I reviewed and locally verified the diff before submitting.