Repository navigation
feat(fixture): prepare native ask seed and no-read-mutation checks - #6301
Conversation
agent-identity: agent/dotfiles/fractal-product-lead agent-persona: generalist agent-supervisor: unavailable agent-tool: OMP agent-tool-version: 18.12.5 agent-runtime: OMP 18.12.5 agent-model: openai-codex/gpt-6.1-sol
agent-identity: agent/dotfiles/fractal-product-lead agent-persona: generalist agent-supervisor: unavailable agent-tool: OMP agent-tool-version: 18.12.5 agent-runtime: OMP 18.12.5 agent-model: openai-codex/gpt-6.1-sol
agent-identity: agent/dotfiles/fractal-product-lead agent-persona: generalist agent-supervisor: unavailable agent-tool: OMP agent-tool-version: 18.12.5 agent-runtime: OMP 18.12.5 agent-model: openai-codex/gpt-6.1-sol
|
Python unit-test receipt at exact head 1b73995:
Exit 0: 7 tests ran, 7 PASS, 0 failures/errors, 0.005 seconds. This includes the original five tests and two additional reviewed regression tests (exact migration receipt bytes; pre-creation read-position refusal). The test-only signed correction pins the Unix socket fixture to a short temporary directory and removes the dangling alias before rmdir. seed.py was unchanged by that test-only commit. No old-head pass is claimed, and no live seed/setup ran. Posted on behalf of @schickling
|
agent-identity: agent/dotfiles/fractal-product-lead agent-persona: generalist agent-supervisor: unavailable agent-tool: OMP agent-tool-version: 18.12.5 agent-runtime: OMP 18.12.5 agent-model: openai-codex/gpt-6.1-sol
|
Signed append-only head: 343e2bd. Common immutable setup/seed/evidence packet now encodes initially unseen and unmutated E1/E2/E3, fresh-before-enrollment profiles retained across journeys, three-class local diffs, safe TUI helper export, canonical device fingerprint and authoritative daemon-verified receipt/enrollment correlation. Manifest SHA-256: d50f3c8d9a7e460d1c84f68dc4373af43e0029f7c80102fe304676393405f017. Exact-head local Python receipt: Posted on behalf of @schickling
|
agent-identity: agent/dotfiles/fractal-product-lead agent-persona: generalist agent-supervisor: unavailable agent-tool: OMP agent-tool-version: 18.12.5 agent-runtime: OMP 18.12.5 agent-model: openai-codex/gpt-6.1-sol
|
Required P1/P2 corrections are signed append-only at dadb146. All source placeholders resolve from concrete fixture/enrollment record values with capture provenance; resolved names and substitutions are frozen by the run policy SHA. Snapshot refuses unresolved <...> anywhere. Opaque expected-churn storage must be exported through a supported read-only JSON path: policy compilation and capture refuse raw opaque churn. Missing export support keeps baseline OPEN, never silently passes. TUI feed cache/drafts/glasses/prefs remain concrete JSON churn, not identity exemptions. Exact-head receipt: Posted on behalf of @schickling
|
|
Fractal Product Lead (owner): source GO for the client-control fixture packet commits at dadb146 (343e2bd plus dadb146). Checked against the E1-E3 rulings:
Teardown is human-only and uses Receipt from the author: Python Conditions: this PR is stacked on #6281 (bf860c1, which touches crates/smallclaims, my hold). #6281 needs its own GO and lands alone first; #6301's Rust parts are covered by #6281's test ticket. Posted on behalf of @schickling
|
agent-identity: agent/dotfiles/fractal-product-lead agent-persona: generalist agent-supervisor: unavailable agent-tool: OMP agent-tool-version: 18.12.5 agent-runtime: OMP 18.12.5 agent-model: openai-codex/gpt-6.1-sol
|
Test-only signed append head529f328841baf405b25bc0d0aac9d5c14e3fb5a2: every TemporaryDirectory now chooses a short canonical base using Path("/tmp").resolve(). No production path or symlink guard changed. Exact-head command Posted on behalf of @schickling
|
|
Fractal Product Lead: source GO extended to 529f328 (one signed commit on dadb146). The delta touches test files only (5 test_*.py files, 13 lines): every Author receipt (not rerun by me):
Independent macOS review of dadb146: 40/40 PASS with TMPDIR=/private/tmp. The portability defect seen with the default macOS temp root is addressed by this commit. The conditions from the earlier GO are unchanged: #6281 lands alone first. Posted on behalf of @schickling
|
Problem
Fixture journeys need one predictable native ask and independent before/after state evidence, without normal-instance access or invented unread state.
Goal
Source-only seed/check tooling using the shipped CLI and exact fixture operator socket. No setup or apply is performed.
Decisions
Validate title/question as printable ASCII, 1–60 characters, no Markdown or JSON and normalized whitespace. Seed requires an empty fixture attention inbox and creates one feedback request with fixed question client-control fixture 0001 from the fixture producer to person/client-control-fixture. Independently derive the instance root and admit only its existing nonsymlink run/fractal.sock; reject normal, other-instance and paired-client sockets with no discovery/fallback. Actor checks remain the shipped CLI authority.
The check is named no-read-mutation. It requires one open person-step/request projection plus its unique bound work.person-asked claim. Read all paginated claims, reject ask read/acknowledge/answer/close/termination and durable read-position records, print claim IDs and body SHA-256, and compare saved before/after receipts. Native asks have no stored unread bit or supported mailbox read-position readback; output explicitly says not-supported-for-native-asks. Coverage is daemon attention and durable claims, not browser-local storage.
Verification
Added plain-text boundary, socket allow/deny/symlink/no-effect and no-read-mutation unit tests. Unit tests NOT RUN yet. No live run. Exact-head Rust checks for the parent stack are separately queued, one ticket per head.
Complexity
One dependency-free Python script with two subcommands; existing CLI protocol and claims only.
Concerns
Seed is effectful and requires separate setup authorization before use. Script publication does not grant effects or create fixture identities. The before/after packet must preserve and pass the printed baseline JSON. Stacked after #6281.
Friction & bottlenecks
No stored unread bit exists for native asks; the check deliberately does not synthesize one. Shared build admission limits parent proof execution.
Follow-ups
Setup/apply and all live journeys remain behind their existing gates.
References
See #6281 for the shared fixture path/network boundary. Browser-only #6275 is parked pending admission for its Playwright proof.
Posted on behalf of @schickling
agent_identitysessionagent_personaagent_supervisoragent_toolagent_tool_versionagent_runtimeagent_modelworktree