Skip to content

Fix slide publishing and add GitHub-backed committee approvals - #87

Merged
sometimesyash merged 7 commits into
mainfrom
committee-org-access
Nov 5, 2026
Merged

sometimesyash merged 7 commits into
mainfrom
committee-org-access

Conversation

@sometimesyash

@sometimesyash sometimesyash commented Nov 4, 2026 •

Copy link
Copy Markdown
Contributor

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.

@sometimesyash sometimesyash changed the title Restrict management access to active UCLAIS members Fix slide uploads and require UCLAIS membership Nov 5, 2026
@sometimesyash sometimesyash changed the title Fix slide uploads and require UCLAIS membership Fix slide publishing and add GitHub-backed committee approvals Nov 5, 2026
@sometimesyash
sometimesyash merged commit 7cde52e into main Nov 5, 2026
3 checks passed
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