Commit Graph

21 Commits

Author SHA1 Message Date
Tianyi Cui
cfceb8452b subagent: seed inherited policy events at creation
The parent implementation introduced sandboxMode and approvalPolicy as generic SessionHeader fields, then propagated those fields through both persistence backends, session-query indexes, collision checks, policy-specific seed-boundary folds, catalogs, and a broad test matrix. That storage plane is unnecessary: Session already accepts a validated constructor seed, and persistence captures that seed when the session is announced before committing its first batch.

Capture each parent override synchronously at delegation, append source-tagged sandbox/mode and approval/policy records after the optional fork prefix, and create the child with that combined seed. Keeping header.seedLength at the original fork-prefix length preserves lineage while ordinary last-event-wins folds make the inherited records outrank stale parent history and remain subordinate to later child switches. Unswitched parents still stamp nothing, so children continue to follow deployment defaults.

Remove the generic header fields and every persistence/query/schema branch built around them. Collapse the inheritance suite from ten leaking scenarios to four owned-context cases covering real filesystem confinement, stale fork precedence, delegation-time capture, and the no-override path. The assembled headless snapshot now asserts the persisted inheritance event directly.

This keeps the security behavior while restoring policy ownership to the existing event log and deleting the speculative durability machinery that the original tests did not exercise.
2026-07-28 21:31:17 +08:00
kingwl
bb16256782 refactor(session-query): share the header column bindings between both inserts
The baseline columns pushed the two INSERT binding lists past the clone
threshold; one _headerBindings helper now owns the shared header prefix
(the duplication gate's finding).
2026-07-27 18:57:03 +08:00
kingwl
9aaa4a871f policy: reject out-of-range seed boundaries; carry baselines through session-query
Review fixes (ds-review-bot on #623):

- overrideOf (both knobs) rejects a seedLength past the log end before
  slicing: a malformed durable boundary would otherwise empty the
  own-switch slice until the log outgrew it, letting a wide baseline
  shadow a REAL later tightening. Malformed durable metadata fails loud,
  never open.
- The session-query derived index carries the two baseline fields end to
  end: schema columns on both session tables (SESSION_QUERY_SQLITE_SCHEMA
  _VERSION 6 — derived, rebuilds in place), inserts, header selects, the
  candidates CTE, rowHeader, sameHeader, and the cross-source
  assertSessionHeadersCompatible — so a search hit's header keeps the
  child's inherited confinement and conflicting live/persisted baselines
  reject.

Red-first: out-of-range seedLength tests in both policy suites;
baseline round-trip and live/persisted baseline-conflict tests in the
session-query sqlite suite.
2026-07-26 23:31:01 +08:00
Hypatia May
224e00b2bd fix: quiesce cancelled session reconciliation 2026-07-24 21:27:07 +08:00
Hypatia May
66585635c8 fix: serialize paginated session searches 2026-07-24 19:47:23 +08:00
Hypatia May
6be11539e2 fix: bind session authorization to observations 2026-07-24 16:40:08 +08:00
Hypatia May
712c84f06f fix(session-query): validate before service registration 2026-07-23 21:48:12 +08:00
Hypatia May
9482affc48 fix(session-query): make persisted observation non-mutating 2026-07-23 21:33:28 +08:00
Hypatia May
d24a875c5d fix(session-query): protect live reconciliation 2026-07-23 20:50:29 +08:00
Hypatia May
1c6d26c44d fix(session-query): fail mount when index open fails 2026-07-23 20:32:51 +08:00
Hypatia May
1e457b22e0 refactor(session-query): unify query service 2026-07-23 20:18:05 +08:00
Hypatia May
a2a89bf300 fix(session-query): protect derived index permissions 2026-07-23 19:36:05 +08:00
Hypatia May
0a0f19cf57 Merge remote-tracking branch 'origin/master' into session-query-search
# Conflicts:
#	.agents/notes/implemented/feature/2026-07-10-session-query-service.md
#	.agents/notes/implemented/feature/2026-07-10-sqlite-session-query-provider.md
#	.agents/notes/proposed/feature/2026-07-10-sqlite-session-query-provider.md
#	docs/architecture.md
#	docs/capability-seams.md
#	docs/config-catalog.md
#	docs/cordis-catalog/services.md
#	docs/core-data-structures/core.md
#	docs/core-data-structures/persistence.md
#	docs/core-data-structures/session-query.md
#	docs/module-graph.md
#	docs/rfc/INDEX.md
#	packages/README.md
#	packages/cordis/tool-cordis/src/api-catalog.ts
#	packages/hooks/hooks-claude/tests/coverage.spec.ts
#	packages/session-persistence/session-persistence-jsonl/src/index.ts
#	packages/session-persistence/session-persistence-jsonl/tests/jsonl.spec.ts
#	packages/session-persistence/session-persistence-sqlite/README.md
#	packages/session-persistence/session-persistence-sqlite/src/index.ts
#	packages/session-persistence/session-persistence-sqlite/src/schema.ts
#	packages/session-persistence/session-persistence-sqlite/tests/sqlite.spec.ts
#	packages/session-persistence/session-persistence/README.md
#	packages/session-persistence/session-persistence/package.json
#	packages/session-query/README.md
#	packages/session-query/session-query/README.md
#	packages/session-query/session-query/package.json
#	packages/session-query/session-query/src/config.ts
#	packages/session-query/session-query/src/index.ts
#	packages/session-query/session-query/src/types.ts
#	pnpm-lock.yaml
#	scripts/gen-doc-graphs.ts
#	scripts/type-equiv.manifest.json
#	tsconfig.host.json
#	tsconfig.json
2026-07-23 13:56:56 +08:00
Hypatia May
e8abfd6482 fix(session-query): guard FTS predicate planning (round 7) 2026-07-17 11:13:03 +08:00
Hypatia May
f401528941 fix(session-query): preflight SQLite bindings (round 6) 2026-07-17 10:29:49 +08:00
Hypatia May
220076e5e2 fix(session-query): preserve typed query failures (round 5) 2026-07-17 10:15:48 +08:00
Hypatia May
75e9958f11 fix(session-query): close review edge cases (round 4) 2026-07-17 09:39:39 +08:00
Hypatia May
de863aab9a fix(session-query): release stale persistence binding (round 2) 2026-07-16 14:04:49 +08:00
Hypatia May
4505c6c55a refactor(session-query): simplify persistence binding (round 1) 2026-07-16 13:55:23 +08:00
Hypatia May
f88ca85ffd fix(session-query): harden SQLite search reconciliation 2026-07-15 12:10:24 +08:00
Hypatia May
ecf90ff382 feat(session-query): add SQLite full-text search 2026-07-15 10:51:38 +08:00