You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
bundle: a bundle at a repository's root pins its build tree, cargo cache and .git (110,209 files, a 20 MB run/started), so its identity moves on every build #908
The run upgrade-the-deterministic-covera-9e99b6bb (alkemio's journal, realm swarmail, 2026-10-09) was started from a bundle named self: the swarmail repository's root, which held agents/, adapters/ and policy.json. Its run/started manifest pins 110,209 files in manifest.files, 19.9 MB of the event's payload:
top-level
files pinned
target/
96,276
.cargo-home/
13,248
.git/
458
.forge/
152
src/
22
tests/
16
docs/
10
agents/
7
everything else
20
Fewer than 100 of them are the strategy the bundle declares. The rest are a build tree, a cargo cache, git's object store and Brokkr's own state, so:
the bundle's identity moves on every build or fetch;
resume refuses after any build, because the whole-directory pin no longer matches. The operator's stop reason on crates-io-publish-readiness-make-cdda1797 names this: "the whole-directory bundle pin makes resume refus…".
bundle/walk.rs skips only places::UNPINNED_TOP_LEVEL (the realms map, dialects, the capability definitions), plus state and recipes for a .brokkr/ folder bundle (decision 0083). Nothing else at a bundle's top level is skipped, so a bundle whose directory is a repository's root, or holds any build output, still pins all of it.
To decide and fix
Is a repository-root bundle still reachable after decision 0083 (the .brokkr/ folder)? If it is, the walk needs a rule for what it pins. Candidates:
pin what git tracks;
skip git-ignored trees;
refuse a bundle past a file or byte bound, by name, before any run starts.
Bound the manifest whatever the rule: a run should never start with a manifest that every reader then has to carry.
The choice of rule is the operator's.
Ruling
Operator, 2026-10-28, verbatim: "yes, queue 1 and file 2 and 3". This is (3).
Operator, 2026-10-29, verbatim: "go with recommended on the rulings". The controller's recommendation, taken:
The rule: the bundle walk skips .git and git-ignored trees, as it skips its other unpinned trees today. Those trees are still searched, so a file the compile consumes inside one is refused, never silently left unpinned.
The bound, whatever the rule: a bundle past a file-count or byte bound is refused by name before any run starts, so no run begins with a manifest every reader must carry.
Whether a repository-root bundle is still reachable after decision 0083 is answered in the story. Queued as a story.
Operator, 2026-10-29, verbatim: "Fix round 908b (Recommended)". The story run implement-issue-908-bug-a-bundle-078a995b stopped at REVIEW-SECURITY-HOLD on two findings: a git failure read as "nothing ignored", and an ignore decision on top-level paths only. The fix round:
a git failure refuses by the bundle's name;
one full-relative-path ignore decision is shared by the walk, consumed inputs and pinned scripts, nested trees included, and the skipped-tree consumed-file search stays;
the Skip match is exhaustive, and the expected text is pinned once.
Operator ruling, 2026-10-30, in chat, verbatim: "go with recommended on all the rulings".
It takes the one pending choice on this issue as recommended.
908c, the fix round (recommended) for the security hold: (1) a relative path reaches git as a literal name, not a pathspec (./<rel> at the one place git is asked, with the reason in its comment); (2) a check-ignore failure keeps git's stderr. Queued on story-908-bundle-walk at e5dc3a95f.
Fix round 908c stopped at REVIEW-SECURITY-HOLD, high, 2026-10-30. Run fix-round-908c-for-issue-908-bug-0c3794be, branch story-908-bundle-walk at 5c8dedc57 (b22401a94, c80076ac5, e5dc3a95f, 5c8dedc57 on 932c36d). Both of 908c's fixes are present and their tests pass. git is asked with ./<rel>, so a name that starts with a colon is literal, and a check-ignore failure keeps git's stderr. The chief found one new defect, written as a test case:
HIGH, security (a weakened refusal): a file that grows after the size check is hashed past the 64 MiB bound.
Where: bundle/walk.rs:185 and :387-392, called after the preflight at bundle.rs:4296-4301.
Case: walk_908's Fixture with an unconsumed top-level blob. The existing READ_HOOK grows blob to 64 MiB + 1 at ReadStage::Walked, after the metadata bound check.
Observed: compile returns Ok(Bundle), and the manifest pins the 67,108,865-byte file's digest.
Expected: the oversized bundle is refused by name before admission.
Cause: the preflight measures metadata, and the later read is unbounded. Nothing reconciles the bytes actually pinned with the budget.
Fix: enforce the cumulative budget on the actual reads (read at most the remaining budget plus one byte, and refuse past it), keep the preflight refusal, and bind the race with the chief's regression a_file_growing_after_the_pre_hash_bound_is_refused_chief_908.
Run integrity: panel prose argued for direction and risk acceptance; the chief rejected it.
Fix round 908d is drafted to fix finding 1. A security hold waits for the operator's word.
Operator ruling, 2026-10-30, in chat, verbatim: "go with recommended".
It takes the pending choice on this issue as recommended.
908d, the fix round (recommended) for 908c's security hold (#908 (comment)): the bundle's byte budget is enforced on the bytes actually read (a bounded read that refuses past the bound), the metadata preflight stays as the early refusal, and the chief's regression a_file_growing_after_the_pre_hash_bound_is_refused_chief_908 binds the race. Queued on story-908-bundle-walk at 5c8dedc57.
Fix round 908d: built and verified, but its review was refused by the provider. Controller record, 2026-10-31.
Run: fix-round-908d-for-issue-908-bug-544d7f9c.
Implement and verify passed (IMPL-OK, VERIFY-PASS).
The fix is 941056cc6, now 01bb621 after the restack. Each walked file is read through read_within, capped at the byte budget left plus one, and spend refuses the moment the cumulative bytes read pass 64 MiB. The preflight and this refusal share one past_bound message.
Its two removal controls are in the commit message.
The park: the review panel's adversarial seat (gpt-6.1-sol through codex) failed on both attempts with agent CLI exited 1. Codex's own session log gives the cause: "This content was flagged for possible cybersecurity risk ... apply for Daybreak access ...", codex_error_info: cyber_policy. This is OpenAI's content filter refusing a review of a security fix. It is not a finding or a credit limit, and a retry on the pinned recipe would be refused the same way.
What the controller did:
Concluded 908d with that reason.
Restacked the branch onto main f0e0c96. All five commits are signed and each patch is unchanged; the old branch is kept as backup/908-pre-restack. bundle::, places:: (440) and queued_launch (8) pass on the restacked head.
Queued landing 908L. It judges the whole branch, and it also judges 908d's fix exactly as 908d's own review would have.
Gave 908L's panel an adversarial member on DeepSeek Flash through dsh, using the library's existing bugfix-review-adversarial-dsh with the same charter as the sol seat. That is the seat sol replaced only during DeepSeek's 2026-10-01 API incident. The recipe variant is landing-story-astrachief-dsflash-advdsh. The rest of the panel and the chief are unchanged, and the variant compiles with 0 unruled valuations.
The PR will ask for: (a) the git-ignored rule's exact semantics; (b) the bounds, 5,000 files and 64 MiB; (c) decision 0083's addendum; (d) whether a repository-root bundle is still reachable after 0083.
Landing 908L stopped at REVIEW-SECURITY-HOLD, high, 2026-10-31. Run landing-pr-for-issue-908-bug-a-b-53264653, branch story-908-bundle-walk at 01bb621e2. It also stood in for 908d's own review. The adversarial seat ran on DeepSeek Flash through dsh and finished.
The chief confirmed:
908d's growth refusal and its within-bound growth digest;
unconsumed reads capped at the remaining budget plus one;
one past_bound message;
one full-relative-path skip decision, git asked with ./<rel>, and failures refused with stderr;
ignored trees still searched for consumed inputs;
scope: bundle.rs shrank 4,593 → 4,533; no pin, contract or public API moved.
The findings, written as test cases:
C1, HIGH, security (decision 0083 addendum 2; the 2026-10-30 actual-bytes ruling): a consumed file is charged by its metadata, not by the bytes pinned. walk.rs:403 charges metadata(path).len().
Case: a 2 MiB charter. At Walked(blob), grow blob to 63 MiB and truncate the charter to zero; at Walked(z_restore), restore it.
Observed: Ok(Bundle), 68,157,914 pinned bytes against 67,108,864 allowed.
Expected: the shared past_bound refusal and no Bundle.
Fix: charge the consumed buffer's actual length.
C2, HIGH, security (the commission's "no read is unbounded"; decision 0071 rulings 5 and 9): consumed reads and integrity re-reads are uncapped. bundle.rs:3379 and :2916 use read_to_end.
Case A: grow the charter to 67,108,866 bytes at ReadStage::Checked, then call bound_input; it holds all 67,108,866 bytes.
Case B: grow a held file and call Held::intact; it returns false only after reading every byte.
Expected: stop at the budget plus one byte, and refuse. These paths predate 908d.
C3, MEDIUM: the 0083 addendum says the bound is judged "before any byte is hashed", but the read-time refusal comes after earlier files were hashed. Fix: a dated amendment recording the 2026-10-30 ruling, distinguishing the metadata preflight from enforcement on the bytes read.
C4, LOW: test isolation.a_repository_root_bundle_pins_neither_git_nor_an_ignored_tree fails under a host whose global core.excludesFile ignores roles/. Fix: isolate the fixture's git configuration.
C5, LOW: no shrinking-file regression in the submitted suite, though 908d's message claims one. The chief's scratch test passes (the digest is the shrunk content); keep it as a binding test.
P1, run integrity: all three members' notes argued a verdict; the chief rejected them as instructions.
Rulings owed for the PR, as the chief listed them, need no new design: (a) the exact git semantics, (b) the bounds, inclusive per pinned layer, (c) the dated 0083 amendment, (d) repository-root bundles stay reachable by explicit compile. Fix round 908e would fix C1-C5. A security hold waits for the operator's word.
(a) the git-ignored rule's exact semantics, as built;
(b) the bounds, 5,000 files and 64 MiB, inclusive per pinned layer, enforced by the metadata preflight and on the bytes actually read, with one refusal;
(c) decision 0083's 2026-10-29 addendum and its 2026-10-31 amendment, with 8b2d529's wording;
(d) a repository-root bundle stays reachable by naming it from another workspace, with the CLI's workspace-root refusal (0083 ruling 4) unchanged;
the by-hand label for the two commits since the landing: 4be15ab (test only) and 8b2d529 (docs only);
the carried LOW F1 (test isolation against an inherited GIT_CONFIG_COUNT/KEY/VALUE) becomes a follow-up issue.
Operator ruling, 2026-10-31, in chat, verbatim: "push it by hand".
For PR #934: the by-hand label also covers commit a11934f, a test-only change. PR #934's macOS CI leg (run 41240540032) failed a_git_that_cannot_be_asked_refuses_by_name and a_pinned_script_lookup_that_cannot_ask_git_refuses_by_name. Both pinned Linux's spawn error for a working directory that is a file ("Not a directory (os error 20)"), and macOS reports "No such file or directory (os error 2)". The refusal itself is the same on both hosts. spawned_in_a_file() now names each host's words (decision 0063), and both tests keep exact pins.
Operator ruling, 2026-11-01, in chat, verbatim: "go with recommended".
For PR #934's Ubuntu CI failure (writer_lease tests, whose temporary bundles sit under the repository's git-ignored target/), the recommended path:
Ruling (a) gains one sentence. A bundle whose own root git reports ignored lies outside the repository's tracked content. It is treated as a bundle outside any work tree: only .git and the fixed names are skipped, and no git-ignore skip applies inside it.
The controller builds it, with a regression test: a bundle under an ignored directory of an enclosing repository compiles and pins its files. The check lives in a new module beside places.rs, which is at its 800-line ceiling.
Activity
valentinyanakiev commentedon Oct 28, 2026
More evidence from the same journal: three of the operator's 2026-10-08/09 stop reasons name this pin as why resume refused.
sqlite-persistence-data-file-con-8eb3ee95: "the panel's gate re-runs drift the whole-directory bundle pin (target/) so resume refuses".sqlite-persistence-data-file-swa-dc3a9a2a: "landed it as ef58fe0, which drifts the bundle pin so resume refuses".crates-io-publish-readiness-make-cdda1797: "the whole-directory bundle pin makes resume refuse after any gate run".Gate runs write
target/, so pinning it makes every one of these runs unresumable. Those runs were concluded on 2026-10-28 (#909).valentinyanakiev commentedon Oct 29, 2026
Operator, 2026-10-29, verbatim: "go with recommended on the rulings". The controller's recommendation, taken:
.gitand git-ignored trees, as it skips its other unpinned trees today. Those trees are still searched, so a file the compile consumes inside one is refused, never silently left unpinned.Whether a repository-root bundle is still reachable after decision 0083 is answered in the story. Queued as a story.
valentinyanakiev commentedon Oct 29, 2026
Operator, 2026-10-29, verbatim: "Fix round 908b (Recommended)". The story run
implement-issue-908-bug-a-bundle-078a995bstopped at REVIEW-SECURITY-HOLD on two findings: a git failure read as "nothing ignored", and an ignore decision on top-level paths only. The fix round:Skipmatch is exhaustive, and the expected text is pinned once.valentinyanakiev commentedon Oct 30, 2026
Operator ruling, 2026-10-30, in chat, verbatim: "go with recommended on all the rulings".
It takes the one pending choice on this issue as recommended.
908c, the fix round (recommended) for the security hold: (1) a relative path reaches git as a literal name, not a pathspec (
./<rel>at the one place git is asked, with the reason in its comment); (2) a check-ignore failure keeps git's stderr. Queued on story-908-bundle-walk at e5dc3a95f.valentinyanakiev commentedon Oct 30, 2026
Fix round 908c stopped at REVIEW-SECURITY-HOLD, high, 2026-10-30. Run
fix-round-908c-for-issue-908-bug-0c3794be, branchstory-908-bundle-walkat 5c8dedc57 (b22401a94, c80076ac5, e5dc3a95f, 5c8dedc57 on 932c36d). Both of 908c's fixes are present and their tests pass. git is asked with./<rel>, so a name that starts with a colon is literal, and a check-ignore failure keeps git's stderr. The chief found one new defect, written as a test case:bundle/walk.rs:185and:387-392, called after the preflight atbundle.rs:4296-4301.Fixturewith an unconsumed top-levelblob. The existingREAD_HOOKgrowsblobto 64 MiB + 1 atReadStage::Walked, after the metadata bound check.compilereturnsOk(Bundle), and the manifest pins the 67,108,865-byte file's digest.a_file_growing_after_the_pre_hash_bound_is_refused_chief_908.Fix round 908d is drafted to fix finding 1. A security hold waits for the operator's word.
valentinyanakiev commentedon Oct 30, 2026
Operator ruling, 2026-10-30, in chat, verbatim: "go with recommended".
It takes the pending choice on this issue as recommended.
908d, the fix round (recommended) for 908c's security hold (#908 (comment)): the bundle's byte budget is enforced on the bytes actually read (a bounded read that refuses past the bound), the metadata preflight stays as the early refusal, and the chief's regression
a_file_growing_after_the_pre_hash_bound_is_refused_chief_908binds the race. Queued on story-908-bundle-walk at 5c8dedc57.valentinyanakiev commentedon Oct 31, 2026
Fix round 908d: built and verified, but its review was refused by the provider. Controller record, 2026-10-31.
read_within, capped at the byte budget left plus one, andspendrefuses the moment the cumulative bytes read pass 64 MiB. The preflight and this refusal share onepast_boundmessage.agent CLI exited 1. Codex's own session log gives the cause:"This content was flagged for possible cybersecurity risk ... apply for Daybreak access ...",codex_error_info: cyber_policy. This is OpenAI's content filter refusing a review of a security fix. It is not a finding or a credit limit, and a retry on the pinned recipe would be refused the same way.bugfix-review-adversarial-dshwith the same charter as the sol seat. That is the seat sol replaced only during DeepSeek's 2026-10-01 API incident. The recipe variant islanding-story-astrachief-dsflash-advdsh. The rest of the panel and the chief are unchanged, and the variant compiles with 0 unruled valuations.For the operator: OpenAI's message offers "Daybreak" access for authorized security work, at https://platform.openai.com/settings/organization/status-and-access. Applying is your call. Until then, a branch whose content trips the filter gets the same per-run re-seat.
valentinyanakiev commentedon Oct 31, 2026
Landing 908L stopped at REVIEW-SECURITY-HOLD, high, 2026-10-31. Run
landing-pr-for-issue-908-bug-a-b-53264653, branchstory-908-bundle-walkat 01bb621e2. It also stood in for 908d's own review. The adversarial seat ran on DeepSeek Flash through dsh and finished.The chief confirmed:
past_boundmessage;./<rel>, and failures refused with stderr;The findings, written as test cases:
metadata(path).len().Walked(blob), growblobto 63 MiB and truncate the charter to zero; atWalked(z_restore), restore it.Ok(Bundle), 68,157,914 pinned bytes against 67,108,864 allowed.past_boundrefusal and noBundle.read_to_end.ReadStage::Checked, then callbound_input; it holds all 67,108,866 bytes.Held::intact; it returns false only after reading every byte.a_repository_root_bundle_pins_neither_git_nor_an_ignored_treefails under a host whose globalcore.excludesFileignoresroles/. Fix: isolate the fixture's git configuration.Rulings owed for the PR, as the chief listed them, need no new design: (a) the exact git semantics, (b) the bounds, inclusive per pinned layer, (c) the dated 0083 amendment, (d) repository-root bundles stay reachable by explicit compile. Fix round 908e would fix C1-C5. A security hold waits for the operator's word.
valentinyanakiev commentedon Oct 31, 2026
Operator ruling, 2026-10-31, in chat, verbatim: "go with recommended everywhere".
908e, the fix round (recommended) for landing 908L's security hold (#908 (comment)):
It runs with the adversarial seat on DeepSeek Flash through dsh, as 908L did. Queued on story-908-bundle-walk at 01bb621.
valentinyanakiev commentedon Oct 31, 2026
Operator ruling, 2026-10-31, in chat, verbatim: "go with recommended".
For PR #934:
by-handlabel for the two commits since the landing: 4be15ab (test only) and 8b2d529 (docs only);GIT_CONFIG_COUNT/KEY/VALUE) becomes a follow-up issue.valentinyanakiev commentedon Oct 31, 2026
Operator ruling, 2026-10-31, in chat, verbatim: "push it by hand".
For PR #934: the
by-handlabel also covers commit a11934f, a test-only change. PR #934's macOS CI leg (run 41240540032) faileda_git_that_cannot_be_asked_refuses_by_nameanda_pinned_script_lookup_that_cannot_ask_git_refuses_by_name. Both pinned Linux's spawn error for a working directory that is a file ("Not a directory (os error 20)"), and macOS reports "No such file or directory (os error 2)". The refusal itself is the same on both hosts.spawned_in_a_file()now names each host's words (decision 0063), and both tests keep exact pins.bundle: the git-spawn refusal tests pin each host's own words, macOS'…
valentinyanakiev commentedon Oct 31, 2026
Operator ruling, 2026-11-01, in chat, verbatim: "go with recommended".
For PR #934's Ubuntu CI failure (
writer_leasetests, whose temporary bundles sit under the repository's git-ignoredtarget/), the recommended path:.gitand the fixed names are skipped, and no git-ignore skip applies inside it.bundle: a bundle whose own root git ignores pins its own files, as a …