Kronecker
6e14b5abf8
feat(core): integrate verified judging foundation
...
# 基础在线评测功能
本次整合接通普通题的完整提交流程:学生通过真实会话登录、查看题目、提交程序、查询个人结果与源码,并可取消尚未结束的评测。
## 新增能力
- Linux 沙箱隔离与资源限制;C17、C++20、CPython 3.13.16 和 OpenJDK 21 普通题评测。
- 持久化 Coordinator、事务 outbox 和普通判题 Worker,保留任务租约、取消与清理记录。
- 管理员题包上传与校验、不可变版本发布、题目下架恢复和维护审计。
- 本题个人提交、历史详情与匿名性能比较;缺测、环境不一致或样本不足时明确显示不可比较。
## 兼容性
数据库结构与授权由 Backend Alembic 统一迁移。旧 v1 报告保留原有字节和摘要,新语言通过显式版本契约启用,旧题目不会自动增加语言能力。
Python 支持单文件 `main.py` 与标准库;Java 使用默认包的 `Main.java` / `Main`,允许有界辅助类、内部类和匿名类。普通题采用精确字节比较。
## 已知限制
这是基础功能整合,不是生产发布。离线安装、备份恢复、升级和持续运行的单机交付验收仍在独立工程分支进行。
模型与学习能力尚未接入。自助注册、比赛、训练、社区、自测、SPJ、交互题和分布式执行尚未完成;预览页面不代表真实业务已实现。
2026-10-16 16:45:57 +08:00
Kronecker
f576756359
test(admin): isolate import recovery acceptance from candidate checks
2026-10-12 05:05:00 +08:00
Kronecker
445affb63d
test(admin): verify cross-process import admission and recovery
2026-10-12 04:01:51 +08:00
Kronecker
3536ef1fbb
test(admin): preserve baseline data through maintenance migrations
2026-10-12 03:48:26 +08:00
Kronecker
676781223d
test(admin): verify bounded archive and private storage refusals
2026-10-12 03:28:41 +08:00
Kronecker
2f860a17c9
docs(admin): document bounded problem maintenance operations
2026-10-12 03:15:51 +08:00
Kronecker
835df6b7e7
feat(admin): connect authenticated problem maintenance console
2026-10-12 02:33:15 +08:00
Kronecker
5366418881
feat(problems): publish immutable candidates with audited maintenance
2026-10-11 23:29:21 +08:00
Kronecker
3152d59056
feat(problems): add bounded administrator package imports
...
Use live maintenance sessions, durable capacity reservations and streamed SHA-bound ZIP uploads. An ordinary capped import worker validates stored/deflated v1/v2 packages, persists immutable unpublished candidates and finite audit events, and recovers or releases capacity after interruption and expiry.
Validate actual PG/HTTP/worker/storage fault paths in an isolated capped VM (2 passed, 0 skipped), reuse unchanged actual migration roundtrip evidence, and pass affected backend/architecture checks plus the prior full engineering checks.
2026-10-11 22:19:38 +08:00
Kronecker
234ab23155
feat(identity): protect administrator bootstrap and recovery
2026-10-11 19:22:55 +08:00
Kronecker
a7b2324a3e
feat(identity): expose live maintenance capabilities and transaction authorization
2026-10-11 12:31:08 +08:00
Kronecker
3ed5b72459
feat(identity): persist administrator authority with scoped database roles
2026-10-11 12:20:10 +08:00
Kronecker
8143a7f665
fix(frontend): adapt submission summaries to workbench width
2026-10-11 11:17:06 +08:00
Kronecker
08f2db616f
fix(frontend): separate submission time and version link
2026-10-11 11:10:46 +08:00
Kronecker
c8cac766c7
test(submissions): verify exact performance cohort boundaries
2026-10-11 07:45:56 +08:00
Kronecker
bc5cd12056
feat(frontend): share real submission details and performance in workbench
2026-10-11 03:55:23 +08:00
Kronecker
218fa38f8e
feat(submissions): query bounded anonymous performance snapshots
2026-10-11 03:51:33 +08:00
Kronecker
fce7522267
feat(submissions): bind final performance to trusted measurement epochs
2026-10-11 03:46:16 +08:00
Kronecker
3cc90e4573
feat(submissions): define bounded performance and scoped history contracts
2026-10-11 03:35:12 +08:00
Kronecker
5df3c370aa
docs(frontend): document managed language submission
2026-10-10 04:09:41 +08:00
Kronecker
029585739c
fix(worker): bound configurable control request deadlines
2026-10-10 02:15:52 +08:00
Kronecker
47f535ea79
docs(frontend): clarify connected judging services
2026-10-10 00:24:08 +08:00
Kronecker
67c3bc55ba
chore(judge): document explicit managed runtime rollout
2026-10-09 23:29:23 +08:00
Kronecker
d20721313e
test(judge): verify managed worker faults and sealed programs
2026-10-09 22:49:57 +08:00
Kronecker
9d960c2a9b
feat(frontend): enable problem-scoped Python and Java submissions
2026-10-09 22:32:38 +08:00
Kronecker
507b15b64a
test(coordinator): fence stale managed reports and bound retries
2026-10-09 21:57:40 +08:00
Kronecker
643a8d342e
fix(judge): bind managed inputs and confirm artifact cleanup
2026-10-09 21:45:21 +08:00
Kronecker
802e019699
feat(worker): judge versioned sealed runtime programs
2026-10-09 20:15:17 +08:00
Kronecker
2f1166954a
feat(sandbox): route pinned runtimes through one bounded factory
2026-10-09 18:50:10 +08:00
Kronecker
38ee332a3e
test(sandbox): verify managed file quotas and live wall deadlines
2026-10-09 18:12:37 +08:00
Kronecker
9394a914f8
feat(sandbox): bind managed requests to pinned runtime identities
2026-10-09 17:49:30 +08:00
Kronecker
1dd6d1f971
feat(sandbox): add immutable Python and Java execution profiles
2026-10-09 17:02:27 +08:00
Kronecker
53caafc157
feat(coordinator): dispatch versioned runtime leases and reports
2026-10-09 15:18:08 +08:00
Kronecker
4b8f255180
feat(judging): persist immutable per-language problem configurations
2026-10-09 14:53:09 +08:00
Kronecker
a5a7e40308
feat(contracts): add versioned multi-runtime judging contracts
2026-10-09 14:15:24 +08:00
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
Kronecker
9fa25189a2
feat(frontend): establish shared components and blue page layouts
...
Add reusable headings, panels, tables, charts, pagination and explicit preview fixtures.
Apply the shared blue theme, responsive top navigation and Chinese UI locale.
2026-10-05 01:48:53 +08:00
Kronecker
720c69a198
chore(frontend): configure UI dependencies and Vue linting
...
Pin icon components, Monaco Editor and TagCanvas modules in the lockfile.
Let TypeScript validate identifiers in Vue script setup.
2026-10-05 01:48:51 +08:00
Kronecker
b5b286c44f
chore(workspace): bootstrap platform, judge and frontend
2026-10-04 15:46:49 +08:00
Kronecker
ad35f52960
Initial commit
2026-09-23 14:10:43 +08:00