Bläddra i källkod

docs(release): RELEASE_NOTES — v1.0.0-rc2 increment

Tag follows in `git tag -a v1.0.0-rc2 ...` (next op, kept out of this
commit so the message isn't self-referential).

5 post-rc1 commits closed 14 more audit findings:
  5e4688b  docs/agentpaas.md + SPEC.md alignment (#74 #75)
  c764d11  physics67 escape fix + gitignore defense
  c641f34  security batch (#14 #24 #25 #26 #27 #28 #30 #32 + #90 顺手)
  e2332cd  test gap batch (#34 #35 #36)
  本 commit  RELEASE_NOTES entry

Cumulative audit: 28/84 closed (7/7 critical + 22/33 high + 1+1).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
kenny67nju 3 månader sedan
förälder
incheckning
1fe6df6fdb
1 ändrade filer med 98 tillägg och 0 borttagningar
  1. 98 0
      RELEASE_NOTES.md

+ 98 - 0
RELEASE_NOTES.md

@@ -1,5 +1,103 @@
 # Release Notes
 
+## v1.0.0-rc2 — 2026-06-07
+
+Second release candidate. Five post-rc1 commits closing **14 more audit
+findings** ([`docs/AUDIT_2026-06-05.md`](docs/AUDIT_2026-06-05.md))
+without changing the v1.0 surface or behavior contract. No migration
+needed from `v1.0.0-rc1` — `git pull` + restart.
+
+### Highlights
+
+- **Security batch (8 high)** — closed 8 attack surfaces with 1-10 line
+  fixes, each with a regression test in the new integration suite.
+- **Test coverage (3 high)** — added 25 tests across authenticate(),
+  rag.py, and instance-DB persistence; total tests at root `tests/`
+  now 132 (was 96), all green on Python 3.10 / 3.11 / 3.12.
+- **physics67 escape fix** — prevents the agent-write-to-repo-root
+  pattern uncovered in user audit; .gitignore defense in depth.
+- **Doc/spec alignment (2 high)** — `agentpaas/SPEC.md` stream URL +
+  response schema now match code; `docs/agentpaas.md` architecture
+  diagram corrected for the src-layout move.
+
+### Audit findings closed in rc2
+
+- `5e4688b` — `docs/agentpaas.md` architecture path (post src-layout)
+  + `agentpaas/SPEC.md` §3.3.1 response schema (#74 #75)
+- `c764d11` — physics67 sub-agent prompts forced to absolute paths
+  + .gitignore defense for stage-name escape patterns (root cause for
+  the `03_analysis/` and `nh_qgt/` write-escape bugs)
+- `c641f34` — **security batch**:
+    - `#14` `rollback_agent` RBAC + audit_log + tenant scope on version SELECT
+    - `#24` dev `docker-compose.yml` master-key fail-fast (was static
+      `dev_auto_generated` fallback)
+    - `#25` rate-limit middleware: unauth → per-IP bucket (was silent
+      bypass `if not api_key: return await call_next(request)`)
+    - `#26` `/analyze/*` router: `Depends(get_tenant)` + 256 KB body
+      cap (closes audit low `#90` billion-laughs DoS for free)
+    - `#27` `/knowledge/{kb_id}/files`: `kb_root` containment check
+      via resolved-path `startswith(kb_root + os.sep)`
+    - `#28` `/jobs/{job_id}` IDOR: tenant ownership check; 404 not 403
+      to defeat the id oracle
+    - `#30` `_build_kb_context`: per-kb SELECT now scoped by tenant_id
+      so runtime can't fan out over another tenant's KBs
+    - `#32` Dockerfile: `USER appuser` (UID 10001) instead of root
+- `e2332cd` — **test gap batch**:
+    - `#34` `tests/test_authenticate.py` (NEW, 9 tests including the
+      headline SEC-01 legacy→PBKDF2 auto-migration assertion)
+    - `#35` `tests/test_rag.py` (NEW, 8 tests; covers
+      SimpleVectorStore + RAGTool + create_rag deterministic ranking)
+    - `#36` `tests/test_instance.py +3` tests covering the
+      `agents.agent_template` / `agents.instance_dir` DB columns
+
+### Side fixes
+
+- `agentpaas/db/models.py` migration loop now skips ALTERs against
+  tables that don't yet exist (caught when running against fresh
+  `:memory:` SQLite — silently broken in `_init_tables` order
+  pre-rc2; production hid this because the DB persists across boots).
+- `Chat.tsx` rate-limit-aware: `/cancel` POST is now permanently
+  exempt from rate limiting (user-flagged: clicking Stop on a
+  runaway iterate run would get 429'd through the polling burst).
+
+### Cumulative audit progress
+
+```
+critical: 7/7   ✓ (100%)
+high:     22/33    (67%)
+medium:    1/29
+low:       1/15
+─────────────
+TOTAL:    28/84 = 33% closed
+```
+
+### Out of scope for rc2 (and rc-line in general)
+
+The remaining 11 high findings cluster into multi-week refactors —
+not fit for rc patches:
+
+- 4 parallel beta-reduction interpreters (audit `#20`)
+- `compiler.py` god-module 1654 LOC split (audit `#21`)
+- Compiler → Runtime layer violation (audit `#19`)
+- Module-global `_shell_set_cwd` concurrency race (audit `#11`)
+- Single shared SQLite connection (audit `#13`)
+- `qaagent67lambda` template hardcoded `/home/67/...` (audit `#16`)
+- `qaagent67lambda` `pickle.load` on shared knowledge dir (audit `#17`)
+- React error boundary missing (audit `#22`)
+- Chat history setState race (audit `#23`)
+- README "11 constructs" vs YAML supporting 5 (audit `#40`)
+- `lambdagent_guard` MIT vs lambdagent BUSL license conflict (audit `#44`)
+
+These move to GitHub issues and target `v1.1`. The release-candidate
+line is closed for new feature work.
+
+### Migration from rc1
+
+None. Same SQLite schema, same routes, same wire format. Restart the
+service after `git pull` to pick up the rate-limit + auth changes.
+
+---
+
 ## v1.0.0-rc1 — 2026-06-06
 
 First public release candidate of **lambdagentpaas** — a full-stack platform