weichen
9141741b78
merge: candidate auth-register-internal-2026-09-28 into dev
2026-09-28 01:12:57 +00:00
weichen
e1d6a2c192
docs(task): record auth register INTERNAL fix and test evidence
2026-09-28 01:12:14 +00:00
weichen
88b7c11a23
fix(auth): reseed standard roles and reject duplicate usernames as 400
...
Registration always writes role-guest; a deleted standard role became a masked INTERNAL. Username unique violations are now a 400 instead of an infrastructure 500.
2026-09-28 01:12:07 +00:00
weichen
4ba60c2c9d
merge: candidate restore-admin-password-reset-2026-09-28 into dev
2026-09-28 00:57:01 +00:00
weichen
e1f2c9c57f
docs(current): mark password-reset restore done
...
The UI candidate is already on local dev; record the five-state closeout.
2026-09-28 00:56:49 +00:00
weichen
04d7fec493
merge: candidate restore-admin-password-reset-2026-09-28 into dev
2026-09-28 00:51:41 +00:00
weichen
90e146e424
docs(task): record admin password reset UI restore
...
Capture the F4-A mis-delete, the dev UI probe, and the CURRENT claim.
2026-09-28 00:51:25 +00:00
weichen
f0ecc4c996
fix(web): restore admin password reset in user governance
...
T20-F4-A removed the working reset button after the F4-B endpoint was already live. Restore the entry so admins can issue a one-time random temp password.
2026-09-28 00:44:41 +00:00
weichen
912957c44e
merge: candidate docker-context-gitkeep closeout into dev
2026-09-27 21:13:13 +00:00
weichen
ec7148175b
docs(task): close docker-context-gitkeep ( e40a9989 verified by real image build, merged as 5e409c1e)
2026-09-27 21:13:04 +00:00
weichen
b35ea39a95
merge: candidate promote-rc-beta4-2026-09-27 receipts into dev
2026-09-27 21:12:44 +00:00
weichen
a6acdcb30b
merge: candidate test-single-binary-2026-09-27 closeout into dev
2026-09-27 21:12:12 +00:00
weichen
c20c8aa7ab
docs(current): mark test-single-binary-2026-09-27 done (receipt test-single-binary-2026-09-27-state-2)
2026-09-27 21:11:22 +00:00
weichen
8b3da0d297
docs(promote): rc-v1.1.0-beta.4 receipts, evidence and promote record
...
- PASS receipt 5e409c1e + images manifest + nightly evidence (five real-PI chains)
- recovered archive of nightly6 @94c215d3 process evidence (original dir lost in
staging move; full original log preserved, README documents the loss)
- task record for the promotion (candidate 2fe1e055 , tag, images apply)
2026-09-27 21:11:07 +00:00
weichen
912342ae0a
docs(test): rc-v1.1.0-beta.4 promotion + test single-binary report; fix launcher env mapping
...
- migrate-test-db.sh: export DEV_PG_CONTAINER (inner script reads it, not CONTAINER)
- launch-single.sh: SYSTEM_DB_* must override root-.env CONTEXT_DB_* (set -a
re-source clobbers both external exports and :- fallbacks; two misdirected
launches audited, dev DB unchanged - report §5.8-3)
- task record done; full test report (nightly five chains PASS @5e409c1e,
migration S0-verified, deployment acceptance, rollback paths, follow-ups)
2026-09-27 21:10:16 +00:00
weichen
2fe1e05591
release-candidate: 汇集 dev 功能至 test(test 单二进制化配套脚本 + docker 上下文修复),准备长期实测 [Tag: rc-v1.1.0-beta.4]
2026-09-27 20:59:11 +00:00
weichen
22f7e7f3f7
docs(current): claim test-single-binary-2026-09-27 (docs apply receipt test-single-binary-2026-09-27-state-1)
2026-09-27 20:57:57 +00:00
weichen
5e409c1eb2
merge: candidate docker-context-gitkeep-2026-09-27 into dev
2026-09-27 18:35:32 +00:00
weichen
e40a9989ab
fix(deploy): keep web/dist/.gitkeep in docker context for go:embed
...
.dockerignore excluded the whole web/dist dir, breaking go-builder since
web/embed.go (all:dist) landed (6cbe7e6e ): candidate image builds failed
with "pattern all:dist: no matching files found". Re-include the tracked
.gitkeep only; runtime stays disk-dist via web-builder COPY (LookupDist
false -> disk fallback). Verified by a real candidate-images-build run.
2026-09-27 18:29:50 +00:00
weichen
94c215d36e
merge: candidate test-single-binary-2026-09-27 into dev
2026-09-27 16:21:34 +00:00
weichen
d91dafc1c4
feat(scripts): test env single-binary entrypoints (migrate-test-db, launch-single)
...
- migrate-test-db.sh: reuse parameterized migrate-dev-db.sh with test defaults
(container shuimu-system-pg-test -> localpg :5434, PGDATA=data/test/pg)
- launch-single.sh: non-dev single-binary launcher (SYSTEM_DB_*->CONTEXT_DB_*
mapping, env-scoped PI sidecar, no Vite); task record for dev->test rc
promotion + test conversion (rc-v1.1.0-beta.4)
2026-09-27 16:21:09 +00:00
weichen
05d45022b1
merge: candidate upload-doc-access-2026-09-27 closeout into dev
2026-09-27 08:10:14 +00:00
weichen
07845cfcee
docs(task): close out upload-doc-access (dev 86efba2c verified, E2E PASS, lesson added)
2026-09-27 08:10:05 +00:00
weichen
86efba2cd5
merge: candidate upload-doc-access-2026-09-27 into dev
2026-09-27 07:52:39 +00:00
weichen
307e9e6569
docs(current): claim upload-doc-access-2026-09-27 (docs apply receipt upload-doc-access-2026-09-27-state-1)
2026-09-27 07:45:36 +00:00
weichen
88e33282db
fix(freedoc): persist uploaded file metadata and text body server-side
...
上传文档跨端不可访问修复(ISSUE-20260927-upload-doc-cross-device):
- 迁移 00076:freeform_documents 增加 source_filename/mime/size_bytes/asset_id
- freedoc:Create/Get/List 读写源文件元数据,负值拒绝
- 前端:注册前全部附件先登记 CAS 并预读文本正文;文本正文嵌入注册
markdown;跨端恢复 sourceType/fileMeta 路由回文件预览器
- 大小显示 formatFileSize(<512B 不再显示 0 KB)
- E2E 新增 FS-UPLOAD-02 跨浏览器上下文可访问性用例
回归:go vet/arch-check/go test -short(隔离 PG)+ web npm test/build 全绿;
存量无元数据旧文档不可恢复(重新上传即可)。
2026-09-27 07:45:15 +00:00
weichen
a0e40919a7
merge: candidate frontend-demo-fallback-2026-09-27-r3 closeout into dev
2026-09-27 07:08:12 +00:00
weichen
9da300ae60
docs(task): finalize active-session residue closeout state
...
任务文档终态(done/merged/passed/cleanup done)、ISSUES 行 resolved
(dev 36c5fb54 复验证据)、CURRENT 置 done。
2026-09-27 07:08:05 +00:00
weichen
36c5fb549c
merge: candidate frontend-demo-fallback-2026-09-27-r3 into dev
2026-09-27 07:06:17 +00:00
weichen
083c63bb9c
docs(issue): register active-session residue issue and r3 task record
...
登记 ISSUE-20260927-active-session-residue(ISSUE-20260927-demo-fallback
修复残留路径);新增 r3 任务主记录(根因/同类排查/修复方案/验证证据);
CURRENT 登记 r3c 任务行。
2026-09-27 07:05:09 +00:00
weichen
739b8c56f9
fix(web): purge legacy demo sessionId residue from localStorage on read
...
旧前端曾把 demo fallback 值 sess-001 持久化到 active_session;一次性
purge 版本 key 已写不再清理,读取侧无校验导致老浏览器 + 无可见会话
账号首屏 4x chat 404。提取共享 LEGACY_DEMO_SESSION_IDS 常量,
loadActiveSessionId 命中即清除并返回 fallback(幂等),loadMessages
复用同一集合。
2026-09-27 07:05:05 +00:00
weichen
87db3621c6
merge: candidate frontend-demo-fallback-2026-09-27-r2 into dev
2026-09-27 03:15:24 +00:00
weichen
0648867921
docs(current): mark frontend-demo-fallback-2026-09-27-r2 done
2026-09-27 03:15:22 +00:00
weichen
41b9b8bc3d
merge: candidate frontend-demo-fallback-2026-09-27-r2 into dev
2026-09-27 03:14:56 +00:00
weichen
20b68d6a23
docs(task): finalize frontend-demo-fallback closeout state
2026-09-27 03:14:53 +00:00
weichen
0de657f09c
merge: candidate frontend-demo-fallback-2026-09-27-r2 into dev
2026-09-27 03:11:32 +00:00
weichen
db038aa7a7
fix(web): stop phantom demo-fallback requests in seeds-off mode
...
App.tsx hardcoded fallbacks (active session "sess-001", projectId 1) sent
requests for nonexistent resources on fresh logins against real dev data,
producing 7+ console 404/403 hits. Fallbacks now resolve to empty/0; the
existing chatBlockedNoProject empty state and session-reconciliation effect
carry the UI, and demo-seeds-enabled builds keep the NEUROPULSE fallback.
Root cause, same-class scan, and before/after browser evidence (9 phantom
requests -> 0, author+member accounts) recorded in the task doc; ISSUES row
ISSUE-20260927-demo-fallback registered.
2026-09-27 03:09:37 +00:00
weichen
56928ac206
merge: candidate full-system-browser-e2e-2026-09-26 into dev
2026-09-26 09:28:00 +00:00
weichen
a9d79b99b8
docs(test): audit-friendly E2E report with retained login credentials
2026-09-26 07:58:47 +00:00
weichen
7ab7d572b9
docs(test): e2e ledger after reject portal fix
2026-09-26 07:48:36 +00:00
weichen
887a75c1b1
fix(web): portal reject modal above stacking context
2026-09-26 07:48:30 +00:00
weichen
157ec407e2
docs(test): full-system browser e2e re-run ledger
2026-09-26 07:29:34 +00:00
weichen
7513ce61ed
fix(web): member drafting edit + reject await + expand right rail
2026-09-26 07:29:27 +00:00
weichen
7555818753
docs(test): FINAL full-system browser E2E report after pending heal
2026-09-26 05:14:11 +00:00
weichen
323088c4bd
docs(test): add playwright log for full-system e2e rerun
2026-09-26 04:31:01 +00:00
weichen
ccce44dfc0
fix(chat): heal task bubble pending after completed run
2026-09-26 04:30:38 +00:00
weichen
a5ca6fdcfd
test(e2e): document PI UI pending mismatch and raise suite timeout
2026-09-26 04:12:33 +00:00
weichen
466426a58f
test(e2e): full-system browser multi-user acceptance
2026-09-26 03:48:34 +00:00
weichen
4873c5e8b9
test(e2e): full-system browser multi-user acceptance
2026-09-26 03:28:34 +00:00
weichen
078eb4fcf0
test(e2e): full-system browser multi-user acceptance
2026-09-26 03:23:35 +00:00
weichen
09cc76eb8d
merge: candidate sysadmin-maturity-refresh-2026-09-26 into dev
2026-09-26 02:46:15 +00:00
weichen
9ff489546c
docs: sysadmin maturity refresh closeout (results, current claim done)
2026-09-26 02:46:10 +00:00
weichen
1d82ed8823
merge: candidate sysadmin-maturity-refresh-2026-09-26 into dev
2026-09-26 02:45:12 +00:00
weichen
d537778b60
fix(sysadmin): refresh feature maturity catalog to post-rollout wiring facts
...
The static adapter catalog still read I2-era states (degraded/shadow) after
the 2026-09-26 dev rollout, so the admin features page showed 降级 for flags
already enabled. Update six entries to live+ready with evidence-dated
reasons (I2/I3/P8 acceptance, P8 per-key gates kept visible, shadow
visibility digest now persisted, REPLACE wildcard wiring, PI narrative dev
rollout); keep FAV red lines untouched. Tests updated; FAV now carries the
configured-value-must-not-imply-readiness assertion.
2026-09-26 02:45:05 +00:00
weichen
1d13a892fc
merge: candidate degraded-flags-enable-2026-09-26-r4 into dev
2026-09-26 02:39:09 +00:00
weichen
4e7f84111d
docs: degraded-flags-enable closeout (task record, dev runtime test report, matrix notes, current claim)
2026-09-26 02:39:05 +00:00
weichen
6b31718138
merge: candidate degraded-flags-enable-2026-09-26-r4 into dev
2026-09-26 02:29:36 +00:00
weichen
e9c0281404
feat(ctxmgr): wildcard session allowlist for semantic replace rollout
...
- SEMANTIC_SUMMARY_REPLACE_SESSIONS supports * (all sessions, present and
future), mirroring INTENT_PLAN_PROJECT_ALLOWLIST; empty allowlist still
replaces nothing (fail-closed defense in depth unchanged)
- declare SEMANTIC_SUMMARY_REPLACE(_SESSIONS) in dev/test/main compose app
env (stale Wave2 "REPLACE unwired" comment fixed); extend A-4 declaration
test; .env.example key docs updated
- sysadmin feature catalog: SESSIONS description + REPLACE reason note *
Prepares dev degraded-flags enable (task degraded-flags-enable-2026-09-26-r4):
user-authorized all-session replace, plan tier confirm, shadow summary, PI
change-report narrative; env ops and runtime verification follow.
2026-09-26 02:29:29 +00:00
weichen
66ea4e3e51
merge: candidate deploy-record into dev
2026-09-26 02:15:20 +00:00
weichen
c9e2263325
docs: record review-fixes deployment verification (dev 1ceda34c live IDOR probe)
2026-09-26 02:15:11 +00:00
weichen
1ceda34c43
merge: candidate integrate-review-fixes (report + P0/P1 fixes) into dev
2026-09-26 02:08:50 +00:00
weichen
467e64574f
docs: closeout review report + fix task records for batch integration
2026-09-26 02:07:45 +00:00
weichen
438fdc8686
merge: system code review report into dev
...
# Conflicts:
# .doc/ops/CURRENT.md
2026-09-26 02:06:58 +00:00
weichen
dfd9c420d3
docs(current): pre-align claim table for review-report merge (docs apply @document)
2026-09-26 02:06:02 +00:00
weichen
fb376c0ea0
merge: candidate system-review-p0-p1-fixes into dev
2026-09-26 02:02:42 +00:00
weichen
ea66f4456f
docs: review P0/P1 fix records, ISSUES ledger, lesson, task claim
...
- remediation master record for 5 resolved + 1 deferred + 1 open issues
- ISSUES.md rows with evidence dates and lesson links
- LESSON-20260926-failclosed-bypass-contract (validated)
- remediation/lessons INDEX hooks + CURRENT task row (docs apply receipt)
2026-09-26 02:00:24 +00:00
weichen
6a3a0dc201
fix(security): harden bypass authz, gate blind spot, command exec, validated_only (review P0/P1)
...
- FIND-SEC-01: GetUserContext requires session ownership (handler 403 +
SQL/memory owner filter); in-memory HTTP + isolated-PG regressions
- FIND-ARCH-01: archtest fails closed on untracked table writes (+noise
exemption) and registers 50 existing writer tables in table_owners
- FIND-SEC-02: Authorizer without pool denies by default; explicit
NewInMemoryAuthorizer seam opt-in via ALLOW_IN_MEMORY at composition
- FIND-SEC-03: swboot commands run argv-exec (no sh -c) with exact
basename allowlist match; prefix-spoof and no-shell-eval tests
- FIND-FLOW-01: confirm rejects validated_only plans; ExecuteClaimed
hard-refuses validated_only steps (new error codes + HTTP mapping)
- FIND-QUAL-01: intentflow.ValidateFlagConsistency fail-fast at Assemble
2026-09-26 02:00:14 +00:00
weichen
b6e382e58f
docs(ops): 标记 system-code-review 认领为 done
2026-09-26 01:34:08 +00:00
weichen
c7e9ec0a26
docs(audit): 系统全面 code review 报告(仅分析不修复)
...
记录 tip f4c1b73f 上架构/安全/可维护性/关键路径审查结论;不实施代码修复。
2026-09-26 01:33:41 +00:00
weichen
f4c1b73f28
merge: candidate swboot-closeout-2026-09-26-r3 into dev
2026-09-26 01:09:32 +00:00
weichen
f697420db8
docs(status): promote workflow-swboot to done — SWBOOT-10 executor + L5/L6 verified
2026-09-26 01:09:20 +00:00
weichen
7c7a08a3ca
docs(test): swboot closeout evidence — executor e2e, L5 live PI, L6 playwright wizard
2026-09-26 01:08:51 +00:00
weichen
86e0cf46c6
merge: candidate swboot-closeout-2026-09-26-r2 into dev
2026-09-26 01:00:51 +00:00
weichen
a52816299d
fix(server): read bound repo from project_source_bindings.source_ref
2026-09-26 01:00:37 +00:00
weichen
70f3028cdb
merge: candidate swboot-closeout-2026-09-26-r2 into dev
2026-09-26 00:59:21 +00:00
weichen
f394bb15f9
fix(projectworkflow): write repo binding into project_source_bindings.source_ref
2026-09-26 00:59:08 +00:00
weichen
4965e74d66
merge: candidate swboot-closeout-2026-09-26-r2 into dev
2026-09-26 00:57:11 +00:00
weichen
83561682eb
feat(swboot): wire SWBOOT-10 controlled patch executor (fail-closed)
...
DB-backed repo_path_allowlist reader (deny-all until admin seeds), per-prefix
admin test_commands (goose 00075), execution evidence table (goose 00074),
isolated git-worktree patch executor with command allowlist/time/output caps
and failure-stops evidence; controlled_patch creation/preview unlocked only
with an allowlisted repo binding (projectworkflow gate + catalog flag);
creator-only server endpoints for bindings/executions; merge/push/deploy stay
behind a typed separate-authorization boundary. Module boundary: app->swboot
composition import registered.
2026-09-26 00:56:59 +00:00
weichen
d0f3f76f7e
merge: candidate rdev-p3-rerun-2026-09-26-r4 into dev
2026-09-26 00:43:04 +00:00
weichen
88e9b8bade
docs(test): archive P3 rerun console log (rename out of ignored *.log)
2026-09-26 00:43:00 +00:00
weichen
09e4c08f28
merge: candidate rdev-p3-rerun-2026-09-26-r3 into dev
2026-09-26 00:42:20 +00:00
weichen
c9d94545f8
docs(status): promote workflow-rdev to done — P3 real-PI rerun all-pass
2026-09-26 00:42:09 +00:00
weichen
68d29ef04e
docs(test): rdev P3 real-PI rerun all-pass; register docgov approval-chain issues
2026-09-26 00:41:47 +00:00
weichen
5d5cd5fd6d
merge: candidate rdev-p3-rerun-2026-09-26-r3 into dev
2026-09-26 00:25:12 +00:00
weichen
dc26321bab
fix(docgov): join ambient uow in persistApproveAndFAV to avoid row-lock deadlock
...
docflow Commands.run takes SELECT ... FOR UPDATE on document_records inside
its unit of work before calling ApproverApprove; persistApproveAndFAV then
opened a second pool connection and its UPDATE blocked on that row lock until
statement timeout (SQLSTATE 57014), failing every final approval. Join the
ambient uow scope (doc sync + FAV staging on the caller tx, commit owned by
the uow); only open an own tx when no scope is present. Regression test
reproduces the production shape (FOR UPDATE + FAV wiring inside Within).
2026-09-26 00:25:01 +00:00
weichen
6bd6e91606
merge: candidate rdev-p3-rerun-2026-09-26-r3 into dev
2026-09-26 00:22:20 +00:00
weichen
043c66ccfb
chore(server): log docgov approver decision failures (envelope redacts internals)
2026-09-26 00:22:15 +00:00
weichen
121b33f8ed
merge: candidate rdev-p3-rerun-2026-09-26-r2 into dev
2026-09-26 00:16:08 +00:00
weichen
bf3136490d
fix(docgov): load review_snapshot_id when reading document records from PG
...
loadDocumentFromDBLocked selected every column except review_snapshot_id,
so any document loaded after a restart or cache miss lost its frozen review
snapshot and ApproverApprove failed with "approved requires frozen
review_snapshot_id". PG regression test seeds a snapshot and asserts a
fresh engine carries the id through load.
2026-09-26 00:15:56 +00:00
weichen
a6d25afa27
merge: candidate chat-semantic-replace-2026-09-26 into dev
2026-09-25 23:24:55 +00:00
weichen
53d2731849
docs(status): promote chat-semantic-replace to done — fail-closed gray wiring verified
2026-09-25 23:24:45 +00:00
weichen
e2cfd88ac0
docs(test): semantic REPLACE fail-closed gray wiring evidence (unit + dev runtime ladder)
2026-09-25 23:24:33 +00:00
weichen
6004494e21
merge: candidate chat-semantic-replace-2026-09-26 into dev
2026-09-25 23:14:16 +00:00
weichen
aee774b894
fix(ctxmgr): keep displaced deterministic narrative for rollback-safe replace
...
Runtime verification found the deterministic generator merges the prior
served narrative, so a replaced (semantic) narrative would linger after
rollback. Store the displaced deterministic narrative in the shadow report
(persisted via shadow_json) and merge that instead when the prior summary
source is semantic_replace.
2026-09-25 23:14:07 +00:00
weichen
cd1f846f49
merge: candidate chat-semantic-replace-2026-09-26 into dev
2026-09-25 22:56:45 +00:00
weichen
ffa41d78df
feat(ctxmgr): wire fail-closed gray REPLACE for chat semantic narrative
...
Unseal SEMANTIC_SUMMARY_REPLACE under explicit user authorization with a
defense-in-depth session allowlist (SEMANTIC_SUMMARY_REPLACE_SESSIONS):
swap happens only for allowlisted sessions after result digests and served
watermark validation, bounded narrative size; facts/counts stay deterministic
and the daily digest stays advisory. Master flag alone replaces nothing.
2026-09-25 22:56:36 +00:00
weichen
4d5d695c75
merge: candidate jevdecide-soak-2026-09-26 into dev
2026-09-25 22:51:03 +00:00
weichen
cbf96ebbe5
docs(status): promote jevdecide-shadow to done — 200-turn soak converged
2026-09-25 22:50:54 +00:00
weichen
96013db9aa
docs(test): jevdecide assist soak >=200 turns with 94% handled rate evidence
2026-09-25 22:50:33 +00:00
weichen
c373d6fbc0
merge: candidate dialogue-ctx-closeout-2026-09-26-r4 into dev
2026-09-25 21:43:41 +00:00