Commit Graph
54 Commits
Author SHA1 Message Date
Kronecker 81f8dc3204 docs(platform): describe controlled judging startup and recovery 2026-10-09 10:06:17 +08:00
Kronecker 3e44779578 fix(frontend): ignore expired responses from prior sessions 2026-10-09 09:55:11 +08:00
Kronecker fb1b161c0d feat(platform): connect owned submissions and real browser flows 2026-10-09 09:30:12 +08:00
Kronecker 19a071573b feat(worker): consume durable jobs with fenced execution and recovery 2026-10-09 08:38:20 +08:00
Kronecker 76b565cce8 fix(contracts): reject unfulfillable output capture budgets 2026-10-09 08:25:39 +08:00
Kronecker b7e9111254 fix(messaging): suppress credential-bearing transport logs 2026-10-09 07:55:15 +08:00
Kronecker f838008c71 feat(coordinator): persist fenced execution authority and atomic results 2026-10-09 07:15:24 +08:00
Kronecker 38738122b3 feat(messaging): deliver durable outbox events with publisher confirms 2026-10-09 06:59:13 +08:00
Kronecker 75d74908e0 feat(submissions): create durable queued evaluations idempotently 2026-10-09 06:31:15 +08:00
Kronecker 8a01081cc9 feat(judge): compile once and run isolated points through helper factory 2026-10-09 04:12:22 +08:00
Kronecker 93fb41c608 feat(engine): judge immutable submissions through bounded execution ports 2026-10-09 03:34:04 +08:00
Kronecker 996dbc5144 feat(problems): publish immutable versions and fence artifact access 2026-10-09 01:51:13 +08:00
Kronecker ff60136f8d feat(identity): add bounded login and revocable sessions 2026-10-09 01:20:37 +08:00
Kronecker f4bf218081 feat(database): add judging schema and separate write roles 2026-10-09 01:09:34 +08:00
Kronecker df52446dac feat(contracts): validate fenced judging jobs and bounded results 2026-10-09 00:43:17 +08:00
Kronecker ea0bc2b578 feat(worker): inject engine port for authenticated sandbox execution 2026-10-08 17:28:26 +08:00
Kronecker ee6371f269 feat(sandbox): enable verified ordinary execution entry 2026-10-08 17:00:13 +08:00
Kronecker fc61e9d053 test(sandbox): verify repeated restart and failed capture lifecycle 2026-10-08 13:52:01 +08:00
Kronecker 32d94f3a66 feat(sandbox): recover service-owned tasks after supervisor restart 2026-10-08 13:46:02 +08:00
Kronecker 22cc427da9 test(sandbox): validate full isolation against live peer tasks 2026-10-08 10:27:32 +08:00
Kronecker ddf1e0ca68 test(sandbox): verify complete user filesystem and descriptor boundaries 2026-10-08 10:12:49 +08:00
Kronecker b5db44ba16 feat(sandbox): enforce trusted process event budgets and verify resource limits 2026-10-08 07:19:01 +08:00
Kronecker 057c02f39d test(sandbox): verify complete native and compiler task workflows 2026-10-08 07:12:11 +08:00
Kronecker f9789ea4c4 fix(sandbox): unwind every prepared owner before releasing resources 2026-10-08 04:49:02 +08:00
Kronecker 2e4d9d4ea2 feat(sandbox): supervise bounded root execution and final teardown 2026-10-08 04:38:08 +08:00
Kronecker 62b08fea5b feat(sandbox): apply finite inherited resource limits before identity 2026-10-08 01:37:06 +08:00
Kronecker 4c7adda719 feat(sandbox): supervise aggregate CPU and monotonic wall budgets 2026-10-08 01:24:56 +08:00
Kronecker cc6ee1bfa7 feat(sandbox): transport bounded stdio and close inherited user descriptors 2026-10-07 22:49:25 +08:00
Kronecker 89da9ffd9f feat(sandbox): reap namespace descendants and cancel via init lifecycle 2026-10-07 22:28:13 +08:00
Kronecker 03eaab719e feat(sandbox): restrict dangerous syscalls and verify GNU language profiles 2026-10-07 19:31:24 +08:00
Kronecker 9bb27f2e02 feat(sandbox): install profile seccomp with ABI and inheritance checks 2026-10-07 19:16:20 +08:00
Kronecker 46714bd9ea feat(sandbox): lease task identities and drop initialization privileges 2026-10-07 18:22:58 +08:00
Kronecker 329c9222a3 feat(sandbox): bind readonly inputs through authenticated capabilities 2026-10-07 17:57:10 +08:00
Kronecker 9a2b1c071f feat(sandbox): snapshot artifacts through bounded file capabilities 2026-10-07 16:19:05 +08:00
Kronecker 2b5e79dd39 feat(sandbox): restrict proc and devices in private roots 2026-10-07 13:21:37 +08:00
Kronecker 0f68eb5fb0 feat(sandbox): build private read-only roots with pivot_root 2026-10-07 10:02:21 +08:00
Kronecker f22308080f feat(sandbox): initialize isolated namespaces through gated helpers 2026-10-07 04:16:11 +08:00
Kronecker 1a91c2e0f6 feat(sandbox): gate target startup with verified task cgroups 2026-10-07 01:40:32 +08:00
Kronecker 605785edee test(sandbox): allow launcher checks in independent VMs 2026-10-07 01:09:50 +08:00
Kronecker 08db00b56e feat(sandbox): add bounded standalone launcher control 2026-10-06 22:04:29 +08:00
Kronecker 957135a112 feat(sandbox): enforce launcher lifecycle ordering 2026-10-06 11:02:55 +08:00
Kronecker 1f45266517 feat(sandbox): define runtime policy and preflight refusals 2026-10-06 03:58:19 +08:00
Kronecker ee1f43a4cb feat(sandbox): model execution outcomes and limit attribution 2026-10-06 01:00:04 +08:00
Kronecker 7ef77dfb34 feat(sandbox): validate bounded local execution specifications 2026-10-05 22:04:59 +08:00
Kronecker 8b8828d136 chore(merge): integrate workspace and frontend prototype
合并审阅 note(2026-10-05)

合并范围
- chore/workspace-bootstrap:b5b286c44f6a1456bef1db4ab904cecb92ff15a3。
- feat/frontend-pages:f108e88c47e6d604184d8a34dfd39be06762e159。
- 前端分支已包含工程骨架提交;一次合并保留两个分支的原有历史。

审阅结论
- 工程骨架与前端原型可以合入 main。
- 平台后端按业务域、Runtime、基础设施和后台进程划分;Rust 判题工程按契约、协调器、Worker、引擎和沙箱划分。
- 前端包含练习、比赛、训练、提交、账号和社区页面原型,以及独立入口的管理端;预览数据与未实现能力在界面中明确标记。
- 已修复编辑后立即刷新导致最后一段草稿丢失的问题(f108e88):页面隐藏、离开和 Vue scope 销毁时保存待写入内容,同时保留输入防抖和存储异常处理。

验证结果
- 本次完整 make check 通过:架构边界、Python/Rust 契约、Ruff、Rust fmt/clippy、前端 OpenAPI 类型、ESLint、Prettier、vue-tsc、生产构建及 Docker Compose 配置。
- Python 测试 7 项、Rust 集成测试 2 项、前端草稿回归测试 7 项全部通过。
- 前序浏览器验证覆盖桌面及移动布局、独立管理端入口、真实健康接口、编辑器 Worker;修复后已验证立即刷新可恢复最新草稿。

后续工作
- 编辑器页面生产 JS chunk 约 3,005.41 kB(gzip 785.90 kB),构建仍有包体告警,后续优化拆包和加载。
- 业务写入、认证和实际判题能力仍处于工程骨架阶段;沙箱继续拒绝未经验证隔离的执行。
2026-10-05 18:29:40 +08:00
Kronecker f108e88c47 fix(frontend): save pending code drafts before page exit 2026-10-05 15:26:41 +08:00
Kronecker 8c3cca6fde feat(frontend): isolate admin app with sidebar navigation
Build a separate admin entrypoint with its own router and sidebar layout.
Add preview sections for problems, contests, users, judge nodes and site settings.
Configure Vite to emit both public and admin HTML entries.
2026-10-05 01:50:07 +08:00
Kronecker 1443f00495 feat(frontend): add account and community page previews
Add profiles, discussions, team creation, authentication forms and the about page.
Validate preview forms and display the available platform health endpoint.
2026-10-05 01:50:02 +08:00
Kronecker 2ae3bfb6fb feat(frontend): build homepage dashboard and interactive tag sphere
Present announcements, submission trends, recent problems, contests and solver rankings.
Arrange blue pill labels in a TagCanvas sphere with adaptive sizing, mouse-follow and drag modes.
Allow tag selection to filter the problem list and provide keyboard-accessible links.
2026-10-05 01:49:58 +08:00
Kronecker 5c7a45fe41 feat(frontend): add practice page previews and code workbench
Add problem filtering, trainings, contests, submission details and rankings.
Provide a split problem/editor layout with multilingual local drafts and self-test panels.
Run and submit actions show pending service integration.
2026-10-05 01:49:55 +08:00