Repository navigation
Fix slide publishing and add GitHub-backed committee approvals - #87
Merged
Merged
Conversation
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
New slide uploads now generate their source paths on the server from collection, academic year, series/session number and title. The form no longer asks for a path. Existing source, metadata or PDF collisions are refused; replacements retain their URLs, notes and downloads. The API enforces the exact decoded 8 MiB limit.
The isolated website publication check now copies uploaded slide sources alongside their canonical knowledge files. This fixes the failed website check on the Multivariate Regression upload in PR #89. Its actual 22-page PDF reproduced the failure before the fix and passed the full website/MCP integration build afterwards; both GitHub checks on #89 now pass.
All private management requests also require active UCLAIS membership (stable organisation ID verified), repository write access and any configured stable-ID allowlist. The installed app has approved Members read-only access and remains restricted to UCLAIS/UCLAIS.github.io. This organisation gate is already live; branch protection is unchanged.
Validation: 373 service tests across 26 files, TypeScript and the management Worker build pass. Tests cover native Workers OAuth/redirects, session tampering/expiry, membership and write-access revocation, invalid Origin/CSRF/Bearer/content-type headers, duplicate cookies, safe generated paths, collisions and exact file-size boundaries. Source, bundle and uploaded-PDF text scans found no credentials. The current service dependency audit reports zero advisories; GitHub secret scanning and push protection are enabled with no alerts. The separate inherited website dependency advisory backlog remains open.
Review and approve now opens a bounded, plain-text preview with links to all changed files and submits a GitHub APPROVE review under the signed-in member’s own account. The server restricts it to open management branches in the fixed repository targeting main, refuses self-approval and stale head commits, and requires CSRF/Origin plus explicit review confirmation. It pins commit_id and never merges. Existing GitHub permissions suffice; branch rules were not changed.
The complete management runtime is deployed as Worker version 8e035c84-5cdc-4a1d-8dc9-3a3c8068221e from bdcdb2f; subsequent changes only add the security report. The live upload without a path produced the expected three files in synthetic PR #90, which was closed and its branch removed without publishing. The live review of real PR #89 loaded all four changed files and correctly disabled the author’s approval. A second real reviewer has not yet submitted an approval; success and denial paths are covered by handler/transport/native tests.
Sixteen live anonymous security boundary checks passed. Cloudflare’s binding and Fail closed setting and the GitHub App’s single-repository scope were rechecked. The security review is recorded in services/knowledge/docs/management-security-review-2026-11-05.md, including verification limits and the separate website dependency backlog. No high-confidence exploitable vulnerabilities were identified in the management paths reviewed. Content submissions still require review and merge; the management API does not expose merge or branch-rule changes.