Skip to content

fabric: accept both fleet adapter owners during recovery and revocation - #4623

Merged
schickling-assistant merged 7 commits into
mainfrom
schickling-assistant/2026-11-01-valiant-curie-3
Nov 2, 2026
Merged

schickling-assistant merged 7 commits into
mainfrom
schickling-assistant/2026-11-01-valiant-curie-3

Conversation

@schickling-assistant

Copy link
Copy Markdown
Contributor

Problem

Renamed adapter-owner records were invisible to reconciliation, so removal or stale membership could strand authority under the other exact owner.

Goal

Reader-first compatibility for st/fleet/ and fractal/fleet/, without switching policy or permit producers.

Decisions

Recognize both exact owner namespaces. Continue creating grants and permits only under the legacy owner. Existing renamed-owner authority can only be retained or reduced. Recover pending batches with their retained owner; legacy pairing journals default to the legacy owner and explicit retained owners are fleet-bound. Detect residual access across both service families; never grant PTY. Static and unrelated-owner contributions remain untouched. Declare the scan-discovered input conservatively.

Verification

Added mixed-owner removal/static-residual fixture, renamed-owner stale/re-key policy reduction and pending-batch fixtures, and retained-pairing-owner decoding fixture. Existing old-owner recovery fixtures remain intact. rust-test-inputs-scan passes at this head. Touched-crate tests and clippy are running; results will be recorded before handoff.

Complexity

No dependency or abstraction layer; reuse existing planning and durable batch recovery.

Concerns

Two owner-specific batches are necessarily separate Fabric publications, with existing durable recovery between them. No owner transfer, new grants, live rollout, binary rename, or PTY exposure change.

Friction & bottlenecks

The source-string scanner conservatively treats renamed protocol literals as a crate path, requiring an explicit test-input declaration. Branch commits preserve append-only history under repository policy.

Follow-ups

Writer and deployment gates remain outside this reader-only PR.

References

See #3032, #4424, #4429, #4439. Does not modify #3644.

Posted on behalf of @schickling
field value
agent_identity agent/dotfiles/fabric-mesh
session 01a1ecd5
agent_persona generalist
agent_supervisor unavailable
agent_tool OMP
agent_tool_version 18.12.5
agent_runtime OMP 18.12.5
agent_model anthropic/claude-opus-5-5
worktree fractal/2026-11-01-valiant-curie-3

…ation

agent-identity: agent/dotfiles/fabric-mesh
agent-persona: generalist
agent-supervisor: unavailable
agent-tool: OMP
agent-tool-version: 18.12.5
agent-runtime: OMP 18.12.5
agent-model: anthropic/claude-opus-5-5
agent-identity: agent/dotfiles/fabric-mesh
agent-persona: generalist
agent-supervisor: unavailable
agent-tool: OMP
agent-tool-version: 18.12.5
agent-runtime: OMP 18.12.5
agent-model: anthropic/claude-opus-5-5
@schickling-assistant

Copy link
Copy Markdown
Contributor Author

Verification update at f3c8df1: rust-test-inputs-scan passes. Adapter suite: 52 passed, including old/new owner recovery, revocation/residual and no-PTY fixtures. The combined reader integration worktree also passed terminal-direct 2 tests and TUI 667 tests (4 ignored), plus example 4 tests. Initial broad CLI integration: 940 passed, 22 failed, 17 ignored; controlled rerun of exactly those 22 with isolated routing/binary/actor environment: branch 21 passed, one fixture-author-hook failure; untouched origin/main 19 passed, three failed, including the same hook failure. No main-pass/branch-fail case in that matrix. Remaining daemon/kernel five initial failures passed in both focused baseline and branch comparisons. Warnings-denied clippy was attempted dependency-inclusive and --no-deps: blocked by unchanged drivers diagnostics and unchanged TUI diagnostics, respectively; no warning suppressed. These are exercised results, not an exact-head full green gate. Remains draft for independent review.

Posted on behalf of @schickling
field value
agent_identity agent/dotfiles/fabric-mesh
session 01a1ecd5
agent_persona generalist
agent_supervisor unavailable
agent_tool OMP
agent_tool_version 18.12.5
agent_runtime OMP 18.12.5
agent_model anthropic/claude-opus-5-5
worktree fractal/2026-11-01-valiant-curie-3

agent-identity: agent/dotfiles/fabric-mesh
agent-persona: generalist
agent-supervisor: unavailable
agent-tool: OMP
agent-tool-version: 18.12.5
agent-runtime: OMP 18.12.5
agent-model: anthropic/claude-opus-5-5
@schickling-assistant

Copy link
Copy Markdown
Contributor Author

Independent-review correction at 87518e0, after normal merge of origin/main 0a6957b (no rebase/force push): renamed-owner recovered batches are observation-only unless every operation is remove_peer. No recovered add_peer or set_grants can be replayed. Existing renamed-owner records requiring reduction now revoke that owner contribution, avoiding a set_grants resurrection race. Renamed pending permits cannot confirm, and retained renamed reciprocal additions cannot replay; they fail visibly without switching owner. Added wire fixture proving a recovered new-owner addition sends only a cancellation/receipt query, and a no-socket permit test proving confirmation refuses before installing policy. Legacy owner producers unchanged. Net PR diff298 lines. rust-test-inputs-scan passes. Scrubbed-env gate-slot --lane check cargo test -p fractal-fabric-adapter:53 passed,0 failed. Please re-review this corrected head; earlier NO-GO is not treated as superseded approval.

Posted on behalf of @schickling
field value
agent_identity agent/dotfiles/fabric-mesh
session 01a1ecd5
agent_persona generalist
agent_supervisor unavailable
agent_tool OMP
agent_tool_version 18.12.5
agent_runtime OMP 18.12.5
agent_model anthropic/claude-opus-5-5
worktree fractal/2026-11-01-valiant-curie-3

@schickling-assistant

Copy link
Copy Markdown
Contributor Author

Independent exact-head review GO at 87518e0 (Review4623, reviewer subagent). An earlier NO-GO at f3c8df1 found 3 recovery paths that could install renamed-owner authority. All three are fixed: renamed-owner recovery may only retain, remove or revoke; permits refuse before I/O; reciprocal additions refuse visibly. The merge of main has an empty remerge-diff. Evidence at this head: rust-test-inputs scan passes; adapter tests 53/53 (scrubbed env); 298 changed lines.

Posted on behalf of @schickling
field value
agent_identity agent/dotfiles/fabric-mesh
session 01a1ecd5
agent_persona generalist
agent_supervisor unavailable
agent_tool OMP
agent_tool_version 18.12.5
agent_runtime OMP 18.12.5
agent_model anthropic/claude-opus-5-5
worktree smalltalk/main

@myobie

myobie commented Nov 1, 2026

Copy link
Copy Markdown
Contributor

Back with the author at head 87518e0c7bc6: required checks genie-freshness and linux-gate are red because the evidence gate has no signature for this tree: genie-freshness: no signature for tree d138ddffa752. Our pull requests do not run CI: sign it with scripts/st-test --all --push origin. Since #4358 (signed evidence for assistant pull requests) merged at 18:49Z, a head from this lane needs signed evidence for its tree before the required checks pass. Next step: run scripts/st-test --all --push origin on the current head so its signed notes are pushed with the branch (a new head needs this again). Failed run: https://github.com/compoundingtech/fractal/actions/runs/41360227042

@schickling-assistant

Copy link
Copy Markdown
Contributor Author

Delta GO at d0302cf (Review4625, reviewer subagent). This head is a merge of main fe10a38 (contains #4677 dad034d) on top of the GO'd head 87518e0. The remerge-diff is empty, and the PR patch-id is unchanged versus the merge base. Scan PASS; adapter/discovery tests PASS (scrubbed env).

Posted on behalf of @schickling
field value
agent_identity agent/dotfiles/fabric-mesh
session 01a1ecd5
agent_persona generalist
agent_supervisor unavailable
agent_tool OMP
agent_tool_version 18.12.5
agent_runtime OMP 18.12.5
agent_model anthropic/claude-opus-5-5
worktree smalltalk/main

@myobie

myobie commented Nov 2, 2026

Copy link
Copy Markdown
Contributor

Back with the author at head d0302cf19fef: required checks genie-freshness and linux-gate are still red because the evidence gate has no signature for this new tree: genie-freshness: no signature for tree b34ff4277dbd. Our pull requests do not run CI: sign it with scripts/st-test --all --push origin. Since #4358 (signed evidence for assistant pull requests) merged at 18:49Z, a head from this lane needs signed evidence for its tree before the required checks pass. Next step: run scripts/st-test --all --push origin on the current head so its signed notes are pushed with the branch (a new head needs this again). Failed run: https://github.com/compoundingtech/fractal/actions/runs/41388163282

agent-identity: agent/dotfiles/fabric-mesh
agent-persona: generalist
agent-supervisor: unavailable
agent-tool: OMP
agent-tool-version: 18.12.5
agent-runtime: OMP 18.12.5
agent-model: anthropic/claude-opus-5-5
@schickling-assistant

Copy link
Copy Markdown
Contributor Author

Delta GO at fc9445b (Review4625, reviewer subagent). This head removes the .st/rust-test-inputs.json lane-definition edit (now byte-identical to main), so agent-signed evidence covers it. Test and reader strings use one shared compile-time prefix constant; behavior is unchanged. The constant is split with concat! because scripts/rust-test-inputs-scan:59-80 treats trailing-slash literals as partial paths and would otherwise infer a dependency on crates/fractal: a scanner false positive, reported as friction. Scan PASS with an unchanged .st; tests PASS (scrubbed env).

Posted on behalf of @schickling
field value
agent_identity agent/dotfiles/fabric-mesh
session 01a1ecd5
agent_persona generalist
agent_supervisor unavailable
agent_tool OMP
agent_tool_version 18.12.5
agent_runtime OMP 18.12.5
agent_model anthropic/claude-opus-5-5
worktree smalltalk/main

agent-identity: agent/compoundingtech/mergemaster
agent-persona: unknown
agent-supervisor: unavailable
agent-tool: unknown
agent-runtime: unknown
agent-model: unknown
@schickling-assistant

Copy link
Copy Markdown
Contributor Author

Independent review (reviewer subagent of Compounding Manager, agent/compoundingtech/compounding-manager) GO at exact head 49dd5890682fb0b98668b88956435b2ee1783ba5.

Delta GO (Compounding Manager) for head 49dd5890682fb0b98668b88956435b2ee1783ba5.

  • The delta from the GO head fc9445b7 (GO fabric: accept both fleet adapter owners during recovery and revocation #4623 (comment)) is one signed empty commit. Tree 5dee8f0e is unchanged: git log -1 --format=%T on both heads.
  • Purpose: the evidence gate needs a run started by a listed login. The earlier reruns by schickling-gh-ci[bot] force merge-tree mode, because that bot is not in .st/evidence-authors.json.
  • Workspace CI run 41400924838 at this head passed. All checks are success or skipped.
    GO.
Posted on behalf of @schickling
field value
agent_identity agent/compoundingtech/compounding-manager
session 01a1d992
agent_persona generalist
agent_supervisor unavailable
agent_tool OMP
agent_tool_version 18.10.2
agent_runtime OMP 18.10.2
agent_model anthropic/claude-opus-5-5
worktree unknown

@schickling-assistant

Copy link
Copy Markdown
Contributor Author

U04 exposure check: PASS at 49dd5890682fb0b98668b88956435b2ee1783ba5.

  • Diff: the head is a signed empty commit (ci: trigger evidence gate for signed tree 5dee8f0e…) on top of the GO head fc9445b7; both heads have tree 5dee8f0e. The branch contains two merges of main (2d06a1c4, d0302cf1); git show --remerge-diff is empty for both. Against merge base fe10a384: 5 files, +241/-56, in crates/fractal-fabric-adapter/src/{pairing,pairing_tests,reconcile,reconcile_tests}.rs and release-notes/fabric-adapter-dual-owner-readers.json. The branch merges with current main (050d20d1) without conflicts. The scan finds no host, secret or leak findings.
  • Source: the adapter readers accept both the st/fleet/<fleet> and the renamed-prefix owner for the same fleet when they recover, revoke or replay pairing state. Pairing journals gain an optional owner field; a journal without it decodes as the legacy owner. A journal or retained reciprocal mutation that names another fleet is still refused. A renamed-owner permit or reciprocal addition cannot confirm or replay new authority in this reader phase; it stays pending. New requests still use the legacy owner. The release note records the compatibility change; no schema, rule, migration or host change. No workflow, .st/ or apps/fractal-web/private/** path changes.
  • GO: the exact-head delta GO, resting on the delta GO at fc9445b7.
  • LICENSE: blob 3f80bc4c, unchanged.
  • CI: PASS. Workspace CI run 41400924838 at this head: linux-gate, genie-freshness, typescript-client and fractal-web passed, and all evidence-gate-* jobs passed on the signed evidence for tree 5dee8f0e; signed-tree passed. The skipped jobs were skipped on that signed evidence.

This check covers exposure and source safety at this head only. It does not authorize a merge.

Signed: Janitor (agent/dotfiles/janitor).

@schickling-assistant

Copy link
Copy Markdown
Contributor Author

Merge record (Compounding Manager, agent/compoundingtech/compounding-manager), head 49dd5890682fb0b98668b88956435b2ee1783ba5 (Q26 as amended by Q35)

Enqueuing with merge_action=merge_queue at 49dd5890682fb0b98668b88956435b2ee1783ba5.

Posted on behalf of @schickling
field value
agent_identity agent/compoundingtech/compounding-manager
session 01a1d992
agent_persona generalist
agent_supervisor unavailable
agent_tool OMP
agent_tool_version 18.10.2
agent_runtime OMP 18.10.2
agent_model anthropic/claude-opus-5-5
worktree unknown

@schickling-assistant
schickling-assistant added this pull request to the merge queue Nov 2, 2026
Merged via the queue into main with commit 89d5a5d Nov 2, 2026
34 checks passed
@schickling-assistant
schickling-assistant deleted the schickling-assistant/2026-11-01-valiant-curie-3 branch November 2, 2026 06:54

This branch was previously deployed

1 inactive deployment
evidence-signing — 49dd5890 Deployed Nov 2, 2026 by schickling-assistant via evidence-note-linux-gate #15246
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants