Skip to content

Commit 88729bb

Browse files
AbirAbbasclaude
andcommitted
Merge origin/dev into #1944: the Raft relay, two-computer fixes and furrow v0.3.4
Brings the workspace-ownership branch up to dev cf282dd, which adds the Raft relay (#1950), the two-computer fixes (#1967), #1972, #1974 and #1976. - directory record types are now clusterstate aliases, so frame hints move into the replicated state machine: FrameHint and the frame_hints field on Cell, CellInit and Publish, bounded deterministically in the shared rules, dropped from listings and kept on single-cell reads. Signed v1 publishes with hints are accepted; unknown fields are still refused; existing canonical bytes are unchanged and no schema or protocol version moves. - every take path records the send lease, including the workspace-set and identity-adopting restores; an already-held chat keeps its hold when the record fails. - a removed computer cannot take through the folder-mapping road either, and unsent words and the pending send survive the root chooser. - the seal refuses a folder holding home before taking the checkpoint lock. - furrow pin follows dev at v0.3.4, which contains v0.3.2's non-mutating SQLite capture. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2 parents ca7ede1 + cf282dd commit 88729bb

855 files changed

Lines changed: 118722 additions & 9877 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.gitignore‎

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@ bin/
22
# The furrow the build fetches, and the copy it stages for go:embed. Both are
33
# six megabytes of somebody else's release; internal/furrowbin/pin.json is the
44
# committed, auditable half and these are rebuilt from it by `make furrow`.
5-
third_party/
5+
third_party/*
6+
!third_party/raft/
7+
!third_party/raft-patch/
68
internal/furrowbin/cache/furrow-*.gz
79
.obs/
810
*.log
@@ -51,3 +53,6 @@ relay/hosted/.wrangler/
5153

5254
# Native Windows test executables are local acceptance artifacts.
5355
.wintest/
56+
57+
# The hosted reactor is generated from the shared, pinned Go core.
58+
/relay/hosted/src/raft/core.wasm

‎PERF.md‎

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,28 @@ migration flag skips that check. `BenchmarkOpenSettledSessions` measures the
8383
whole public open/close operation. `TestSettledStoreTerminalStartup` separates
8484
fixture construction from the first interactive frame of the running terminal.
8585

86+
Furrow detection stays off the hello path. The belt reads the remembered answer
87+
(`furrow.PeekTools`); the session asks furrow from a goroutine joined at close
88+
and appends the four workspace tools through `armFamily` if the folder is
89+
watched. Measured on Spark linux-arm64 with a cold engine per workspace and the
90+
owner profile, first frame fell from 3.87 s to about 0.5 s with the furrow
91+
that was embedded then; with furrow 0.3.3's fast status the unfixed tree is already
92+
at about 0.43 s, and this change keeps the build from depending on furrow's speed. The gate is
93+
`TestBuildingASessionDoesNotWaitForFurrow`, which holds `furrow status` open and
94+
asserts the build came back while that process was still alive; no clock decides it.
95+
96+
Native peer acknowledgements reuse the validated routing view only for the same
97+
store and durably applied index. Every applied change, including revocation,
98+
invalidates that view. `TestR11R27UnchangedPeerAcknowledgementWork` exercises the
99+
real transport and caps an unchanged acknowledgement at 1,000 allocations with
100+
no application append; the measured cost fell from 3,273 allocations to 192.
101+
102+
An authenticated native directory read with already durable ingress time uses a
103+
fresh quorum view and the normal state evaluator before omitting an identical
104+
append. New time and changed records still commit before inspection.
105+
`TestR4R26R27ReadCommitsOnlyChangedTime` counts applied entries for unchanged,
106+
advanced and repeated time, and requires invalid original authority to fail.
107+
86108
## What the gates check
87109

88110
`make test-quick` checks compilation, vet, formatting, packed manuals, change
@@ -108,3 +130,10 @@ artifact. The reference target is darwin/amd64 with its own pinned artifact stag
108130
other platforms can have different absolute sizes. Reduce unnecessary code, data
109131
or dependencies first. A justified cap adjustment belongs in the same change as
110132
the feature and its measurements; keep `SIZE-BUDGET` explicit and reviewable.
133+
134+
Every build links the Raft coordination core: the modified Raft copy, protobuf,
135+
the signed state machine and its SQLite snapshot host. The relay and devices
136+
always coordinate through it, so no build leaves it out. On linux/amd64 it adds
137+
3,379,200 bytes to the stripped binary (75,755,785 to 79,134,985 on the same dev
138+
base), and the cap moves by the same amount, from 75,811,848 to 79,191,048, so
139+
the 56,063 bytes of headroom the base had are kept.

‎SIZE-BUDGET‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
75811848
1+
79191048

‎THIRD-PARTY-NOTICES.md‎

Lines changed: 278 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2873,6 +2873,220 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
28732873
SOFTWARE.
28742874
```
28752875

2876+
## go.etcd.io/raft/v3
2877+
2878+
- Version: v3.7.0
2879+
- Licence: Apache-2.0
2880+
2881+
The Apache-2.0 Raft source is a modified copy in `third_party/raft`: codeaf injects per-node election randomness for deterministic replay. The pinned upstream version, patch and licence are retained there.
2882+
2883+
### LICENSE
2884+
2885+
```text
2886+
2887+
Apache License
2888+
Version 2.0, January 2004
2889+
http://www.apache.org/licenses/
2890+
2891+
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
2892+
2893+
1. Definitions.
2894+
2895+
"License" shall mean the terms and conditions for use, reproduction,
2896+
and distribution as defined by Sections 1 through 9 of this document.
2897+
2898+
"Licensor" shall mean the copyright owner or entity authorized by
2899+
the copyright owner that is granting the License.
2900+
2901+
"Legal Entity" shall mean the union of the acting entity and all
2902+
other entities that control, are controlled by, or are under common
2903+
control with that entity. For the purposes of this definition,
2904+
"control" means (i) the power, direct or indirect, to cause the
2905+
direction or management of such entity, whether by contract or
2906+
otherwise, or (ii) ownership of fifty percent (50%) or more of the
2907+
outstanding shares, or (iii) beneficial ownership of such entity.
2908+
2909+
"You" (or "Your") shall mean an individual or Legal Entity
2910+
exercising permissions granted by this License.
2911+
2912+
"Source" form shall mean the preferred form for making modifications,
2913+
including but not limited to software source code, documentation
2914+
source, and configuration files.
2915+
2916+
"Object" form shall mean any form resulting from mechanical
2917+
transformation or translation of a Source form, including but
2918+
not limited to compiled object code, generated documentation,
2919+
and conversions to other media types.
2920+
2921+
"Work" shall mean the work of authorship, whether in Source or
2922+
Object form, made available under the License, as indicated by a
2923+
copyright notice that is included in or attached to the work
2924+
(an example is provided in the Appendix below).
2925+
2926+
"Derivative Works" shall mean any work, whether in Source or Object
2927+
form, that is based on (or derived from) the Work and for which the
2928+
editorial revisions, annotations, elaborations, or other modifications
2929+
represent, as a whole, an original work of authorship. For the purposes
2930+
of this License, Derivative Works shall not include works that remain
2931+
separable from, or merely link (or bind by name) to the interfaces of,
2932+
the Work and Derivative Works thereof.
2933+
2934+
"Contribution" shall mean any work of authorship, including
2935+
the original version of the Work and any modifications or additions
2936+
to that Work or Derivative Works thereof, that is intentionally
2937+
submitted to Licensor for inclusion in the Work by the copyright owner
2938+
or by an individual or Legal Entity authorized to submit on behalf of
2939+
the copyright owner. For the purposes of this definition, "submitted"
2940+
means any form of electronic, verbal, or written communication sent
2941+
to the Licensor or its representatives, including but not limited to
2942+
communication on electronic mailing lists, source code control systems,
2943+
and issue tracking systems that are managed by, or on behalf of, the
2944+
Licensor for the purpose of discussing and improving the Work, but
2945+
excluding communication that is conspicuously marked or otherwise
2946+
designated in writing by the copyright owner as "Not a Contribution."
2947+
2948+
"Contributor" shall mean Licensor and any individual or Legal Entity
2949+
on behalf of whom a Contribution has been received by Licensor and
2950+
subsequently incorporated within the Work.
2951+
2952+
2. Grant of Copyright License. Subject to the terms and conditions of
2953+
this License, each Contributor hereby grants to You a perpetual,
2954+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
2955+
copyright license to reproduce, prepare Derivative Works of,
2956+
publicly display, publicly perform, sublicense, and distribute the
2957+
Work and such Derivative Works in Source or Object form.
2958+
2959+
3. Grant of Patent License. Subject to the terms and conditions of
2960+
this License, each Contributor hereby grants to You a perpetual,
2961+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
2962+
(except as stated in this section) patent license to make, have made,
2963+
use, offer to sell, sell, import, and otherwise transfer the Work,
2964+
where such license applies only to those patent claims licensable
2965+
by such Contributor that are necessarily infringed by their
2966+
Contribution(s) alone or by combination of their Contribution(s)
2967+
with the Work to which such Contribution(s) was submitted. If You
2968+
institute patent litigation against any entity (including a
2969+
cross-claim or counterclaim in a lawsuit) alleging that the Work
2970+
or a Contribution incorporated within the Work constitutes direct
2971+
or contributory patent infringement, then any patent licenses
2972+
granted to You under this License for that Work shall terminate
2973+
as of the date such litigation is filed.
2974+
2975+
4. Redistribution. You may reproduce and distribute copies of the
2976+
Work or Derivative Works thereof in any medium, with or without
2977+
modifications, and in Source or Object form, provided that You
2978+
meet the following conditions:
2979+
2980+
(a) You must give any other recipients of the Work or
2981+
Derivative Works a copy of this License; and
2982+
2983+
(b) You must cause any modified files to carry prominent notices
2984+
stating that You changed the files; and
2985+
2986+
(c) You must retain, in the Source form of any Derivative Works
2987+
that You distribute, all copyright, patent, trademark, and
2988+
attribution notices from the Source form of the Work,
2989+
excluding those notices that do not pertain to any part of
2990+
the Derivative Works; and
2991+
2992+
(d) If the Work includes a "NOTICE" text file as part of its
2993+
distribution, then any Derivative Works that You distribute must
2994+
include a readable copy of the attribution notices contained
2995+
within such NOTICE file, excluding those notices that do not
2996+
pertain to any part of the Derivative Works, in at least one
2997+
of the following places: within a NOTICE text file distributed
2998+
as part of the Derivative Works; within the Source form or
2999+
documentation, if provided along with the Derivative Works; or,
3000+
within a display generated by the Derivative Works, if and
3001+
wherever such third-party notices normally appear. The contents
3002+
of the NOTICE file are for informational purposes only and
3003+
do not modify the License. You may add Your own attribution
3004+
notices within Derivative Works that You distribute, alongside
3005+
or as an addendum to the NOTICE text from the Work, provided
3006+
that such additional attribution notices cannot be construed
3007+
as modifying the License.
3008+
3009+
You may add Your own copyright statement to Your modifications and
3010+
may provide additional or different license terms and conditions
3011+
for use, reproduction, or distribution of Your modifications, or
3012+
for any such Derivative Works as a whole, provided Your use,
3013+
reproduction, and distribution of the Work otherwise complies with
3014+
the conditions stated in this License.
3015+
3016+
5. Submission of Contributions. Unless You explicitly state otherwise,
3017+
any Contribution intentionally submitted for inclusion in the Work
3018+
by You to the Licensor shall be under the terms and conditions of
3019+
this License, without any additional terms or conditions.
3020+
Notwithstanding the above, nothing herein shall supersede or modify
3021+
the terms of any separate license agreement you may have executed
3022+
with Licensor regarding such Contributions.
3023+
3024+
6. Trademarks. This License does not grant permission to use the trade
3025+
names, trademarks, service marks, or product names of the Licensor,
3026+
except as required for reasonable and customary use in describing the
3027+
origin of the Work and reproducing the content of the NOTICE file.
3028+
3029+
7. Disclaimer of Warranty. Unless required by applicable law or
3030+
agreed to in writing, Licensor provides the Work (and each
3031+
Contributor provides its Contributions) on an "AS IS" BASIS,
3032+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
3033+
implied, including, without limitation, any warranties or conditions
3034+
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
3035+
PARTICULAR PURPOSE. You are solely responsible for determining the
3036+
appropriateness of using or redistributing the Work and assume any
3037+
risks associated with Your exercise of permissions under this License.
3038+
3039+
8. Limitation of Liability. In no event and under no legal theory,
3040+
whether in tort (including negligence), contract, or otherwise,
3041+
unless required by applicable law (such as deliberate and grossly
3042+
negligent acts) or agreed to in writing, shall any Contributor be
3043+
liable to You for damages, including any direct, indirect, special,
3044+
incidental, or consequential damages of any character arising as a
3045+
result of this License or out of the use or inability to use the
3046+
Work (including but not limited to damages for loss of goodwill,
3047+
work stoppage, computer failure or malfunction, or any and all
3048+
other commercial damages or losses), even if such Contributor
3049+
has been advised of the possibility of such damages.
3050+
3051+
9. Accepting Warranty or Additional Liability. While redistributing
3052+
the Work or Derivative Works thereof, You may choose to offer,
3053+
and charge a fee for, acceptance of support, warranty, indemnity,
3054+
or other liability obligations and/or rights consistent with this
3055+
License. However, in accepting such obligations, You may act only
3056+
on Your own behalf and on Your sole responsibility, not on behalf
3057+
of any other Contributor, and only if You agree to indemnify,
3058+
defend, and hold each Contributor harmless for any liability
3059+
incurred by, or claims asserted against, such Contributor by reason
3060+
of your accepting any such warranty or additional liability.
3061+
3062+
END OF TERMS AND CONDITIONS
3063+
3064+
APPENDIX: How to apply the Apache License to your work.
3065+
3066+
To apply the Apache License to your work, attach the following
3067+
boilerplate notice, with the fields enclosed by brackets "[]"
3068+
replaced with your own identifying information. (Don't include
3069+
the brackets!) The text should be enclosed in the appropriate
3070+
comment syntax for the file format. We also recommend that a
3071+
file or class name and description of purpose be included on the
3072+
same "printed page" as the copyright notice for easier
3073+
identification within third-party archives.
3074+
3075+
Copyright [yyyy] [name of copyright owner]
3076+
3077+
Licensed under the Apache License, Version 2.0 (the "License");
3078+
you may not use this file except in compliance with the License.
3079+
You may obtain a copy of the License at
3080+
3081+
http://www.apache.org/licenses/LICENSE-2.0
3082+
3083+
Unless required by applicable law or agreed to in writing, software
3084+
distributed under the License is distributed on an "AS IS" BASIS,
3085+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
3086+
See the License for the specific language governing permissions and
3087+
limitations under the License.
3088+
```
3089+
28763090
## go.yaml.in/yaml/v4
28773091

28783092
- Version: v4.0.0-rc.2
@@ -3436,6 +3650,70 @@ rights granted to you under this License for this implementation of Go
34363650
shall terminate as of the date such litigation is filed.
34373651
```
34383652

3653+
## google.golang.org/protobuf
3654+
3655+
- Version: v1.36.11
3656+
- Licence: BSD-3-Clause with the Go PATENTS grant
3657+
3658+
### LICENSE
3659+
3660+
```text
3661+
Copyright (c) 2018 The Go Authors. All rights reserved.
3662+
3663+
Redistribution and use in source and binary forms, with or without
3664+
modification, are permitted provided that the following conditions are
3665+
met:
3666+
3667+
* Redistributions of source code must retain the above copyright
3668+
notice, this list of conditions and the following disclaimer.
3669+
* Redistributions in binary form must reproduce the above
3670+
copyright notice, this list of conditions and the following disclaimer
3671+
in the documentation and/or other materials provided with the
3672+
distribution.
3673+
* Neither the name of Google Inc. nor the names of its
3674+
contributors may be used to endorse or promote products derived from
3675+
this software without specific prior written permission.
3676+
3677+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
3678+
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
3679+
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
3680+
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
3681+
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
3682+
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
3683+
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
3684+
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
3685+
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
3686+
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
3687+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
3688+
```
3689+
3690+
### PATENTS
3691+
3692+
```text
3693+
Additional IP Rights Grant (Patents)
3694+
3695+
"This implementation" means the copyrightable works distributed by
3696+
Google as part of the Go project.
3697+
3698+
Google hereby grants to You a perpetual, worldwide, non-exclusive,
3699+
no-charge, royalty-free, irrevocable (except as stated in this section)
3700+
patent license to make, have made, use, offer to sell, sell, import,
3701+
transfer and otherwise run, modify and propagate the contents of this
3702+
implementation of Go, where such license applies only to those patent
3703+
claims, both currently owned or controlled by Google and acquired in
3704+
the future, licensable by Google that are necessarily infringed by this
3705+
implementation of Go. This grant does not include claims that would be
3706+
infringed only as a consequence of further modification of this
3707+
implementation. If you or your agent or exclusive licensee institute or
3708+
order or agree to the institution of patent litigation against any
3709+
entity (including a cross-claim or counterclaim in a lawsuit) alleging
3710+
that this implementation of Go or any code incorporated within this
3711+
implementation of Go constitutes direct or contributory patent
3712+
infringement, or inducement of patent infringement, then any patent
3713+
rights granted to you under this License for this implementation of Go
3714+
shall terminate as of the date such litigation is filed.
3715+
```
3716+
34393717
## gopkg.in/yaml.v3
34403718

34413719
- Version: v3.0.1

‎cmd/codeaf-demo-home/seed.go‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -285,7 +285,7 @@ func initRepository(dir string, now time.Time) error {
285285
{"add", "."},
286286
{"-c", "user.name=Demo", "-c", "user.email=demo@example.invalid", "commit", "--quiet", "-m", "the first commit"},
287287
} {
288-
command := exec.Command("git", append([]string{"-C", dir}, argv...)...)
288+
command := exec.Command("git", append([]string{"--no-optional-locks", "-C", dir}, argv...)...)
289289
command.Env = append(os.Environ(),
290290
"GIT_AUTHOR_DATE="+stamp, "GIT_COMMITTER_DATE="+stamp,
291291
// A demo home must not inherit the machine's git configuration:

0 commit comments

Comments
 (0)