From b25be5ad443346bcb23406e84cfaefc65fc308af Mon Sep 17 00:00:00 2001 From: DonislawDev Date: Tue, 27 Oct 2026 23:09:32 +0100 Subject: [PATCH 1/9] core: one memory setting, and the memory this machine really gives the program auto, off or a size, read by one parser for both surfaces. Auto is half of what the process can really have - the memory fitted, the commit limit on Windows, the control group's limit in a container - and the plan's ceiling never drops below the 2 GiB every run had before. Nothing reads the setting yet; the engine, the flag and the window follow. Co-Authored-By: Claude Opus 5.5 --- internal/core/cgroup.go | 271 +++++++++++++++++++++++++ internal/core/machinememory.go | 32 +++ internal/core/machinememory_darwin.go | 35 ++++ internal/core/machinememory_linux.go | 37 ++++ internal/core/machinememory_other.go | 12 ++ internal/core/machinememory_windows.go | 45 ++++ internal/core/memory.go | 186 +++++++++++++++++ internal/guard/cgrouplimit_test.go | 213 +++++++++++++++++++ internal/guard/machinememory_test.go | 107 ++++++++++ internal/guard/memorysetting_test.go | 169 +++++++++++++++ internal/guard/mutation/entries.py | 60 ++++++ 11 files changed, 1167 insertions(+) create mode 100644 internal/core/cgroup.go create mode 100644 internal/core/machinememory.go create mode 100644 internal/core/machinememory_darwin.go create mode 100644 internal/core/machinememory_linux.go create mode 100644 internal/core/machinememory_other.go create mode 100644 internal/core/machinememory_windows.go create mode 100644 internal/core/memory.go create mode 100644 internal/guard/cgrouplimit_test.go create mode 100644 internal/guard/machinememory_test.go create mode 100644 internal/guard/memorysetting_test.go diff --git a/internal/core/cgroup.go b/internal/core/cgroup.go new file mode 100644 index 00000000..5613ed13 --- /dev/null +++ b/internal/core/cgroup.go @@ -0,0 +1,271 @@ +package core + +import ( + "errors" + "fmt" + "io/fs" + "path" + "strconv" + "strings" +) + +// How a process on Linux finds the memory limit of the control group it runs +// in. Written as a function of the files rather than of the system, so a guard +// on any system can hand it the files of a container and check the answer - +// machinememory_linux.go is the only caller that hands it the real ones. +// +// The shape follows the reader in the Go runtime that finds the processor +// limit (internal/runtime/cgroup in Go 1.27.3, read 2026-10-27), because the +// hard part is the same: /proc/self/cgroup says which group, mountinfo says +// where that group is mounted, and in a container with its own cgroup +// namespace the two have to be put together carefully. +// +// What it does not read, and why. memory.high is a point where the kernel +// starts to reclaim rather than a limit it ends the process at. In version 1, +// only the group's own memory.limit_in_bytes is read and not its parents' - +// version 1 is the old layout, every container runtime puts the limit on the +// container's own group, and following a parent there means another file per +// level for a case nobody has reported. + +// CgroupMemoryLimit is the memory limit of this process's control group, read +// through read from the paths Linux keeps the answer at. limited is false when +// there is no limit to find - no control group, no memory controller, "max" at +// every level - and then the memory of the machine is the answer. +// +// A file that is there and does not say what it should is an error rather than +// no limit. It is input from outside (untouchable rule 23), and a number made +// up from it would be a limit nobody set. +func CgroupMemoryLimit(read func(name string) ([]byte, error)) (limit int64, limited bool, err error) { + self, err := read("/proc/self/cgroup") + if errors.Is(err, fs.ErrNotExist) { + return 0, false, nil + } + if err != nil { + return 0, false, err + } + group, v1, err := memoryGroup(string(self)) + if err != nil || group == "" { + return 0, false, err + } + + mounts, err := read("/proc/self/mountinfo") + if err != nil { + return 0, false, err + } + mount, rel, err := memoryMount(string(mounts), v1, group) + if err != nil || mount == "" { + return 0, false, err + } + + if v1 { + return limitIn(read, path.Join(mount, rel, "memory.limit_in_bytes")) + } + return limitAbove(read, mount, rel) +} + +// memoryGroup is the path of the group holding this process's memory, from +// /proc/self/cgroup, and whether it is a version 1 group. +// +// Each line is "hierarchy:controllers:path". Version 2 is hierarchy 0 with no +// controllers named. A version 1 line naming memory wins over it, because a +// controller can be mounted in one of the two and not both. +func memoryGroup(text string) (group string, v1 bool, err error) { + for _, line := range lines(text) { + hierarchy, controllers, where, err := groupLine(line) + if err != nil { + return "", false, err + } + switch { + case hierarchy == "0": + group = where + case hasWord(controllers, "memory"): + return where, true, nil + } + } + return group, false, nil +} + +// groupLine is one line of /proc/self/cgroup in its three parts. +func groupLine(line string) (hierarchy, controllers, where string, err error) { + hierarchy, rest, ok1 := strings.Cut(line, ":") + controllers, where, ok2 := strings.Cut(rest, ":") + // A group that was removed while this process was still in it is shown + // with this after its path. The limit is still the one that applies until + // the process moves, so it is read rather than refused. + where = strings.TrimSuffix(where, " (deleted)") + if !ok1 || !ok2 || !strings.HasPrefix(where, "/") { + return "", "", "", malformed("/proc/self/cgroup", line) + } + return hierarchy, controllers, where, nil +} + +// memoryMount is where the group's hierarchy is mounted, from +// /proc/self/mountinfo, and where the group is under that mount. +// +// The root matters in a container. Its own namespace shows its group as "/", +// and its mount's root as "/" too, so the group is the mount. Without a +// namespace the group is a path under a mount whose root is the hierarchy's +// root. A group shown as starting with "/.." is outside the namespace this +// process can see, and no mount reaches it. +func memoryMount(text string, v1 bool, group string) (mount, rel string, err error) { + for _, line := range lines(text) { + m, err := mountLine(line) + switch { + case err != nil: + return "", "", err + case !m.holdsMemory(v1): + continue + } + root, point, err := m.paths() + if err != nil { + return "", "", err + } + if rel, reached := under(group, root); reached && rel != "/.." && !strings.HasPrefix(rel, "/../") { + return point, rel, nil + } + } + return "", "", nil +} + +// mountEntry is the four fields of one line of mountinfo this reads: the root +// of the mount within its hierarchy and where it is mounted, both as Linux +// wrote them, the kind of filesystem and its own options. +type mountEntry struct { + root, point, kind, options string +} + +// mountLine splits one line of mountinfo. The optional fields in the middle +// are as many as the mount has, which is why the line is cut at the +// separator rather than counted. +func mountLine(line string) (mountEntry, error) { + before, after, ok := strings.Cut(line, " - ") + fields, tail := strings.Fields(before), strings.Fields(after) + if !ok || len(fields) < 5 || len(tail) < 1 { + return mountEntry{}, malformed("/proc/self/mountinfo", line) + } + m := mountEntry{root: fields[3], point: fields[4], kind: tail[0]} + if len(tail) >= 3 { + m.options = tail[2] + } + return m, nil +} + +// holdsMemory says whether this mount is the hierarchy the memory controller +// lives in: the one version 2 hierarchy, or the version 1 one naming memory. +func (m mountEntry) holdsMemory(v1 bool) bool { + if v1 { + return m.kind == "cgroup" && hasWord(m.options, "memory") + } + return m.kind == "cgroup2" +} + +// paths is the root and the mount point with the escapes undone. Asked only +// of the mount this reads through, so a line about some other filesystem is +// never refused for how its paths are written. +func (m mountEntry) paths() (root, point string, err error) { + if root, err = unescapeMount(m.root); err == nil { + point, err = unescapeMount(m.point) + } + return root, point, err +} + +// lines is the lines of a file that have anything on them. +func lines(text string) []string { + return strings.FieldsFunc(text, func(r rune) bool { return r == '\n' }) +} + +// under is where group is below root, when root reaches it at all. A root of +// "/" reaches every group, and any other reaches itself and what is under it - +// at a whole step of the path, so /sandbox does not reach /sandbox2. +func under(group, root string) (string, bool) { + if root == "/" { + return group, true + } + rest, ok := strings.CutPrefix(group, root) + if !ok || (rest != "" && !strings.HasPrefix(rest, "/")) { + return "", false + } + return rest, true +} + +// limitAbove is the smallest memory.max from the group up to the top of the +// mount. A parent's limit holds every group under it, so a container whose own +// group says max can still be held by the slice it sits in. +func limitAbove(read func(string) ([]byte, error), mount, rel string) (int64, bool, error) { + var least int64 + var found bool + for dir := path.Join(mount, rel); ; dir = path.Dir(dir) { + n, ok, err := limitIn(read, path.Join(dir, "memory.max")) + if err != nil { + return 0, false, err + } + if ok && (!found || n < least) { + least, found = n, true + } + if dir == path.Clean(mount) || dir == "/" || dir == "." { + return least, found, nil + } + } +} + +// limitIn reads one limit file. Missing means no limit at that level - the +// root of a hierarchy has no memory.max at all. "max" is version 2 for none, +// and a number is the limit in bytes. +func limitIn(read func(string) ([]byte, error), name string) (int64, bool, error) { + b, err := read(name) + if errors.Is(err, fs.ErrNotExist) { + return 0, false, nil + } + if err != nil { + return 0, false, err + } + text := strings.TrimSpace(string(b)) + if text == "max" { + return 0, false, nil + } + n, err := strconv.ParseInt(text, 10, 64) + if err != nil || n < 0 { + return 0, false, malformed(name, text) + } + return n, true, nil +} + +// unescapeMount undoes what Linux does to a path in mountinfo: a space, a tab, +// a new line and a backslash are written as a backslash and three octal +// digits. +func unescapeMount(s string) (string, error) { + if !strings.Contains(s, `\`) { + return s, nil + } + var b strings.Builder + for i := 0; i < len(s); i++ { + if s[i] != '\\' { + b.WriteByte(s[i]) + continue + } + if i+4 > len(s) { + return "", malformed("/proc/self/mountinfo", s) + } + v, err := strconv.ParseUint(s[i+1:i+4], 8, 8) + if err != nil { + return "", malformed("/proc/self/mountinfo", s) + } + b.WriteByte(byte(v)) + i += 3 + } + return b.String(), nil +} + +// hasWord says whether a comma separated list holds one word. +func hasWord(list, word string) bool { + for _, w := range strings.Split(list, ",") { + if w == word { + return true + } + } + return false +} + +func malformed(name, text string) error { + return fmt.Errorf("%s does not say what Linux writes there: %q", name, text) +} diff --git a/internal/core/machinememory.go b/internal/core/machinememory.go new file mode 100644 index 00000000..33c48c81 --- /dev/null +++ b/internal/core/machinememory.go @@ -0,0 +1,32 @@ +package core + +import "math" + +// How much memory this machine gives this program, asked of the system once +// per run - MachineMemory, one file per system beside this one. +// +// The number is the setting auto halves (Memory.On), so it has to be the +// memory the process can really have rather than the memory in the box. On a +// laptop those are the same. In a container started with --memory 2g, on a CI +// runner, or in a job with a commit limit, the box has far more than the +// process may take, and a run that plans from the box is the one the system +// ends without a word - which is the failure the setting exists for. So every +// system's answer is the smallest of the numbers it offers: what is fitted, +// what the process is allowed to commit, and what any control group it is in +// holds it to. +// +// Only the standard library asks. golang.org/x/sys would offer these calls +// ready made, and it is not linked into the command line binary - putting it +// there is untouchable rule 11 rather than tidying, the same reason given in +// diskspace_windows.go. + +// smallest is the smallest of a machine's answers, as a count of bytes. None +// of them is ever above what an int64 holds on a real machine, and one that +// was is held to the largest rather than wrapped into a negative. +func smallest(answers ...uint64) int64 { + least := uint64(math.MaxInt64) + for _, a := range answers { + least = min(least, a) + } + return int64(least) +} diff --git a/internal/core/machinememory_darwin.go b/internal/core/machinememory_darwin.go new file mode 100644 index 00000000..d0f0786a --- /dev/null +++ b/internal/core/machinememory_darwin.go @@ -0,0 +1,35 @@ +package core + +import ( + "encoding/binary" + "fmt" + "syscall" +) + +// MachineMemory is how much memory this machine gives this program - see +// machinememory.go for what the number is used for. +// +// hw.memsize is the memory fitted, as eight bytes in the machine's own order. +// macOS has no control groups, and a process limit set with ulimit is not +// read: it is rare, and a Go program under a small one fails long before it +// gets here. +// +// syscall.Sysctl hands the answer back as a string and drops its last byte when +// that byte is nought (syscall_bsd.go in Go 1.27.3, read 2026-10-27), which is +// right for the text answers it was written for and wrong for this one: the +// highest byte of the size of any real machine is nought, so what arrives is +// seven bytes. Put back before it is read, or the read is of a short buffer. +func MachineMemory() (int64, error) { + answer, err := syscall.Sysctl("hw.memsize") + if err != nil { + return 0, err + } + raw := []byte(answer) + if len(raw) > 8 { + return 0, fmt.Errorf("hw.memsize came back as %d bytes rather than eight", len(raw)) + } + for len(raw) < 8 { + raw = append(raw, 0) + } + return smallest(binary.NativeEndian.Uint64(raw)), nil +} diff --git a/internal/core/machinememory_linux.go b/internal/core/machinememory_linux.go new file mode 100644 index 00000000..5dda22ff --- /dev/null +++ b/internal/core/machinememory_linux.go @@ -0,0 +1,37 @@ +package core + +import ( + "os" + "syscall" +) + +// MachineMemory is how much memory this machine gives this program - see +// machinememory.go for what the number is used for. +// +// The memory fitted comes from sysinfo, the limit of a container from its +// control group (CgroupMemoryLimit), and the answer is the smaller. A limit +// that cannot be read is an error rather than the memory fitted: in a +// container that is the number the process would be ended for passing, and a +// run told the size of the host is the run R02 was about. +func MachineMemory() (int64, error) { + var info syscall.Sysinfo_t + if err := syscall.Sysinfo(&info); err != nil { + return 0, err + } + // The unit is the size of one of the numbers sysinfo counts in. Kernels + // before 2.3.23 did not set it and counted in bytes. + unit := uint64(info.Unit) + if unit == 0 { + unit = 1 + } + fitted := uint64(info.Totalram) * unit + + limit, limited, err := CgroupMemoryLimit(os.ReadFile) + if err != nil { + return 0, err + } + if limited { + return smallest(fitted, uint64(limit)), nil + } + return smallest(fitted), nil +} diff --git a/internal/core/machinememory_other.go b/internal/core/machinememory_other.go new file mode 100644 index 00000000..97a046ef --- /dev/null +++ b/internal/core/machinememory_other.go @@ -0,0 +1,12 @@ +//go:build !linux && !darwin && !windows + +package core + +import "errors" + +// MachineMemory has no way to ask a system this build does not know, and says +// so rather than guessing. Auto then works to MaxPlanBytes and the run says it +// did - see Memory.On. +func MachineMemory() (int64, error) { + return 0, errors.ErrUnsupported +} diff --git a/internal/core/machinememory_windows.go b/internal/core/machinememory_windows.go new file mode 100644 index 00000000..11269ba3 --- /dev/null +++ b/internal/core/machinememory_windows.go @@ -0,0 +1,45 @@ +//go:build windows + +package core + +import "unsafe" + +// MachineMemory is how much memory this machine gives this program - see +// machinememory.go for what the number is used for. +// +// GlobalMemoryStatusEx answers two numbers that matter. ullTotalPhys is the +// memory in the machine. ullTotalPageFile is the commit limit "for the system +// or the current process, whichever is smaller" (Microsoft Learn, +// MEMORYSTATUSEX, read 2026-10-27), which is where a limit put on a job this +// process runs in shows up. The address space is the third, and on a 64 bit +// build it is never the smallest - it is taken anyway, because it costs one +// comparison and a 32 bit build would otherwise be told about memory it cannot +// reach. +func MachineMemory() (int64, error) { + status := memoryStatusEx{} + // The call refuses a structure whose length it was not told, so this is + // set before it rather than being a field the system fills in. + status.length = uint32(unsafe.Sizeof(status)) + if r, _, e := globalMemoryStatus.Call(uintptr(unsafe.Pointer(&status))); r == 0 { + return 0, e + } + return smallest(status.totalPhys, status.totalPageFile, status.totalVirtual), nil +} + +// memoryStatusEx is MEMORYSTATUSEX, field for field. +type memoryStatusEx struct { + length uint32 + memoryLoad uint32 + totalPhys uint64 + availPhys uint64 + totalPageFile uint64 + availPageFile uint64 + totalVirtual uint64 + availVirtual uint64 + availExtendedVirtual uint64 +} + +// In kernel32 beside GetDiskFreeSpaceExW, and looked up the same way - see the +// note on kernel32 in diskspace_windows.go for why a lazy lookup of this +// library is safe and of an ordinary one would not be. +var globalMemoryStatus = kernel32.NewProc("GlobalMemoryStatusEx") diff --git a/internal/core/memory.go b/internal/core/memory.go new file mode 100644 index 00000000..579d8c5c --- /dev/null +++ b/internal/core/memory.go @@ -0,0 +1,186 @@ +package core + +import ( + "errors" + "fmt" + "strings" +) + +// The one number that says how much memory a run may take. +// +// docs/STABILITY-REVIEW-2026-10-26.md section 10.8, the owner's decisions of +// 2026-10-27 in 10.10. Before it there were two ceilings and neither could be +// moved: MaxPlanBytes refused a plan past two gigabytes on a machine with +// sixty four, and nothing at all held the writers back, so sixteen pictures of +// forty megapixels written at once took 2.6 GB on a machine where one took 358 +// MB (section 3.2). The owner's principle is that somebody may want files of +// two hundred gigabytes or a great many of them, from either surface, and this +// tool must not be what stops them - so the number is theirs to set, and what +// it does when nobody sets it is worked out from the machine rather than +// written into the build. +// +// Here rather than in the engine because both surfaces read it: the command +// line from a flag and the window from what it remembers, and a value checked +// on one side only is one somebody reaches through the other - the argument +// that put ParseSize in this package. + +// SettingMemory is the name a refusal about the memory setting is about. It is +// the flag's name, because the command line is where the setting is typed as +// text, and a window puts the label of its own box in the slot instead. +const SettingMemory = "memory" + +// Memory is how much memory one run may take, the plan and the writing +// together. +// +// The zero value is auto: half of what this machine gives the program +// (MachineMemory), so a caller that never heard of the setting gets the safe +// answer rather than no limit at all. A size is what somebody asked for, and +// off is no limit - the writers are not held back and the plan has no ceiling, +// at the risk of the system ending the process, which is the person's choice. +type Memory struct { + bytes int64 + off bool +} + +// MemoryOff is no limit at all. +func MemoryOff() Memory { return Memory{off: true} } + +// MemoryOf is a size somebody chose. Nought or less is not a size and is +// read as auto, which is what ParseMemory refuses it for being. +func MemoryOf(bytes int64) Memory { + if bytes <= 0 { + return Memory{} + } + return Memory{bytes: bytes} +} + +// IsAuto, IsOff and Bytes say which of the three a setting is, and the size +// when it is one. +func (m Memory) IsAuto() bool { return !m.off && m.bytes == 0 } +func (m Memory) IsOff() bool { return m.off } +func (m Memory) Bytes() int64 { return m.bytes } + +// The two words, spelled once for the parser, String and the help. +const ( + memoryAuto = "auto" + memoryOff = "off" +) + +// String is the setting the way ParseMemory reads it back: auto, off, or the +// size in the largest unit that holds it whole. A window keeps this text and +// a later start reads it through ParseMemory, so the two must agree to the +// byte - 1.5 GiB comes back as 1536mb rather than as a rounded 1.5gb. +func (m Memory) String() string { + switch { + case m.off: + return memoryOff + case m.bytes == 0: + return memoryAuto + } + for _, u := range []struct { + name string + size int64 + }{{"tb", 1 << 40}, {"gb", 1 << 30}, {"mb", 1 << 20}, {"kb", 1 << 10}} { + if m.bytes%u.size == 0 { + return fmt.Sprintf("%d%s", m.bytes/u.size, u.name) + } + } + return fmt.Sprintf("%d", m.bytes) +} + +// ParseMemory reads the setting as somebody wrote it: auto, off, or a size in +// the units every size in this tool takes. +// +// Nought is refused rather than read as no limit. Off is the word for that, the +// same as --far-over off, and a nought typed by mistake would otherwise take +// every limit away without a word. A size of one byte is accepted: it is a +// strange thing to ask for and it does what it says, a refusal for every plan +// and every picture written alone. +func ParseMemory(s string) (Memory, error) { + raw := strings.TrimSpace(s) + switch strings.ToLower(raw) { + case memoryAuto: + return Memory{}, nil + case memoryOff: + return MemoryOff(), nil + case "": + return Memory{}, RefuseAbout(SettingMemory, Says("core.MemoryEmpty", "empty {setting}: write auto, off or a size such as 8gb")) + } + if !strings.ContainsAny(raw, "0123456789") { + return Memory{}, RefuseAbout(SettingMemory, Says("core.MemoryUnknown", + "{setting} %q is not a setting this tool knows: write auto for half of this machine's memory, off for no limit, or a size such as 8gb", + A("Value", s))) + } + if strings.HasPrefix(raw, "-") { + return Memory{}, RefuseAbout(SettingMemory, Says("core.MemoryNegative", + "{setting} %q is negative: write auto, off or a size such as 8gb", A("Value", s))) + } + n, err := ParseSize(raw) + if err != nil { + return Memory{}, aboutMemory(err) + } + if n == 0 { + return Memory{}, RefuseAbout(SettingMemory, Says("core.MemoryZero", + "{setting} %q leaves no room at all: write off for no limit, or a size such as 8gb", A("Value", s))) + } + return Memory{bytes: n}, nil +} + +// aboutMemory is a refusal of ParseSize, put in the memory slot. The size +// parser says what is wrong with the number better than a second sentence +// could, and it names its own setting, which here is the wrong one: the +// person typed --memory, and "size" would send them to a flag they did not +// write. +func aboutMemory(err error) error { + var r *Refusal + if errors.As(err, &r) { + return &Refusal{said: r.said, setting: SettingMemory} + } + return err +} + +// MemoryLimits is a setting worked out on one machine. +type MemoryLimits struct { + // Run is what the run may hold while it writes, the plan among it. Zero + // is no limit. + Run int64 + // Plan is the ceiling on the plan. Zero is no ceiling. + Plan int64 + // Unknown is why the machine could not be asked, when it could not. Auto + // then works to MaxPlanBytes, the ceiling every run had before the + // setting existed, and a run says so once rather than pretending the + // number came from the machine. + Unknown error +} + +// On works the setting out against the memory of one machine, asked through +// machine - MachineMemory for a real run, a number for a guard. +// +// Auto is half, because a run is not alone on the machine and the plan and +// the writers share the one number. The plan's ceiling under auto never drops +// below MaxPlanBytes, so no run that was planned before this setting existed +// is refused now - on a machine of four gigabytes or less, auto gives the +// writers less than that and leaves the plan where it always was. A size is +// the person's own choice and is used as given, downwards too. +// +// machine is not called for a setting that does not need it, so a size and +// off never touch the system. +func (m Memory) On(machine func() (int64, error)) MemoryLimits { + switch { + case m.off: + return MemoryLimits{} + case m.bytes > 0: + return MemoryLimits{Run: m.bytes, Plan: m.bytes} + } + total, err := machine() + if err == nil && total <= 1 { + // An answer, but not one about a machine that runs anything, so it is + // treated as no answer rather than halved into a limit of nothing. + err = fmt.Errorf("the system said this machine has %d B of memory", total) + } + if err != nil { + return MemoryLimits{Run: MaxPlanBytes, Plan: MaxPlanBytes, Unknown: err} + } + half := total / 2 + return MemoryLimits{Run: half, Plan: max(half, MaxPlanBytes)} +} diff --git a/internal/guard/cgrouplimit_test.go b/internal/guard/cgrouplimit_test.go new file mode 100644 index 00000000..aa51d009 --- /dev/null +++ b/internal/guard/cgrouplimit_test.go @@ -0,0 +1,213 @@ +package guard + +import ( + "io/fs" + "testing" + + "github.com/donislawdev/TestingFilesGenerator/internal/core" +) + +// The memory limit of a container is found in the files Linux keeps about it - +// docs/STABILITY-REVIEW-2026-10-26.md section 10.8. +// +// Every layout below is one a process really meets, handed to the reader as +// files, so the table runs on every system rather than only on the Linux +// runner - and only on the layouts somebody wrote down, which is why the real +// reading has a guard of its own beside this one. The shapes are the ones +// docs.kernel.org (cgroup-v2, read 2026-10-27) and proc_pid_mountinfo(5) +// describe: "0::$PATH" for version 2, "N:controllers:$PATH" for version 1, a +// mount root that is the group itself inside a namespace. +func TestTheLimitOfAContainerIsFoundInItsControlGroup(t *testing.T) { + for _, c := range containerLayouts { + read := func(name string) ([]byte, error) { + if text, ok := c.files[name]; ok { + return []byte(text), nil + } + return nil, &fs.PathError{Op: "open", Path: name, Err: fs.ErrNotExist} + } + limit, limited, err := core.CgroupMemoryLimit(read) + switch { + case c.fails && err == nil: + t.Errorf("%s: read as limit %d limited %v, expected a refusal - a number made up from a file that does not say one is a limit nobody set", c.name, limit, limited) + case !c.fails && err != nil: + t.Errorf("%s: refused: %v", c.name, err) + case !c.fails && (limit != c.limit || limited != c.limited): + t.Errorf("%s: limit %d limited %v, expected %d %v", c.name, limit, limited, c.limit, c.limited) + } + } +} + +// Two lines of mountinfo most layouts below share: the one cgroup2 mount +// where systemd and every container runtime put it, and a filesystem that is +// not a control group at all, which the reader has to step over. +const ( + cgroupV2Mount = "30 23 0:26 / /sys/fs/cgroup rw,nosuid,nodev,noexec,relatime shared:4 - cgroup2 cgroup2 rw,nsdelegate\n" + cgroupOtherMount = "22 1 8:1 / / rw,relatime shared:1 - ext4 /dev/sda1 rw\n" +) + +// containerLayouts is every layout the guard above hands the reader, with the +// answer it has to give. +var containerLayouts = []struct { + name string + files map[string]string + limit int64 + limited bool + fails bool +}{ + { + name: "a container with its own namespace, 512 MiB", + files: map[string]string{ + "/proc/self/cgroup": "0::/\n", + "/proc/self/mountinfo": cgroupOtherMount + cgroupV2Mount, + "/sys/fs/cgroup/memory.max": "536870912\n", + }, + limit: 512 << 20, limited: true, + }, + { + name: "a container with no limit", + files: map[string]string{ + "/proc/self/cgroup": "0::/\n", + "/proc/self/mountinfo": cgroupV2Mount, + "/sys/fs/cgroup/memory.max": "max\n", + }, + }, + { + name: "a desktop session, max on its own group and a limit on the slice above it", + files: map[string]string{ + "/proc/self/cgroup": "0::/user.slice/user-1000.slice/session-2.scope\n", + "/proc/self/mountinfo": cgroupV2Mount, + "/sys/fs/cgroup/user.slice/user-1000.slice/session-2.scope/memory.max": "max\n", + "/sys/fs/cgroup/user.slice/user-1000.slice/memory.max": "4294967296\n", + "/sys/fs/cgroup/user.slice/memory.max": "max\n", + }, + limit: 4 << 30, limited: true, + }, + { + name: "the smaller of two limits on the way up wins", + files: map[string]string{ + "/proc/self/cgroup": "0::/a/b\n", + "/proc/self/mountinfo": cgroupV2Mount, + "/sys/fs/cgroup/a/b/memory.max": "8589934592\n", + "/sys/fs/cgroup/a/memory.max": "1073741824\n", + }, + limit: 1 << 30, limited: true, + }, + { + name: "a group removed while the process is still in it", + files: map[string]string{ + "/proc/self/cgroup": "0::/job (deleted)\n", + "/proc/self/mountinfo": cgroupV2Mount, + "/sys/fs/cgroup/job/memory.max": "268435456\n", + }, + limit: 256 << 20, limited: true, + }, + { + name: "the root group, which has no memory.max at all", + files: map[string]string{ + "/proc/self/cgroup": "0::/\n", + "/proc/self/mountinfo": cgroupV2Mount, + }, + }, + { + name: "a mount point with a space in it, escaped the way Linux writes it", + files: map[string]string{ + "/proc/self/cgroup": "0::/\n", + "/proc/self/mountinfo": `31 23 0:27 / /mnt/cg\040two rw - cgroup2 cgroup2 rw` + "\n", + "/mnt/cg two/memory.max": "1048576\n", + }, + limit: 1 << 20, limited: true, + }, + { + name: "version 1, the memory controller beside others", + files: map[string]string{ + "/proc/self/cgroup": "12:pids:/docker/abc\n4:memory:/docker/abc\n1:name=systemd:/docker/abc\n0::/system.slice/docker.service\n", + "/proc/self/mountinfo": cgroupOtherMount + + "40 30 0:35 /docker/abc /sys/fs/cgroup/memory ro,nosuid - cgroup cgroup rw,memory\n" + + "41 30 0:36 /docker/abc /sys/fs/cgroup/pids ro,nosuid - cgroup cgroup rw,pids\n", + "/sys/fs/cgroup/memory/memory.limit_in_bytes": "2147483648\n", + }, + limit: 2 << 30, limited: true, + }, + { + name: "version 1 with no limit, which it writes as an enormous number", + files: map[string]string{ + "/proc/self/cgroup": "4:cpuset,memory:/\n", + "/proc/self/mountinfo": "40 30 0:35 / /sys/fs/cgroup/memory rw - cgroup cgroup rw,cpuset,memory\n", + "/sys/fs/cgroup/memory/memory.limit_in_bytes": "9223372036854771712\n", + }, + limit: 9223372036854771712, limited: true, + }, + { + name: "a mount whose root does not reach the group", + files: map[string]string{ + "/proc/self/cgroup": "0::/elsewhere/job\n", + "/proc/self/mountinfo": "30 23 0:26 /sandbox /sys/fs/cgroup rw - cgroup2 cgroup2 rw\n", + }, + }, + { + name: "a root that only shares the start of the name", + files: map[string]string{ + "/proc/self/cgroup": "0::/sandbox2/job\n", + "/proc/self/mountinfo": "30 23 0:26 /sandbox /sys/fs/cgroup rw - cgroup2 cgroup2 rw\n", + }, + }, + { + name: "a group outside the namespace this process can see", + files: map[string]string{ + "/proc/self/cgroup": "0::/../../init\n", + "/proc/self/mountinfo": cgroupV2Mount, + }, + }, + { + name: "no control groups at all", + files: map[string]string{}, + }, + { + name: "no cgroup2 mount to read it through", + files: map[string]string{ + "/proc/self/cgroup": "0::/job\n", + "/proc/self/mountinfo": cgroupOtherMount, + }, + }, + { + name: "a limit file that says something that is not a number", + files: map[string]string{ + "/proc/self/cgroup": "0::/\n", + "/proc/self/mountinfo": cgroupV2Mount, + "/sys/fs/cgroup/memory.max": "lots\n", + }, + fails: true, + }, + { + name: "a negative limit", + files: map[string]string{ + "/proc/self/cgroup": "0::/\n", + "/proc/self/mountinfo": cgroupV2Mount, + "/sys/fs/cgroup/memory.max": "-1\n", + }, + fails: true, + }, + { + name: "a line of /proc/self/cgroup with no path", + files: map[string]string{ + "/proc/self/cgroup": "0::\n", + }, + fails: true, + }, + { + name: "a mountinfo line with no separator", + files: map[string]string{ + "/proc/self/cgroup": "0::/\n", + "/proc/self/mountinfo": "30 23 0:26 / /sys/fs/cgroup rw cgroup2 cgroup2 rw\n", + }, + fails: true, + }, + { + name: "an escape cut short at the end of the mount point", + files: map[string]string{ + "/proc/self/cgroup": "0::/\n", + "/proc/self/mountinfo": `30 23 0:26 / /mnt/x\04 rw - cgroup2 cgroup2 rw` + "\n", + }, + fails: true, + }, +} diff --git a/internal/guard/machinememory_test.go b/internal/guard/machinememory_test.go new file mode 100644 index 00000000..a3da8598 --- /dev/null +++ b/internal/guard/machinememory_test.go @@ -0,0 +1,107 @@ +package guard + +import ( + "bufio" + "context" + "os" + "os/exec" + "runtime" + "strconv" + "strings" + "testing" + "time" + + "github.com/donislawdev/TestingFilesGenerator/internal/core" +) + +// The memory this program reads off the machine is the memory a second, +// independent source reports - docs/STABILITY-REVIEW-2026-10-26.md section +// 10.8. +// +// Asked of the system on whichever of the three CI runs on, and checked +// against something that is not this code: /proc/meminfo on Linux, the +// system's management interface on Windows, the sysctl command on macOS. A +// read of the wrong field of the right structure, a structure laid out one +// field off, or the last byte lost on macOS - each gives a number, and only a +// second source can say it is the wrong one. +// +// The branch is asserted rather than assumed (CLAUDE.md, trap 1). On Linux the +// answer is the memory fitted or the limit of the control group, whichever is +// smaller, and the test says which it expected. On Windows the commit limit of +// a job could make the answer smaller than the memory fitted - a runner placed +// in such a job would be a surprise, and this says so rather than passing. +func TestTheMemoryOfTheMachineIsWhatTheSystemSays(t *testing.T) { + got, err := core.MachineMemory() + if err != nil { + t.Fatalf("the memory of this machine could not be read: %v", err) + } + + switch runtime.GOOS { + case "linux": + fitted := memTotal(t) + limit, limited, err := core.CgroupMemoryLimit(os.ReadFile) + if err != nil { + t.Fatalf("the control group of this process could not be read: %v", err) + } + want, branch := fitted, "the memory fitted" + if limited && limit < fitted { + want, branch = limit, "the limit of the control group" + } + if got != want { + t.Errorf("read %d B, expected %d B - %s (MemTotal %d B, group limit %d B, limited %v)", got, want, branch, fitted, limit, limited) + } + t.Logf("%d B, %s", got, branch) + case "windows": + visible := secondOpinion(t, "pwsh", "-NoProfile", "-NonInteractive", "-Command", + "(Get-CimInstance Win32_OperatingSystem).TotalVisibleMemorySize") * 1024 + if got != visible { + t.Errorf("read %d B and the management interface says %d B of memory is fitted - the wrong field, a structure out of step, or a commit limit on this process", got, visible) + } + case "darwin": + fitted := secondOpinion(t, "sysctl", "-n", "hw.memsize") + if got != fitted { + t.Errorf("read %d B and sysctl says %d B - the byte syscall.Sysctl drops is the first suspect", got, fitted) + } + default: + t.Skipf("no second source for %s, and CI does not run there", runtime.GOOS) + } +} + +// memTotal is MemTotal from /proc/meminfo, in bytes. +func memTotal(t *testing.T) int64 { + t.Helper() + f, err := os.Open("/proc/meminfo") + if err != nil { + t.Fatal(err) + } + defer func() { _ = f.Close() }() + lines := bufio.NewScanner(f) + for lines.Scan() { + fields := strings.Fields(lines.Text()) + if len(fields) == 3 && fields[0] == "MemTotal:" && fields[2] == "kB" { + n, err := strconv.ParseInt(fields[1], 10, 64) + if err != nil { + t.Fatal(err) + } + return n * 1024 + } + } + t.Fatal("/proc/meminfo has no MemTotal line in kB") + return 0 +} + +// secondOpinion runs a command that prints one number and reads it. +func secondOpinion(t *testing.T, name string, args ...string) int64 { + t.Helper() + ctx, cancel := context.WithTimeout(context.Background(), time.Minute) + defer cancel() + out, err := exec.CommandContext(ctx, name, args...).Output() + if err != nil { + t.Fatalf("%s: %v", name, err) + } + n, err := strconv.ParseInt(strings.TrimSpace(string(out)), 10, 64) + if err != nil { + t.Fatalf("%s printed %q, not a number", name, out) + } + return n +} diff --git a/internal/guard/memorysetting_test.go b/internal/guard/memorysetting_test.go new file mode 100644 index 00000000..92cbd083 --- /dev/null +++ b/internal/guard/memorysetting_test.go @@ -0,0 +1,169 @@ +package guard + +import ( + "errors" + "math" + "strings" + "testing" + + "github.com/donislawdev/TestingFilesGenerator/internal/core" +) + +// The memory setting reads what somebody wrote and nothing else - +// docs/STABILITY-REVIEW-2026-10-26.md section 10.8. +// +// One parser for both surfaces, so this table is the answer for the flag and +// for the box on the Preferences screen alike. The refusals name the memory +// setting rather than the size, because the size parser underneath names its +// own and that would send somebody to a flag they did not type. +func TestTheMemorySettingReadsWhatItSays(t *testing.T) { + type want struct { + auto, off bool + bytes int64 + } + for _, c := range []struct { + text string + want want + }{ + {"auto", want{auto: true}}, + {" AUTO ", want{auto: true}}, + {"off", want{off: true}}, + {"Off", want{off: true}}, + {"8gb", want{bytes: 8 << 30}}, + {"1.5gib", want{bytes: 1536 << 20}}, + {"512MB", want{bytes: 512 << 20}}, + {"1", want{bytes: 1}}, + {"1048576", want{bytes: 1 << 20}}, + } { + got, err := core.ParseMemory(c.text) + if err != nil { + t.Errorf("%q was refused: %v", c.text, err) + continue + } + if got.IsAuto() != c.want.auto || got.IsOff() != c.want.off || got.Bytes() != c.want.bytes { + t.Errorf("%q read as auto=%v off=%v bytes=%d, expected auto=%v off=%v bytes=%d", + c.text, got.IsAuto(), got.IsOff(), got.Bytes(), c.want.auto, c.want.off, c.want.bytes) + } + } + + for _, c := range []struct { + text string + // says is a piece of the sentence that has to be there - the reason in + // the person's terms, not the parser's. + says string + }{ + {"", "empty memory"}, + {" ", "empty memory"}, + {"0", "leaves no room at all"}, + {"0gb", "leaves no room at all"}, + {"0.0mb", "leaves no room at all"}, + {"-1", "is negative"}, + {"-8gb", "is negative"}, + {"max", "not a setting this tool knows"}, + {"unlimited", "not a setting this tool knows"}, + {"8 gigs", "unknown unit"}, + {"1e5", "not a plain number"}, + {"1.3", "memory"}, + } { + _, err := core.ParseMemory(c.text) + if err == nil { + t.Errorf("%q was accepted", c.text) + continue + } + var about interface{ AboutSetting() string } + if !errors.As(err, &about) || about.AboutSetting() != core.SettingMemory { + t.Errorf("%q was refused about %q rather than about %q, so a window marks the wrong box: %v", + c.text, settingOf(err), core.SettingMemory, err) + } + msg := err.Error() + if !strings.Contains(msg, c.says) { + t.Errorf("%q was refused with %q, which does not say %q", c.text, msg, c.says) + } + // The size parser's own words for its own setting must not come + // through: "size" names a flag this person did not type, and "a file + // cannot be smaller than zero bytes" is about a file. + if strings.HasPrefix(msg, "size ") || strings.Contains(msg, " size \"") || strings.Contains(msg, "a file cannot") { + t.Errorf("%q was refused in the size parser's words: %q", c.text, msg) + } + } +} + +func settingOf(err error) string { + var about interface{ AboutSetting() string } + if errors.As(err, &about) { + return about.AboutSetting() + } + return "" +} + +// The text a setting is kept as reads back as the same setting, to the byte. +// +// The window keeps the setting in preferences.json as this text and reads it +// at the next start, so a size that came back rounded would be a setting +// changed without anybody touching it. +func TestTheMemorySettingReadsBackAsItself(t *testing.T) { + for _, m := range []core.Memory{ + {}, core.MemoryOff(), + core.MemoryOf(1), core.MemoryOf(1023), core.MemoryOf(1024), core.MemoryOf(1025), + core.MemoryOf(1536 << 20), core.MemoryOf(8 << 30), core.MemoryOf(3 << 40), + core.MemoryOf(math.MaxInt64), + } { + back, err := core.ParseMemory(m.String()) + if err != nil { + t.Errorf("%v (%d B) is kept as %q, which reads back as a refusal: %v", m, m.Bytes(), m.String(), err) + continue + } + if back != m { + t.Errorf("%d B is kept as %q and reads back as %d B", m.Bytes(), m.String(), back.Bytes()) + } + } +} + +// What each setting comes to on a machine of a given size. +// +// The machine is a number here rather than the one the test runs on, so the +// arithmetic is checked on the machines the decisions were made about: half +// for auto, never under the old plan ceiling for the plan, a size used as given +// in both directions, and off as nothing at all. The decisions are the owner's +// of 2026-10-27, docs/STABILITY-REVIEW-2026-10-26.md section 10.10. +func TestTheMemorySettingIsWorkedOutAgainstTheMachine(t *testing.T) { + const gib = int64(1) << 30 + machine := func(n int64, err error) (func() (int64, error), *int) { + calls := new(int) + return func() (int64, error) { *calls++; return n, err }, calls + } + + for _, c := range []struct { + name string + setting core.Memory + machine int64 + fails bool + run, plan int64 + unknown bool + asks bool + }{ + {"auto on 32 GiB", core.Memory{}, 32 * gib, false, 16 * gib, 16 * gib, false, true}, + {"auto on 7 GiB, a CI runner", core.Memory{}, 7 * gib, false, 7 * gib / 2, 7 * gib / 2, false, true}, + {"auto on 2 GiB keeps the old plan ceiling", core.Memory{}, 2 * gib, false, gib, 2 * gib, false, true}, + {"auto on a machine that cannot be asked", core.Memory{}, 0, true, 2 * gib, 2 * gib, true, true}, + {"auto on an answer of nothing", core.Memory{}, 0, false, 2 * gib, 2 * gib, true, true}, + {"auto on an answer of one byte", core.Memory{}, 1, false, 2 * gib, 2 * gib, true, true}, + {"a size above the machine", core.MemoryOf(64 * gib), 8 * gib, false, 64 * gib, 64 * gib, false, false}, + {"a size below the old plan ceiling", core.MemoryOf(100 << 20), 32 * gib, false, 100 << 20, 100 << 20, false, false}, + {"off", core.MemoryOff(), 32 * gib, false, 0, 0, false, false}, + } { + var fail error + if c.fails { + fail = errors.ErrUnsupported + } + ask, calls := machine(c.machine, fail) + got := c.setting.On(ask) + if got.Run != c.run || got.Plan != c.plan || (got.Unknown != nil) != c.unknown { + t.Errorf("%s: run %d plan %d unknown %v, expected run %d plan %d unknown %v", + c.name, got.Run, got.Plan, got.Unknown, c.run, c.plan, c.unknown) + } + if (*calls > 0) != c.asks { + t.Errorf("%s: the machine was asked %d times - a setting that does not need it must not touch the system, and auto must", c.name, *calls) + } + } +} diff --git a/internal/guard/mutation/entries.py b/internal/guard/mutation/entries.py index 05fdddc7..b9891bf0 100644 --- a/internal/guard/mutation/entries.py +++ b/internal/guard/mutation/entries.py @@ -15918,4 +15918,64 @@ "hash never refuses a write, so this is the stop.\n\t\treturn 0, nil", "TestAnOfficePackageStopsWhileItChecksumsItsPadding", ), + ( + # A nought typed by mistake is read as a size of nothing, which is auto + # - every limit gone without a word. The table asks "0" to be refused. + "the memory setting takes a nought as a setting", + "internal/core/memory.go", + "if n == 0 {", + "if n == -1 {", + "TestTheMemorySettingReadsWhatItSays", + ), + ( + # The size parser's refusal comes through in its own slot, so "8 gigs" + # is refused about the size - a window marks the wrong box and the + # command line names a flag nobody typed. + "a refusal of the size parser keeps naming the size under --memory", + "internal/core/memory.go", + "return &Refusal{said: r.said, setting: SettingMemory}", + "return err", + "TestTheMemorySettingReadsWhatItSays", + ), + ( + # The kept text takes the largest unit the size reaches rather than the + # largest that holds it whole, so 1025 B is kept as 1kb and comes back + # as 1024. + "the memory setting is kept as a rounded size", + "internal/core/memory.go", + "if m.bytes%u.size == 0 {", + "if m.bytes >= u.size {", + "TestTheMemorySettingReadsBackAsItself", + ), + ( + # Auto on a small machine gives the plan half the machine, under the + # ceiling every run had before the setting - a run planned yesterday + # is refused today. + "auto lets the plan ceiling drop below the old two gigabytes", + "internal/core/memory.go", + "return MemoryLimits{Run: half, Plan: max(half, MaxPlanBytes)}", + "return MemoryLimits{Run: half, Plan: half}", + "TestTheMemorySettingIsWorkedOutAgainstTheMachine", + ), + ( + # The walk up the groups keeps the larger limit, so a container held by + # its slice is told the slice's own looser number. + "the larger of two limits on the way up a control group wins", + "internal/core/cgroup.go", + "if ok && (!found || n < least) {", + "if ok && (!found || n > least) {", + "TestTheLimitOfAContainerIsFoundInItsControlGroup", + ), + ( + # The memory free now rather than the memory fitted - a number that + # moves by the minute. Proven on the Linux runner, where mutation runs, + # against MemTotal in /proc/meminfo. A runner whose control group held + # it below the memory fitted would not see this, and the guard logs + # which branch it took. + "the machine is read as the memory free rather than the memory fitted", + "internal/core/machinememory_linux.go", + "fitted := uint64(info.Totalram) * unit", + "fitted := uint64(info.Freeram) * unit", + "TestTheMemoryOfTheMachineIsWhatTheSystemSays", + ), ] From dae842b321c5439ec6f8990f49f1365c38f8aa94 Mon Sep 17 00:00:00 2001 From: DonislawDev Date: Tue, 27 Oct 2026 23:34:01 +0100 Subject: [PATCH 2/9] engine: the plan's ceiling and the writers both follow the memory setting The plan is refused at the setting's ceiling rather than a constant two gigabytes, and the refusal says where the number came from. Files that hold memory while they are written wait in the plan's order for room the setting leaves after the plan - never refused, a file larger than all of it goes on its own, files that hold nothing never wait, and a stop starts nothing more. The two notes a run can owe about it travel with the result, not the manifest. No format declares what it holds yet, so nothing waits so far. Co-Authored-By: Claude Opus 5.5 --- internal/core/limits.go | 72 +++++--- internal/engine/engine.go | 53 ++++-- internal/engine/parallel.go | 227 +++++++++++++++++++++++--- internal/engine/planmemory.go | 67 ++++++-- internal/engine/runnotes.go | 37 +++++ internal/format/format.go | 12 ++ internal/guard/concurrency_test.go | 7 + internal/guard/memoryqueue_test.go | 177 ++++++++++++++++++++ internal/guard/mutation/entries.py | 74 ++++++++- internal/guard/planmemory_test.go | 113 +++++++++++-- internal/gui/text/locale/said/en.json | 50 +++++- internal/gui/text/locale/said/pl.json | 12 +- internal/gui/window/run.go | 4 +- 13 files changed, 816 insertions(+), 89 deletions(-) create mode 100644 internal/engine/runnotes.go create mode 100644 internal/guard/memoryqueue_test.go diff --git a/internal/core/limits.go b/internal/core/limits.go index 7531b446..ff98bcae 100644 --- a/internal/core/limits.go +++ b/internal/core/limits.go @@ -55,33 +55,61 @@ var ( "that is what lets a run that cannot succeed be refused before the first byte", A("Most", MaxFilesPerRun)) TooManyFilesFix = Says("core.TooManyFilesFix", "Ask for fewer files, or split the work into several runs") - // The same refusal for the quantity that actually runs out. - // - // MaxFilesPerRun counts files and was justified by a measurement taken on - // txt. Re-measured on 2026-08-26 across formats, a planned file costs 850 B - // for txt, 6153 B for zip, 7527 B for pdf and 5244230 B for a pdf of a - // thousand pages - so the file ceiling lets a run ask for about 52 GB of - // plan while every number in it is legal. The sentence says memory rather - // than files because that is what the person has to change. - PlanTooLargeWhy = Says("core.PlanTooLargeWhy", - "the whole plan is held in memory before anything is written, and this build works to a ceiling of %s for it - "+ - "how much a file costs to plan depends on the format, so a ceiling on the number of files alone cannot see this", - A("Ceiling", Bytes(MaxPlanBytes))) - PlanTooLargeFix = Says("core.PlanTooLargeFix", "Ask for fewer files, or make each one cheaper to plan - fewer pages, fewer entries - or split the work into several runs") + // What to do about a plan past its ceiling. The memory setting is named + // by what it is rather than by the flag, because the window shows this + // sentence too and has no flags (O79) - both surfaces call it memory, the + // flag on one and the section of the Preferences screen on the other. + PlanTooLargeFix = Says("core.PlanTooLargeFix", + "Ask for fewer files, or make each one cheaper to plan - fewer pages, fewer entries - or split the work into several runs. "+ + "Or give the run more memory through the memory setting") ) -// MaxPlanBytes is the most memory this build will let a plan take. +// PlanTooLargeWhy is the same refusal for the quantity that actually runs out, +// in the words of where its ceiling came from. +// +// MaxFilesPerRun counts files and was justified by a measurement taken on +// txt. Re-measured on 2026-08-26 across formats, a planned file costs 850 B +// for txt, 6153 B for zip, 7527 B for pdf and 5244230 B for a pdf of a +// thousand pages - so the file ceiling lets a run ask for about 52 GB of plan +// while every number in it is legal. The sentence says memory rather than +// files because that is what the person has to change. +// +// Since 2026-10-27 the ceiling is the memory setting's rather than the build's +// (Memory.On), so the sentence says which of the three put it there. A number +// with no source is a number nobody knows how to move. +func PlanTooLargeWhy(m Memory, l MemoryLimits) Said { + switch { + case !m.IsAuto(): + return Says("core.PlanTooLargeWhySet", + "the whole plan is held in memory before anything is written, and the memory setting of this run gives it %s - "+ + "how much a file costs to plan depends on the format, so a ceiling on the number of files alone cannot see this", + A("Ceiling", Bytes(l.Plan))) + case l.Unknown != nil: + return Says("core.PlanTooLargeWhyUnknown", + "the whole plan is held in memory before anything is written, and this run gives it %s because the memory of this machine could not be read - "+ + "how much a file costs to plan depends on the format, so a ceiling on the number of files alone cannot see this", + A("Ceiling", Bytes(l.Plan))) + } + return Says("core.PlanTooLargeWhyAuto", + "the whole plan is held in memory before anything is written, and this run gives it %s, half of what this machine gives the program and never under %s - "+ + "how much a file costs to plan depends on the format, so a ceiling on the number of files alone cannot see this", + A("Ceiling", Bytes(l.Plan)), A("Floor", Bytes(MaxPlanBytes))) +} + +// MaxPlanBytes is the least memory auto lets a plan take, and the whole of it +// on a machine that cannot be asked. +// +// Until 2026-10-27 it was the ceiling for every run, on every machine, and +// nothing could move it - a person with sixty four gigabytes was refused at +// two. The memory setting took that over (Memory.On), and this stayed as the +// floor under auto, so that no run planned before the setting existed is +// refused after it. // // Two gigabytes, which is the figure the file ceiling beside it was always // meant to imply: its comment works out "a million files is therefore roughly -// 2.4 GB" and treats that as the real constraint. This makes the real -// constraint the one that is checked, so the two cannot disagree again. -// -// It is deliberately generous. Every run this tool was designed around is -// orders of magnitude under it - the largest preset asks for 10 040 files, -// which is about 9 MB of plan for txt and 76 MB for pdf - and the shapes it -// refuses are the ones that would otherwise end as an out of memory kill with -// no message at all. +// 2.4 GB" and treats that as the real constraint. Every run this tool was +// designed around is orders of magnitude under it - the largest preset asks +// for 10 040 files, which is about 9 MB of plan for txt and 76 MB for pdf. const MaxPlanBytes = 2 << 30 // PartialMarker is what a file being written is called before it is finished. diff --git a/internal/engine/engine.go b/internal/engine/engine.go index 67769d30..f4267528 100644 --- a/internal/engine/engine.go +++ b/internal/engine/engine.go @@ -135,15 +135,26 @@ type Options struct { // the guard is broken. Nil means ask the operating system. AvailableBytes func(path string) (int64, error) - // MaxPlanBytes is the ceiling on what the plan may cost in memory. Zero - // means core.MaxPlanBytes, which is what every real caller passes. + // Memory is how much memory this run may take, the plan and the writing + // together - the --memory flag, or Memory on the window's Preferences + // screen. The zero value is auto, so a caller that never heard of it gets + // half of what the machine gives the program rather than no limit. // - // Injected for the same reason AvailableBytes above it is: a test of this - // guard would otherwise have to allocate two gigabytes to reach it, which - // is slower than the whole suite and would sit inside the mutation - // runner's own memory cap. With a small ceiling the mechanism is exercised - // on a handful of files, and the real number is asked about separately. - MaxPlanBytes int64 + // It sets two things (core.Memory.On): the ceiling the plan is refused + // at, and how much the files being written at once may hold between them + // before the next one waits (writeAll). The second never refuses anything. + // + // A small size is also how a test reaches the plan's ceiling. The ceiling + // used to be a field of its own, MaxPlanBytes, injected so a guard need + // not allocate two gigabytes to get there - and a second way in to one + // number is a way for the two to come apart, so it went on 2026-10-27. + Memory core.Memory + + // MachineMemory reports how much memory this machine gives the program, + // which auto halves. Nil means ask the system (core.MachineMemory). + // Injected for the reason AvailableBytes is: a test describes a machine of + // two gigabytes without owning one. + MachineMemory func() (int64, error) // Record is the forecast of this run's record, when the caller has already // worked it out for these same files with PredictRecord - the command line @@ -185,6 +196,17 @@ func (o Options) availableBytes(path string) (int64, error) { return core.AvailableBytes(path) } +// memoryLimits is the memory setting worked out on this machine. Asked once +// by planning and once by the run, rather than carried between them, because +// the two are separate calls and a caller may plan without running. +func (o Options) memoryLimits() core.MemoryLimits { + machine := o.MachineMemory + if machine == nil { + machine = core.MachineMemory + } + return o.Memory.On(machine) +} + // Result is what a run produced. type Result struct { Manifest *manifest.Manifest @@ -207,6 +229,13 @@ type Result struct { // the notes in its own language from here, and the manifest stays English. NotesSaid map[string]core.Said + // RunNotes is what the run says about itself rather than about a file: + // the memory of the machine could not be read, a file was written past + // the memory setting. Not in the manifest, which describes files - these + // describe the machine the run happened on, and a manifest that changed + // with the machine would record something other than the files beside it. + RunNotes []core.Said + // Record is how large the record of this run was worked out to be before // its first byte, the manifest and the instructions (PredictRecord). For a // dry run that is the answer about the run it previews. A run that is @@ -372,7 +401,7 @@ func PlanContext(ctx context.Context, targets []Target, opt Options) ([]PlannedF // Watches what the plan costs while it is being built. Constructed here // rather than at the first file because constructing it is what takes the // reference point, and that has to happen before any of the plan exists. - pl.budget = newPlanMemory(opt.MaxPlanBytes) + pl.budget = newPlanMemory(opt.Memory, opt.memoryLimits()) // The manifest lands beside the files, so its name is a name too. A path // here would leave a manifest outside the directory the run was pointed @@ -495,6 +524,8 @@ func Run(ctx context.Context, files []PlannedFile, opt Options) (*Result, error) if err := preflight(ctx, files, opt, record); err != nil { return res, err } + limits := opt.memoryLimits() + res.noteMemory(limits) if opt.DryRun { // Nothing is written. Every entry is what would have been produced, @@ -570,7 +601,9 @@ func Run(ctx context.Context, files []PlannedFile, opt Options) (*Result, error) // The files are written over several goroutines. Everything that runs // beside anything else lives in parallel.go, including the measurements // that put it there. - written := writeAll(ctx, files, opt.OutDir, newProgressGate(files, opt.OnProgress)) + queue := queueFor(files, limits.Run, widthFor(len(files))) + written := writeAll(ctx, files, opt.OutDir, newProgressGate(files, opt.OnProgress), queue) + res.noteOverrun(queue.Overrun()) // Read back in the order the plan lists, on this goroutine alone. Two // things rest on that and neither is tidiness: diff --git a/internal/engine/parallel.go b/internal/engine/parallel.go index e1dea444..ed6af43b 100644 --- a/internal/engine/parallel.go +++ b/internal/engine/parallel.go @@ -13,6 +13,7 @@ import ( "os" "path/filepath" "runtime" + "slices" "sync" "sync/atomic" @@ -50,10 +51,15 @@ import ( // are live at once, so the memory a run holds while writing is N times one // generator's working set. Every generator streams - there is a guard for that // - so that set is bounded by the format rather than by the file, and the -// largest of them hold one picture. It is still N times what it was. And the -// answers are collected before any of them reaches the manifest, which is -// forty bytes a file that the sequential loop did not need: forty megabytes at -// the millionth file, beside a plan that is already far larger. +// largest of them hold one picture. A picture is enough: sixteen of forty +// megapixels held 2.6 GB where one held 358 MB, measured on 2026-10-26 +// (docs/STABILITY-REVIEW-2026-10-26.md section 3.2). So since 2026-10-27 a +// file that holds memory says how much (format.Plan.Holds), and memoryQueue +// below keeps the files written at once inside what the memory setting leaves +// after the plan - by waiting, never by refusing. And the answers are +// collected before any of them reaches the manifest, which is forty bytes a +// file that the sequential loop did not need: forty megabytes at the +// millionth file, beside a plan that is already far larger. // widthFor is how many goroutines a run of n files gets. // @@ -106,18 +112,14 @@ type fileResult struct { // wants the opposite - a contiguous prefix - because a sentence about an // interrupted verify is a sentence about a prefix, and that difference is why // there are two pools rather than one shared one. -func writeAll(ctx context.Context, files []PlannedFile, outDir string, gate *progressGate) []fileResult { - out := make([]fileResult, len(files)) - - // next is the only thing every goroutine touches, and it is an atomic - // counter. out is written at indices no other goroutine is given, because - // the counter hands each index out exactly once. - var next atomic.Int64 +func writeAll(ctx context.Context, files []PlannedFile, outDir string, gate *progressGate, queue *memoryQueue) []fileResult { + w := &writers{files: files, outDir: outDir, gate: gate, queue: queue, out: make([]fileResult, len(files))} var wg sync.WaitGroup + defer queue.wakeOnStop(ctx)() work := func() { defer wg.Done() - drain(ctx, &next, files, outDir, gate, out) + w.drain(ctx) } for w := widthFor(len(files)); w > 0; w-- { wg.Add(1) @@ -125,7 +127,22 @@ func writeAll(ctx context.Context, files []PlannedFile, outDir string, gate *pro } wg.Wait() - return out + return w.out +} + +// writers is what every writer of one run shares: the files and where they go, +// the bar, the memory queue, and the answers. +// +// next is the only thing every goroutine changes, and it is an atomic counter. +// out is written at indices no other goroutine is given, because the counter +// hands each index out exactly once. +type writers struct { + files []PlannedFile + outDir string + gate *progressGate + queue *memoryQueue + out []fileResult + next atomic.Int64 } // drain takes files off the counter until there are none left. @@ -134,9 +151,9 @@ func writeAll(ctx context.Context, files []PlannedFile, outDir string, gate *pro // reason written beside the same split in internal/audit: a literal inside a // loop counts one level deeper than it reads, and the shape guard asks for the // split rather than for a larger ceiling. -func drain(ctx context.Context, next *atomic.Int64, files []PlannedFile, outDir string, gate *progressGate, out []fileResult) { +func (w *writers) drain(ctx context.Context) { for { - i := int(next.Add(1)) - 1 + i := int(w.next.Add(1)) - 1 // Cancellation is asked before taking a file rather than only at the // top of a pass, so a Ctrl+C is noticed at the next file rather than // after every remaining one has been begun. @@ -148,18 +165,188 @@ func drain(ctx context.Context, next *atomic.Int64, files []PlannedFile, outDir // had left, which on a million file run is a million of them. What it // buys is work not done, and the guard that would catch its absence // would be a guard on a clock. - if i >= len(out) || ctx.Err() != nil { + if i >= len(w.out) || ctx.Err() != nil { return } // One of these per file, on this goroutine's own stack. How far this // writer has already reported is the one number that cannot live in // the gate: with several files in flight there is no such thing as // "the file being written". - p := fileProgress{gate: gate} - sum, err := writeOne(ctx, files[i], outDir, &p) - out[i] = fileResult{sha: sum, ok: err == nil, err: err} - p.finished(files[i].Plan, err == nil) + p := fileProgress{gate: w.gate} + // A file that holds memory waits here for its turn and its room. A + // stop while it waits leaves it never started - the zero answer - + // exactly like the files this writer never took. + if !w.queue.take(ctx, i) { + return + } + sum, err := writeOne(ctx, w.files[i], w.outDir, &p) + w.queue.give(i) + w.out[i] = fileResult{sha: sum, ok: err == nil, err: err} + p.finished(w.files[i].Plan, err == nil) + } +} + +// memoryQueue holds the files written at once to the memory the setting leaves +// them - docs/STABILITY-REVIEW-2026-10-26.md sections 10.1 and 10.8. +// +// Three rules, and each is there because the obvious alternative breaks. +// +// - A file that holds nothing never waits. Most formats stream, and a txt +// queued behind a picture would be slower for no memory at all. +// - Files that hold something take their turn in the order of the plan, and +// a later one never goes first. Letting a small picture past a large one +// that does not fit yet is how the large one waits for ever. +// - A file that holds more than all the room there is goes when nothing else +// holds anything, on its own. Waiting for room that can never exist would +// be a run that never ends, and refusing it would be the setting refusing +// files, which the owner ruled out on 2026-10-27. The run then goes past the +// setting while that file is written, and says so once (Overrun). +// +// Nil is no queue: --memory off, or room enough that every writer could hold +// its largest file at once. Both are a run written exactly as it was before +// this existed, and every method takes a nil receiver. +type memoryQueue struct { + mu sync.Mutex + turned *sync.Cond + files []PlannedFile + rank []int // place in the queue by index, -1 for a file that holds nothing + turn int // the place whose turn it is + room int64 // what is left, below nought only while a file goes on its own + holding int // files holding something now + over *Overrun +} + +// Overrun is a file that held more than the memory setting left the writers, +// and was written on its own. +type Overrun struct { + Name string + Holds, Room int64 +} + +// queueFor is the queue for one run, or nil when the run needs none. limit is +// what the memory setting lets the run hold (core.MemoryLimits.Run), nought for +// off, and width how many writers there are. +func queueFor(files []PlannedFile, limit int64, width int) *memoryQueue { + need := widest(files, width) + if limit <= 0 || need == 0 { + return nil + } + room := roomLeft(limit, need) + if room >= need { + return nil + } + q := &memoryQueue{files: files, room: room, rank: make([]int, len(files))} + q.turned = sync.NewCond(&q.mu) + places := 0 + for i, f := range files { + q.rank[i] = -1 + if f.Plan.Holds > 0 { + q.rank[i] = places + places++ + } + } + return q +} + +// widest is the most the writers could hold at once: the width largest files. +// When the room is at least that, nothing would ever wait, so there is no +// queue - and a run of text files costs the arithmetic and nothing else. +// +// One pass, keeping the width largest seen so far and replacing the smallest of +// them - width is the number of writers, sixteen on this machine, so a million +// files is sixteen million comparisons rather than a sort of a million. +func widest(files []PlannedFile, width int) int64 { + largest := make([]int64, max(width, 1)) + for _, f := range files { + if f.Plan.Holds > 0 { + least := slices.Index(largest, slices.Min(largest)) + largest[least] = max(largest[least], f.Plan.Holds) + } + } + var sum int64 + for _, n := range largest { + sum += n + } + return sum +} + +// take waits for file i's turn and room, and takes the room. False is a stop +// that came while it waited, and then nothing is taken. +// +// The stop is asked of the context itself, under the lock, rather than of a +// flag the stop sets. A flag would be set by the callback wakeOnStop hands the +// context, on a goroutine of its own and a moment later - so a writer woken by +// give in that moment would see no stop and start a file of a run that was +// already stopped. +func (q *memoryQueue) take(ctx context.Context, i int) bool { + if q == nil || q.rank[i] < 0 { + return true + } + holds := q.files[i].Plan.Holds + q.mu.Lock() + defer q.mu.Unlock() + for ctx.Err() == nil && (q.turn != q.rank[i] || (holds > q.room && q.holding > 0)) { + q.turned.Wait() + } + if ctx.Err() != nil { + return false + } + if holds > q.room && q.over == nil { + q.over = &Overrun{Name: q.files[i].Name, Holds: holds, Room: max(q.room, 0)} + } + q.room -= holds + q.holding++ + q.turn++ + q.turned.Broadcast() + return true +} + +// give hands file i's room back, whether it was written or failed. +func (q *memoryQueue) give(i int) { + if q == nil || q.rank[i] < 0 { + return + } + q.mu.Lock() + defer q.mu.Unlock() + q.room += q.files[i].Plan.Holds + q.holding-- + q.turned.Broadcast() +} + +// wakeOnStop wakes every writer waiting in the queue when the run is stopped. +// The function it returns undoes that, once the writers are done. +// +// give wakes them too, so most stops would be answered without this - a file +// holding the room finishes, gives it back and the writers waiting see the +// stop. What give cannot reach is a writer waiting for the turn of a file that +// will never be taken: drain hands out an index and then, seeing the stop, +// returns without writing it, so the turn that file held never moves and +// nothing holds anything that will be given back. Without this the writers +// behind it sleep for ever and the run never ends. +// +// NO GUARD PROVES THIS, and it is not for want of trying. The stop has to land +// between one writer taking an index and asking about the stop, while a writer +// behind it is already waiting - an order of goroutines a test cannot arrange +// from outside the package. What stays is the reasoning above, and the cost of +// being wrong about it is a run that hangs on Ctrl+C. +func (q *memoryQueue) wakeOnStop(ctx context.Context) func() { + if q == nil { + return func() {} + } + stop := context.AfterFunc(ctx, func() { + q.mu.Lock() + defer q.mu.Unlock() + q.turned.Broadcast() + }) + return func() { stop() } +} + +// Overrun is the first file that was written past the setting, or nil. +func (q *memoryQueue) Overrun() *Overrun { + if q == nil { + return nil } + return q.over } // progressGate is how progress leaves a run that has several writers in it. diff --git a/internal/engine/planmemory.go b/internal/engine/planmemory.go index 3fc2be08..265e4012 100644 --- a/internal/engine/planmemory.go +++ b/internal/engine/planmemory.go @@ -55,10 +55,12 @@ const ( // // What it can be wrong about is whose heap it is. ReadMemStats answers for the // whole process, so anything else allocating in it while a plan is being built -// is counted against the plan - O162. Two gigabytes is a great deal to borrow -// by accident, and every run this tool was designed around is orders of -// magnitude under the ceiling, so the room for a wrong refusal is small. It is -// not nought, and this is where it lives. +// is counted against the plan - O162. Under auto the ceiling is two gigabytes +// at the least, which is a great deal to borrow by accident, and every run this +// tool was designed around is orders of magnitude under it, so the room for a +// wrong refusal is small. It is not nought, and this is where it lives. A +// person who sets a small size has chosen a ceiling the window's own heap is +// counted against too. type planMemory struct { baseline uint64 // allocsBaseline is the running total of bytes this process has ever @@ -74,6 +76,10 @@ type planMemory struct { seen int nextAt int ceiling uint64 + // setting and limits are where the ceiling came from, kept for the one + // sentence that has to say so. + setting core.Memory + limits core.MemoryLimits } // newPlanMemory takes the reference point, and it is taken here because here @@ -114,15 +120,20 @@ type planMemory struct { // guard package interleaved on 2026-09-03: 277.9 s and 283.7 s without them // against 292.3 s and 306.1 s with, so about six percent. The ranges do not // overlap, which is the only reason a conclusion is drawn from four runs. -func newPlanMemory(ceiling int64) *planMemory { - if ceiling <= 0 { - ceiling = core.MaxPlanBytes +// +// Nil under --memory off, which asks for no ceiling, and then nothing is +// weighed at all - not even the reference point, which costs a collection. +func newPlanMemory(setting core.Memory, limits core.MemoryLimits) *planMemory { + if limits.Plan <= 0 { + return nil } return &planMemory{ baseline: heapInUse(), allocsBaseline: allocatedSoFar(), nextAt: 1, - ceiling: uint64(ceiling), + ceiling: uint64(limits.Plan), + setting: setting, + limits: limits, } } @@ -139,8 +150,9 @@ func newPlanMemory(ceiling int64) *planMemory { // What the counter cannot do is answer the question this refuses on. It counts // everything ever allocated, including what has already been thrown away, so it // says "no" with certainty and "maybe" otherwise. The certain half is enough, -// because it is the half every real run lands in: MaxPlanBytes is two -// gigabytes and planning ten thousand files allocates tens of megabytes. +// because it is the half every real run lands in: under auto the ceiling is +// two gigabytes at the least, and planning ten thousand files allocates tens of +// megabytes. // // /gc/heap/live:bytes was the obvious other candidate and it is the wrong one. // It reports the live heap as of the LAST COLLECTION, so a burst of allocation @@ -148,6 +160,9 @@ func newPlanMemory(ceiling int64) *planMemory { // silence exactly when the plan is growing fastest. The counter has no such // gap. func (p *planMemory) account(targetIndex, filesSoFar int) error { + if p == nil { + return nil + } p.seen++ if p.seen < p.nextAt { return nil @@ -184,7 +199,7 @@ func (p *planMemory) account(targetIndex, filesSoFar int) error { core.A("Used", core.Bytes(used)), core.A("Files", core.SaysN("engine.FilesSoFar", "%d file", "%d files", core.A("Count", filesSoFar))), core.A("Ceiling", core.Bytes(p.ceiling))), - Because: core.PlanTooLargeWhy, + Because: core.PlanTooLargeWhy(p.setting, p.limits), Remedy: core.PlanTooLargeFix, } } @@ -213,6 +228,36 @@ func stepFor(ceiling, used uint64, seen int) int { return step } +// roomLeft is what the memory setting leaves the writers once the plan and the +// rest of the process are held: limit less the heap. +// +// The heap is read the cheap way first, and that reading is never less than +// what is live - it counts what the collector has not swept yet too - so room +// it says is there is there. Only when it says there may not be room for need, +// the most the writers could hold at once, is the heap read after a collection, +// which costs what account below says it does. A run of text files never gets +// here at all (queueFor), and a run of pictures pays one collection at most, +// against writing pictures. +// +// The whole heap rather than the plan alone, and the difference is the window: +// what it holds is memory the process holds, and the setting is about what the +// process may take. On the command line the two differ by a few megabytes. +func roomLeft(limit, need int64) int64 { + if room := limit - int64(heapHeldAtMost()); room >= need { + return room + } + return limit - int64(heapInUse()) +} + +// heapHeldAtMost is the heap as it stands, the live objects and the ones not +// swept yet, without a collection - an upper bound on what is live, at the +// cost of one reading. +func heapHeldAtMost() uint64 { + sample := [1]metrics.Sample{{Name: "/memory/classes/heap/objects:bytes"}} + metrics.Read(sample[:]) + return sample[0].Value.Uint64() +} + // allocatedSoFar is every byte this process has ever allocated, thrown away or // not. // diff --git a/internal/engine/runnotes.go b/internal/engine/runnotes.go new file mode 100644 index 00000000..d2acd1a2 --- /dev/null +++ b/internal/engine/runnotes.go @@ -0,0 +1,37 @@ +// Part of package engine. See engine.go. +package engine + +import "github.com/donislawdev/TestingFilesGenerator/internal/core" + +// What a run says about the memory it ran in - Result.RunNotes. +// +// Both are said once per run rather than once per file, for the reason +// manifest.Notes gives: the same sentence twenty five thousand times buries the +// line that matters. And neither reaches the manifest, because both are about +// the machine rather than about any file on it. + +// noteMemory says the machine could not be asked, when it could not. Auto then +// worked to the old ceiling, and a run that does not say so has a limit nobody +// can see the source of (untouchable rule 6). +func (res *Result) noteMemory(limits core.MemoryLimits) { + if limits.Unknown == nil { + return + } + res.RunNotes = append(res.RunNotes, core.Says("engine.MemoryUnknown", + "the memory of this machine could not be read (%v), so this run worked to %s, the most any run took before the memory setting existed. "+ + "Set the memory setting yourself to choose the limit", + core.A("Cause", limits.Unknown), core.A("Limit", core.Bytes(core.MaxPlanBytes)))) +} + +// noteOverrun says a file was written past the memory setting, when one was. +// Only the first is named. The rest of the run's shape is the same question +// asked again, and the answer to all of them is the one setting. +func (res *Result) noteOverrun(o *Overrun) { + if o == nil { + return + } + res.RunNotes = append(res.RunNotes, core.Says("engine.MemoryOverrun", + "%s holds about %s while it is written, more than the %s the memory setting left the files being written, "+ + "so it was written on its own and the run went past the setting until it finished", + core.A("Name", core.Shown(o.Name)), core.A("Holds", core.Bytes(o.Holds)), core.A("Room", core.Bytes(o.Room)))) +} diff --git a/internal/format/format.go b/internal/format/format.go index 00fb379f..6daf946d 100644 --- a/internal/format/format.go +++ b/internal/format/format.go @@ -704,6 +704,18 @@ type Plan struct { // as the bytes that would take as long to write - nought for every file // whose cost is its bytes. See work.go. Work int64 + // Holds is how much memory writing the file takes at once beyond the + // stream every file is written through - a whole picture in memory, say. + // Nought for a format that streams, which is most of them. + // + // Counted the way the memory setting is: what the process grew by when one + // file of the shape was written, from the peak a probe measured, so the + // collector's room is inside the number. Read by the writers alone + // (engine/parallel.go), which hold the files written at once to what the + // setting leaves them - docs/STABILITY-REVIEW-2026-10-26.md section 10.8. + // Like Work, it is a cost only the format knows, and like Work it never + // reaches the manifest. + Holds int64 } // PropertyLabelEmbedded is the key a generator sets to say whether the label diff --git a/internal/guard/concurrency_test.go b/internal/guard/concurrency_test.go index a279e3d0..3388d3aa 100644 --- a/internal/guard/concurrency_test.go +++ b/internal/guard/concurrency_test.go @@ -266,6 +266,12 @@ func concurrentName(node *ast.SelectorExpr) string { return "uses " + id.Name + "." + node.Sel.Name case id.Name == "time" && node.Sel.Name == "AfterFunc": return "hands a callback to a timer's goroutine (time.AfterFunc)" + case id.Name == "context" && node.Sel.Name == "AfterFunc": + // The same shape as the timer's, found on 2026-10-27 when the memory + // queue in internal/engine/parallel.go took one: the callback runs on + // a goroutine of its own when the context ends, and the scan had no + // name for it. + return "hands a callback to the goroutine a context's end starts (context.AfterFunc)" } return "" } @@ -279,6 +285,7 @@ func TestTheConcurrencyScanSeesEachKindItLooksFor(t *testing.T) { {"a channel", `var c chan int; _ = c`}, {"a lock", `var m sync.Mutex; m.Lock()`}, {"a timer's callback", `time.AfterFunc(0, f)`}, + {"a context's callback", `context.AfterFunc(ctx, f)`}, } { src := "package x\nfunc f() {}\nfunc g() {\n" + c.body + "\n}\n" fset := token.NewFileSet() diff --git a/internal/guard/memoryqueue_test.go b/internal/guard/memoryqueue_test.go new file mode 100644 index 00000000..d486d3bb --- /dev/null +++ b/internal/guard/memoryqueue_test.go @@ -0,0 +1,177 @@ +package guard + +import ( + "context" + "errors" + "io" + "runtime" + "strings" + "sync" + "testing" + "time" + + "github.com/donislawdev/TestingFilesGenerator/internal/core" + "github.com/donislawdev/TestingFilesGenerator/internal/engine" + "github.com/donislawdev/TestingFilesGenerator/internal/format" +) + +// The files written at once hold no more than the memory setting leaves them, +// and the queue that keeps them there never refuses, never stalls a file that +// holds nothing and never starts a file after a stop - +// docs/STABILITY-REVIEW-2026-10-26.md sections 10.1, 10.4 and 10.8. +// +// Nothing here allocates the memory it talks about. What a file holds is its +// declaration (format.Plan.Holds), so the plan of four kilobyte text files is +// given declarations of a gigabyte or four and the queue is watched through a +// generator that counts the writers inside it. The room is set from the heap +// as it stands, so the test process's own few megabytes do not move the +// answer: two files of a gigabyte fit in two and a half, three do not. +// +// Four writers whatever the machine, so the answer does not depend on how many +// processors the runner has. +func TestTheFilesWrittenAtOnceHoldNoMoreThanTheMemorySettingLeaves(t *testing.T) { + was := runtime.GOMAXPROCS(4) + t.Cleanup(func() { runtime.GOMAXPROCS(was) }) + const gib = int64(1) << 30 + + t.Run("two fit, and two are written at once", func(t *testing.T) { + c := &crowd{waitForSecond: true} + res, err := runCrowded(t, context.Background(), c, []int64{gib, gib, gib, gib, gib, gib}, 5*gib/2) + if err != nil { + t.Fatal(err) + } + if c.most > 2 { + t.Errorf("%d files of a gigabyte were written at once in two and a half gigabytes of room", c.most) + } + if c.most < 2 { + t.Errorf("only one file was written at a time with room for two - the queue holds the writers back further than the setting asks") + } + if len(res.RunNotes) != 0 { + t.Errorf("a run that never went past the setting says it did: %v", res.RunNotes) + } + }) + + t.Run("a file larger than all the room goes on its own and says so", func(t *testing.T) { + c := &crowd{} + res, err := runCrowded(t, context.Background(), c, []int64{4 * gib, 4 * gib, 4 * gib}, 5*gib/2) + if err != nil { + t.Fatal(err) + } + if c.calls != 3 { + t.Fatalf("%d of three files were written - a file larger than the room has to be written, not refused and not left waiting", c.calls) + } + if c.most != 1 { + t.Errorf("%d files larger than the room were written at once", c.most) + } + if len(res.RunNotes) != 1 || !strings.Contains(res.RunNotes[0].String(), "files_0001.txt") { + t.Errorf("the run went past the setting and did not say so once, naming the first file: %v", res.RunNotes) + } + }) + + t.Run("a file that holds nothing does not wait", func(t *testing.T) { + c := &crowd{waitForSecond: true} + if _, err := runCrowded(t, context.Background(), c, []int64{4 * gib, 0, 0, 0}, 5*gib/2); err != nil { + t.Fatal(err) + } + if c.most < 2 { + t.Errorf("text files waited behind a picture written on its own, though they hold no memory at all") + } + }) + + t.Run("a stop while files wait starts none of them", func(t *testing.T) { + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + c := &crowd{stopFirst: cancel} + _, err := runCrowded(t, ctx, c, []int64{4 * gib, 4 * gib, 4 * gib, 4 * gib}, 5*gib/2) + if !errors.Is(err, context.Canceled) { + t.Errorf("the run ended with %v rather than the stop", err) + } + if c.calls != 1 { + t.Errorf("%d files were started - the ones waiting for room began writing after the run was stopped", c.calls) + } + }) +} + +// runCrowded plans one text file per declaration, gives each its declaration +// and the counting generator, and runs it with room bytes left for the writers. +func runCrowded(t *testing.T, ctx context.Context, c *crowd, holds []int64, room int64) (*engine.Result, error) { + t.Helper() + opt := engine.Options{OutDir: t.TempDir(), Seed: 7, Command: "test"} + planned, err := engine.Plan([]engine.Target{{ID: "files", Format: "txt", Sizes: engine.Uniform(len(holds), 4096)}}, opt) + if err != nil { + t.Fatal(err) + } + for i := range planned { + planned[i].Plan.Holds = holds[i] + planned[i].Desc.Generator = crowdedGenerator{Generator: planned[i].Desc.Generator, c: c} + } + // The limit is the room on top of the heap as it is now, read the way the + // engine reads it when it has to be exact. + runtime.GC() + var m runtime.MemStats + runtime.ReadMemStats(&m) + opt.Memory = core.MemoryOf(int64(m.HeapAlloc) + room) + return engine.Run(ctx, planned, opt) +} + +// crowd counts the writers inside the generator: how many now, the most at +// once, and how many files were started at all. +type crowd struct { + mu sync.Mutex + now, most, calls int + waitForSecond bool + stopFirst func() +} + +// crowdedGenerator is the real generator with a count around it. +type crowdedGenerator struct { + format.Generator + c *crowd +} + +func (g crowdedGenerator) Write(ctx context.Context, w io.Writer, p format.Plan) error { + first := g.c.enter() + defer g.c.leave() + if first && g.c.stopFirst != nil { + g.c.stopFirst() + return ctx.Err() + } + // The first file waits for a second writer to join it, for at most a few + // seconds. A queue that lets two in is answered in milliseconds. One that + // lets only one in is answered by the deadline - the clock bounds a wait + // here, it does not measure anything. + if first && g.c.waitForSecond { + g.c.waitForAnother(5 * time.Second) + } + return g.Generator.Write(ctx, w, p) +} + +func (c *crowd) enter() bool { + c.mu.Lock() + defer c.mu.Unlock() + c.now++ + c.calls++ + c.most = max(c.most, c.now) + return c.calls == 1 +} + +func (c *crowd) leave() { + c.mu.Lock() + defer c.mu.Unlock() + c.now-- +} + +func (c *crowd) waitForAnother(limit time.Duration) { + deadline := time.Now().Add(limit) + for time.Now().Before(deadline) { + c.mu.Lock() + // The most at once rather than the number now: a text file is in + // and out in microseconds, between two looks a millisecond apart. + joined := c.most >= 2 + c.mu.Unlock() + if joined { + return + } + time.Sleep(time.Millisecond) + } +} diff --git a/internal/guard/mutation/entries.py b/internal/guard/mutation/entries.py index b9891bf0..a4c6f618 100644 --- a/internal/guard/mutation/entries.py +++ b/internal/guard/mutation/entries.py @@ -6170,8 +6170,8 @@ ( "the reason given for a plan refusal names a ceiling other than the one in force", "internal/core/limits.go", - "A(\"Ceiling\", Bytes(MaxPlanBytes)))", - "A(\"Ceiling\", Bytes(MaxPlanBytes/2)))", + "A(\"Ceiling\", Bytes(l.Plan)), A(\"Floor\", Bytes(MaxPlanBytes)))", + "A(\"Ceiling\", Bytes(l.Plan)), A(\"Floor\", Bytes(MaxPlanBytes/2)))", "TestThePlanCeilingIsTheOneCoreStates", ), ( @@ -6218,9 +6218,9 @@ ), ( "the ceiling a caller does not name stops being the real one, so ordinary short runs are refused", - "internal/engine/planmemory.go", - "\t\tceiling = core.MaxPlanBytes", - "\t\tceiling = 1", + "internal/engine/engine.go", + "\treturn o.Memory.On(machine)", + "\treturn core.MemoryOf(1).On(machine)", "TestAShortOrdinaryRunIsNotRefusedByThePlanCeiling", ), ( @@ -15978,4 +15978,68 @@ "fitted := uint64(info.Freeram) * unit", "TestTheMemoryOfTheMachineIsWhatTheSystemSays", ), + ( + # Each file takes twice its room, so two that fit side by side are + # written one after the other - the queue holds the writers back + # further than the setting asks. + "the memory queue takes twice the room a file holds", + "internal/engine/parallel.go", + "q.room -= holds", + "q.room -= 2 * holds", + "TestTheFilesWrittenAtOnceHoldNoMoreThanTheMemorySettingLeaves", + ), + ( + # The room is never asked, so every writer holds its picture at once - + # the 2.6 GB of section 3.2 back again. + "the memory queue lets a file in without room for it", + "internal/engine/parallel.go", + "for ctx.Err() == nil && (q.turn != q.rank[i] || (holds > q.room && q.holding > 0)) {", + "for ctx.Err() == nil && (q.turn != q.rank[i] || (false && q.holding > 0)) {", + "TestTheFilesWrittenAtOnceHoldNoMoreThanTheMemorySettingLeaves", + ), + ( + # A file that holds nothing takes a place in the queue, so a text file + # waits behind a picture written on its own. + "a file that holds no memory waits its turn in the memory queue", + "internal/engine/parallel.go", + "if f.Plan.Holds > 0 {\n\t\t\tq.rank[i] = places", + "if f.Plan.Holds >= 0 {\n\t\t\tq.rank[i] = places", + "TestTheFilesWrittenAtOnceHoldNoMoreThanTheMemorySettingLeaves", + ), + ( + # A writer woken after a stop takes its room and starts the file of a + # run that was already stopped. + "a writer woken in the memory queue after a stop starts its file", + "internal/engine/parallel.go", + "\tif ctx.Err() != nil {\n\t\treturn false\n\t}", + "\tif false {\n\t\treturn false\n\t}", + "TestTheFilesWrittenAtOnceHoldNoMoreThanTheMemorySettingLeaves", + ), + ( + # A file written past the setting is written and nothing says so - + # untouchable rule 6. + "a file written past the memory setting goes unsaid", + "internal/engine/parallel.go", + "if holds > q.room && q.over == nil {", + "if false && q.over == nil {", + "TestTheFilesWrittenAtOnceHoldNoMoreThanTheMemorySettingLeaves", + ), + ( + # Off still weighs the plan, against a ceiling of nothing - every plan + # refused under the setting that asked for no limit. + "off weighs the plan against a ceiling nobody asked for", + "internal/engine/planmemory.go", + "\tif limits.Plan <= 0 {\n\t\treturn nil\n\t}", + "\tif false {\n\t\treturn nil\n\t}", + "TestOffWeighsNothing", + ), + ( + # Planning works to the old two gigabytes whatever the setting says - + # the ceiling that could not be moved, which is R02. + "planning ignores the memory setting and works to the old ceiling", + "internal/engine/engine.go", + "pl.budget = newPlanMemory(opt.Memory, opt.memoryLimits())", + "pl.budget = newPlanMemory(opt.Memory, core.MemoryLimits{Plan: core.MaxPlanBytes})", + "TestThePlanCeilingIsTheMemorySetting", + ), ] diff --git a/internal/guard/planmemory_test.go b/internal/guard/planmemory_test.go index bc8ce87e..4e91cf6d 100644 --- a/internal/guard/planmemory_test.go +++ b/internal/guard/planmemory_test.go @@ -1,6 +1,8 @@ package guard import ( + "errors" + "runtime" "runtime/debug" "strings" "testing" @@ -49,7 +51,7 @@ func TestAPlanTooBigToHoldIsRefusedWhileItIsBuilt(t *testing.T) { _, err := engine.Plan(targets, engine.Options{ OutDir: "out", ManifestName: "manifest.json", - MaxPlanBytes: 4 << 20, + Memory: core.MemoryOf(4 << 20), }) if err == nil { t.Fatal("planning fifty thousand files under a 4 MB plan ceiling was accepted") @@ -100,7 +102,8 @@ func TestAnOrdinaryRunIsNotRefusedByThePlanCeiling(t *testing.T) { planned, err := engine.Plan(targets, engine.Options{ OutDir: "out", ManifestName: "manifest.json", - // Zero means the real ceiling, which is what every caller passes. + // The zero value of Memory is auto, which is what a caller that sets + // nothing gets - two gigabytes of ceiling at the least. }) if err != nil { t.Fatalf("ten thousand text files were refused under the real ceiling: %v", err) @@ -144,7 +147,7 @@ func TestARunTooShortToHaveBeenWeighedIsWeighed(t *testing.T) { _, err := engine.Plan(targets, engine.Options{ OutDir: "out", ManifestName: "manifest.json", - MaxPlanBytes: 4 << 20, + Memory: core.MemoryOf(4 << 20), }) if err == nil { t.Fatal("one file whose plan is six times the ceiling was accepted, so nothing weighed it") @@ -179,7 +182,8 @@ func TestAShortOrdinaryRunIsNotRefusedByThePlanCeiling(t *testing.T) { files, err := engine.Plan(targets, engine.Options{ OutDir: "out", ManifestName: "manifest.json", - // Zero means the real ceiling, which is what every caller passes. + // The zero value of Memory is auto, which is what a caller that sets + // nothing gets - two gigabytes of ceiling at the least. }) if err != nil { t.Fatalf("a single thousand page pdf was refused under the real ceiling: %v", err) @@ -189,11 +193,14 @@ func TestAShortOrdinaryRunIsNotRefusedByThePlanCeiling(t *testing.T) { } } -// The ceiling this build works to is the one core states. +// The floor under auto is the one core states, and every refusal names its +// ceiling and where it came from. // // Asked separately from the mechanism above, because that one runs against an // injected number and would stay green if the real constant were changed to -// something a run could never reach. +// something a run could never reach. Since 2026-10-27 the constant is the +// floor auto never goes under rather than the ceiling for every run +// (docs/STABILITY-REVIEW-2026-10-26.md section 10.10). func TestThePlanCeilingIsTheOneCoreStates(t *testing.T) { if core.MaxPlanBytes <= 0 { t.Fatalf("the plan ceiling is %d, which no run can be under", core.MaxPlanBytes) @@ -205,11 +212,93 @@ func TestThePlanCeilingIsTheOneCoreStates(t *testing.T) { t.Errorf("the plan ceiling is %d B, which is under the 256 MB the largest shapes this tool ships need", core.MaxPlanBytes) } - // And the sentence has to name it, or the refusal sends somebody looking - // for a number that is written somewhere else. - if !strings.Contains(core.PlanTooLargeWhy.String(), core.HumanBytes(core.MaxPlanBytes)) { - t.Errorf("the refusal reason does not name the ceiling %s: %s", - core.HumanBytes(core.MaxPlanBytes), core.PlanTooLargeWhy) + // And each sentence has to name its number and its source, or the refusal + // sends somebody looking for a number that is written somewhere else - or + // for a setting they never touched. + floor := core.HumanBytes(core.MaxPlanBytes) + for _, c := range []struct { + name string + setting core.Memory + limits core.MemoryLimits + says []string + }{ + {"a size", core.MemoryOf(100 << 20), core.MemoryLimits{Run: 100 << 20, Plan: 100 << 20}, + []string{core.HumanBytes(100 << 20), "the memory setting"}}, + {"auto", core.Memory{}, core.MemoryLimits{Run: 8 << 30, Plan: 8 << 30}, + []string{core.HumanBytes(8 << 30), "half of what this machine gives", floor}}, + {"auto on a machine that cannot be asked", core.Memory{}, core.MemoryLimits{Run: core.MaxPlanBytes, Plan: core.MaxPlanBytes, Unknown: errors.ErrUnsupported}, + []string{floor, "could not be read"}}, + } { + why := core.PlanTooLargeWhy(c.setting, c.limits).String() + for _, want := range c.says { + if !strings.Contains(why, want) { + t.Errorf("%s: the refusal reason does not say %q: %s", c.name, want, why) + } + } + } + if fix := core.PlanTooLargeFix.String(); !strings.Contains(fix, "memory setting") { + t.Errorf("the remedy does not name the memory setting, which is what moves the ceiling: %s", fix) + } +} + +// The plan's ceiling is the memory setting's, through the engine. +// +// The arithmetic is checked against numbers in +// TestTheMemorySettingIsWorkedOutAgainstTheMachine. This is the other half: +// that planning asks the setting at all, and asks it about the machine it was +// given. The shape is the one TestAPlanTooBigToHoldIsRefusedWhileItIsBuilt +// uses, about 42 MB of plan, so a ceiling of four megabytes refuses it by ten +// times and the floor of two gigabytes takes it fifty times over. +func TestThePlanCeilingIsTheMemorySetting(t *testing.T) { + targets := []engine.Target{{ID: "files", Format: "txt", Sizes: engine.Uniform(50000, 4096)}} + tiny := func() (int64, error) { return 8 << 20, nil } + + _, err := engine.Plan(targets, engine.Options{OutDir: "out", ManifestName: "manifest.json", + Memory: core.MemoryOf(4 << 20), MachineMemory: tiny}) + if err == nil { + t.Fatal("a plan ten times the size the memory setting gives it was accepted") + } + if !strings.Contains(err.Error(), "the memory setting of this run gives it "+core.HumanBytes(4<<20)) { + t.Errorf("the refusal does not say the ceiling was the memory setting's: %s", err) + } + + // Auto on a machine of eight megabytes is four - and the plan's ceiling + // under auto never goes below the one every run had before the setting, + // so the same plan is taken. + if _, err := engine.Plan(targets, engine.Options{OutDir: "out", ManifestName: "manifest.json", + MachineMemory: tiny}); err != nil { + t.Errorf("auto on a small machine refused a plan under the old ceiling of two gigabytes: %v", err) + } +} + +// Off weighs nothing. +// +// No ceiling is the setting's whole meaning, and the only way to show the +// absence of one cheaply is to show that nothing was measured: weighing a plan +// starts with a collection, which is what takes its reference point. With the +// collector switched off, only a collection somebody asked for happens - so a +// run under auto has at least one and a run under off has none. The auto half +// is asked as well, or a count that never moves would pass the off half for +// any build. +func TestOffWeighsNothing(t *testing.T) { + was := debug.SetGCPercent(-1) + t.Cleanup(func() { debug.SetGCPercent(was) }) + targets := []engine.Target{{ID: "one", Format: "txt", Sizes: engine.Uniform(1, 64)}} + + collections := func(m core.Memory) uint32 { + var before, after runtime.MemStats + runtime.ReadMemStats(&before) + if _, err := engine.Plan(targets, engine.Options{OutDir: "out", ManifestName: "manifest.json", Memory: m}); err != nil { + t.Fatal(err) + } + runtime.ReadMemStats(&after) + return after.NumForcedGC - before.NumForcedGC + } + if n := collections(core.Memory{}); n == 0 { + t.Fatal("planning under auto asked for no collection, so this cannot tell off from auto") + } + if n := collections(core.MemoryOff()); n != 0 { + t.Errorf("planning under off asked for %d collection(s) - the plan was weighed against a ceiling nobody asked for", n) } } @@ -257,7 +346,7 @@ func TestThePlanCeilingAsksAboutAllocationRatherThanTheLastCollection(t *testing _, err := engine.Plan(targets, engine.Options{ OutDir: "out", ManifestName: "manifest.json", - MaxPlanBytes: 4 << 20, + Memory: core.MemoryOf(4 << 20), }) if err == nil { t.Fatal("with the collector switched off a plan six times the ceiling was accepted, " + diff --git a/internal/gui/text/locale/said/en.json b/internal/gui/text/locale/said/en.json index 4cef848c..0d2225cc 100644 --- a/internal/gui/text/locale/said/en.json +++ b/internal/gui/text/locale/said/en.json @@ -620,15 +620,45 @@ "hash": "sha256-6dc38cd1cb85", "other": "{{.Error}}" }, + "core.MemoryEmpty": { + "description": "Said by internal/core - a refusal under the box it is about or at the foot of the form, or a note after a run.", + "hash": "sha256-4a0a99260fc6", + "other": "empty {{.Setting}}: write auto, off or a size such as 8gb" + }, + "core.MemoryNegative": { + "description": "Said by internal/core - a refusal under the box it is about or at the foot of the form, or a note after a run. Carries {{.Value}}, written the way the program writes them - keep each spelled exactly that way.", + "hash": "sha256-87bca52970de", + "other": "{{.Setting}} {{.Value}} is negative: write auto, off or a size such as 8gb" + }, + "core.MemoryUnknown": { + "description": "Said by internal/core - a refusal under the box it is about or at the foot of the form, or a note after a run. Carries {{.Value}}, written the way the program writes them - keep each spelled exactly that way.", + "hash": "sha256-c0a095315898", + "other": "{{.Setting}} {{.Value}} is not a setting this tool knows: write auto for half of this machine's memory, off for no limit, or a size such as 8gb" + }, + "core.MemoryZero": { + "description": "Said by internal/core - a refusal under the box it is about or at the foot of the form, or a note after a run. Carries {{.Value}}, written the way the program writes them - keep each spelled exactly that way.", + "hash": "sha256-1eb04d24e00d", + "other": "{{.Setting}} {{.Value}} leaves no room at all: write off for no limit, or a size such as 8gb" + }, "core.PlanTooLargeFix": { "description": "Said by internal/core - a refusal under the box it is about or at the foot of the form, or a note after a run.", - "hash": "sha256-cb36e3de1bfb", - "other": "Ask for fewer files, or make each one cheaper to plan - fewer pages, fewer entries - or split the work into several runs" + "hash": "sha256-1cd8766a17ef", + "other": "Ask for fewer files, or make each one cheaper to plan - fewer pages, fewer entries - or split the work into several runs. Or give the run more memory through the memory setting" + }, + "core.PlanTooLargeWhyAuto": { + "description": "Said by internal/core - a refusal under the box it is about or at the foot of the form, or a note after a run. Carries {{.Ceiling}}, {{.Floor}}, written the way the program writes them - keep each spelled exactly that way.", + "hash": "sha256-2db0dbe7ea11", + "other": "the whole plan is held in memory before anything is written, and this run gives it {{.Ceiling}}, half of what this machine gives the program and never under {{.Floor}} - how much a file costs to plan depends on the format, so a ceiling on the number of files alone cannot see this" + }, + "core.PlanTooLargeWhySet": { + "description": "Said by internal/core - a refusal under the box it is about or at the foot of the form, or a note after a run. Carries {{.Ceiling}}, written the way the program writes them - keep each spelled exactly that way.", + "hash": "sha256-4ebcd0bb8055", + "other": "the whole plan is held in memory before anything is written, and the memory setting of this run gives it {{.Ceiling}} - how much a file costs to plan depends on the format, so a ceiling on the number of files alone cannot see this" }, - "core.PlanTooLargeWhy": { + "core.PlanTooLargeWhyUnknown": { "description": "Said by internal/core - a refusal under the box it is about or at the foot of the form, or a note after a run. Carries {{.Ceiling}}, written the way the program writes them - keep each spelled exactly that way.", - "hash": "sha256-52bd0c2594f6", - "other": "the whole plan is held in memory before anything is written, and this build works to a ceiling of {{.Ceiling}} for it - how much a file costs to plan depends on the format, so a ceiling on the number of files alone cannot see this" + "hash": "sha256-76ffcdf2311b", + "other": "the whole plan is held in memory before anything is written, and this run gives it {{.Ceiling}} because the memory of this machine could not be read - how much a file costs to plan depends on the format, so a ceiling on the number of files alone cannot see this" }, "core.RangeBackwards": { "description": "Said by internal/core - a refusal under the box it is about or at the foot of the form, or a note after a run. Carries {{.From}}, {{.To}}, {{.Low}}, {{.High}}, written the way the program writes them - keep each spelled exactly that way.", @@ -948,6 +978,16 @@ "hash": "sha256-7a1261279b19", "other": "cannot write the instructions to {{.Path}}: {{.Cause}}" }, + "engine.MemoryOverrun": { + "description": "Said by internal/engine - a refusal under the box it is about or at the foot of the form, or a note after a run. Carries {{.Name}}, {{.Holds}}, {{.Room}}, written the way the program writes them - keep each spelled exactly that way.", + "hash": "sha256-168a887a89fa", + "other": "{{.Name}} holds about {{.Holds}} while it is written, more than the {{.Room}} the memory setting left the files being written, so it was written on its own and the run went past the setting until it finished" + }, + "engine.MemoryUnknown": { + "description": "Said by internal/engine - a refusal under the box it is about or at the foot of the form, or a note after a run. Carries {{.Cause}}, {{.Limit}}, written the way the program writes them - keep each spelled exactly that way.", + "hash": "sha256-25e95b18a15e", + "other": "the memory of this machine could not be read ({{.Cause}}), so this run worked to {{.Limit}}, the most any run took before the memory setting existed. Set the memory setting yourself to choose the limit" + }, "engine.NameAbsolute": { "description": "Said by internal/engine - a refusal under the box it is about or at the foot of the form, or a note after a run. Carries {{.Where}}, {{.Name}}, written the way the program writes them - keep each spelled exactly that way.", "hash": "sha256-2dc5711eaa7d", diff --git a/internal/gui/text/locale/said/pl.json b/internal/gui/text/locale/said/pl.json index 298da2d3..6345b638 100644 --- a/internal/gui/text/locale/said/pl.json +++ b/internal/gui/text/locale/said/pl.json @@ -123,8 +123,14 @@ "core.DurationTooLong": { "hash": "sha256-06c88d98ae65", "other": "{{.Value}} jest za długi, żeby policzyć go w milisekundach" }, "core.DurationUnknownUnit": { "hash": "sha256-96f50400bd65", "other": "{{.Value}} ma nieznaną jednostkę {{.Unit}}: użyj h, m, s albo ms" }, "core.Error": { "hash": "sha256-6dc38cd1cb85", "other": "{{.Error}}" }, - "core.PlanTooLargeFix": { "hash": "sha256-cb36e3de1bfb", "other": "Poproś o mniej plików albo o tańsze w planowaniu - mniej stron, mniej wpisów - albo podziel pracę na kilka przebiegów" }, - "core.PlanTooLargeWhy": { "hash": "sha256-52bd0c2594f6", "other": "cały plan jest trzymany w pamięci, zanim cokolwiek zostanie zapisane, a ta wersja ma na niego sufit {{.Ceiling}} - ile kosztuje zaplanowanie pliku, zależy od formatu, więc sam sufit liczby plików tego nie widzi" }, + "core.MemoryEmpty": { "hash": "sha256-4a0a99260fc6", "other": "pole {{.Setting}} jest puste: wpisz auto, off albo rozmiar, na przykład 8gb" }, + "core.MemoryNegative": { "hash": "sha256-87bca52970de", "other": "{{.Setting}} {{.Value}} jest ujemna: wpisz auto, off albo rozmiar, na przykład 8gb" }, + "core.MemoryUnknown": { "hash": "sha256-c0a095315898", "other": "{{.Setting}} {{.Value}} to nie jest ustawienie, które ten program zna: wpisz auto, żeby wziąć połowę pamięci tej maszyny, off, żeby nie mieć limitu, albo rozmiar, na przykład 8gb" }, + "core.MemoryZero": { "hash": "sha256-1eb04d24e00d", "other": "{{.Setting}} {{.Value}} nie zostawia żadnego miejsca: wpisz off, żeby nie mieć limitu, albo rozmiar, na przykład 8gb" }, + "core.PlanTooLargeFix": { "hash": "sha256-1cd8766a17ef", "other": "Poproś o mniej plików albo o tańsze w planowaniu - mniej stron, mniej wpisów - albo podziel pracę na kilka przebiegów. Możesz też dać przebiegowi więcej pamięci w ustawieniu pamięci" }, + "core.PlanTooLargeWhyAuto": { "hash": "sha256-2db0dbe7ea11", "other": "cały plan jest trzymany w pamięci, zanim cokolwiek zostanie zapisane, a ten przebieg daje mu {{.Ceiling}}, połowę tego, co ta maszyna daje programowi, i nigdy mniej niż {{.Floor}} - ile kosztuje zaplanowanie pliku, zależy od formatu, więc sam sufit liczby plików tego nie widzi" }, + "core.PlanTooLargeWhySet": { "hash": "sha256-4ebcd0bb8055", "other": "cały plan jest trzymany w pamięci, zanim cokolwiek zostanie zapisane, a ustawienie pamięci tego przebiegu daje mu {{.Ceiling}} - ile kosztuje zaplanowanie pliku, zależy od formatu, więc sam sufit liczby plików tego nie widzi" }, + "core.PlanTooLargeWhyUnknown": { "hash": "sha256-76ffcdf2311b", "other": "cały plan jest trzymany w pamięci, zanim cokolwiek zostanie zapisane, a ten przebieg daje mu {{.Ceiling}}, bo nie udało się odczytać pamięci tej maszyny - ile kosztuje zaplanowanie pliku, zależy od formatu, więc sam sufit liczby plików tego nie widzi" }, "core.RangeBackwards": { "hash": "sha256-1d0ff9d1af62", "other": "zakres biegnie wstecz, od {{.From}} B w dół do {{.To}} B. Mniejszy koniec idzie pierwszy, a zakres biegnący wstecz nie zawiera żadnego rozmiaru. Zapisz go jako {{.Low}}-{{.High}}" }, "core.RangeNotARange": { "hash": "sha256-ec7fa6194ef2", "other": "{{.Value}} nie jest zakresem. Zakres to dokładnie dwa rozmiary z jednym łącznikiem między nimi, na przykład 1kb-8kb" }, "core.SizeBelowZero": { "hash": "sha256-a2509071b044", "other": "plik nie może być mniejszy niż zero bajtów" }, @@ -188,6 +194,8 @@ "engine.IDTwice": { "hash": "sha256-724959681477", "other": "nazwa partii {{.ID}} występuje dwa razy" }, "engine.IDTwiceWhy": { "hash": "sha256-ded29dfee98c", "other": "nazwy wskazują partie, więc powtórzenie jest błędem, a nie cichym nadpisaniem" }, "engine.InstructionsNotWritten": { "hash": "sha256-7a1261279b19", "other": "nie można zapisać instrukcji do {{.Path}}: {{.Cause}}" }, + "engine.MemoryOverrun": { "hash": "sha256-168a887a89fa", "other": "{{.Name}} zajmuje przy zapisie około {{.Holds}}, więcej niż {{.Room}}, które ustawienie pamięci zostawiło zapisywanym plikom, więc został zapisany sam, a przebieg przekroczył ustawienie, dopóki go nie skończył" }, + "engine.MemoryUnknown": { "hash": "sha256-25e95b18a15e", "other": "nie udało się odczytać pamięci tej maszyny ({{.Cause}}), więc ten przebieg wziął {{.Limit}}, czyli najwięcej, ile brał każdy przebieg, zanim powstało ustawienie pamięci. Ustaw pamięć sam, żeby wybrać limit" }, "engine.NameAbsolute": { "hash": "sha256-2dc5711eaa7d", "other": "{{.Where}} daje ścieżkę bezwzględną {{.Name}}" }, "engine.NameAbsoluteWhy": { "hash": "sha256-61f6a0c76deb", "other": "przepis nie niesie ścieżek bezwzględnych, bo wtedy działa tylko na maszynie, na której go napisano" }, "engine.NameColon": { "hash": "sha256-9346cfb2e4a8", "other": "{{.Where}} daje nazwę {{.Name}}, w której jest dwukropek" }, diff --git a/internal/gui/window/run.go b/internal/gui/window/run.go index 206bedfd..bd2e1ec7 100644 --- a/internal/gui/window/run.go +++ b/internal/gui/window/run.go @@ -798,8 +798,8 @@ func (r *runner) holdBeforeFinishing() { // Settled waits for work in flight to finish, without stopping it. // // A seam for the guards, and named as one rather than dressed up - the same -// kind of thing as Options.AvailableBytes and Options.MaxPlanBytes in the -// engine, which exist so a test can describe a small disk or a small ceiling +// kind of thing as Options.AvailableBytes and Options.MachineMemory in the +// engine, which exist so a test can describe a small disk or a small machine // without owning one. // // It is here because of what changed on 2026-08-26. Until then a preview could From ddda6d9a827b6628c3b689df3cf38213d5638345 Mon Sep 17 00:00:00 2001 From: DonislawDev Date: Wed, 28 Oct 2026 00:30:01 +0100 Subject: [PATCH 3/9] format: pictures, films and the containers that hold them say what writing holds jpg, png and gif declare what writing one holds from its pixels, films from their picture size, jxl and avif when they code the picture while writing, and zip, tar.gz, html, rtf and eml the most of anything inside them. The numbers are the measured growth of the process for each writer more, with room. A guard asks every format with a width and a height whether writing allocates more for a larger picture, and if it does, the plan has to say so. Co-Authored-By: Claude Opus 5.5 --- internal/format/avif/avif.go | 18 +++ internal/format/container.go | 16 +++ internal/format/eml/eml.go | 4 + internal/format/gif/gif.go | 14 +++ internal/format/htmlfile/html.go | 1 + internal/format/jpg/jpg.go | 14 +++ internal/format/jxl/jxl.go | 18 +++ internal/format/png/png.go | 13 +++ internal/format/rtf/rtf.go | 1 + internal/format/targz/targz.go | 1 + internal/format/video/plan.go | 17 +++ internal/format/zip/zip.go | 1 + internal/guard/holds_test.go | 187 +++++++++++++++++++++++++++++++ 13 files changed, 305 insertions(+) create mode 100644 internal/guard/holds_test.go diff --git a/internal/format/avif/avif.go b/internal/format/avif/avif.go index cb71e5c3..a2973bc1 100644 --- a/internal/format/avif/avif.go +++ b/internal/format/avif/avif.go @@ -208,9 +208,27 @@ func (generator) Plan(r format.Request) (format.Plan, error) { carries, p.Notes = imagelabel.Claim(carries, m.width, m.height, len(label), p.Notes) p.Properties[format.PropertyLabelEmbedded] = carries p.Memo = m + if m.coded == nil { + // Coded while writing rather than while planning, so the writer holds + // the picture and the encoder's work - see holdsPerPixel. + p.Holds = holdsPerPixel * int64(m.width) * int64(m.height) + } return p, nil } +// holdsPerPixel is what coding one of these holds at once for each pixel, for +// the memory setting (format.Plan.Holds). Only a picture chosen from the +// ladder is coded while writing, and the largest rung is 640x480, so this +// declares at most about 2 MB. +// +// From the peak of one picture, measured on 2026-10-26 with +// tools/probes/peakmem (docs/STABILITY-REVIEW-2026-10-26.md section 10.0): +// 347 MiB for one 8000x5000 picture coded while planning, 7.9 B a pixel. That peak holds a whole process's +// collector room around one picture, so it is more than a second writer adds - +// for jpg the second writer added a third of it - which makes it a bound from +// above rather than a measurement of this. +const holdsPerPixel = 8 + // checkFits refuses a request the format cannot answer. // // The gate is the declared floor, not this seed's own encoded size, so the diff --git a/internal/format/container.go b/internal/format/container.go index fd9d209b..a63f137d 100644 --- a/internal/format/container.go +++ b/internal/format/container.go @@ -111,3 +111,19 @@ func Containers() []string { sort.Strings(out) return out } + +// OneAtATime is what a container that writes the files inside it one after +// another holds at once, for the memory setting: the most any one of them holds +// (Plan.Holds). Never their sum - the second picture is written after the +// first has gone - and never nothing, because each of the five containers that +// hold pictures codes them while it writes (zip, targz, htmlfile, rtf and eml, +// docs/STABILITY-REVIEW-2026-10-26.md section 12.0). A container inside a +// container passes its own number up, so the deepest picture is the one that +// counts. +func OneAtATime[T any](inside []T, plan func(T) Plan) int64 { + var most int64 + for _, f := range inside { + most = max(most, plan(f).Holds) + } + return most +} diff --git a/internal/format/eml/eml.go b/internal/format/eml/eml.go index b6ba2c66..cd90b1ac 100644 --- a/internal/format/eml/eml.go +++ b/internal/format/eml/eml.go @@ -271,6 +271,10 @@ func describe(m *message, groups []format.Content, target int64) format.Plan { p.Properties[UnsubscribeURL] = m.id.unsubscribe } describePictures(p.Properties, m) + // The attached files and the pictures the text shows are two lists, and + // the message writes every one of them after the one before. + plan := func(c child) format.Plan { return c.plan } + p.Holds = max(format.OneAtATime(m.children, plan), format.OneAtATime(m.pictures, plan)) return p } diff --git a/internal/format/gif/gif.go b/internal/format/gif/gif.go index 5b22f101..7d30b992 100644 --- a/internal/format/gif/gif.go +++ b/internal/format/gif/gif.go @@ -232,9 +232,23 @@ func (generator) Plan(r format.Request) (format.Plan, error) { labelled, p.Notes = imagelabel.Claim(labelled, w, h, len(label), p.Notes) p.Properties[format.PropertyLabelEmbedded] = labelled p.Memo = m + p.Holds = holdsPerPixel * int64(w) * int64(h) / 2 return p, nil } +// holdsPerPixel is twice what writing one of these holds at once for each +// pixel of the picture, for the memory setting (format.Plan.Holds) - one byte +// of palette index a pixel for the first frame, and buffers. Twice, so a +// number with a half in it stays a whole one. +// +// Measured on 2026-10-27 with tools/probes/peakmem: eight files written by +// eight writers against the same eight by one, two rounds, the difference +// shared out over the seven extra writers. 0.4 and 0.75 B a pixel at +// 2000x1250, 0.75 and 0.85 at 4000x2500 - the frames after the first redraw +// only the square that moves, so they add little. One and a half covers both +// with room. +const holdsPerPixel = 3 + // settlePadding decides what the comment has to carry, or refuses a size no // arrangement of comments can produce. func settlePadding(m *memo, want, bare int64) error { diff --git a/internal/format/htmlfile/html.go b/internal/format/htmlfile/html.go index b5b594e1..5b95ae1f 100644 --- a/internal/format/htmlfile/html.go +++ b/internal/format/htmlfile/html.go @@ -143,6 +143,7 @@ func (generator) PlanContext(ctx context.Context, r format.Request) (format.Plan p.Properties[format.PropertyLabelEmbedded] = m.labelLine != "" p.Memo = m + p.Holds = format.OneAtATime(m.pictures, func(l pictureLine) format.Plan { return l.plan }) return p, nil } diff --git a/internal/format/jpg/jpg.go b/internal/format/jpg/jpg.go index edadddff..b103c7e5 100644 --- a/internal/format/jpg/jpg.go +++ b/internal/format/jpg/jpg.go @@ -256,9 +256,23 @@ func (generator) Plan(r format.Request) (format.Plan, error) { labelled, p.Notes = imagelabel.Claim(labelled, w, h, len(label), p.Notes) p.Properties[format.PropertyLabelEmbedded] = labelled p.Memo = m + p.Holds = holdsPerPixel * int64(w) * int64(h) return p, nil } +// holdsPerPixel is what writing one of these holds at once for each pixel of +// the picture, for the memory setting (format.Plan.Holds) - the picture the +// encoder reads, and its buffers. +// +// Measured on 2026-10-27 with tools/probes/peakmem: eight files written by +// eight writers against the same eight by one, two rounds, the difference +// shared out over the seven extra writers. 3.65 B a pixel at 2000x1250, 2.9 at +// 4000x2500, and 4.0 at 8000x5000 from the sixteen writers of 2026-10-26 +// (docs/STABILITY-REVIEW-2026-10-26.md section 3.2). Five covers all three with +// room, because a number under the truth lets the writers past the setting and +// one over it only makes them wait. +const holdsPerPixel = 5 + func (generator) Write(ctx context.Context, w io.Writer, p format.Plan) error { m, ok := p.Memo.(memo) if !ok { diff --git a/internal/format/jxl/jxl.go b/internal/format/jxl/jxl.go index e2e963b1..0bd09a8f 100644 --- a/internal/format/jxl/jxl.go +++ b/internal/format/jxl/jxl.go @@ -254,9 +254,27 @@ func (generator) Plan(r format.Request) (format.Plan, error) { carries, p.Notes = imagelabel.Claim(carries, m.width, m.height, len(label), p.Notes) p.Properties[format.PropertyLabelEmbedded] = carries p.Memo = m + if m.coded == nil { + // Coded while writing rather than while planning, so the writer holds + // the picture and the encoder's work - see holdsPerPixel. + p.Holds = holdsPerPixel * int64(m.width) * int64(m.height) + } return p, nil } +// holdsPerPixel is what coding one of these holds at once for each pixel, for +// the memory setting (format.Plan.Holds). Only a picture chosen from the +// ladder is coded while writing, and the largest rung is 640x480, so this +// declares at most about 10 MB. +// +// From the peak of one picture, measured on 2026-10-26 with +// tools/probes/peakmem (docs/STABILITY-REVIEW-2026-10-26.md section 10.0): +// 1306 MiB for one 8000x5000 picture coded while planning, 33 B a pixel, and 28 to 29 at 2.5 and 10 megapixels. That peak holds a whole process's +// collector room around one picture, so it is more than a second writer adds - +// for jpg the second writer added a third of it - which makes it a bound from +// above rather than a measurement of this. +const holdsPerPixel = 34 + // checkFits refuses a request the format cannot answer. // // The gate is the declared floor, not this seed's own coded size, so the diff --git a/internal/format/png/png.go b/internal/format/png/png.go index 68d439a4..01daba80 100644 --- a/internal/format/png/png.go +++ b/internal/format/png/png.go @@ -248,9 +248,22 @@ func (generator) Plan(r format.Request) (format.Plan, error) { labelled, p.Notes = imagelabel.Claim(labelled, w, h, len(label), p.Notes) p.Properties[format.PropertyLabelEmbedded] = labelled p.Memo = m + p.Holds = holdsPerPixel * int64(w) * int64(h) return p, nil } +// holdsPerPixel is what writing one of these holds at once for each pixel of +// the picture, for the memory setting (format.Plan.Holds) - the picture the +// encoder reads, and its buffers. +// +// Measured on 2026-10-27 with tools/probes/peakmem: eight files written by +// eight writers against the same eight by one, two rounds, the difference +// shared out over the seven extra writers. 2.9 and 3.0 B a pixel at 2000x1250, +// 2.5 and 3.5 at 4000x2500. Five covers both with room, because a number under +// the truth lets the writers past the setting and one over it only makes them +// wait. +const holdsPerPixel = 5 + func (generator) Write(ctx context.Context, w io.Writer, p format.Plan) error { m, ok := p.Memo.(memo) if !ok { diff --git a/internal/format/rtf/rtf.go b/internal/format/rtf/rtf.go index b43d42c0..3f2749ec 100644 --- a/internal/format/rtf/rtf.go +++ b/internal/format/rtf/rtf.go @@ -105,6 +105,7 @@ func (generator) PlanContext(ctx context.Context, r format.Request) (format.Plan } p.Properties[format.PropertyLabelEmbedded] = m.labelLine != "" p.Memo = m + p.Holds = format.OneAtATime(m.pictures, func(l pictureLine) format.Plan { return l.plan }) return p, nil } diff --git a/internal/format/targz/targz.go b/internal/format/targz/targz.go index 108e94a4..fd4715dd 100644 --- a/internal/format/targz/targz.go +++ b/internal/format/targz/targz.go @@ -250,6 +250,7 @@ func (generator) PlanContext(ctx context.Context, r format.Request) (format.Plan } p.Memo = m + p.Holds = format.OneAtATime(m.children, func(c child) format.Plan { return c.plan }) return p, nil } diff --git a/internal/format/video/plan.go b/internal/format/video/plan.go index ed6b44b6..29c1afc6 100644 --- a/internal/format/video/plan.go +++ b/internal/format/video/plan.go @@ -52,6 +52,7 @@ func Plan(formatID string, r format.Request, need func(Stream) int64, refuse fun Properties: Facts(c, s), Memo: Film{Choice: c, Settings: s}, Work: st.Work(), + Holds: Holds(c.Width, c.Height), } if r.Label && !Labelled(c.Width, c.Label) { p.Notes = append(p.Notes, format.Note{ @@ -72,6 +73,22 @@ func Plan(formatID string, r format.Request, need func(Stream) int64, refuse fun return p, nil } +// Holds is what writing a film of a picture this size holds at once, for the +// memory setting (format.Plan.Holds). +// +// Measured on 2026-10-27 with tools/probes/peakmem: eight films of one second +// written by eight writers against the same eight by one, two rounds, the +// difference shared out over the seven extra writers. 5.0 and 8.0 MiB a writer +// at 1920x1080, 14.1 and 14.9 at 3840x2160 - so a part that does not grow with +// the picture and a part that does, and the pool of helpers in ahead.go is the +// process's rather than any writer's, so it is in neither. Four mebibytes and +// two bytes a pixel comes to 8.1 and 20.6 MiB at those two sizes, over every +// reading. Measured at one second: a longer film is written a picture at a +// time, and NOT measured to hold no more. +func Holds(width, height int) int64 { + return 4<<20 + 2*int64(width)*int64(height) +} + // Hint is what a refusal below a film's minimum offers. A smaller picture only // when the request named one: a picture chosen to fit is already the smallest // that would, so offering a smaller one would send somebody to a setting that diff --git a/internal/format/zip/zip.go b/internal/format/zip/zip.go index 004943d3..acf4dde1 100644 --- a/internal/format/zip/zip.go +++ b/internal/format/zip/zip.go @@ -174,6 +174,7 @@ func (generator) PlanContext(ctx context.Context, r format.Request) (format.Plan } p.Memo = m + p.Holds = format.OneAtATime(m.children, func(c child) format.Plan { return c.plan }) return p, nil } diff --git a/internal/guard/holds_test.go b/internal/guard/holds_test.go new file mode 100644 index 00000000..89c170d9 --- /dev/null +++ b/internal/guard/holds_test.go @@ -0,0 +1,187 @@ +package guard + +import ( + "context" + "errors" + "io" + "runtime" + "strconv" + "testing" + + "github.com/donislawdev/TestingFilesGenerator/internal/format" + _ "github.com/donislawdev/TestingFilesGenerator/internal/format/all" + pic "github.com/donislawdev/TestingFilesGenerator/internal/format/picture" +) + +// Every format whose writing holds more memory for a larger picture says so in +// its plan - docs/STABILITY-REVIEW-2026-10-26.md sections 10.4 and 10.8. +// +// The memory setting holds the writers back by what their files declare +// (format.Plan.Holds), so a format that forgets to declare is a format the +// setting cannot see: sixteen of its pictures go out at once whatever the +// setting says, which is R02 back again for that one format. +// +// Asked of every format with a width and a height, from the registry, so a +// format added later is asked without being named here. The question is put +// to what writing allocates rather than to the code: the same file planned +// twice, the second picture with twice the pixels, and the bytes allocated +// while each is written. A format whose writing allocates more for the larger +// picture holds the picture, and has to declare more than nothing and more for +// the larger one. A format that streams allocates the same for both and may +// declare nothing - bmp, tiff and webp do, and so do jxl and avif with a size +// named, because they code the picture while planning. +// +// The allocation is a bound from above on what is held, not a measure of it, +// so this cannot say a declaration is too small - only that one is missing or +// does not grow. The numbers themselves are measured in the comment beside +// each. +func TestEveryPictureSaysWhatWritingItHolds(t *testing.T) { + const w, h = 128, 96 + growing := map[string]bool{} + for _, d := range format.All() { + if !takes(d, "width") || !takes(d, "height") { + continue + } + small, smallAlloc := writtenAt(t, d, w, h) + large, largeAlloc := writtenAt(t, d, 2*w, h) + if largeAlloc < smallAlloc+uint64(w*h) { + continue + } + growing[d.ID] = true + if small.Holds <= 0 || large.Holds <= small.Holds { + t.Errorf("%s allocates %d B writing a %dx%d picture and %d B writing one twice as wide, so writing it holds the picture - and it declares %d B and %d B. The memory setting cannot hold back what a plan does not declare", + d.ID, smallAlloc, w, h, largeAlloc, small.Holds, large.Holds) + } + } + // The three that hold their picture while writing, measured on + // 2026-10-27 - if the instrument stops seeing them, it is the instrument + // that broke, and the guard says so rather than passing on nothing. + for _, id := range []string{"jpg", "png", "gif"} { + if !growing[id] { + t.Errorf("%s did not allocate more for a larger picture, so this measurement no longer sees a format holding its picture", id) + } + } + t.Logf("formats whose writing grows with the picture: %v", growing) +} + +// The same question with no size named, where the format chooses the picture. +// +// jxl and avif choose from a ladder without coding anything while planning, +// and code the picture while writing - so the declaration that matters for +// them is on the path the guard above never takes, since it names a size. +// Doubling the pixels cannot be asked here, because the format picks them, so +// the question is the plainer one: writing allocated at least a byte for each +// pixel of the picture it chose, and then the plan has to declare something. +func TestEveryPictureItChoosesSaysWhatWritingItHolds(t *testing.T) { + coded := map[string]bool{} + for _, d := range format.All() { + if !takes(d, "width") || !takes(d, "height") { + continue + } + p, alloc := written(t, d, format.Request{Bytes: 1 << 20, Seed: 1}) + w, _ := p.Properties["width"].(int) + h, _ := p.Properties["height"].(int) + if w*h == 0 || alloc < uint64(w*h) { + continue + } + coded[d.ID] = true + if p.Holds <= 0 { + t.Errorf("%s chose a %dx%d picture and allocated %d B writing it, and declares it holds %d B", d.ID, w, h, alloc, p.Holds) + } + } + for _, id := range []string{"jxl", "avif"} { + if !coded[id] { + t.Errorf("%s with no size named did not allocate a byte a pixel while writing, so this no longer reaches the picture it codes then", id) + } + } + t.Logf("formats that hold the picture they chose: %v", coded) +} + +// A container holds what the largest picture inside it holds, because it +// writes them one after another and codes each while it writes. +func TestAContainerHoldsWhatItsLargestPictureHolds(t *testing.T) { + png := planned(t, "png", format.Request{Bytes: 64 << 10, Seed: 1}) + if png.Holds <= 0 { + t.Fatalf("a png declares it holds %d B, so there is nothing for a container to pass up", png.Holds) + } + inside := []format.Content{{Format: "txt", Count: 2, Bytes: 1024}, {Format: "png", Count: 2, Bytes: 64 << 10}} + for _, id := range []string{"zip", "targz"} { + p := planned(t, id, format.Request{Bytes: 1 << 20, Seed: 1, Contains: inside}) + if p.Holds != png.Holds { + t.Errorf("%s holding two pngs of %d B declares %d B, and each png declares %d B - a container writes them one at a time, so it holds the largest of them", + id, 64<<10, p.Holds, png.Holds) + } + } + pages := 0 + for _, d := range format.All() { + if !takes(d, pic.Count) { + continue + } + pages++ + p := planned(t, d.ID, format.Request{Bytes: 1 << 20, Seed: 1, Properties: map[string]string{pic.Count: "3", "inline_size": "16kb"}}) + if p.Holds <= 0 { + t.Errorf("%s with three pictures in it declares %d B, though it codes each picture while it writes", d.ID, p.Holds) + } + } + if pages == 0 { + t.Fatal("no format takes inline pictures, so the second half of this guard asked nothing") + } +} + +// takes says whether a format has a setting of this name. +func takes(d format.Descriptor, name string) bool { + for _, p := range d.Properties { + if p.Name == name { + return true + } + } + return false +} + +// planned is a plan of one file, or the end of the test. +func planned(t *testing.T, id string, r format.Request) format.Plan { + t.Helper() + d, err := format.Get(id) + if err != nil { + t.Fatal(err) + } + p, err := format.PlanWith(context.Background(), d.Generator, r) + if err != nil { + t.Fatalf("planning %s: %v", id, err) + } + return p +} + +// writtenAt is written with the picture's width and height named. +func writtenAt(t *testing.T, d format.Descriptor, w, h int) (format.Plan, uint64) { + t.Helper() + return written(t, d, format.Request{Bytes: 1 << 20, Seed: 1, Properties: map[string]string{"width": strconv.Itoa(w), "height": strconv.Itoa(h)}}) +} + +// written plans one file of the request at a size the format can hold, writes +// it, and says what the plan declared and what writing allocated. +func written(t *testing.T, d format.Descriptor, r format.Request) (format.Plan, uint64) { + t.Helper() + p, err := format.PlanWith(context.Background(), d.Generator, r) + var below *format.BelowMinimumError + if errors.As(err, &below) { + r.Bytes = below.Minimum + p, err = format.PlanWith(context.Background(), d.Generator, r) + } + var above *format.AboveMaximumError + if errors.As(err, &above) { + r.Bytes = above.Maximum + p, err = format.PlanWith(context.Background(), d.Generator, r) + } + if err != nil { + t.Fatalf("planning a %s of %v: %v", d.ID, r.Properties, err) + } + runtime.GC() + var before, after runtime.MemStats + runtime.ReadMemStats(&before) + if err := d.Generator.Write(context.Background(), io.Discard, p); err != nil { + t.Fatalf("writing a %s of %v: %v", d.ID, r.Properties, err) + } + runtime.ReadMemStats(&after) + return p, after.TotalAlloc - before.TotalAlloc +} From 026743257cb60f65ef3d0915855c5e0f074f6a40 Mon Sep 17 00:00:00 2001 From: DonislawDev Date: Wed, 28 Oct 2026 00:30:01 +0100 Subject: [PATCH 4/9] cli: --memory on generate, validate and preset show auto, a size or off, read by the same parser as the window. A bad value is exit 2 in the parser's words, a run written past the setting says so once, and the hand written help of preset show now lists its flags. validate's flags and help moved into their own function, the way generate's are. Co-Authored-By: Claude Opus 5.5 --- README.md | 3 +- internal/cli/generate.go | 11 +++- internal/cli/memoryflag.go | 47 +++++++++++++ internal/cli/preset.go | 13 +++- internal/cli/presetcmd.go | 10 ++- internal/cli/recipecmd.go | 33 +++++++--- internal/guard/memoryflag_test.go | 105 ++++++++++++++++++++++++++++++ 7 files changed, 207 insertions(+), 15 deletions(-) create mode 100644 internal/cli/memoryflag.go create mode 100644 internal/guard/memoryflag_test.go diff --git a/README.md b/README.md index cff2f7ab..b6a32fea 100644 --- a/README.md +++ b/README.md @@ -345,11 +345,12 @@ tfg generate --format txt --size 1mb settings come from the flags | `--clean` | turn off the self describing label written inside each file | | `--dry-run` | count and show, write nothing at all | | `--json` | write the manifest to standard output | +| `--memory ` | how much memory the run may use: `auto` (the default, half of what this machine gives the program), a size such as `8gb`, or `off` for no limit. Pictures wait for room rather than all being held at once, and a plan larger than this is refused before anything is written. Also on `validate` and `preset show` | ### `tfg validate` ``` -tfg validate [--json] +tfg validate [--json] [--memory ] ``` Checks a recipe and writes nothing. Reports **every** problem at once rather diff --git a/internal/cli/generate.go b/internal/cli/generate.go index 8c76a9a1..d33d5729 100644 --- a/internal/cli/generate.go +++ b/internal/cli/generate.go @@ -113,6 +113,10 @@ Flags: func generate(ctx context.Context, args []string, out, errOut io.Writer) int { var g generateOpts fs, usage := generateFlagSet(errOut, &g) + // Beside the options rather than among them: it says nothing about the + // files, only about the machine, and generateOpts is at the crowding band. + var memory memoryValue + memoryFlag(fs, &memory) if helpRequested(args) { usage(out) return ExitOK @@ -156,6 +160,7 @@ func generate(ctx context.Context, args []string, out, errOut io.Writer) int { DryRun: g.dryRun, Command: "tfg " + strings.Join(args2(args), " "), ManifestName: defaultManifestName, + Memory: memory.Memory, } var ( @@ -446,9 +451,9 @@ func produce(ctx context.Context, targets []engine.Target, opt engine.Options, g bar.clear() } - for _, n := range res.Manifest.Notes() { - fmt.Fprintf(errOut, "note: %s\n", n) - } + // What the run says about the memory it ran in comes first: it is about + // the run rather than about any one file, and it is said once. + sayNotes(append(saidAll(res.RunNotes), res.Manifest.Notes()...), errOut) if runErr != nil { fmt.Fprintf(errOut, "tfg: %s%s\n", describeError(runErr), whatSurvived(runErr, res)) diff --git a/internal/cli/memoryflag.go b/internal/cli/memoryflag.go new file mode 100644 index 00000000..8a1894fa --- /dev/null +++ b/internal/cli/memoryflag.go @@ -0,0 +1,47 @@ +package cli + +import ( + "flag" + + "github.com/donislawdev/TestingFilesGenerator/internal/core" +) + +// --memory, on every command that plans: generate, validate and preset show. +// +// One function registers it on all three, so the flag cannot read one way on +// one command and another on the next, and core.ParseMemory reads it, so the +// flag and the box on the window's Preferences screen give the same answer to +// the same text - docs/STABILITY-REVIEW-2026-10-26.md section 10.8. +// +// The help is a fixed sentence with no number from this machine in it. The +// site prints the help of every command, and a number read off the machine +// that built the site would be a number about nobody's machine. + +// memoryHelp is what --help says about the flag. +const memoryHelp = "how much memory this run may use: auto (half of what this machine gives the program), " + + "a size such as 8gb, or off for no limit. Pictures wait for room rather than all being held at once, " + + "and a plan larger than this is refused before anything is written" + +// memoryValue is the flag's value, auto until somebody writes one. +type memoryValue struct{ core.Memory } + +func (m *memoryValue) String() string { + if m == nil { + return core.Memory{}.String() + } + return m.Memory.String() +} + +func (m *memoryValue) Set(text string) error { + parsed, err := core.ParseMemory(text) + if err != nil { + return err + } + m.Memory = parsed + return nil +} + +// memoryFlag puts --memory on a command, its value landing in v. +func memoryFlag(fs *flag.FlagSet, v *memoryValue) { + fs.Var(v, "memory", memoryHelp) +} diff --git a/internal/cli/preset.go b/internal/cli/preset.go index 36db0b57..526948c0 100644 --- a/internal/cli/preset.go +++ b/internal/cli/preset.go @@ -66,7 +66,7 @@ type budget struct { Formats []string `json:"formats"` } -func budgetOf(ctx context.Context, e *preset.Expansion) (budget, error) { +func budgetOf(ctx context.Context, e *preset.Expansion, memory core.Memory) (budget, error) { rec, err := recipe.Parse(e.Source, e.Preset.ID) if err != nil { return budget{}, err @@ -77,7 +77,7 @@ func budgetOf(ctx context.Context, e *preset.Expansion) (budget, error) { targets = append(targets, engineTarget(t, t.Label)) seen[t.Format] = true } - planned, err := engine.PlanContext(ctx, targets, engine.Options{OutDir: rec.Output.Dir, Seed: rec.Seed}) + planned, err := engine.PlanContext(ctx, targets, engine.Options{OutDir: rec.Output.Dir, Seed: rec.Seed, Memory: memory}) if err != nil { return budget{}, err } @@ -399,3 +399,12 @@ func targetsFromPreset(fs *flag.FlagSet, g *generateOpts, given map[string]bool, opt.Preset = record(expanded) return targetsFromParsedRecipe(rec, hash, g, given, opt), ExitOK } + +// saidAll is sentences as the command line prints them. +func saidAll(said []core.Said) []string { + out := make([]string, 0, len(said)) + for _, s := range said { + out = append(out, s.String()) + } + return out +} diff --git a/internal/cli/presetcmd.go b/internal/cli/presetcmd.go index df5d51f9..7758528e 100644 --- a/internal/cli/presetcmd.go +++ b/internal/cli/presetcmd.go @@ -188,17 +188,25 @@ Usage: tfg preset show size-boundaries tfg preset show size-boundaries --limit 20mb --format png tfg preset show size-boundaries --json + +Flags, beside the preset's own parameters: + -json + write the answer as JSON to standard output + -memory value + `+memoryHelp+` (default auto) `) } var asJSON bool + var memory memoryValue expanded, code := presetFlagSet("show", args, out, errOut, usage, func(fs *flag.FlagSet) { fs.BoolVar(&asJSON, "json", false, "write the answer as JSON to standard output") + memoryFlag(fs, &memory) }) if expanded == nil { return code } - b, err := budgetOf(ctx, expanded) + b, err := budgetOf(ctx, expanded, memory.Memory) if err != nil { fmt.Fprintf(errOut, "tfg: %s\n", describeError(err)) return classify(err) diff --git a/internal/cli/recipecmd.go b/internal/cli/recipecmd.go index ae83e86c..7c6db763 100644 --- a/internal/cli/recipecmd.go +++ b/internal/cli/recipecmd.go @@ -46,12 +46,19 @@ func loadRecipe(path string, errOut io.Writer) (*preset.Read, string, int) { return read, hash, ExitOK } -// validate runs the checks a run would run and writes nothing at all, so it -// suits a pre commit hook. -func validate(ctx context.Context, args []string, out, errOut io.Writer) int { +// validateFlags is what validate is told besides the recipe. +type validateFlags struct { + asJSON bool + memory memoryValue +} + +// validateFlagSet is the flags of validate and its help, the way +// generateFlagSet is for generate. +func validateFlagSet(errOut io.Writer, v *validateFlags) (*flag.FlagSet, func(io.Writer)) { fs := flag.NewFlagSet("validate", flag.ContinueOnError) fs.SetOutput(errOut) - asJSON := fs.Bool("json", false, "write the result as JSON, with every problem separately") + fs.BoolVar(&v.asJSON, "json", false, "write the result as JSON, with every problem separately") + memoryFlag(fs, &v.memory) usage := func(w io.Writer) { fmt.Fprint(w, "tfg validate - check a recipe and write nothing.\n\nUsage:\n tfg validate \n\nFlags:\n") fs.SetOutput(w) @@ -59,6 +66,14 @@ func validate(ctx context.Context, args []string, out, errOut io.Writer) int { fs.SetOutput(errOut) } fs.Usage = func() { usage(errOut) } + return fs, usage +} + +// validate runs the checks a run would run and writes nothing at all, so it +// suits a pre commit hook. +func validate(ctx context.Context, args []string, out, errOut io.Writer) int { + var v validateFlags + fs, usage := validateFlagSet(errOut, &v) if helpRequested(args) { usage(out) return ExitOK @@ -77,7 +92,7 @@ func validate(ctx context.Context, args []string, out, errOut io.Writer) int { return ExitUsage } - read, hash, code := loadRecipeReporting(path, *asJSON, errOut) + read, hash, code := loadRecipeReporting(path, v.asJSON, errOut) if code != ExitOK { return code } @@ -92,9 +107,11 @@ func validate(ctx context.Context, args []string, out, errOut io.Writer) int { for _, t := range rec.Targets { targets = append(targets, engineTarget(t, t.Label)) } - planned, err := engine.PlanContext(ctx, targets, planningOptions(rec)) + opt := planningOptions(rec) + opt.Memory = v.memory.Memory + planned, err := engine.PlanContext(ctx, targets, opt) if err != nil { - return planningRefusal(err, path, *asJSON, errOut) + return planningRefusal(err, path, v.asJSON, errOut) } // A file that builds on a preset says so here the way the manifest will @@ -102,7 +119,7 @@ func validate(ctx context.Context, args []string, out, errOut io.Writer) int { // standard error, before the files exist as well as after. sayNotes(read.Notes(), errOut) - if *asJSON { + if v.asJSON { return writeJSON(out, errOut, validateReport{ Recipe: path, Valid: true, RecipeHash: hash, Targets: len(rec.Targets), Files: len(planned), diff --git a/internal/guard/memoryflag_test.go b/internal/guard/memoryflag_test.go new file mode 100644 index 00000000..fc6550f0 --- /dev/null +++ b/internal/guard/memoryflag_test.go @@ -0,0 +1,105 @@ +package guard + +import ( + "os" + "path/filepath" + "strings" + "testing" + + "github.com/donislawdev/TestingFilesGenerator/internal/cli" +) + +// --memory is read the same way on every command that plans - generate, +// validate and preset show - docs/STABILITY-REVIEW-2026-10-26.md section 10.8. +// +// One function registers it on all three, and this is what says each of them +// really hands it to the planner: a ceiling far under the plan refuses the plan +// on each, and the refusal names the setting. The plan is about 42 MB of text +// files on the first two and about 9 MB of the largest preset on the third, +// against ceilings of 4 MB and 1 MB, so the margin is the one +// TestAPlanTooBigToHoldIsRefusedWhileItIsBuilt measured as clear of the noise a +// heap reading carries in this process. The help is asked too, and preset show +// is why: its help is written out by hand rather than listed by the flag +// package, so a flag registered there is a flag nobody is told about unless +// the sentence is added beside it. +func TestTheMemoryFlagReachesThePlanOnEveryCommandThatPlans(t *testing.T) { + dir := t.TempDir() + recipe := filepath.Join(dir, "many.yaml") + if err := os.WriteFile(recipe, []byte("version: 1\ntargets:\n - id: many\n format: txt\n size: 4kb\n count: 50000\n"), 0o644); err != nil { + t.Fatal(err) + } + out := filepath.Join(dir, "out") + for _, c := range []struct { + name string + args []string + ceiling string + }{ + {"generate", []string{"generate", "--format", "txt", "--size", "4kb", "--count", "50000", "--dry-run", "--out", out}, "4mb"}, + {"validate", []string{"validate", recipe}, "4mb"}, + // Text files in the mass upload rather than the pictures it holds by + // default, which are coded while planning and take a minute for ten + // thousand on main as on this branch (2026-10-27). + {"preset show", []string{"preset", "show", "upload-validation", "--allow", "txt", "--bulk", "10000"}, "1mb"}, + } { + code, _, errOut := run(t, append(c.args, "--memory", c.ceiling)...) + if code != cli.ExitRecipe || !strings.Contains(errOut, "the memory setting of this run gives it") { + t.Errorf("%s --memory %s: exit %d, expected %d and a refusal naming the memory setting:\n%s", c.name, c.ceiling, code, cli.ExitRecipe, errOut) + } + // The same command without the flag is auto, at least two gigabytes + // of plan, and the plan goes through - so the refusal above was the + // flag's doing rather than the shape's. + if code, _, errOut := run(t, c.args...); code != cli.ExitOK { + t.Errorf("%s with no --memory: exit %d, expected the plan to pass under auto:\n%s", c.name, code, errOut) + } + + // A value that is not a setting is the caller's typing, exit 2 with + // the sentence of the parser, on every one of the three. + code, _, errOut = run(t, append(c.args, "--memory", "0")...) + if code != cli.ExitUsage || !strings.Contains(errOut, "leaves no room at all") { + t.Errorf("%s --memory 0: exit %d, expected %d and why nought is refused:\n%s", c.name, code, cli.ExitUsage, errOut) + } + + // And the help says the flag is there, and what auto means. + _, help, _ := run(t, append(c.args[:len(c.args):len(c.args)], "--help")...) + if !strings.Contains(help, "-memory") || !strings.Contains(help, "half of what this machine gives the program") { + t.Errorf("%s --help does not offer --memory and say what auto is:\n%s", c.name, help) + } + } +} + +// A file written past the memory setting is said on the command line, once. +// +// The engine owes the note (TestTheFilesWrittenAtOnceHoldNoMoreThanTheMemorySettingLeaves +// asks it of the result), and this asks that the command line passes it on: +// the note lives beside the manifest rather than in it, so the loop that +// prints the manifest's notes does not print it. Three jpgs of three +// megapixels declare about fourteen megabytes each against eight of setting. +// The same three files with no setting at all are byte for byte the same - +// the queue changes when a file is written, never what is in it. +func TestAFileWrittenPastTheMemorySettingIsSaidOnTheCommandLine(t *testing.T) { + dir := t.TempDir() + shape := []string{"generate", "--format", "jpg", "--size", "4mb", "--set", "width=2000", "--set", "height=1500", "--count", "3"} + code, _, errOut := run(t, append(shape, "--memory", "8mb", "--out", filepath.Join(dir, "held"))...) + if code != cli.ExitOK { + t.Fatalf("exit %d:\n%s", code, errOut) + } + if n := strings.Count(errOut, "note: files_0001.jpg holds about"); n != 1 { + t.Errorf("the note about the file written past the setting was printed %d times, expected once:\n%s", n, errOut) + } + if code, _, errOut := run(t, append(shape, "--out", filepath.Join(dir, "auto"))...); code != cli.ExitOK { + t.Fatalf("exit %d:\n%s", code, errOut) + } + for _, name := range []string{"files_0001.jpg", "files_0002.jpg", "files_0003.jpg"} { + held, err := os.ReadFile(filepath.Join(dir, "held", name)) + if err != nil { + t.Fatal(err) + } + auto, err := os.ReadFile(filepath.Join(dir, "auto", name)) + if err != nil { + t.Fatal(err) + } + if string(held) != string(auto) { + t.Errorf("%s came out different under --memory 8mb - the setting moved a byte", name) + } + } +} From e3013d2736b30a829fd988d51c8e77e1f7df7ba5 Mon Sep 17 00:00:00 2001 From: DonislawDev Date: Wed, 28 Oct 2026 00:31:07 +0100 Subject: [PATCH 5/9] window: Memory on the Preferences screen Automatic, Custom with a size, or No limit, kept at once the way the language is and read at the start of every preview and run. Automatic says what it comes to on this machine, a box holding no size is marked, a kept value that does not read is named rather than written over, and Forget clears it with the rest. The screen's words moved into a file of their own, and the catalogue reads every file of the text package rather than two named ones. Co-Authored-By: Claude Opus 5.5 --- internal/core/memory.go | 15 ++ internal/guard/catalogue_test.go | 28 ++- internal/guard/cataloguecoverage_test.go | 8 +- internal/guard/guitext_test.go | 2 + internal/guard/prefmemory_test.go | 166 +++++++++++++++++ .../testdata/screens/preferences-chosen.png | Bin 128121 -> 175072 bytes .../testdata/screens/preferences-chosen.xml | 69 +++++-- .../guard/testdata/screens/preferences.png | Bin 128134 -> 175165 bytes .../guard/testdata/screens/preferences.xml | 69 +++++-- internal/guard/window_test.go | 11 +- internal/gui/run_cgo.go | 15 +- internal/gui/text/locale/en.json | 82 +++++++- internal/gui/text/locale/pl.json | 20 +- internal/gui/text/locale/said/en.json | 5 + internal/gui/text/locale/said/pl.json | 1 + internal/gui/text/preferences.go | 141 ++++++++++++++ internal/gui/text/screens.go | 96 ---------- internal/gui/window/generate.go | 9 +- internal/gui/window/preferences.go | 10 +- internal/gui/window/prefmemory.go | 175 ++++++++++++++++++ internal/gui/window/preset.go | 2 +- internal/gui/window/recipe.go | 2 +- internal/gui/window/remembered.go | 14 +- internal/gui/window/run.go | 10 +- 24 files changed, 809 insertions(+), 141 deletions(-) create mode 100644 internal/guard/prefmemory_test.go create mode 100644 internal/gui/text/preferences.go create mode 100644 internal/gui/window/prefmemory.go diff --git a/internal/core/memory.go b/internal/core/memory.go index 579d8c5c..69de69e0 100644 --- a/internal/core/memory.go +++ b/internal/core/memory.go @@ -126,6 +126,21 @@ func ParseMemory(s string) (Memory, error) { return Memory{bytes: n}, nil } +// ParseMemorySize is ParseMemory for a box that holds a size and nothing else +// - the window's Custom, where auto and off are chosen on the switch above it +// and a word typed into the box would be a second way to the same choice. +// +// Anything with no digit in it is refused in those words, the two words of the +// switch among them - ParseMemory would answer "lots" by offering auto and off, +// which is advice for a different box. +func ParseMemorySize(s string) (Memory, error) { + if !strings.ContainsAny(s, "0123456789") { + return Memory{}, RefuseAbout(SettingMemory, Says("core.MemoryNotASize", + "{setting} %q is not a size: write one such as 8gb", A("Value", s))) + } + return ParseMemory(s) +} + // aboutMemory is a refusal of ParseSize, put in the memory slot. The size // parser says what is wrong with the number better than a second sentence // could, and it names its own setting, which here is the wrong one: the diff --git a/internal/guard/catalogue_test.go b/internal/guard/catalogue_test.go index 761bf61e..888a0e5a 100644 --- a/internal/guard/catalogue_test.go +++ b/internal/guard/catalogue_test.go @@ -43,8 +43,7 @@ func englishInTheCode(t *testing.T) (map[string]string, map[string]string) { // The singular of every plural message, kept apart because only some // messages have one. singular := map[string]string{} - for _, name := range []string{"screens.go", "text.go"} { - path := filepath.Join("../gui/text", name) + for _, path := range textPackageFiles(t) { file, err := parser.ParseFile(token.NewFileSet(), path, nil, 0) if err != nil { t.Fatalf("%s: %v", path, err) @@ -265,3 +264,28 @@ func TestEveryTranslationObeysThePunctuationRule(t *testing.T) { } } } + +// textPackageFiles is every file of internal/gui/text but its tests. +// +// Read off the directory rather than named. Both guards that read the package +// named its files by hand until 2026-10-27, and the words of the Preferences +// screen moved into a file of their own that day: the catalogue guard would +// have reported them as orphans, and the guard that every sentence goes +// through the catalogue would not have read them at all (CLAUDE.md, trap 15). +func textPackageFiles(t *testing.T) []string { + t.Helper() + all, err := filepath.Glob(filepath.Join("../gui/text", "*.go")) + if err != nil { + t.Fatal(err) + } + var out []string + for _, path := range all { + if !strings.HasSuffix(path, "_test.go") { + out = append(out, path) + } + } + if len(out) < 3 { + t.Fatalf("internal/gui/text holds %d files, so this read the wrong directory", len(out)) + } + return out +} diff --git a/internal/guard/cataloguecoverage_test.go b/internal/guard/cataloguecoverage_test.go index 192340a3..c3e80d2c 100644 --- a/internal/guard/cataloguecoverage_test.go +++ b/internal/guard/cataloguecoverage_test.go @@ -98,7 +98,13 @@ func wordsIn(node ast.Node) []string { func TestEverySentenceInTheTextPackageGoesThroughTheCatalogue(t *testing.T) { checked, offenders := 0, map[string][]string{} - for _, name := range []string{"screens.go", "text.go", "labels.go"} { + // Named rather than read off the directory, unlike englishInTheCode: the + // other files of the package hold text that is not language - formats, + // a byte count's mark - and reading them asks this guard about strings it + // was never meant for. preferences.go joined on 2026-10-27, when the words + // of the Preferences screen moved out of screens.go. A file of sentences + // added later has to join here by hand, and that is O292. + for _, name := range []string{"screens.go", "text.go", "labels.go", "preferences.go"} { path := filepath.Join("../gui/text", name) file, err := parser.ParseFile(token.NewFileSet(), path, nil, 0) if err != nil { diff --git a/internal/guard/guitext_test.go b/internal/guard/guitext_test.go index 012cf861..a2edaed2 100644 --- a/internal/guard/guitext_test.go +++ b/internal/guard/guitext_test.go @@ -95,6 +95,8 @@ var notWords = map[string]string{ `"windowHeight"`: "the name the window files its height under, never shown", `"language"`: "the name the window files the chosen language under, never shown. " + "Translating it would lose the choice the day somebody changed language", + `"memory"`: "the name the window files the chosen memory setting under, never shown. " + + "Translating it would lose the choice the day somebody changed language", `"--pseudo-language"`: "a flag on the launch line for whoever builds the window, English by D9 like every flag, never translated or shown", // What each screen IS, as opposed to the word on its tab - see parts.Tab. // They carry the output directory and the keyboard between screens, so a diff --git a/internal/guard/prefmemory_test.go b/internal/guard/prefmemory_test.go new file mode 100644 index 00000000..64469ce5 --- /dev/null +++ b/internal/guard/prefmemory_test.go @@ -0,0 +1,166 @@ +package guard + +import ( + "errors" + "strings" + "testing" + + "fyne.io/fyne/v2" + + "github.com/donislawdev/TestingFilesGenerator/internal/gui/parts" + "github.com/donislawdev/TestingFilesGenerator/internal/gui/text" + "github.com/donislawdev/TestingFilesGenerator/internal/gui/window" +) + +// The Memory section of the Preferences screen - the window's --memory, +// docs/STABILITY-REVIEW-2026-10-26.md section 10.8. +// +// Chosen on a switch, kept at once the way the language is, and read by the +// next run. The machine is the stand in host's sixteen gigabytes, so Automatic +// reads eight on every runner. +func TestTheMemorySettingIsChosenOnPreferencesAndKept(t *testing.T) { + host := newFakeHost(t) + window.Open(host) + prefs := selectTab(t, host.content, text.TabPreferences()) + way, size := memoryControls(t, prefs) + + // Nothing kept: Automatic, and what it comes to on this machine. + if way.Selected != text.MemoryWayAuto() || host.Remembered().Memory() != "" { + t.Fatalf("with nothing kept the switch shows %q and %q is kept, not Automatic and nothing", way.Selected, host.Remembered().Memory()) + } + if said := textIn(prefs); !strings.Contains(said, text.MemoryAutoIs(text.HumanBytes(8<<30))) { + t.Errorf("the screen does not say what Automatic comes to on a machine of sixteen gigabytes:\n%s", said) + } + + // Custom keeps the size as it is typed, and a size that is not one is + // marked and kept as Automatic rather than as what was typed. + way.SetSelected(text.MemoryWayCustom()) + size.SetText("512mb") + if got := host.Remembered().Memory(); got != "512mb" { + t.Errorf("512mb was typed under Custom and %q was kept", got) + } + size.SetText("lots") + if got := host.Remembered().Memory(); got != "" { + t.Errorf("%q is not a size and %q was kept for it", "lots", got) + } + // The refusal is asked for by its words, not by the value: "lots" is on + // the screen anyway, in the box it was typed into. + if said := textIn(prefs); !strings.Contains(said, text.MemoryCustomEmpty()) || !strings.Contains(said, "is not a size") { + t.Errorf("a box holding something that is not a size is not marked, or the line does not say runs use Automatic:\n%s", said) + } + size.SetText("off") + if got := host.Remembered().Memory(); got != "" { + t.Errorf("off typed into the box for a size was kept as %q - No limit is chosen on the switch, not typed", got) + } + + way.SetSelected(text.MemoryWayOff()) + if got := host.Remembered().Memory(); got != "off" { + t.Errorf("No limit was chosen and %q was kept", got) + } + way.SetSelected(text.MemoryWayAuto()) + if got := host.Remembered().Memory(); got != "" { + t.Errorf("Automatic was chosen and %q stayed kept", got) + } + + // Forget takes it away with the rest, and the switch goes back with it. + way.SetSelected(text.MemoryWayOff()) + buttonNamed(prefs, text.ButtonForget()).OnTapped() + if got := host.Remembered().Memory(); got != "" || way.Selected != text.MemoryWayAuto() { + t.Errorf("after Forget %q is kept and the switch shows %q", got, way.Selected) + } +} + +// Opening the screen writes nothing, and a kept value that does not read is +// shown as Automatic and named rather than written over - untouchable rule 7, +// as for a language this build does not carry. +func TestOpeningPreferencesKeepsAnUnreadableMemorySetting(t *testing.T) { + host := newFakeHost(t) + host.Remembered().RememberMemory("lots") + window.Open(host) + prefs := selectTab(t, host.content, text.TabPreferences()) + way, _ := memoryControls(t, prefs) + if got := host.Remembered().Memory(); got != "lots" { + t.Errorf("a kept value of lots became %q by opening the window", got) + } + if way.Selected != text.MemoryWayAuto() { + t.Errorf("an unreadable kept value shows as %q, and a run uses Automatic for it", way.Selected) + } + if said := textIn(prefs); !strings.Contains(said, text.MemoryUnreadable("lots")) { + t.Errorf("the screen does not say the kept value could not be read:\n%s", said) + } + + // And a size kept before opens on Custom with the size in the box. + host = newFakeHost(t) + host.Remembered().RememberMemory("3gb") + window.Open(host) + prefs = selectTab(t, host.content, text.TabPreferences()) + way, size := memoryControls(t, prefs) + if way.Selected != text.MemoryWayCustom() || size.Text != "3gb" || host.Remembered().Memory() != "3gb" { + t.Errorf("3gb kept opens as %q with %q in the box and %q kept", way.Selected, size.Text, host.Remembered().Memory()) + } +} + +// The setting kept on Preferences is the one the next run plans under. +// +// A ceiling of one megabyte against twenty thousand text files, about 17 MB of +// plan, from the Generate screen's preview: the refusal has to be the memory +// setting's, which only a runner that read the kept value can give. +func TestARunPlansUnderTheMemorySettingKeptOnPreferences(t *testing.T) { + host := newFakeHost(t) + host.Remembered().RememberMemory("1mb") + window.Open(host) + t.Cleanup(func() { join(host) }) + content := tabNamed(t, host.content, text.TabOneTarget()) + fill(t, content, text.FieldOutputDir(), t.TempDir()) + fill(t, content, text.FieldSize(), "4kb") + fill(t, content, text.FieldCount(), "20000") + ceiling := "the memory setting of this run gives it " + text.HumanBytes(1<<20) + press(t, content, text.ButtonPreview()) + join(host) + if said := textIn(content); !strings.Contains(said, ceiling) { + t.Errorf("a preview of 17 MB of plan under a kept setting of 1 MB was not refused by the setting:\n%s", said) + } + // The run reads it as well as the preview - they start apart, and each + // reads the setting for itself. + press(t, content, text.ButtonGenerate()) + join(host) + if said := textIn(content); !strings.Contains(said, ceiling) { + t.Errorf("a run of 17 MB of plan under a kept setting of 1 MB was not refused by the setting:\n%s", said) + } +} + +// memoryControls are the switch and the box of the Memory section. The screen +// holds no other switch and no other box, which is asserted rather than +// assumed, or the guard could be pressing a control of another section. +func memoryControls(t *testing.T, o fyne.CanvasObject) (*parts.Segments, *parts.Entry) { + t.Helper() + var ways []*parts.Segments + var boxes []*parts.Entry + walk(o, func(obj fyne.CanvasObject) { + switch c := obj.(type) { + case *parts.Segments: + ways = append(ways, c) + case *parts.Entry: + boxes = append(boxes, c) + } + }) + if len(ways) != 1 || len(boxes) != 1 { + t.Fatalf("the Preferences screen holds %d switches and %d boxes, expected the one of each the Memory section has", len(ways), len(boxes)) + } + return ways[0], boxes[0] +} + +// MachineMemory is a machine of sixteen gigabytes unless a guard said +// otherwise - never the memory of the runner the guard is on, or the stored +// picture of the Preferences screen would differ from one runner to the next. +func (h *fakeHost) MachineMemory() (int64, error) { + switch { + case h.machineFails: + return 0, errors.ErrUnsupported + case h.machine > 0: + return h.machine, nil + } + return fakeMachineMemory, nil +} + +const fakeMachineMemory = 16 << 30 diff --git a/internal/guard/testdata/screens/preferences-chosen.png b/internal/guard/testdata/screens/preferences-chosen.png index 1da4ac0aa1b9715ef71ce0065e375043c9f294aa..8008daf98a6c284fc874eb5c33c7befa032a3e55 100644 GIT binary patch delta 150508 zcmbrmby!tzyDe-WAT2E|QX<{m-ICHN-7Gq$fPjFsNVkA=cZqa&w{&;c_x#>>pR@P= z&OU#g%XPuJmUGSd2g|Iw@RBFHirJSPK?($&Wi+_@&6vmEz@?rWVX1bK$ z3$kg?C^1cC6CCYoHTpTmPnQFpb}pMuDKl~I6%9S#T>gHe4kqR;GnV}^C*%QAe-`|AG%X%Xel-$)S)@g@rq9J->_?FXL%ajl-^9ctH3KC^?iHwhrZ*QkyJFkhV zt#yO<_svP?Q~F4UoAQtl@@K`~nj=VzJmYo5kE^RM^wduUX=ByZ)b3+H_SvOQ1pKQz zgPgA&Nj&#Hi+l*r5s}GI8cOv}Z8gYzt?!En_h){d&sx{#V()ZhWMr%LtC(ch_{4;9 zM{{HTL=`1OiNtnZx3)Dx&C1%MP|#mpJxD)r`Jyr-BfDHVET@@7ggmPGMDK=EBUT1g zD@KYUPjv^hwq%Lb>jPz!NW`7gXZO2fV+j2%?DD|7ql40XXDBj;dgy0PPDY+&s91DD zR8&CDfvkjtx{Zyfh)6eQR8kT(2I9!uOG;|$!)2(oYh-*$A|zCnhxal)Z-{bxJ2N@C z#2WXieyhw_QSf%}RFxKWKnM)qAm~(wQO0XtS!roaW#ymWL_RD|P6m_IF^XjTs;>5x z$jW*>yt7zSuay48cMommKD5G9Lc-LM#napzV_;fXT|?vHT>tU%=7uNn_|y8`HK~oY zHI)92M(JU3y#sFu;n~yDcyn`e5)u+EJv|9@pEgQb+Wd?Rcl%Q4)B4;=cbeqM$%zA3 zbR&vMFjjGhtx!+p7>m4d8F~-KYXUkLCEUXpravMiS%UPj56)+2n>@4HUf|7@4 z16Mkk>Qi*|^zw=g!{3O-3MNp{E}#IX_mJwZB|b{)3ud9~&hBDeO1+XPBj&8vQZSgD zyZie7948(gUR#;m+09L7Z!c|z5*zPsQd%0q;#&cIgDQp3U-QDl7i=%j{{9uYihRZk z=YxZj@8>51??1SnqoCN}*P0FnX=-Y2dRkRoy~l(~LGGJ>m9DJp?a4{+{5+i>88kCf zcYZEUNg48!VzRwmjO^&O&O64EHOD%a22`=q$|~o29Ti#G3_^99-nx10h6VKx89$Y1 z7^bizx>WM=H#bbRwRyqp85ifJO6zwKZL> zAzF}zipr)-!`xhhjEsy0TmFP4D!hNjC}MPU^yKt(rqXw6>I!P=6e}yM3>~;A8DuNV z9nhd@>wgC3R+Lp;*w@<7kc2Hwh^(;0u5`w_prGLR_+?cUDs3#!d+5EVp<(N0lCYf_ zLeIc}zP7fkR5}|Q+vdi`(7?5+nJ9WFnUuA)oU?P2O!i=Zzn-q{g-6qGQMwqMgaIlz z;ck`g^%|3iM?v!{k z?jj?Tucd3nB!=shkN|12BoOgwFnyh?DyS_k{y-Je)zLAxe__BRMTRlHlj!R!kX@c% zULMl6qE&?D(?Z&0Dwde2<=-jan<)9KiJu;Ha0fgn-=TpxarI*%F41E zbrODbUb@Z8%E}`8eHHtgnQ8RQcX*_Xmy>hJwnmv|JUpBsAQK`N5b!ZFB0@e?rRlY@ z+RYvnVM*A7@d&w@IXm0P$$gWfDk&-=B_y=5J4{S<@nwENK8A#Z#2LX0Ckz%OK1ye2 zr-Y}cq%vk`tASG9+3_(m5gJ~zn5ba}-@K=d_Mh)?erM6qEaXwslau0P%U%LYsr(U| zbW}=jf`g@PY#?1x(dX$RcRnquv;}#2SfP|EDk^<_89}I**?;QmJ9QgEwqb!2JmJn# zN3wEqmbSL19!1i?yL>!#not^qdzISLra`N(quFYA>G%qJ6&SgG1ySONjl``}5 z6IVM|UR*4o1vO=7Hx(8}E95H5&6fmaX8sKf%(?U0o}VvNqDf6S4i5{<+(fo8+f1#h zVrQCkbb?ODcL-8!5x-S|jl8U+rdHLO{+^b$I6q%OetmAA!}>EGUYxqd6b=p!E56)O zBiI;V$HI8{bw=yU%l-6_R_xs-CaOG|inFtI$zP3`!vq8utVw40;A(aBENLGHQ!u@K8l2>sFQd=^bnpKABn+-u`zKF#ryjD zh>07(IyN>oE>gE@zm%q+ja8eNaK65N;l^j{=;#=Fs6vJ@x(!Pknwp$^7t`|+j+{g2 zGo^*Od30YW*rjcT=y1=#epl5J%4KzHRE@JLFD?Dr7JNp8`@XKK%E@u`rH8ekc2l?sLPqu!!52YR?BqRg` z3=>IGU^XH|2oQO33Pnj#BqSxJBqcqsX6eZ4RRrlJB5bIr4eE-On*6`J1F)zxD+FHOyW z9=3AI@w+$b8e~#-mX_}r7(SIn6Qd!x=`k5*=Y|pxB zyMyV5p%WI0hX0BslMZTNfp?xgJDhN-rdPwL`Po?RP)A3HRTcmH_wR@JoV3WKBr)0# z^)+bKw!~tS(il7b^wYjq^LaG;+`gW8cI_1kBC@e*f2s>?&xMP~>4{G&7}7ndz~5X*)Mm7br{Vj#xE zh%!DZ(Ny~R{h6FZ3+-SN5SSew2RZUJZ3vm?WU>i_MXdV!`wQ>9EPQ;P){7L)>p?LfEyTv=`}!^}E_%ks z(#Fza<49ysNM#4yUhLP*Pz44CuAM|bM?mxa#S|swcz4Aru=GvBiSu2s^U0bf##FBQ zl#9zjLVWzN`N4@><6Fs8u@a1^%F4>Npa=pK_$S6)5rU$*thNjF2e8=)67T2^842VA zx|tbnfErp_AWnP~f#deEbe!(BUoq5a^3u}#`}@ufxR+SmQ7Oh)DVEu} z1|wr*4^PhoxsBu1Aq+&gr+RPa&L%o1GNfO-Dq+E9etwL2>JE%#BJhm4^udQD~ zU~?Bu4!_kd!ZOI12g~|MNI$JQJ>A~3J4ThDcifWQK-_a{_*FuoIY4!=@p))+GEaRf z^M&g_7+fVcRaU{&imis4s`GN6H$FBN^^SL0%cWt!U^p)BeXEnN@BI9{DMu0tytk7R zVM?>;nxdRsp&XTHiX>8AWn`BuDr41afTd<;hK9dnRyco=u)vBw+EXE8&Jd~xZRvNx$!mUZZi0hnhlQ>5H^Lnw^COGoNN5s83EDDJ8_Nua)~{Xksl( z*^kMRt|J}j;|}wSY=(D(02uSUfNiczk2Hh<>}1{zb9Uw>;%ML(gK=|TlW{T44+Se* zJgt?nq-}w!tM%w`?U+-&1Rjr8sEN?#inKW~v9QVleZCeK73nqKNn2UnUT~=)1vqZ> za}$IC_y>k7&12{1M>;gPXXzukxw`Q~0RyIS-@l`xT?`El`fTz_UU@y>B1a}9EX>pe z$%P;6Hh}+y-Ce!p6F6f50o(Itd(7vtUVW|&GAaYW62Nv>uh)i>1xYb6o@?F5+uIgJ z>TT;M3dvmZ6oGq+GBR4;-u`0I8Dpr7^z<=OKe4D4PTk&V6?N{X3OKIy?CsgBaeFWr`ea&!*TSwlduKJ&V30P-XG*&#%8xggWEjJslaN{ z`;xfQO{&8vYR0*i-{=KYx+he1wn_WLy$fLBh>7$y0dK1GV;rnYj5SY zvgPQ{B^D-)0m3^z!E7P{ue+wp#r?xWR8eg9cfscc`uC&zsh~hB|429eqr)F&YP#_! zV2KQIbk6e-LGX$cGx%rjX0gZzTom$>#uL_3H!U3-Lde9h@#@+pShvuH*X40 z{9DO_#V`>^OCX)P#_W@}&CABiMd%IU-{V@v6rM}c$Kyx7)JRE98tf1;qyDZI-Pb6l z78civK8_@G>=F{+C@I$sZp1LwW~<&WM}Z;;orLdO*Q##|Q~~0-PJ_z}Yo2$p6M}au zkHQ#YxrBGQ&3Peej;vk5)K zE!}Ns`1@zvV^GDs!w&KEI5@h#OHOWt9xq9sL2J{~TM4W~3$+fYViEBJIiYya^Gr#$ z#0F5u9kx93!o4h?Ne0ziljr5I=iN6ty8fkxsj>O_*`=jTmms1t@+h&ay16L?k0_g4 zRw(f8{8z!pYenCRG?9$-8Q!lQMi0yWOF;-Z4`37^hdRCjXAwHwU053k3c?sBMn>cu z9Jus8`hZzzIMmbn7=O6C3!;3#>FGeyR9hP6n;$=Zyg|f7w7z?|JWL!gUH+6l_PVaF zPRnNKw~)S-RnW&|ZWc^}cu;06HZ?#727XI-cggAn7S`6=hf{tFe+W5?z3+~L^h&6| z3BA9)Ag*;gmM`>DP|yRYSwr9Zb>aROkq=sl%S#XYkA7RtGnz|_O$f!hx7er5b|dHK z=dMfMa|XlyiEH*;+}w3fo?yUTU#$vGTW6rXMj=NE_ZISADg{PKq+Y6$P_@-nysGs#ATZV*ymlDCh~!E{;fpC%aB`}YVzZO{AavcMg1vAc6}s7O@<<)}z`UFKJh zb!sv4egmAUD0qK$vM%TgLC`_n;lZq$jmR_cY~`kV7aHjdC4Kkx zO@p9T+Zz7+vpn!M6PHP9%-|*Hv8lE7!G5UHkA9e51YG8^P5m2gpx+HZVzB%u@lnPn z*c%^i3f{hzfD`^E@lXGj#52#LUinK=n6e}+JDhpwT3I24K@ykOrc5eM_cyU?CJH(_ z$$F$a3h3nt=&z>$J}qgwko{-=5TVl3#YGO0aQz6O-l^eQxR5cz>#?O^`&~R!#Z5MN72)9>bn*6mIiO$N*gXFrlWS~a$p9*mf02TlB?#OcNjR)gh9!z#va-Az zS|Bv>c)-0T*Z}~S0^@6FDDp}VZ`{CImZ}hd_aZ8OlmcO`POiiH^yn9~jrN zxKH|Kc=tRAopi3|Fn#0~DKWc^KHSj2fPw-KMRfn7p1h3APPQ!GV2Y=&7+92xfsTguYodyod8DuJ zeO6W$W^lW0O^8@Do<1M6(eHG8e2gg_*tI%Cf?qU+o~O$0;NXB8Y5^Pfdy!mNQj#IgweMJ`ta8l|7uvS+kuC=c3He&!^XXGU-#R(sUl&DI{BM6mxMLE!*H3cHVEo)YZ;SVI zv$qFzIV&@>gNMhgIh%=z)Y;9OGOp92nnjFY3TqB(0Rcl$SjwWHUqJ(d5;RuM?3Jaz z3CurzT3=b(Svei^79b@{wx4qsyjpHLT8-gYs_t5CT|G8oad(nJ_t=)Q)6vz{)e6yZ zeM{lB|ks$3tUKt5lAxy1=?w^ z*lsS&AUADBI=aH5BHxkRF;tMd(St<4bw-VRz*0A@fcI|=2as>H#PX;v1kNms3Y`xOs;&jos)H1M)(kU2nPWP>pp z48X?PnogtJQ%_`ZG7JU=hTiq4CU%wtF{+sOezE>;>klnU0N9U?1z5Xm33M0*cQ`%< z;L>gMZk~SbU9qp_B0_UY=^q&2N#RYN0SIHEA+5vcLtf>!#njP}kY>Wk$$A7U3k&D1 zcWHe}!pk>05Da$q=TGCt96)n+^A)P)7Q{z!TjU z+qA;My1#rCl{dwuzbA8Q7ZHvxt`87+CM?|C2?IuuxIk`QV`I1JDF>%mZAc@aQb7)H zX-Vr_*KNF-tQZndq`(9%E}RTrU#DbAxce8>s{UFUu$Am+lBDv>2z zRLl?C`l`Um$78uj(%F~=_smx|jv<-LL84&7I#qsjbQDCDYCImc@e<{{tjx^ny+bJA za3(<0v&7Z(c0Pm*QNq^A=@hVR-=zUZx^MT0{61?6U2rRgW3GrH3ZK9haM1<(9UbC@ z)xNp##QED`A5I_WczNkKvfM^pA>i!j3kOFqJUidb10C`9ZZfAm!$gDUrogmtQX1%$ z>Hdis{3Q&vMS+tp$^>vp9(<5($<(Sn7a+;LeUnRJ_=|BrPtd+ny%GKm-{)rRG$25n zHnzUO^Kqge?b*Bu$=Q@V3Ld1xEv)BYrSvnNR4;^EC7Y=a3rgN^)fM#+g|gdTggVSqWTsdj1a z=x8||e4#Yq^Vn%x(cIiDfg)`_AfK&VD)hEt0p7(9Fc&x>AyKcI=J-K;F*99Ua>qgx z!@@ES2si=J{+Xf+6Ta7WHeP6mi!?<7t=jpYKY#idTh3mHqy@Lr7qxsF2>{iv{*qYk zSQ{gOraV=a6a|!{Yys~tfIn}TwlXv&wI10+QTX9OM1~^T$apoOznj|M)XY0+iN>=w zQtD?_)lebpxfk^GicL0Lu z)fE@)HgmH(idveYT#kw}Ns^?w3Lga?otTFfJBJWOBBINNZAV2}dBk7J!=rv|TZyI@ z9^tn1kPRakuJFYxxH^CfHjW#_w_u$riYXs;bqNV8Y8MU$v>>S}4vSyH#Q zfLRp}?MRM|9b34^_Z4!xKcA{@G=(SP*-HBgEgho6`H^L^V<1{TD8wn`&K*!Z)1kmM zqhny0*;g-_+CO$vRvu;Yyv0bm9(HKT+j(TMteJZ_6@)0_@Zx^_aCHWJ$;4;=GD(2( zo1AwgG&C+5eU32`FVlnLD~TNi-nRz1TC0kxe-q)@j*W2x~)YUQ$z$)Naz#lS6p#TvGLNE zf#Mj*&b}el;S-ZuysI!Cg#u#d#lhsI!$zpzZq~wc!*wvZhIJCBph~@nxBRQM-`*Gc zrzXhKh}zFg>JFtz4sb-L+Xv;&p=&R0NvE{U#rgU3Yk{SG{X4;cOtTdcjajkfjST@V zE<}>Ts;a6FADB~8_6__hGBOls&W_K{dVA~Ti|+T*X=WGbTRhIoxm%QkJZ>)L=dF1} zJmyu$v`+D*j8eH-_df>(byZnuYze4@%4Ear?MurH{iWV$YikRn2|fg=K*X;!G$Nv+ zqI{pm5T_RxbG&&oGUfX6z9}_TFEw>>b0{slUhrw#QDC5l{Z~xP==Q&E>1(Ak9A3@o zC5ote1_}y;Wc?Zi#Kpg8O7dQZYIHix8!)BQ5WITjyfZH7D>-l#_0*5-#fwW&`&YRh zK2%nIgYH%j$BoL<$y(CM(jYSY!{*zEorz4agO%l3JN}Z@*11Pgylk}H*`?I3$$0?> z2bh3J3Qc|e8n0_dfu)s)d!qc?z4pER3lpjU29ZpqGcF#U>FMbwtS8q+Uyg~FslTHg> z=36!S}ehr*R`-(zdqFv0{nL%)Wu7~%fV z2`#wo>{z-S%uh^BY3K`XOjnynl>p#zWS_d1z}Fr&B|f^YzXPLqkyG8}U3K_@YL`pg)JJr*} z&7-CBF&dQ$tzBI%TbNxCry?>_lB^_X*Nh& z2*bsNZ+0n|q6d|bBN6pp%*g1ZyPK&SQ(N_njDg|RIRD2|gB3f-(`{QB${P7KVVRPg zEFEo9_VM_bkZ!Trqv_#n8w(k)9w=c+YAiKxCBy6L5_%o%>vV8KU+{&x@qyiCwXJbp zsjQ<@YaV51V8A3D%}2t>Jc1qh9K!w+74<4lwcb>oi|Z;Z3=Nl+*Cf)>Kgm1z+Y@y-OcJ@0`Gf=*! zEUVPJXjDQavJA^Ul34{56!3QQ2o(^2`b4?1@k<9;UKXXs;a4hs8&|?5>EJY=$b~$4Qh&ctB54a?Wp;*HQKMt z-Ti%58ykk~@?0RCy|chd8t7!AW3YW5V{wmESWs|&hCMsS>nHRTi2G4AC||^dFbKIk=J5xm*D zeDfv;MnLxiHLfos&2BZI$E2f^DxId+v?3;&Lppn)iAog}HF|t}K&RM(r)|h?JL+v0 zF|oX)Q0^FX?Dovh;By*Eqm4!(BGF^=;o)KKfPi{hf>UD&wTzh=uhi5_Obz8wYRY#O zW5v35Wgn^f0-KuNx&6ZgeEAm(fdHJcHUT0#7Lh zSV@aNARq(ozFkGlfA#FzRfI2XK7^T+VMU88DzXl)y4i1i(_o53KZ*XK=GB+}b6Y{!0Pf7D~oQKRQ zf`WpEQh3>!yIN*sn=fKDemo5-uCC@F>MF>mP1|9kg!f-r>w$7|54k+fRI*0gE)R;X zPrEjjfhba}cW*dXJ;jXD<#0EW6$G@H^hs8CrLSTu%6UEBI(e$!!oxY(*)^TVZVnpk zYOJM^(IeU&3UhNe=j+P);k1e*AS$betJN&7@Qd^FG(Pud->eSj>v~M*njarZzDbM{ z+3P5&s03tgT`uWM$uA(CWjDCmF=|)O{|&vl8Q&aCS*+SEy13|KXP4BG<3=;_NxM~%`Aqbb}^)&xgK^&amJABCbNVr9+; zIQ4hWd1iS(9Vn|`L=NFK9(OV-jl;^VEc1o=?&XHJVbls2U z`$Bxgu7$thlk5#xx}KhDnwqYB`~kS$bhRGmL1$;*vLqkTr4z}c22=Uj+d@qmRW&rO zZ*QTa){LmA5#OiI&d%9ct1&mb+1ZrL%w;cLT&qvyMn$d6&qI5hOY;j03-{}B5TMtz zJZ{iHMqt`PMmiBjYCf*4sseP@`h+-5T2_ zIjZa!BqdMfz0I1l;fywqrsmw-hMXLvww&@cGDOFN`Mmu(R}ulQe!kTA%n0L}+yY4A z5$XloJ3DX?7Ww&k^z`(XtTyX<@H zUL6aja2;25pgfZf-~WAoTgU6t=x}$H)_k*55snsW-EHj6!m8MExmdzsBh%z|e7De0 zV`Ia8*yK743}9SZs;a7LpF-}6f4Na$OefjFVRs!v_4TuNcRKcOX<~aH9v&10uAc`Q z0+JG>6w}x5d7HpW{TXZH z`qT`pZ(dOUwi+-IpmN&ksL;x{5~7phBEZ3s2tIW6_gCQHo&HTnOQd2fR1bNU~&kY@fc10 z(uc)EcSXqaVx)F{FzO56+Ud9Wu=DdjXKjfD>iNNZo%nV6qO`QT&ArEQ zZW>9Fy|boQ<%8~cLo+Sw={HCUyUy{Gxv}wmlcy&62mA>xe$e!}%IzwD1VJ`DPaz&?5D#^Z|g6>;8;TlR5ZH}M6Mxl!9BPJrkFPVJ>*Sd)e4}W9kh6~bHO3K3WG6pdl zCSKg{&ABu|C~$}6ZNJK`--_Y;uFbkWlb+|lJ3eQ2kCzcSJ=Iww2-}!BVxMix+{3BHY%;R`dP_82DGh| zek@#E)C(<0Y+La<0}JD3=kz#MneIvb``Wz(xttVY#Ugb@n{$GQ6k_x?C7uaT)d3Qc z-)ZB!s^zxmi((o-G9mBW*MC-z`(1u!NPG4_1*Fv~bbNbrLsvM-${jIeU;G*cUTV*j z84_DS)Z$rq?2RoD%lz8%a6V+skPgZbalG@HqJ((NIfEr zz%4K?V8U!;{?H0}+PYeumoMRj=@rmGP0Gi2s4t%d8vcBp-^becHH~j{dmT==f1Ogi z#b_%R3X{TqMMQMhftSWVVayXRha1$E;D$@ZGMD?ha!p7U?Vlfmr!{NCxag5n&J5`^ zJO!>yNA(#Gw^)9eTP9U3VV#>tZPL-n*0*h@zZ4aRwqRgo0eDALHO^4}y@O^l<`Zj7M#RdInLqu=X}x;i?4+TI>4rdSLob{M#p z7nrk1MJMkQU+TcR->{D7GV}5A0k~gXRVA0P@)0gCB0PL>$1lw-3Rueg3@WR8O-HZw zUA(BUQWVV2F9+B71lsB*w_)lyjqhyXieB%G?WLl}yomg`u)*3$S17=`>7%dBGzT>$ zx-rTbZltJF-O}f%Mpd{nRFN?;aZyoS{OvdecsaDsD~e|Cb$Jp56_5r9PGhtkJmK&FtD1*_6d_A>#*h0?7SKipTx6)?xet?n9#l>Z= z`V&p;2?zr*E;lcQKJ1NVhdPl0Az=*#-KuB@T}h83@0Z)!-d=KQYU{cq0=!&RDPVr3 z*+s}01%`F^*PS)|g@79h?&ObX^crjXs<7{g6CO(HUEJlGsPD5ENZ2$=dN5xCv~hbq z5mW?P?*HA&=dnb;)`Td*M~vms&wU${m(y>au2Htm%yc9}E$3#-g9mGCD3%>c$fiI( zzzJRT^B48-SmWT>i;PrDSFNb1I36j!w7Axk;&Rj#i;zi-8FJxP|zl3Ka%gi zTgCF6o|`d_(rhTzRmi>lQD|?^ZMCm{f4a=7Cz_I#ao6sh@;B|&9FRv{%ip6|0b4WeRK0^94k@RR59x5@v%6B@iRaF5BYkr z(pH77E}I|OT(ymz`7dDmVAqg-o0-)il2M~oG}v1&K4oJMgN1ziR$k+(M1$?_K0_ND zJ^M}C%R3J4MUhFFwOFP-^!Paxk2NJ(N4-SPX?yfVejolbUvHDOdiT?0P={R}ZuYJ( zY;=5$i(_Jg(Z}`eZ*N1*o|oa`^oS^J$|^OBjqU?oU7R%L*+OK~)i%JH=_A`0^M|;) zx|)zPXTHIe8k8dIj;AN(AQyt^1F#~tZ=KWj?$<=3%pNnoTog@zUtbbM7^bwY;mUK% z=Zc8Pp`{h8Kq?KRkj4$gdG%`j;2>kfTvjF|F_FN0RoM-4TWfSby}7w@axC8>eYP-> z-ar7;@ISB|)%YjB}BNQ4|v^1`Csejh!86p>%qUT>Rb*7VrG%wALCNj6;NeGcqy)t5}2U zp)nH_PiA1c)chPjFg7+8+R04MM;BJHtxg zUj%%QeZepVryI0r*mFB1t=EX08`p zmpJi(X59hj3w%Jbpa!&LrP|)zjp<2*fR#l<|U}j|{Yx6|QF`W|OfB3N(P`U;(XMB7uSec-p=r@h&ot}2n*1i}X#*og8 zfJpfJdwN7L){a-JFP9#xgbYg5F9p0l>gebo(mk=P+S#vJYI7j^K4)cPQ|Gde;55>+ z1FSqAZf;<9CB(&RDy4?f1pUdRG&L=>wBX~ckj@QR5=KVKs1YkK)H>Gt@CITBd#}8F+}zgI`{I68VbnFsG8|%tt`ZUe-xYDybhPuX zQDR~ugANx$b=!(P`P(eey0_RK@3BwztjFG1S{J&yy1tc;*4ln&!ZPzGz}E8OB7F7Y z`dyv(t*NABLmgA2q<$KKwMxN+?M$?-tt9ZxEiNpe(uvDay=P+DT5RGSpOyOfv3<5` z1$w+)`kY4#qNFfW^TUl(WaMviwvY}7usKdQ84W6IN_4Il4VcC!C&$NCHHoz21ofWc zLuMswbUIs|1{h>S9Xi3#Rd4KJp2@X|t1GqCj}qmCUR~f-2Y!x;2|yGQ5fK^L9WJl0 zf4cZ-^n^0Ep&>LslD}}oTo`h79lE`A`o$(!Ww#2nHZD%5AFHkF{Qd9$c9a-QWA*JMvSPrT<1qDaXUVOZdH z;DaIx_PcjUag6BZ=D$>EzJqWml7T*9)H+Se6}}7euzX|0^o^3&lnH+W`&qauva+@| zDl|V-tlt6CqVt=jI0VgS%;SHZ7F< zR#L#6VPf92Jl?8lYa^GA4$H?#D=OARKoN?XnlG!o6>kcdQ9uM{uxbCzMD$CWD_lcE z1Dp_vruZks$KxNvWWt?QX=4N;HEpe5W_iASZqF-%Y-Qk?; z^27aJcsQD6(`H~z4L}s9z@?KW6dvTjK{>Vrg#OCe74KU#KuKI*yPNhwNq#*hqcg-z zC|Stcp!Nn7Id~DFZ7#Q>gNdYJs6G%z_+NyCLYvaos}f*u0!lsP?B5|OP%MajwO*%9)4%e*WuPD4!Wd)kt+mXo=)HQ+A5 zK_aQ>GwAg6aV=&Q4GoPeoRkM9Mu9{v{k_A;q0U8AR8-Msq>?b_XMZ|tRX-A_c|rL2 ztVM}2P0Dq&TUsiW?|_Sqy;h=2c(7`mpI~fe28P4a$brv~46yHj`xr2-7~ox%ivB5) zm0)cK;~@@e`^1v4%0FQGRU+#R;URT@BE^1|cZ_~aXl}q;rSpEq>BJo>J`=`->9r&0m zgyH7t>1n!QVQFj(b8!KOvb>I35A*YBhf?{a>8sZO^d^aDv6|AuW_Pz&Q&ZC#Xyk*6 zKrnm>hc;K!;%kU6yo?!4!N^D`42pa@jVWSKuuW{ANn{-ZBamekjw{!ZhMHQL<-|^w zq+pZ7s+O(o#g~gbb1N%)TH5)RNADB`kORR3_1!xnEQzwp%K?@0mY;vMk5N#C7RPKb zdA`!ZNqLkCrLDf62ec}H43cto?)cl$jDYU*Yit{!hM^XH4GrV!ZuhI38%#LS5=h{M z-+#ca+H+x{Lo{)C^VnFPU&1F&$Z6s-nEm%4KN0;-`o`J@4K!hwU~YpK~z(d_fd8(!>4-Jm)&Y$zuw2% zLh7E19@OSBVRH*g^_$}ZZo^;?K5KWH@&HMcf-oAV^DtZ>k|GPAHfi3T~0)HhU z_Rb+HLj10doBQ=+ED@z-&j-iv|Ifdm|Hs>G`o|^LL}Q)c>7cxUg=QjVOl|9I@;-U; zgebn+MqeK)R4>Sx+2D;9b(9*+prr16FkxwG3VWAbZF9m7t_p|#7#wY{tn`^yxO?2F zPrcJ$1ui_VyTq2&!gqbg<}iJ=zVDOQXy8)G+$BeKF@J?&kXXzub5$+_>mEzyJE;-)4>68!;Pmp#-fk5e2r{ zB?~yZEaE@?_i;L2He&jv<*+ zJ+u*_n(HfE;j3JOkKQ{TtoYd13V8o|Dr3*f3@hzQn~`eqIb56nd~;S-BmVei&Sq@) z{DkpegQyohw(XYX1igLovLrh)hn~ThNtLv3Ni@ z(nsFU5D#hmwqC{c@-AD*;$D`C0bkQJJA7B6{pCnfN{ZS`CaU+scpqI~d=jH(3f>BM zDlu8eTcOd1hGz-;q#hN<`<>wZK9_g_Yn5}pbddi#y?yjp z;F({NV)IfeLibb0xNNhhX?WKoZ>STSe$(a6R9d|4>HzNjf{D(-r!lRY*wCGMl!~@? zQgSjM*A+V1Ki~OG^q;>pZM%haQJvYxCzLcq|Hn5~kJt6HnUY>!jd~>-d4Jtf!TGhM z#6+|-sw%CNgoL`%QYH=#P?Thh;q(saGa*wN{)^<2WF_~;~M#i+SL}*=WYbICl-&0dl<8ovBK9LNm6gbOa z-0dx9yyfMkrl!7~Vf8UFVWXs^1i1e2QkxF9nxvjjP*9OJ>}De=Xm#~++9Jl+8VmaI z-qB@$_IlB?<$I4w2B#P@GP2nqOux}B>MMus{6`fPe&*K8^K)XZVY1l3a)Hz|a84E0 zpet5s)Dd!VVeIa%#k@;MLbIIHNLS~ zk2R2ldrZpx5zv3c#g!e3@ClAgLN5KLx3p)af_ar?$2E3MY9x9Y#}2ns`g0(~ADmt< zde_i?IWgDtzW2#;U~NdWt}Y2DvGE+F{=dzE&AX`y3e1b0?3q%-wp1V-u*?h(D=8|L z448t7{rtS8r+1XEMJ!Jh97RqXsDX&W5yZYnMt;=Lz-mquxJp;R9$aW}Wz>JTy*b}K zJw+z3@!5allK?6-HFx&}GQ|6Ph}X0FuqTH4<;!4@HF4S1H0yM+!~53jVcX?0Riozf ze{3;$EG;hx!jfJHegUu!d0{c0qEbpek-hb$AgM8z6Xgpc1(o}brrOf zl-a+2ZCyX6tkzamvXK)I)H8!cEXK;p`u459?F{Bir^&(|oR**J1q1#4h-oo!&z|O~ zCdS09Y+^x!EJB0mBn0x{?9aYs70(^us5rIVKl!yj@jNC+|I1Yuk07roNunwwrlP{S zxBgc}`6LForlaKi$lRJ1r(l?wX=;T3_^{&JMb8Qs!*#Z_j0`R*ro0%0+ech5L51koYG6RB@0F}T zJrtB`46tJM#71XF$Nu8|?$4hT)d~Vjs^9_j=bN-@I@Z>E#k#yRfF2j1RU>+(+u*XW z4TFF7)L(cA_Z`MnO|7$q=1dN-VFZY1ekiM}r3|C0Xu6*U z`%eD>Li^8U{=ZlGKkHtzTw1}xLfXROrKhB?&~J0Exs}?-jiiG2v>flTnU(Wk3-!)_ zhqR`1^*DiD8whIPWHB@I%GtKcUq;XkGj(+eyM)wKjwCxAoT9#=q20qrtE*Q-94_nw z0|V}SspI3|h|%mHNMs>jt-#UA33TUbEv7V!Jz8gN*D9!gj%gBT-ybl*_|i+6@2y+Nb}m1H#c2u$W}hY~=VEAg6qSxiZYHckJfZt)9(GB$qWwFE1Lq$03oJ5p2QDI)3&9@)P^bac?^Lt}{U zThFA)pK8(Z)YkLi6NFmS3+U>iIDMy)w2SYH9JiGFHpYm1_yAeD47 zac%KNed4ZVji>HDultn3#T06Jc{vLwrxQ#S$hz`lQ0Lj%V~5f1{nq`x%te&C;G^3{ zef#m8bz^iu077UeI$>Dn{31caB|FSZ{vnJzgkF0Y-I= z!#Ku?nu9y?IX9=M!fpPXAS-J&u){K;#DG6+L5qM;QUSRn0_&^t_F}u3g8`Y$*xAuh zsgBPCciMj~4*vbVSUfyGKi_f+*YN<(v9Wm4xugJ`3C+)cmmxL!hrnG{~u-V0gvVXz7JQ(3{h70 zEW4DwGZV_*JK0;ds}RXfNHz)Cdy^2dv&r5&d-I%qzT@}({{Elm_57c1c_}ydeO=f4 zI^XAcoX2sT$(id;8KX}Ha#fyLJ%5p7<7|48y7zj(TA)fsAfflpcxkS4?C3^Sl|haY zrk|g~n2oqK=H=8>`pX3G*5(|HB(V}SOV>9JT=Wj(9TS-r+k$HjyB6a`9U^J+Z$vWY zqJRO z36|!wd9v8Yq*BjK+0&IOT{iVbt5FyT0`-tH=Li`Ibo|K6OvH%IH9o1dyLXl^W@egF z!qb%QNK27BRK|BN_FW%1Jakp;78x5G8_L(8?Clk!l1za%1=efv6z{#}bmGj5#Fh1R z3R2Quvwr@BQ2f;1jt698?;k~J<=R+SV1=6T^VjXWGofB-DDJk&%;KAIsQl61&PF6> zWHbW}0!a1RB9SC5*4kHLbo6)bWaZ>MW{!H{;sPmMl|u6T{JhZdQrf|I%j(8PR(?Je z1;xA_Z@0*Wr`1{o5xTVumpUm5g_YZgb>SbkRdzZVKzklDDI1>;Su~U;~mUmq*odmw5 zzyDQX{Q}cYvMO94D7$Yp=R!C-J>r1PI#I}@LMLwsBxLkEi`{q=;?Zm#sRed{60{6{ zCLr%yT$J8!TeohHW=lsv!Oq6UKYrxngBHhajTKDrE-tRxewNYS(1~By!s17sZuRim zS7aPC=0YC(p`oEX+}y46MSH6}AhGs4UtL%v#y}N!554{S0V$*VM+UW=+aneBj*5!i z>iW80GH-*rC3U3uc|a)6`b4dEcIV)7S8V4(u68+_o{r2UG4j7p(VsK+i?EHxucS0q zEteUO)}ND&t<&UqbT&3K6C?Od^USADpUSvrKS^WI0Gpz+j9Zi)GP#_rtf#kCIy++^ zIb+v9x4Ae!^9u*|AcPKB#o`!^oR&j*9tY#2_%87x$obb-zClE6!d}OSt$VGoh)8{2 z9y_}Nebggpg24%lMtl5@}Uz4_UesE&Hd|}(HAxykSf&=KV zU-uVMJMZn|9|nhnlfFt)UR7 z@{u}1<^fq}PtVlU)XQG8_y;U^gwMT8wXDna3$=20C*mOSjFBz)WpnWRx1AL$M*Z+rf8jCcu>}xnSFUgEaJ{sxbQ;EcNyE0cAriu5Vz#{9dVfsUs#0AK!@k zS!Y;PZQaqrE&o7vR-GbfT|}{{`>!$dv+Lv5$Blb8FYau)zH*7*UPl zpz}_QWpFn!zBr&Co!rR-U7cNBHkMpvu!{2YAZ9HulcM8MekxaFub-?pZo!RuWX)MJ zYK4?R`(bz2iCjfSUS;9yMac9b;KiPyiJM zE)I^wlV?h>gFr^zI505w(4!6fla@Nd)b#a}v~n%XF|i-34U+Q{wsPS#N_gM%IA(yB zikEN_{4Nrll(qK}5qIz3zY$*qZ2?L?2l~fIl2z#B=8m)xVOh3eHQC>P8joAIfW4vD z3`FFx8_?15@!>Jj(|>r(=swipyuT(w#Ln8@-*EERV2uVPRD{e8Dg=>~Y~GdQB@g9#-eomWla-t-n$~MIRu&ar zK#qp|6s-eRJ@8~WI~F=`>3ccj>7xE^n0eT?j4UnT2h9Q(w{IB-H@vG$0W8Y6;~>_v zl`Ck+uzT%owItP?Zp#5=@jc`gaR0XZl@-yRx28PYR8g&UJ^Vc#h?(Cw?Yh%>mLl^I z1472zw=;S*W*CxWzA2^9IX*_=Yit|}qYxcMhN_A#uEGd-tVV_7!gE`XA1B6rxr;-{ zN35cybr11A2MA}GetPFfA;a-!kbEU-Q1gP_a6}p}2*clwSb@m-cbzbB0;s4q_uTV! ztEG}e|H>Hl>NUhuTGuJ5$jClS3;$y)t`7cxVZ-> zClx)o`e&Mhe*93Q)okL$=F7l^y}4@~;e}1_ZU123dL(>d5)zM=NAyF^^8YK{eNHepoX5>Hwr&yh zD2$bc{M)}jj^ugOWVC6lU+*@te3FC|TOyh?M(q3L4@f*sgmM+Jh0V?D@_p}>9J_3` zT!QMgPse9OezBcjx33-_-5)I*+ISAR_`g5A=$O(=#wZ?b9d+&OsIKU%KFa!)J-Fa- zq>-C?5@P>g*5dm>a5kwrSDvX(XN8vHti|=h@eRxXJB$E3Dg3U3xp;8=I>7yNFvvd- zAVXyCS4Ka4|Ibryb~Wea?%_vP znwiGanA)^?zJ1Ic9O#i|L*RdV2Q8>~sVO7#?p0^9d(LeymlwV^X^P&(dC;qx^-|Q_ z($-@vy(EK9VK$oj{qb2sUB%htM4ccXlH|Bi`@D&Yo}OMp>e%*u`N*1Sv1YuR>G$Bk zKC}B26bY%nO&A}`6u9;=VNGzm?`GE2R1OS?XyvLsMd71HpL^GhhAJZ~f~ZT?Ta0?>;GKc>kf7(#!VtrVZxl)_R{+efvgh@6cm( zpL<~u0WrS>fWwA_h#ro^l|rqPP)Z>^Jv|~Sk-XY*kIB)s5l!%gDq@9og@~68qPo z{?9vHd`;a#hfA-jdZO<$=d~l@eI8JWRPw2+W~{$Bsd016P)sT_?;ASDKF$ZpHv@w< z#KP|QECo3^HuedfC%-E@P4P|_J7T%8um;~pSr=>N0tJhO#c{Ikj0AnwApW`)xxB_& zd|0FLOtTB3Grk_?oww_9?Y~aG*h}&Y4_(Ofe9$)II@j?K%97Q+LC4F-}$^Crod~|rJ7w5%6U{<}n%ypkk z9?St!Z)+pvHV3YPkxcdHhlP!1_uUa1AXcSkEg!$XV|y4rYsq6<#!vppeoLL0<9zg& zXKmpYRmZ1KkLBg$a&rV-_g1J_Xyz;)RYz$~}V2t-R_05IBmzXTQ&+ZQmzwk_v%hCz)o-%wB`{%K8(fT!-CUXp# zCNoB6)tx_j*cb)8t*_Z=k3XM4#?8&GcKYa%f_JCMy+GS@1lX;FOkV(%uW@%4Q&O7A z(d0UA|5<3W3nIrFr_yLM{tK7m=m+DNg>z?Z0Un{l_@OzroWG=BKv z7^MDYjPmZP>76|xGPENR7?D!X)5SMIvc0=sC=el`~iHuJMt=lf1b@;qmcq`}esb zGq?VFH5xIp#5T-^=MIUbHy&cpJjAb}{_Bx!xaRX$D542M$bkt(L*s|zyyWwbhkqgV zl|M1ckJTYwVZMzZ1RSkY)38(jdXRl*$M_S<2!FI1GDgL!m@37}Qbfn9#I&RRPjDj- z=Q?bSpl`ESZ{*`eU!01kc>$e-qOshWTPJgX@&4y0q(HHYdNXpiP>b#Q^&-}GvJh_8 z$8;-x`1e}3Tm`>;;ZMM_PPcm5d@K}&*G7WUjyyWtVm?bW{;FEmeY)$C^3jC4G2(bSgFb3(p9N@- zuYA@M9c&lI^+)Yi&Sl@Tk1C^M|U>b2k=O-}5t* zQ<{~Jg?!h)H>H5<;!qLk80g}#eIx*YjJCFjt(BDu^TNc$24I9%=awEG95%lW#nqnQ z=Q(&*sIiM1Ram(7s2Q5lMI-ZAuWJn7r#+Rw`n(+O;@#!XIqU^G?A5ik3@np-$mx;d z(J6)I-izX59$@Iz9AIzeAFFS=W;{7unH5v zR5m7b!N$z>>^N+8)_6q3*4G#DwY1Dmc_MR_c&xQmCf!IX?I~%^=KlK8>(^+TPh>Ol z;}+`HJjI3Fwi{<#CfioLVjn}xlz5Y8Z{)b@>20SA%f9;u&rMBD2F{f3c)7XBs>Sq( zta-WU5NaMA_}#Er!oT^6j@pOzEt=SSRne#6j8(L>(W+|1k}5CA*4AyJqutmToj+R{Sl!(F z%*@OzCMITX{%ha!!uzqO=M_bdlh5(lU%psbslEIKCTCFn&CC*pHz6Y8;^K{so1O`L z$4M`hGp_u06&#fT+f*nsLg~FP(=#xPj}M7>pB{=lQ=8}3`h|o?TN)Ypw9Gm>I!2&e z1bvpAL3*uDeTj9WK%Fk+e0);7U21JJYvxcCIh?^@G&* zkhmY7GuLX1TzFY8D`mrxp}oe;R=*%2Bb%8il2TB}OHSq#JjIRcq*OWQjV~$Ljb@AE z(5(WGQ&i;r#XANya6&LNoNlF{W@2gq7%cD&253Y4{C=ULe6O&-0ZSf8F5sb|U2bzX z)>rBXTn>QStRW+lSy91z@7`P6szpS|M6m0-t0|LPj9vrOIZ$ zdGiL$pA-^v03u2V50^<-int-8tlS7vHx-rlkJ6>2CmS0WXzA#TZR^FAm62jluHLnbbnu&ybns@~j|Xf#;phz%k-qh?@`O;d#% z+4s1#q{J`zRU)PT>t-W_D99O5z{PHKu9$c4v})a>-oC{OkqQb9c5>7vCUGsRuJ+hl z0SZ|OG?5Qk%~l8503+hit07q?GT1FGFOPip4qRW5ozGT-tZDVGv8I zl$7YOGBTDKHDiJ2v5tXXj@gCYpvn zw&&Xc@B{)T{O&)10DsyyH@Ec)hxz0FEcfW>pq7wGATb062BIWpfNc!6U=BFK%xoy3FKXKhDLeU-az&c zpzM)MmQ=iU6~)Do;wiiW0(Y31k-?!MX(=f%j}+%@YHC$bz=hT&u?GI zEG*p5Pth=Z_SZ%zD7_a0s5;>Kt*orrjALczQ{~Xv+hc-U``WdT!9l#jLOej&Bbv=0 z2nYZ?J-50-29?t5!R3OP>B0wWY+e(B#sFk9N0Cu_w@gfQ4Z9)=U=M9(cH52*ykLTe zIqreQ8W9mYEJwWhzVXgIKF#8V7HF%Xp*8b4nmRi<{i>rl-xwDdW)_y#)VxDW`)$kv zv_Dmux7C-SR}c7VTh`#qf| z8+l(>7ty7`7%eoG7Hil!IiLa;69EAM6kl_zeNinfcTZ2jZGy>^M(9}sk%eZ&6Ug7} zeV^qC@n1rFgI&MQ=l)em;uxy*^z`XMYVsvR3?BgCiP&{S=?M}=I4WE=DZg~PHMg4i zzkYo)mUSN(9Z)-hAj!*JXLoP42(+ijmGWr_C%0Kxpfm;M5BM%jO<_AY6lJUB(nhwy zS_hW&Z|Zv!oz~;v4++G2$UDU!KFrRx9L#l8efrdU=kw`ksilyRjx!shR9U(HUAH0y zpqH7NGHN`)Cn6fHbZmh(z}lMH?K^j(Vq!r2=d)w@g2#4iruoX1D@b8sVe4$zo6a~M zA&APIaoa~b^5DU>>~y?6KgdhI(VNDb{M|5sK}=d2T}Y^QV`BprdQOhj+)5b!jT<_Z zKV=ndLG6f5#iRD*3Fu^=Jo)fMU!UswbzN0e%q_-;;b2zo>+9uus7o9(05P;Xi5T!9 z;#>;H9kkD%O%WfTrf=U;TU&24Mw;8y*)9J}hpSyzCmcrEoMMbhB53YvT{kOrS2hjIrs?HWo1>?)~01(Igi!V~DOp|j!>CI*t5iHT}B zBoIa4vrXLEtUsY~!%2nE(Qt)}jV%wzS@H3udrAV;H|?-YEG!_D3UG2#b0~@>po6gy z2+YA6Jd#NUvL$m5(#Bt^8&F8N_O9e($qAbzspTQ&wEoqxV6VO>b;An4<~7_SPQJ z=&M(kYinzPTn)SyFujzL;+mFA3Ax2%HCzCFAn0B9eK#Ee6U7Lf`m2yDL(*~Q&Yee( z2+z(GUlPajKHWM!qQ>x{6bWsdMe9n!Q+o15G;a#7sUz6g1T{mp;&)*PRcmq{@*xv; zx&#p_R@g>~iHC-Uz;l#ziso}l3W%<^pfTlfkP6!$axso~u*`fHH{cKTC$bsJK>2I6 z<>lp>nIFP1FtM-zgMm|-n3SZiqB6I->bTVN3O4EC;Q)xaAgm{xb3Cm`syzAzOEx&T z19nawok40+9OPSDn?2N?uxS_-k4VtcP*1&wrDkOGv)bh*I^G5k4-dK@ALnn-&w}jI z#?n&2dF9jl_cz`(aB|*{-&n5HRZ?Q6qYG*?QMx?~M+!W3_fy``HWM_o1lTpv5|(~d z_5pATrw3$K=(yyULfvj)q2+Lh;@?N=mJ<=72?^S}cke!Z^oaTPQgF%rA*LrPD))I0 zbKbpE^7QmHHf{_gL^?hgV%!inm|6}E-Os$efpge@2ce;%nXB|~_*GdfBv=M>10c17 z%StY?k@4k=`-L|vCCAjF%Z-u%`8aNyk)m|Sl)!I)Mdb|WcVA<~uU_rrww(~PM^cR( z9Nzl*%>kiJLbCF_5ITc>pY5|`o<6lVHl};xE-xQ~k2*3o2HPnFFt6j?<Pdl zDreDbBAQxSjEs!JULRo%R(T#3fu;w-2Zj$^YV#6{WHun=%+3%%*x|7rH83}SRnt`d zViU`x`{^77TIiB}UlU>6)5l#_qF z03O1SCmv2UoWaNpSUQdl4&2tGmz>CAJ58LTlywt1FC)YP0V_g!Or{NzoD7e@RC8Vuk;-g|THt0^8Y z|0p_o5>teXjZL1ncm3j=T`gT^f4p|N__b@-l7u|`=TM!I7cT(v>iS@KxH6DU%4KTu zTp6%U@GKf19knpI&vn=S!(J<76|g~J_y8RiqJyTnc^2e4Ha4pOdcm6kmk=eT?I@O* zukJAW+aA-Mx7R8&+#L`0iG@X`$x4UMVw+Kf-1P<@hNr-K*- zV?%rciG3Rm*UQtAf0dLnfoCbi7B)>I25Ra8mwdco$H~db{PaCi+wBOOY4Gs=_|g5? zi5gW565jK3L`GJYHkw@kFD!|L8H{vyXC&L;Y(0EvtESqEgtOM;087iji=Tr-gmo?Y ze>y@opya594Gq^BRF?zs zM?VNBlVQf9ErmwKKIiW|M?obVSoPx zXsY3wx@l{l09WW~P&|w_@IL3Fps*$ia$ElS3=-L>C~Gj@(tM~75-9@-0)iPLq9926 z!Qd1qWyVISa9Np|Cm0wRA)|ZAD4jL{HoWw#tT?8pP=PLX*&o>N#)pih-fp@(0Iw3;LNQTrq@q_>TzsZ6fO}#VwmV=$=~g*mX5JtQ zI%=Uh2cg-~&SFG_%fZ@~+xaP94&}f#9GsuX&!4Z{p<2lI_x}!*cJS|kObP`>AOIy- zuNJGnxj6`dGWd#xyqenJ@bF=Suh_|B35gq=_sUC4!3p&iy78I&5Y#Q>^;9V8HtuFi z$rcnrQ(K2HwgG-Uw4k6v+zE8lPoMgmOekN|F0NEj;-HU@3#|_3dhISi5Z_26Lf1vnH*&_>K{Y%I*~usAGJ!#PGl>4pI$t`rh> zFcX1>CIvd~Eb9D6#~bL4X727%W@fFBV}rFjRQycxKgnck4d~JT0iJXrLT!e{l?zr^ zUQIq`qJD``ksL1BzH}c2I{GU#IX&3LE35N|dU{+>_H!$b@RpZjjRR?Y+;jVf@D{T2 z@)*HG3I2S#U-5f#Vj?9k@4KACROOw4CKEjwnWbP-e;{(x6ZH1a^yKOEs6~(Hbu(j7jKb@s zrqbf0$|nl)@$le}t#5i0!mP}vJ(6k@Qb#`VtIN-`?6qOH! zlb|o}&_isFn4AAG5L0?xSEpxa7?GBSGRh5?BAlh}64dK}w3rFI*1Y^k#*_5C8|&Bj z5S75bwyCL_q2W_|`@0U!!~i^z-a(i0I57wU8>7qEbL6-gFc3pdZfw|fqQd^YW^wSF zrm*T^xNkZ;iQU~dMCBC04>T>Uad436ePRxhvsPh0>-YLK&>KNMeFa4kBL58{B4Q$M zt7y7cQYTASfz@}gG44@94!BeQK&7+Lv$uLLUf>$=;-jX2{!F9pdFA~gUClEx*M4wm zxvzLn6Gx-XAmf3K=*x?~4D;8on~k@=PTy&qfQVM`Vq$Czg>g$%9-s$yAYgn${4gV# zR=+CC(s1fZjp6zBjtvfStK8iNXzHPchK#)YHIky24t+gOSisG_tLufMHV>4kFpp(s zCUs)M@P!MEb+P?bVK^hv44$hqGsF*FUIza(d@A2QW(b+YG_FAATyb&M!)sm-fw+8$ z1UH}kii9rIvhVRw#lT7#fdZq3URqKz@G)aX`n5p^1VQXLhv=R@e3)>+8`;*;_4&_v zeFrY`SIjQ?Hn7`SQdRYSzbpEUHS=ScF9FUC z(vBz>Q+D_ft=1i0UQ{l-K4Lc#M=-YKsjI3zP|+$;EMTL^)786y_3V2vsdU&eP(@;6 zJ2QH}R998G1vuVMijG!$v$@21?{NDD76U>(rDAK_9Yo9ks@dVk{vNLzfU0&SpixX( z*>%9tuJ@w^ZNs!Y6ZM^*#sEBfULDwx7Qjw6CkJ4~Vng4PvGSW92gkuB%(j-6)#iQv z;DXX;R+5vmma?H?HvY%b-;JK92z{^r*3U+5Ik)X>n- z)I8g6-v?2MNd4^6czqgvU{fU1*_|6lupVIL0k|k7n-9Fh|p9Q^CoAW-<%$E%6Q^4Z}VTk2fy9hn!GSYQshi z*ut`tyBg8JSA$PIZb?~U5aFin7$1{_k-r3{8#N9Bm)GrRdk=d0LPF)>>i)+ttLNIS zhK5D`n%j4|6IbU;A3k{kc3^l`hR0U6WLb>_ffDZxzx}Y2NZV-r_NrRA{4EWJk_vea z?yydH*CNFw-nJexD)*X<4D{TQO+^^t^^_ zVq*tzsW`)YMH(7{O%JG-!n-?K)#)BH5~^^4v@$A#02p3V&dW~jg7fDzjk#|_PV@L zba$`FF4NMAe6otpnIVd=qO6>jlOsV-@an0L1TB!>VWUOYleR*RwxcSK!~sVxD&m3i z0$K&|%^z)T(-h)8p02Z&?QLx{TYeDJ=PrqOA2!q!7aO;Ou@e&YXS*_@OZoCviW(mp z%6fHk3QDj2{9qG!`?ex`&B>jOG7Jw#P@n{d6z97&2`pA%timCN1O+`TIz@$jU$4S$ ztHBrD-~;%?;Jv#iXm{$5-go z2?_`k0VXibNf}IQ^7m^+GlpP{Rf-{3-7%4qJ51*ZmY4;QCE-6tNSc)_RqP# zv%-mkp$%RFfXoI5wE9!mCl*p#sr?N7@kz>mpAus$LLI&0F z*JWZmWvojOldS=pnWl!sbC{k!+maj|Rf;35s8(t`&#`Q~?$l^kX0XMRM5 z!raG3X8o&aifU@n6112YQzEicVjw$%^*6hG6jXBG<@rvIW^rm7o!dc98suJ3Ir$iZ zR`_awuW9E;At&RG+izg>N2x_r>WoA|z1xo)Lc5XxEC~vhy)$riwX(Lgm2Q0eH0#&N z!n}|#wF3A&10azqDe@%il#2kcIH9+FgM(#d3mfcF@7|5pBa^_?godGEPj4>`Sa)+L zk&ryTWllpRX>1J4$`#0&0X~sWvMI1l;;6zpJlrxyK|$fvd;10hy!{WBp4wEP!EOeY zdACFotD{+2SRO*&DckmBd2Q_@@6+o6jS(`R05tJ>$4w5pjh2u!SGVqYxrJbYHI!x z1gM=-V97I5^eidC9Qwir%~;yM*Qw3TV;vW-jQ<*JFin+)Dz3Cd2Z#1PB_im0iG0yF zH}{&IUV?y2USL~IMMaC9vBw{D5EK-mCZVwJqWD`G7q8{lv;X+va6tN_T^ZWCc6J}{ z%l3UUy8dpS_+^{P{{FqMC~pD-VcyMl0_ThVp`pe3c>wJ$8QxmxN+6`50MPnP3n6rk zob3vrrv=#>gtBDBRqXJ5Yqo_j5S1YC2Br7dcT+yk(C|;6=6X0Byv+mTWn>@{mKGI( ziN_7B=C-!2NE1{bD{OB&NYGwSu)~Y`@#6r}Cp|p@fQH0|!7f_H&5e&ffd$Ojv$D(~ z4o5^s!w;*esl9rY0c)XJ&reG7BL?Mn(pqXA-%*Ab^Q! z4|J$xJwYKvv+^fqB`%8p1s{IhHb2gV6`V?#gLHVbm;`3AzKzo)!4nk~e$WH-d~y7Z zg_Vfq&Yk8io92{G$txUjWk8RcbEiL(suo6IvyPhUKx38RI(Z-1m;3 zxI7qsn6Ltx1P3GxvO=!nqs-Y(jk)8!`uVvza9{;WCb(mR!Ow#Sm8&1YH+slLguLW{ z(n>WMHU+AAJV0zVHdc4GueyBuIz6Peu!uK%tgo!>wKiP1K8B1`Ib$F8G(l@dm~U1Y zieNBDWnx|9_U)BUQ-#Ji0R~->*l(AarZ!;q>gwnY0sp+9z^-35K`L9=eRmkpy)x?) zO;OS0)R}SMmr-N5AKxG7u{#Dkc_7LMN*I}#+`zCDV1=~eV14ILnU5-#lETy5$xSEw z@L^iaP@eOu4xDM=8Tt77Dkknq%d}GfIl2D)II?XG53@4x<1*araFvmlFJC5%zfG6R zb#UAP;)0g8V>e*HAVS#R8UcxLgHa*O?}K{VhjjY=9p$gWezwv^M(=8B;*%zyLW`a@ z;zMGh+vbE9{T6n3RFv2H=-%1M!F3E&_(n_&F{L-UPcrN;7Ut%X62D-a7ZnK!296-t zj~H4Q?GepUj)VqQy6mm&K{VQ73S)*&1Jqi0So|#poDf`-gyj=>x<70JXTiyOJ=5#N zv)pPcGdEYj^Y9H=`7U(Ef!ENU30}HY2T3fX!)TAu z)2M}ne8p49`JM2?;8tq_Tn~DWKDGEQNEp>*+4>?})!8kOPp&yG`iN8#M7Oq@As4eo zMkcrcU_BP)b0sgTA}6O~^5RoKiz1YHs8^=Jh6{!Q-kF_k*#b49%>)hrL5;IpusPSb zHjK*~LQ98*l_p@F4@(@*MJIa2mJcMJcxpNYVd(ipA%RoHjwEZ)}7PZL^VX zohO=~C$BTJT??+F`cNtAm6X)fD>pohjg_s|(qM0c(A2GN>10yjbU(S;G2p@ zqr&53@S$&5?6v!y881vx0smi6Fvd!hU0mGWy?FqYVcje!Il)8t+>4D*#X`Zrf!VaU!Xl&{yjYj4Q2oqhOJ&e zo9g@w{pBcBzh#Aml`b4BQ2z|&Ux2@9Fn}hnK7M;Sjo|Y#Fx;$rNOJx(JTfg@#s`YX zBtBbI4DbjD4D)fqef@g5~$o(l^^dKo*0Fdn->iA7)ZcZ9@~C-}~K05R3r z(X_%8N?cDBRKJ{O-$>foT#Es>1m#yg{a@I|-25F~-Gs)nLg_H0gN-v_IjHFA)s>ds zv?dT7`T@n4urIy3OE}ERmS4&{hFTBq;JVP9E9!S4vV*K@!t1*JHI2$ZAd>8Gt5*!) zfo;m#I%yZc8bk2IcfaPUKS516Icz8<5EB(;X=6kA`o?9Xwo~1{@ofd~5NppcuU0l= zWE;S1Um2{H>?ah?ya0lwVP@8X$s!}Y=r`}&ktN5yplD1np4HThjV3w|<&*-*Jwm4G`*+4V0(?TkRiF`&kbt+56}QLQyszOJK5@*_<|fP~ zJVX*>jiSjr-uY@ed^c(nYk2wU^!N%u?f}C99FfHDjK#-|!%NK5=3 zMtXY#PmfVMJ0~SUt@ZxK1hKJx?_N*}D_4YwV^GBR#!D@ay;E1Dq}oI&{~mrt|jKi%bFsAQ}Eud+U{C`l+H+ zIt~`r{_o*qWJsSF6IC2W#M#zUuy7zj^ye938ACc1cJ_M~(5C0O>Kl=igeM%beG|y- zYDynnr@nea*8}u$pFWvPr)&Bl=MGwWRq&2^#z?r@_~kmm3kxe^=!H z1e$@R_kZ(W$p78b{(nB}H0fRZMN8LNiNy5)`%B$hOr3Ahs#j=ZWyYvjR>ILpC8TrN z4a-AcZzkW(qY%KX^GS{|Q0Jg%e7H)J8vYp5=gqKFJFT5|TBBmM1bd?C!j2a^%$|-D z@|tQFkBp#CMCOS3XxQIX`*CvGR|^V9saeY2p1~Wpu|7L3sj4gK(eSJ~vt&v9U&dP0 zOuns{0qB+org9HkW>enCiYspZ)_{-sna%+wJgrHxt&pmZfAi2PTd|JHex?}P|EEakkD5RJF-^vYi}d|TdLi?_eiHc)yD(}d<<`63NsNQ< zes28_LDN5#O_3~fsFMpxlZ?_MHsw4btSuQR`rZP6$4bJ@fw;nVk6 zli&d}rMSED0<-s(EePfNdEajFWj4>CToxms{K1ZQebB2orloGUw%l=~)+|KTSRnA* zfurf}FRFvY;^Jx~zWcN*k?I~_>l}5Y?_=D5ebIH1*hXqJ<1^rU5jl#7eE*oO>&&DY zC_eJ!07-vqnQ?$qpdcx}UBTC``h8bsF?ALEClzB6T`ctm(KK9m=Io?D+C`?P6k zdm+?qP4aDOm4a8p$1hTgLQzjR!xk$(&+uS&3zf`xX)%X&+=}}sV6%Z`fA#Nl_go$H z0jW)TH?kf*#K6Qm#H1POTB|MbVq;UkO{kRne1Ei?s#W`}lHd6evMA#6ps6py~Vk^NzZrQ~Gy^M?ot)}jX+ zqsPGXL?~mDe1-nA#|M1*xQ~Ju=2ma&zv($;52{@$=gHTnnvU0KBzV$g$VvWA!iyu)cAZ|-EM!bCOzO7m%Beo~qaH2d z?R`#W>&310Z&a=dyjsbnq4)%G@$;1`h7+Z|y84un_uQN|;)myCzp)7-vmcJL6x&O# zx;%7KAL-ga>)GK^Qbx zy6@OCTJ@YOs+V=Pxmb*qi;nrpY6jK1=XZYGon;8_H?Es1E%QIFj{5HOnqBt){Q%0d z<&T>Kgw>yWw5cIdS(E~YkvG|IuW8T;F1ozHq7a`c4x&8>L$tu*sN#L`Q@ zcR1r6*K9J=ZvI#jBXx)>XlGxd^9$~BE6PuM^+46*@xXBw(k(+0o15BXTt{uD#Ql?3 zW|lg{_df1_d_i|V1f`Ai?mNO#45JVGf;6A1w^%K|R5|SC6Y6U{_z}*Wi9y%tz1~gm zar)bIU3N%>FS_SG%iG@B?V+`4zPue*`?2#d*7@p|E=_M^#sKVVPEqTh(zm5~62qAX z%8(zvc~yinITz^fjTv{H@9&rNGw-ztc1xF~W(Ax3g&*FLTt^ovRD18|Rcjxa(WewU z->)!MNzi~eB;7!N`L}n3lEZniysNqDI=Wnyf|cUO(#O}I_sn-X>k6K)x8$!lJg>f` zP`#?SjJ@!z7CDYEU-U>^*a@x4aN;XYeGx(5ikGH>9q{SFX?uxfV-uR~&wG-*OXZ0p z?U^O;R<1Kuq6I7Qu7B0^h)<0zNvdP;w{02bV`0Bp|7@bP!P0ttwPvlj?DlS3Rs6^| zo2vI#<~ey8>HbetPCvCU1iw!u9n|T}ELp+C3qna&z(rQ(;Pc;n>MF>K&*4?nO zq3$`~Yw-)06`6ehyVY?#raR8X+K%V_>dxXbR&8mFHqU3uIt#|3qd(g(G*)c{bGwsb z>UMR-WyH^mKL&rJUR~lpik%#YEwrMbQ!n!@t$fyf64*zK)44rvihS7jTs!_b<_Ocjk0Y1@$X@?%6ksmdqT82mZXo-HfhO8d zgTUy2zTo{CdDgNHZBAS2syZkE%!;`vDnE1T4zs`Mh@!UY~)N;!rshR$&6u(|jR<7#YHx1vDX_3nHc8m-21tU{F-udYxdi$C~=WOxy`Zy?me!(vRhe}#@tU;%wDyQUdE{{3nOD1i z-?`;7xkx%ORxO2lTG72{B}(Qu)6z@E&BGqpi_x)%2K%AL@|$v*=0C#=4#XqU|4J~~ z{JHHb4k3ZP7*PP-=lRQ+QPH2CV970=7qP_+@7r-rZeC#4Pfio0l`T46iM($4{XYbF ze}s6{$PNvSbo5vaZNNjKRg_kfdkm34;LO%AOB!3Zv9TfQyKGWEmaCTi;l;N5SX!_5 z-3K2BEad2gACTY}6?&K!kIXv+EZJzcCR%W4cot9^7*Hd)%*q@3`F_fVjB_?5*89NS-G@(~?ZDr}#X;zsniJgJ z#k1a9+$U>JO*uX9QeoEZvj&b6IVI)wz7#VPlM)!m{5T-6~# zwzpEog&L0^?>U_w2FCH!1H9{4m|6VlRmHf?*!dHs_wQ3bHAN*{d1b&HHRyM(*Q}m( z^T;>`{H7yXmysN@ylR1-0c0=GHSlB!Ml3Yl?0om^XfsSwO1cHC1c{U%F7Nrf3Kp^$ z`2RnYy#-iReY@_ff`Ebuh=72UNK1)y2m(^l(jg(;Ej0urlopW&De0Cj0g;jhk(QF~ z&Uqf+^{utn-rw5iT*t}fJDo2~<`{F1e>~59|L(v>9CTm9TWQLU<-iRp!Ap#DQI9h3NF>Xw5b}o=MoNZCoH%LE!SftloR9N_K64_ho z55IK_Y=}=C8)r&PoTWLT=r7_6gMoAa?jioG_H)t76BY zMCkn;=2}dQ=;UUX6(LMlrK1p=Eh@S z7UdU26I=t1)UITDYSCtX3w34XDGoCdwrcNM z8*K{6arvUENkYF**eIkb);TSgL7r7>3L**A<-cDS#+$W`<5e4;S)cH!NCld352miE z;jyHB`)t_7^ns!O-R+p@^m6@!y2hFF2*;hCjgGG5XNgulbRUCrgIP4y%4k*mlP-~6 zBJijErFiYNc!DbiF^Mmggi;BQCH?O43g-2PUw_medUP#%iyTgY5%0uZ8axDu28n*w zVD+R8mTza5#Ngn&=;+&@$U$~ml#K@zorLa>;N+e?1nUQ+POB)tfg+j3z83`<859vU zK)iA14ixJiI}PyhRf8Vu>Qy%}6Vq~^`G}So@WTR{W6N&q5vj9@$w%OR-*_oYd*jZX zxV$`~vQZpSMZl;?BhnpvdtB(E)YL!5#sD0eySIl^J88lh=bK@6dQfi8<;E(Cr>d)) z5E1dI-|RKomx>B=E>gOv(TTOLk0&P>;cZb++||~Oc~7IGr&lo!=82rt)SQeAki`!z zI{}2}U|;B-q`6@Utw>`;x5=s#Kk&}d`ysfIn8@iX2Le*ahn%G*CR@ax`?J^APv6SE z@ed3f8GhT*L9i6>tN;Q2p_%$F?BEfM_=>CIL-83vg zZxPgCEvl&rYny{ttCFKSyZW0lNxmpQAH<6tot>W*vx9@NFCOD1|2?hH!l?HKb5G~8 z(`6nIcID;Wf;K!fPgx%z5BSM(v3#M44=pEW{<|r?wiXt8T3X;eV`XGqu&Z)(EMrRy z`J|X_ZG9K|ZtsGE;J#MD_s!mMVsUfxSDv0{6B8`>sn(XO#aaaf(njLqKbvih)hWs$!$e56z}72Bz?EUc}05*}m%UhVnwN8n@QpM*I0OIA>K z2GxAYr%$mmnI#(e(7+3oTt{98$!AqoxDIEXW8u@kqn&MArHW)2-N=k1vbW-BtUUJ^? zZyrJ*=YyvH4g9W}8uv&nTg-g5ltX0(v!`u7&^umP(TdCl5|9bZgkK(@f15oS8ggQd zAtoj+8nysCGH@#9=fxczW$o=5gInX1hEF#Ap_v8WS6Al=go?p#TkUvpmG6tY&NZ(p z$CKjY=?I?hxSa(BVPQ2xTU0y^$z3*oX=9`J9L(UJb@G*$65Gi3f<8!*LhqqYzI@&; z|MXGBvLHoKPR^)F8APQuVmWs zU2qwSr50DHfdhey)awzx@290Dv$q)~`T2s>)CTtU_LebUTy67^QL8J5rlyNQt#I-B zL*%G7BB`WGn+u;Kpz4a@8JnBqXWs|;HHGlmPY>)5iHS6kT!cg)w~omQgwRDLBqX3k z{JZV#MP5V0Wr_aT*@4{LmF;bg@HS{jt*nxDb}@rH83#kCU(A6w@#N(Dj)Ri1G4Q5; z^s)gQ$_Jvrq#}MjSaJ#&U#}R=XKRT5kQeFjNV)K!rE}Q#5|P6TlBv+>81=u`eR+Hd zhdGFWXIh?e;85NNodq!wQD_)$czBnEa>JJ`5HK za0iBiV`38HigM=~9eL1hl&0~J;NZ5^AX)`ru40hs=;=vSwtop9XI~8#e5~1*oQ&_3 z!ze|X3}<9DHS+sZvfKf$rOJ=fVrRN|0eNKwvYK#~`2}t+In}_+0vkd{)Fi{Z6Si5% zvG;KAc@q!-EWlq@2e;^Jz|8uU<4l?Q^*P=SO z1O;KeF*SM4uQ3j7aj+_-sdi#wo`P>hTkGIB<#j^KOrOPe>R)PYvu}@xaR;Oif9S}- zL%%CD)@tH-$q{6SyMF{-)_!e+54oYi6kOe)%MA^i%Aok7rT*7X8-^{47b&Hxq~uTK zwoiCnWo~xX3gNbdRyb%%Nd~U@Hv_7pm!a1zT9s+Fsf9ChI*(XOqptV)>hv%KOT}P!bSJ~J!iG2SbG1LO4mNK z@gShScq{bY;ZG9g=bv@r2c4s#k-gWwB>AqM9zMI@FeSh_fKFFixT}xVwVUC*UMJ3# zWMmW+X^MTx$qyf+w=M=QED}Q)P{)FbtgI{yVt4Kw4G?4a+3(O6vbi51YaL_p^?9qt zQc^*vV__`+96<_O=iw{wo)@Uy!8!R9ISOx^vWg0b5CI1*J^*u`-!Vx#VF6b~1!WGu=dAnb4-Z4IWm{(rjz3vhoDm^zhr|;376(}c-Pa*IV zfDp!|{T~Poyy|H=I7U%=RWQ?+Yb|WMef&rS!MpiCkzp856BBh%&N?iZl4+n-dj7l| zCUefw?4}n0(ljzRH}`fO)7R4C=HufKDuCEy`gp3h8A>dLDapxdOwrxl9->!oib-MZ z!n@qk+?+XpUpDHw_RBtkfg}KIA|PgZK(zbqn;Q^vpSF3UVmu)tRxQujc{oii@39p^ z6aXR-FCb`V#^>bS0yFe2Cn*~9c%a)SCNhA7q7n5K_Zi41p2^Ge+0PQbOM_4bbMyYW z?d)MDLxPM#`85{+z2`i}!(3tco%mPXziJ6&Hx{C@tVJ9%se1szl4X7uEPMO<{ol4< z!E((-n&<~Si_2P&q^txcEPZw{((=StM?+dw)T`O`?ny)=C`*h zd3hhfnM8$^nb$S)8(qu9gvc$luFe;(0^k=mHTi(m3Y4{|2V?+~(f|$a{Ct&Uy19h~ zWR#w(dxFVP#A#_5s1`X+e<`kctLWLh9*2LqioHJ&x$uyXjI1n3i#%a2vYT#DgU|Y- zN6RiAM`y*!$tg|joPvVrqJ23kZq**;*M4klP_V|_i^eq~`8hE$i%>DD-&?TA&UhuKcLirB!wbMDxQd#7_^+xG6e;<^{XAO1+jjRIo7sKf=FiN9FzA^Dkmq& zK;`GO)#u$z3giwAl?IfNq-4Oz&#k7Xwww2&I_5WpO8{jI3BIJLTfUG&nk@J#1a(yu z>`>6pw6psvP&L8zfr~VBqzJhz8X-pq(gtE^k#UZiNl5sQS~WN=tFSMO4t=2yLi?R8 zlR7jk4OZF9s&+<3$|Y4kO<2^3AtxR>wBSJArQhJ$--Ry8j$>(Mbv8$d!lR&QG6|fj z+221osnHS6RAl%$vaN}{%>c!vEv3l!=h8+-17)VuObiU3CwtOh+}081;N``dccG?E zc(Vo;UAPpxyB|bF&G9FN&&SGr2R1H_FIA4yUXtt7?dvK)h&V&0zk2)x%sgAe5zd>d zT%^v5w3sdI)jG-V-_t~gfv#zF9|NM?@xGatlcusiXHD6euDTp5>Acv(gNM#Yr~ zdRF<5^T1p?1ZlePG~~XY`uihcRNQv+>??;T9sQcU9OazXRAz>TX9bl#Ai{Yj7t*y5 z#mLy4rGTV>soXHu)W(LDgX0xgn(s@1I9P~6;l+qei3S*Ou1}eIda^Jw@;!RwWq$2u z7dr_xh)^+R@QH!}gwDau0>7nv@1!-D zvR23KD?LjHT^?Ix+gm0OA&@dt4b)w$G!$l4I zbBQL48eHrMsti`T`T2Y&Z22~eQLRI9_ij{V%xrK4-aY~DCycd`cihrR@6>ztoA{Io@!hdp85!16`sN5N83Qu1@l3{{=4 zSgPmo0x{h!3d6L1GmsF#^J=hsmQvl%5;^bhjT$!XZ2%|WwUu_qc+SxT+lHhReO}&Q zMXF4Wj=N}gZNXw!c^Em8^9M9CT{CvwCQ%wX;1hH`+^{a%4L{gRWPI=dO?b|wRv0VZgaO&uxT>VY+)D1cOj*(9X!_Hemjf%utpjoEXB&yNbjv-ruTFgk4GZgA4#~|O zvm9Z?M&Djt4f8nMddfh!1D18`78P-HN!Aon(qVt85FfLJA5EJzuv)(BiR^ zY=l`^SjLtw#s3q5MpAI$&82RBnV!8CDonOjUO;^epW+Dm5QMG_KMXP{`?a*HU zM*d6HpzOA=Tt!|}xw*S*6(nCHU|COO#cBCrax1jrE%E630dVB}07rlKu3FBJqhrFJ z?e7#F;nA_N00Rw~cZ!+u01gGOU0K-}cw_6Oj-vQO%75 z<1uVeV55VN&-d`*6P&PXmt*_Q-o0zCWW0qni-UniEk9`S=(QdOXk@mV&{8C?66*Z^ zQ@|~TX4UxR}f_G|rNifv_yf+l#kZTjzh7EJ&7H&|b zx$|2V&bSb^39qnL!~67EugSG_%gwlQ!6@WA?}pt>s)|Puu1yyOG(Q+>(YkNHXx1*N ztDEVNOplZ|wOaIOsC-0fFG?6H`4qvUrK9_^F==~N`PiXaP*}JL)ws^V&#(LsW2U~U zDk334goERNLS^CCIycRaU@CTBsu$RtmE+IyKW=|)-T6#^ zJi%gMVd0zY4x}q6im<3gS&!({{Vff*T;xR?nJdeDMl{I*oB2`R1czAfuaBfmwxQ_7f z=-a?%INeOcKR^ZixoZmXRm>X}cTDZiMtd1L6=Y8m+&a769KyS{K8gWaQDyB;mTlziu`}u!ek;jaY ziEZH?l)`m4MYmwfv+g3$cULKg5XbLparjci$C&K~1PJ}M@IJv9aIn$pcah@tC!v@g zCtwC9P}p2DM_*6xXMdQ^!oYB#f42I2)g15Jh%EkD;86nmb^mt;5rfOVGtW{mN&UsB zKVrI_dY{=c-7X&=x!4sEVPN=+;y1KU(klY5>XXLi2OoZY(9GKH=r!id=`il;?gnQb zvaowN-H04+&*`CxE~1aNT0|BB*zTVLv#Lw&`CK>~x^${)?j6!ld>HQE)6}_c;`)o> zzs*Iza^IJVX&8slZS~ItHu}3X`9(>20=ePSYRg?b>$_H`pNB2(;=WXdXogU+?T>PC@JxU16!g#{ZxSjDgxAPE3V?*i%)vU zq@$Q8IF|`CdC3v7l%k?J5!p;-@~~%ol(9Z+*i5%wd%p7QanpV8o}!reP*5aL@s7Uo z#aubOox!(djt)QxuV}O*CSdnl5f~84IqW2R*Zl?ABM3B}yj?NjP7pczEdsbM2Zx>b z1aNGAX45_4V(7g_Mj4~Y;&!U3qB1gC4dAO&DiVp;h)gEN$4#|Q3{zb8)#S7I=$b1_ zOLDSZicAac^`fbYg0_czOwrB8HeYUnkPwTr{`qiqK|;!jD4i8mWdFZ(rJYEg7@A}krwrV6^JmP8SD+AiwG-R);%v=Sq_?XJIoaDD8w1&RLVP?<=XH_*Vxm7LrrV<6);BjY+Jz)1 zmxpHKm)UV{;_Sg!Is-B`=>_${wVwqE7r_l1MEPg9*w}*>!|WkWE)*bpgSRqvz?&Ke z!$?l<$5EBS?vph#8}=oref{Rvfo;I!f{kdUXD|kT`+gnN>!lSHLk1n?_1bRr4M#P zo$BlI+1GdEx9$~t%;-wrM9%kbus0ljw=%%lrNRPB)hj^?EZ0vAq(l|n+lm-|!u(^z z8@rqb8Zp?@$oHLoJl zz>53vV?7A(F}Mxg&t;^g<6?Z~1lee5-*gybSX`E)LkloKL-Tq=L6Q;KZGu1*05x-y z@=_B$KI^yzhM!)#l8E~rJ3}zUl*-BFqgWaGD5WB(whu8K=6o7ap_s5dSY9?S78^0< zWQu+VDLS8`eIF`&7xv+WJPo%$A*} zDi~0JEB?6+{p*4QXB?8M$`lG~D=)8|n{|%QwaH}BrAWRjo zquw^Yg3qw}NXI8XY)p(3xW2!}@qxUzynNQjN0=l42r*Ny7InA&q^81CUd^z1@kyV? z9KG!&RE=S?!&fYI{;Q-=$U{qs(BB}oWu~y8;A$wfAfjhieWpvtPD8VEc6{jL9@t^r zzw9KYNNDD8Y;13zBbn|}JpnLx8=H!%DnL$MA9G)IWas2m)zP`4VW^`cCLgBos|*M` z0(q0Qm7(&cU)dow`xa^EN13PRz0ok2xbZNQJ;5t%2Y?1vTGgAL2V5VXWe%|8fGhD9 zmM`*QuZjENL!)x7gamCE;2?FuVytZ4EWfc4P=JK<3dY99kVc9$+CJs|dOud~t(R(QJ+K)-Gl5*)QNnkLrI z6^ugGP@vzY9ia1`Yb*sD=MFO^*~}o(>bOv-1G^4PPv3A#CT%d$Y_9tc0H5*d#YAvl zU!STvaosghadBfOr@g+uPgCKotylfU8WM~Q0s;fyy_4Z1@A>v79K++*>io9LYKOq5 z%EMZqoB)dC$gPg`skjw#yHhK1nVO1)MreJvsr*>*bv?#Rpx zHAw(;&i-jSr^1jPqN=7=e|{jM#K7>2H?{f|Tax@!r7x+e=Gs#O)6+3YNjFw_W4fTV zfPsm51#?=UWx>IoH<2m^i_@0NEw#KnwCO9emY&`PoAY865npX;4-9LL&4_7r?cNpUKsc0f5h9VT*eAedRuLdy)XK*{y>~18VBF$SE1Bt+#b&X8?AufNI}x z@i60B`S$GyroA&_9$22j{`dZ$r?;=aGBhj|+n!h+C_uP*c>&coHS9bvw;kL4d9%So z+zRDwtdUcQ6p2i=>a3w{E;%ml6_CPO1St+%gHtF3k2*az&j;q3Hl`aZ*N2vW#X{NVE}sL=h~TRydOjy# zVM&Fgpw6rbB@*S^$}MA>;@DeSo}{KG0!ycbJtS@E=;-L{;}jIx_zOcrmizY?VDf{| zA;Rk?YomkKx0YPn{UJw;XWA2%nP)4*vfmbEG7aJG+9=Om+`!=)ehv-_veks!7e{m0 zfN6jBtQ(fJfNon~Zvc1aWKA`KLPR(99Dl)}O~xCBP(w|y4!`(Rv{oKgaiXi_8OqC0 z+tGI$N>^pFHZuc;sZVYJV2Qv6sz76YG=iL$qskgFAa@?H?%CPs`ALv$h&86$jjFPR z@oZ)Fe&fY{5j)PVn;>T#G=$eWqk|I=>rYix83hGs65wD$jHbPVO?}7LPoQGLFL3BF z*BhpL4gg^e|n70)R0mqeg9` z?B2eRfW!O}8*<#prt@n#Bpv*pE-o9$p>ACoUs4zuPXi6pm}7itd7e5OT78^kI=olH zt{Z0v1O%z;do4E#ktn1H$mhLDCD!sDv68gn3-i8QRjc72Zl$h zr{|XKYA3zC6wnqd>g%V=D=Hj$bYrkmIzlfnE7t=oiYertyO(8Ru>+oSgBJNcydnQp!#e zJ@j|JLA%C@@=yC%?m~UD)?Q}*JfX+1M2^m=kGPW5ujyB=t2+hEP}EDr*Hv!b)=kaS|wfSFr0a3F62 zOk=JR69x1tqfSN|ciaS7h%EDJX|OtHiXjw%Rei***VaIbC9jrmf{4X*n$-RJwQC0K zB;TlMweOO&6z?uhLzp7JhE5n2R$xo{xHVfXI+iHj4{Q`BGEK}yx<2VTeY%w1h_|?c z#}`i3z9ICAr@SgPl>=4<5F4|jKk?eN;OP5Y-FRo4Zq=44%6X|TwZ;9s6QE>}vC}ex zt}TGk?BPygSfb&}8Q5)7tHU}g{=vFio18qMTi(iHOSz)U2#%TlU>}_wij>u zmiG$wKfw8~)#)MTE(RV42o@~LuNIn)-EUz3p%?;;-7}Ltu=RV`vESuL-0wWZtSZp7;V~{bD@Q{&!tbOG!gl zQaHq6$8~2c zpV{5P)4yB#isVL%9d!Hr#rj7M30sPRqzl3tyldfYWvkCG64v}%CSo{!9xEy;W{j|5 za**4;F(zX@ELBrd0z%l~u)03Hz+W1odU`Xi)7HrMw6-~ngkYFPp$rWbCAP*hnk9-C zqHSFGL{;`@vcsB)eccT)3#9G>0!Nt`>#gK`cqo<(@4-3t$}x& zj5NM}_uSIqcF*1HblI){aw16NO5GLoe^2fm_umyo7U+AMz{>D|k#*VlH;>grVqs2{*? z9e0e=z%K_%*o zevN<@et?4NZ?#qG{geMz?)j$x`~UMHc8KxSAdbCqIZL`T2=*atDUyC$7*Ql*34^O?u4|S85-A|YMJquPJe4jHc zfl#NxJ&rIV3fcFx%WIFiPc}9NXNnOoq4~JNn%23w7|#MrSWE^6_U1jGJmkm>7yJl^ zqN&BywY8dpF}u4P<;q*;7Kp~T`$YbtB-$BTJ24VURn}$I*6(S}ZJrHs;XDbM7Sc(c zY_t&~UBv(CqaixH!%)^z)y8Eyj$U?6isha>so+RW!9vuyOyBywilZws`w zps8hT7i@~!TdvY^5_C~!l`@3pn_dC&h?49*?< zuW$O-k038+&d$uoD{{HZMrZ8|;cz5-BJa_^X+pwdFeX~;Z?*}MAKLx5JABhZiE#Mq zh9Q-eP3;^GA&IV`5R;?4^Pz26Z~@ZCAZu%L`Xc@_MR@R8%s(gSX=oxIhFt?`epG`(NMdJ&jr#Kp{`zLv1)cTHBcNd4oM{uGhRt zd5z2B0T-hqmOF=bFk#aD*_*~XA(7b}!FO$@YK-Zs9$bFeF-y~bb(>Amb!L{_-C!d0 z3{Ur+(QF#S%h$db)Z(d@-#!xML@y+|_pS996XQqJREm26W#@ zZ+n_V@Xx{reH8>a7{H^XhyoDrI-sXe#Sh-e#^!%HaNT8yfhkS_k`eNF{3*=<^6$eYs46Y{Z6dF{LSUM#YJVRlQ8&_oT(Ez;Q;zDW(%N|>D7a?FTQ{|D zQpQIV{1&t|2c<7J-?jJkA$DpXjXpm-?(FXF=+=ewowTANTf429AKTF8^aH9eJ1Aq9 z_X`!IrK?@m58uAMCZQyl>{&Z0%zLy27!>!~8c?E4ZVW@~uitD9Pz{itA;grXJBuF) z_I45+P(uz*BfVDgJaKY>V5zKBZ}h3sVTJg0T#@zFS|pG1-$S;3SkF7T9>VAm)dBcX zx8t3c_@ku~q4pRU8zLUuIj%Wfh9yHozKN=;f$@ zgpOM~An3@mB|2K4l7A1fw>Rle6XLZ1wP)h#u=OH(xJLCnPzs@mG&AFMT^R}|^;Qle z&$%55TmjHaW@g6qCLWKPXlp4eLy!)v%4y+)+Ya$|u=FF8;PX16|L>__e}&*vSbQOQ z-GA)M-8`A_u*_~*wsyQNr*+`xxA~F4qp+zw;)C`aFkmxwM{A?{q@+D4DEyF|j;ZV3qqDI|wL_E)eJaNxWzNcR)lzlVYgFG$MBD9ZaP zOpyQk4f*@eoNS>L4d4okMq#zFJxy9@EJhXDvgO1W(+i z^HVes;AUo0CiB`mczWurzJL6w_VXWYd;mg@)s*uxca?Y?ni?62#&o?pbE^+x(NA_f z+^D}R;1b(y4zv!`g)Q{r;Uq$^GqP`?F5$n~?2mndVhpDc%FRDxx<)IZB>D8IHTQVH z4GBP`m?;E~Gtj_}B%D&@XAxBg_5W~-+m#M$da-wUF1W*{g%j= zJZ~l)mevk|!|Li#T&&S4oWF-zsCRA+4OUwvb$6sj)9cn~g>{1W+RN?~5&h|gTtxSx zCdOprV9#7bglcY1VXszm&uHf)WdlDF#Jca^DG;-`L3Q8Mw2__$LYy~k2YXcrC6rLs z=Pgs`wO`7=+mnk(v-8OOXzdEcN9>D~a^5NWOW8AuMQW7~_sbM0Vrug&GcmOy)IYnm z5L4L+8u9cScQZ^J?MnRKA22*8vvkPq&-ylJl!tzXFJt6|5JV(820Z>u43VSw|1}y_ z$G7+EgEIZ8ytlV!1gDVDy-jineW_bwT#qJ45-{F_C0z|To$_H%^b`R*H;2qV$>`k~ zTYe*!3Q}1Bbi|XY134MF5Q;)^=I50Zey<^2wfH~oj8T>ser|+vFl=I^rS08o?h~F= zfxN;~7GYyS_s7G4xXyjE_bR%&k9c|e`nTH+rA3a{M%m64pDFdDSYu>2tpThsP&uaR z{7g8SN=0S+#3wg5;pI!7Z1PVIuRAX@A(;Pp@1Hxr38K;D916Q=O+8Lm&(2QA#vn@Q z$B#scxuv_8D0+=$yZj0Z>7AV`??swH@~YMQy0?dI-dDylbj{K5HZ zt1Bxq5c0rI@*$j7o|fPm`V?c}wtLRMj`9CE#O7$Ur-9$Gu~D*iaT$o*noHp5nL6*; z!na}lTYgOuN$XOw4|8&BDv4#czDdA|UpqitU1-S2$aco=EU$S^OkLO^NF(g~9UWEl z=>BG-Nk{*(LN+(Nwe{6C)s1vRoy(`I3tcW^@Wh^rbSQL44t|M_etx_hGBh&X(Rq?p zvYnj9P*!I9H?fWBzhd^36?qdoX5?^99h4X3)2d-xcv2OQ7@WrqoMD4w5$l2J)(#Sur zkb0gJJ<8tFCLeJ$KZam%En(c!VhS4kXoi{v-#qD;LvPcMr_Q5D_(|4O3&fBXOc zky4KxMb6>jQ>XSe#PbPLG~ndi1Sz-|$qWoS_g7m$#A0eHRYwbU6Y2F=t$i+>dmMkwXTg}?T9IvgS0-~ZOI=$!*F)^mbYp}|LN33w~ zBbfL9r(0k&IZb?GA{PnH8uK*PP5qR_MCh2b(&?pIjqUwW*B|!2I3|V!Dl1%3JoLX` z7YRWhI_(ZfU){b%Pzs-4C{=K8i*bzk&|KLwNHav(JuX6^<{aVRGTg@mka zZic^o1qm>?5FGp=ajeodML7p&!q4ZQKikZdoN=Bo(0C)>VbA^vs!v3v&*R+STRZRp z75HP!_MRS)$bOU(563Q)I_rOmKqiKbMU8dYC}4J%_T7=)Nb~YIx~S!iNkp^YCz#GW zw?qN;1)df!G2fFPaXXL0bF;I*jITprf<-x~EsK3u5 z?4kfu48*-#V?P%#vieL$MmdK&w)>B-Z(H<}tS+1zy6Q?w)So(M)8M2-T;B=X!2aq8 zgnk8?jdSlG9sP>Y_Z9_Dh2vr`YRdJ6zlIg(ZQWWIq@bZ8IVc{~ILGt0)zuyrmX>eZ z=QQEt(#Z1Q_yXKDchdVw$jB_qMtQ>qmz`3)AgGPP%jg?rGSX(aY-V;8ALOzz0c!JU z1Qi|?)e!9rkRTusg4{7NHkK+4!e zxk~ddvp>KWsnaoR|t1)_u zam02P?C$Qa5y{BOCC0_gyt;@GVS4^XCKHO5+xi)A-y)|MG!E5?KGuS}yN=LA3Ie0l zPow~wBSHIoaNec15p_`uB=X0$`0#dyhARMjl#Q7=I0)iW?d+s1A#vz|paAS1fY&M3 zLQRu5%r792r)Im0Ncj2P91T@4hHQ0vd+DMPve56dvoxYnqpi{T-idQTLANOAwO)1G zCw46m{C(=MFzBw8c_=!-4f*@m|8~=p?3nS~Zh~rVPe+Fm10n26_V@M6RvSc=b5!Y~ z>YE@$33dRUlS@}=BBg@bmvu%NA*G#)McsqH(&o{M6MxuTX{om*cS6d~=tq$lZC0aYuDTZSS8Eb1)| zkN)SsPW4&Uu{~vq^73lkwhc`_yFfNodis;2c2-XdDBF^8TUEL5GiguJK|NWoC??1M zFphHD-xMOb>h#`$dupv61W%OYpEF zHh$5g{f3@Ky)+1(dKyk~SL8y#ptfrTt_cWj@n1Z|ym}Q9@5@Ykfn8b>jEF=*+r8{K z0Wy5H?C!VOLvRw{lAA9Qv*ujb%D+r7vIq(b2@Q{qc6>%ST{pfk5H>-gA}s-+u_2cw zq5I%>6PnBU9mv3z&tis@KZHUzsNXG7_m$qsi4|!m-TnI#Owlh*O<}tnrz@JAfGTzs z5qPV6nY^uj@$20?2%Y1jcTZ--Ch;r>V%xvd+nMW}nwqX-jGkT}E@jZwNEh}YOZgh> zq@-dL_4%#&0~;ppMyM79IVMd9IP zCryFtYil9l;kGt5Q(kv|87=JkXJ)byy!D6cfLfd`N;6>500ShgKD~o2f?NNvOj_(G0BeXEnfK`Uoi(g9i5|V zT~ARjNhJ04Q&y)S3wpxiQ^QpKZll+#D|r^Tn3Vw7S!L*m;Vs>pyv3La%D8Hs!iM#x zC!;b z?3}8&+ESeHp~O(b3KY+_o2LO6G%f6;=Yi2(3oAt%Lr89lbtjQb^M8*Oznu5K zS6C3Lthn~=CAMs|C}j<`qTa=aI9$Ods63Ns2H{I^?{zpOkj`P;TO z3=Cf}DX*vN8ninl7o`PJ${2o4Zk{ZJrP0bK@&EQ?f%mhHWy6$ppFC+%?xe(hID$-~ zt#m)tEq%h3$5ff7y7k99hKKlMqm?)m*QBg*d2>u?kjtn<;mjK~Gt(Pjuw?m>{NHYg zCaioFcOf8G5b_hKY!roKN+sLCl=ImM){xC^nZnx zSBQnZ-2bzyJ~DaPtAF;waC6Nso__@W0t_vlcKja7P;FH=qQhShputAuJ`o9iA}13Txj3cAv2)c!$ zEAX&9HjosP`?Vu)Sn-I1pMz;g;O*$2qxKjV+gr!mOFbgN?d{HOVRxr%UG?>*4svr_ z5LhtI?_PCU9QajCt;cjDqtcs3M#iQ7Y)2_aRfb2=e(SeECMRLHwL3d{lc3Ym{nQA~ zOfYN#EUw1%GSC{;eyU}1eoKEoaCC%TgGu}EH&cIUc>~F2_5I4``S*RFB)U0t8y@gc za~f+d#E&fy?Z-x31dSw$yI`=L*gL zWr}~^uh;aKbg1x}^?%!6TqU|r(M#MG2PkvIM&pugsaRL6=_h$gJJ_J?*%F*r7hQznMrml7qnRD3VjyzATjG@gE*4IL;dvrJ&#Qd z`|ZM#lK!Be_Gbz2#c5K-Y05QNpqU|jut(qhBG&pZ3FYaS5{u>b;K61Fm z4iuJj^bfdwTa6L#tc?bz^mM8RHgqDtdl#)`!%`2$97@^~w9J=R9%@>l&5iw$Utz8) zy1AIn6E4nhC9i0joMiCg&m!CW=Wp)!>DgYk=x;LD4GSq|t(+}jw{D*06PU6K7g)Dp*~z*~t$fyQE>_H{%5&%TY2=yq_yfPD zVgz|9j)>Flf4$U}mTm+V??>?$0HXWImmI5YxOW{GJxG5)zsi_;7S*j{I)G>073 ze3YkO&NWwVJecUo$S#gE?y1{ecs{(5m{F1J!`5IejL29pOMxkqsedk(Lh)0(>BymO8j^3H+`*}V__c_cD$-;awLQv zZSU^36fghyF|qZB!5cl3(+QkLsi_py0N19E44SlY1-p!);m+6Bl9|fXZ973?!Bz&bzWYJxaQO{Ma$SHzFJm(ASP9m;(2l0_=25eh(J>Ia+`g5 z%>!0egSN2d!7P!?gdDI(i(z>kjAqeF->-sD76_u#nymTlv3Epb4;fT>!?|je{(+RM z8x4~~;**H)3wSFAJd{NI{QL|{#92OOtMV-UgJ`<+IvTD5HCZ~OEwH6$jAY;W3A0$c zS%sc$z3zwVFBUs*q!wO24;-;$*fvv@6+ip>XfX54NXxJC!?cy7*^NOa!%}6mFB<3z z0|i2)6oF;T0^4Sq-Y-SzVxIM3CI>pp+-ds8Hf@#_ZX{s8az=BbtxW#@z66R|Mss6g zIkLmIvy+M2DrnJ;7Xb+WAth`-CmJUC<_Lf@ES4J4w!3dd?PtJ0X;3--faqb8c&QOd z#gW_)d3Kq)I+CNvfPA8CYU6#Z( zJjxJx59<#alMRKaoV@(cVcpK&Y41h(n_`0wt;VysZEKA6&$Z?Lq+O5$r2n5k3a+o` z^NBhbe@JCFc<Fnl>i%Yrf#z79&DM8i`q)Mc*9|isgHgOiH*7ZV z#&_I1cdODdc6C*U+-6r-p2>hWVoJ}4gR|tl3_15}Cs}=C_b)@8yiq(VswO_(R`AJ) z7!xzt9~uh>&6nkwocPx#mNQ;*#tkk*Iqzn4wx$(Gg4$q&FkSpHak&6dV~*}z@}`Zt z3Mi%1r%V4quF4l9>GH;Sag_>x`&PPG@6VhQ$&FWtdtjSo!dNgT56znm+)(N_dMq6? zrJDT)J4tb5rosEx@^KpNhRU30$CaVl+=aceqmMJi&#ty5PkLYET1393N{=HYzrE5i z6(r%!M)3K_xDkoz;?W8gPevpFPGByxz8vgl{<>%uqWP`_wrkRbGF%eD&l7Hall3>adrsVYf`C z*6#}+xxVLk29Dg}-lsu*eboMTXE0^MtN9e+G}o-zg7Aw|bvE@xfo)m(d)(?-W!AddwW|c_jW3? z`U>D|^j|GJdQY1qzgX>va3}E2}wa9zepXs+Lw(CcZFkgVw4j zuhwZn=I$iUe@sOVO+=0E{977$!I>;X9@}}5=$Op-VwG`CPA!H__82kUJD+v_h?SRV zNOn01ggwl-xZ>B(IamsK^x`XTyr0ZP$-h6F%ED{$^x{>a!=7Xh?&}SFR{Y)RTN=C}olu>pODiWb3o5-l_o$<6HB(p*ZDU?m3?1+$260-M7_7>;X z=leb9{LXcL=Xag+$9e1O>Ycn^ujhI^?)Up`?Je@ixyW+*!Pl?9!T9{9bCIl4NG9Go zufvp|@kTPz{-K@q{0>q3)3pn}$RhCaa(U_7#N0mhKIY)7|GoIp;WrbOi^yE3 zHTy_-JZcJiRWD7upkVm^*SaFVXY<(pV9~68btaK3rhW$`)XHyu>i6zhJ7B+ac~oS2 zPX9&Xoje&-2iN6E9(GQ>C^|Dbm(#^aAu6dJN%lYaZN5B~{b~JuBbtKX=Vj{_L9H_f zG=*5+58Wcp*x`%#_uK#Qb>O_+vAw}rf}uv@-)YqZXgYsH5R@(sD{E_w$H>Ve$o?;1 zdH47z_5YG*E!>OC%8Jjr_1wzkwh^2E*wb<~TFizP7w@yC8CBno&S5i6_y0fts2_9U zx&r^GMg35rE|CeV14p~Vi5v-?FXW>m$qFe-jbvX~x3l=4JDbkI{-dz_f7%BA=Pw1e zY()K<`x2`AvuoD^d=j&gjBw75Cr1WLDVjoXitjhKz+aFWzK`#n-Q)Tq?RHYQe zZ!c~U&a(MOiWmirKw2V|m7P7h$mOUK-T&>YaZdSBo4vpPcE$7l6r{Uw4e}>6=d>69 z{weXm;Q#e^i2wDs|9}53@xSQc|9^jTy!Zd)_)jf@&G%c6Qg@GH zXYXWG(*EH?-(NG!Ngd%#;12puF`gh7boO&kwsVNy?vRmSzUl+Jb_Q`%aVs%}@t+%4 zqUxjRy{IaH|&Q?x!dGqn3Fjbxsrvs{xAY99 zM?OBJA^hHch4Q?Nt*xy}yo`*qveclXWoCkI8%9O5#SM!V#7Pj`iPmInA?H(C!kfi? zqoSf7K0L{|mL;cQ`y66zMz;N^6n%V%((5p;LVg8SeV&5{Q<9S>`upkpkqrJ8>6><~ z@g!i-YHIQ@1}ashROonZ2?66XYp^>nPZ(2CQKi0pi?`Wg+AkR`; zq4Xasda}spt!bJ7H<@?Xo`X@+Q0;DNYHFpbtwVd5YT{10B1q;zKgTwt@NmSt#^3#k zm~!khT#2&unwpyL(%f8K{Q`)9SA_eCmGvfiYHE4;Ez!F@#jZ#RRWheS91##!B`PT! z!>q(aF2=Q+ce_8HLmmZ!RUn>6HVGXa9U~*759e5W4o_^XfvDSVCZ^M_bAGR0@iNX@ z%+vgi4#|-{6P)L zF;)zVvfiPnxQ;hqKebX>;Vb)G!WJrwqm7Lx!i~m;|NIHkm7sob_GM_(DcEiC4iL-; z0K*cBkO{=9cXW(ThGynoPk#Udz4W(lfzK%pY;tji7lu&W-sY3=<;yv=Eb*mN^Hm+L z$+5o}b`Z{XvAgya(OmfN(~20r=ph6QY(+Jj16NUpXWrS3d@8D$D;gR&MN)9jq1e8i zGcoHvEV&Q}gb1VFwl<__yQ-;8BS?mKRyJhoCJE##B82C*fJ*O}yn^K9?d-H6`^1kQ zI>hi{A}t{~`OoB}uU{!2g64>1l^7qtP5B>f;)R7@9c^Qz?>wo0b0q~ahA%TSx63u> z-l}g)*9y=T#Zlk9aU=EBkikucmG^cCOs1#LYHYkD#1k)J%N-#?bL2=JM4_cN{WtCH zcQP*1lfaJo2re*h3GQIYv)k;|l(I0=IC_wU81d`7<7ersuQTYO7?YtEpunWV<$W-FnmA0JHCX`<`WILm2lMiA9(cxNGS#I?W+u{X#rk2~XMF^72kPIx*2Wq*-=!cheeB07e$jEi{B> z2T(J_M#D0KWMt&I*uKk~S3x4l+Txw6Hww*dZ8c3z z&Uhe>{p>@Ax7U>#u;(bZvmkv6As-OZ3k!b(Q=F!Ho6Urcy*=XKM$(X~{xBqD?=dP| z%8ZvUFKcL!u>F83;J0ty4W^3ckH^Y*upJ1ce7sG66%QB*2|)t1mYfv9zSOlAR0tVe zoPhgNLw|p-){W?t6xp4$v=xIpfc@G?y>l3kc>mAfNK8j(pRutqvKb#duz~T+re`(c zmcsA)C%k#nKRMai-JRz!&WNW7X~85U6=P$E)YRy~xqT|QQ*Jj}`0eB?t1Dk2r-LIT z!5QDz#|ZaS1q%;(Og8YhzP= z`R*Of*Zm&uBglD$|5K%2qwBAC7GM-X_a>iMZrN{UX-TnVC2-lslZu);T{|Dihas0z zK!B5hAiJu{PnpRy=Y~xa@y=sw(?d^h|3m?qnRM^3UlA27sTspf*D>}R|2`cYY=HAz z_~FBmqeqbi>OBfEK5}2c?8sgZva_*CfH@>&mTqo37k4^eNR-S9XhKRVuGCNtNi_iw04gZ(sGlvSK(gU21%(ovpRBCV%uFW>3oS6O zMY-cXmoA-n_4*dNDBLy1F-y@dYK#a)fG6B+~G%#=#$-fmYRxS zaj&fD;tP@Ki15?+{NQ-eF`f6XkPwxXMeoCDV9*=5I|MeBoK!%r9)##=U#(IFK!H4- zg@py76DKBNQE6qhow@;DvnNj2&klUv&Ci0vWnp1~TLqDrVQgraZDYhT#%uFl5MG!u zDoaaCbIbAcvZ9$EKeCnX^_lw0j-ag7d5?&Q1GA;SM;aY9u3kNP;sn;F!$*(e^|8qB zz!nMF1*zw}Ud4$oa6L|><39j?SswygQ#?#g=oQ3J@PGsh35%2 zdB|HwaR!)X+=vmHMLNj0+felW@bkouT5O5J-C18 z)^qhkq?lt)_ii!o)fKu(XIfivO!B!A7Zqui&Jd+RS zcH{ES&Yd}5bUNDG6J7}E>mTs-{c0pBABNmntQ1rP`6t9wW~8UXV^YlVZ8!c0Nu%(D zrT#heuNn;r36tg&5Ky(W)T?SSjf{-MK6y`H-_zWD3_l*0mM~owii_a7d8(zd(xbvh zh1kkauuh>(#b8Y>1%;ro@l!Td)otv?Tbrj5W>s5z7?0M`>s9w$ zX!yZmvwa9bi1m-i(=ZlmyhrC3(@+H8p76iekt<85pt>$- z(gbzg==5~J5P3tiFubdWu@>%sTGTPO54mq6oc}dYl3uWaxWG0^%n|&^M9HlZ! z!CN9)aM)~m(T&9$)+6W~(loPTMeppjC z`#cG=L1Ai2)I75M^-D^q_33jdN4RNSm6P+te@aT(PoEyF(;ID=_uM>nLR{RsBbSex z`zkI3vUp)Anb+|f$8jcx6T3V0O_7+;1ALQX=F?ptXu0CG6(6zVlz(uZE-fr?bkY=J8^^$>?F;pt!#=CS~d^k88{T$)N8~x0?$8 z(Gp9)wXoiYh4qE=1fXfe@!r1OgJu_*fV(V~`@Ven^6AslH*eGszl#7?x{pCmo+P89 zLidMO7!8G(^`o6sGYCCCa`>=Tp6Q~J?+$}S)Ozf)o>wnlKEl;+g@t8lN@sCl;htMB znf7IE?WMKF=C@s_rGEYDB7DMYt4_N)k*RWX%b#}oo$ceZQR21?n00BoSK5}_nH=kI zXJ;p|<>6pEn-&z5$X+g67%X!8PH(BZ)`MeYwdmxNU%$qXBSWX)XH^xs(DP8y5MSTZ zW0hdZp^s>YTYtJj+?;dX#r^Z`R{8b&w?@9QrtTIyb#UaZ^$lWLZgX?qpv<$xveOBv z)~8&kDFY{ zC?^#gi(#hjhpvVO-wH$Cg9mX0Sk;r0WzHREC#4g=y8Q|^|D+uxByunaV<3Nwx@iYF z>R(T(`^VjyVg~KzhC-FW@PPDAKUfIW)z#>IQ0$=; zBO~?cDI3jnZEI`G($44R;vyl)r+Z33{GhPn;yffgo0ybj?7m@1<#S9R!*DM0QB?R* z3HIYyL-C3q?k%#B%V8IblUj^So9qJX_|p@qe%gHllD<(|{&w79S82kD)U+*U|I!cX0 zqyW${T7{h~qA!-wcJ`DucpO5{iw=B#RB&N&kweO1Wp!R9+Yo9cDT|23JTq2$4jCF+ z+Hc>#9}y7v+;4-XgjrCZMaJ!p%N+0L-d-Hyy4MDBNORu2*>U4k-?=}lvYRWr?IedV zf8E25M2q1g*^i`e)tN}?Nx|Ul$7N9Bp!|UGY{H$U;!h?bU~9-L_!<}>a?i0uv9V3S_88|Dvw@Rr0=&F?zM6w~?Bh%Jr>CS|Q^4?H*N4gwun%GPu`yH| z`Qp?CxyhyOq9>M}@6AkX2*n!Adic?V8yV4EUqG{mo`U)-8=gbxZ+7f(_P6rgas+*= zBkv$GfA@JEbo%-8iPtlYH$Obqm&8SF4;I1F>esKex#6SK)N|-GZr&`V9Qg@t`tE~| zcw%T1b90ZJI04nY46b(Ipv))hGCiMBK0et^mxxO#;)JN^eLwPEz+oxzmwc^YRF(6= ze)NT;{oW6O(vrso1w#V^;lwmLDOAkJz!3I)V+bY%4CJTpE!;SNzPi4CaHc;AS}^SK zu+^Xlx_OdP-ii;`-X|A94_j-KTdMIg0x~k5o9^+rMKH?nIfcg(VYsOG0W~L`9w@;Q0wXwSFe7pG3)vMI;Wf=?&;HIV$0bH zW?^TbL#Hj{Rbu$jJU%K?{-iddVl-*6JrAuDpr=3zMQF91e<=$a0yy#PI4OIy2K*&>w}#oh^170|{<_upY4Z~cTm2C`HN!8aHJJmkpwGtJT7 z`Z<5^bF$;FTb>W)X1wyo1S#<~I;sBnL`e}m)KFKw$LwP>M= z_GoGOa0B1-*Ae7Yj#c2r>H5BM+Jv+;{G{W=k8w9*`H!IXp3R{P)Y*#tHtKM*DfOT% zPg?>(ANMy72+iI3^<^#;aCh#cA%j~u7W`O~&iDJ{;&dxvz*YG8@gg>>RZj{YN#fr?yRkQJ zs87G-i0Xw4az0_v(KpUkaaToW5`Widc`0DFW@~TH7p??u242$Clz(y25%Y)Oz2~0G zc;G4c0_)?&No5D+x})YM95g>#hyJe104m4G6pJE+dL)(JoS60(rlzu7@Kf(iL61_p zcd|VvaAzE^|@$se^7aues(dk}?kA6@=S^SYuT{u z-oIaO%>OR(r7={;1?@9lmGtVZVlS-`KY8-^!~`~dI(FI%N)KAhBe1fXo1Gc%IB{Id zhcmUPC?z35T~TqlHj62+=xr-8MH@zdR5>jMW75 z5JU&PNlpDy_gxh0Z(3SFF*ov+fdJkT6CXW(!`#9Go%=R_GX4jtI$zp-=u-W+XXbk= zGg;mCp`j_XG924BK0Q6CC%xs)!p2tYGE3SJ@cE{X_mh|yQR^4W)ghB7L|%-Jj?UBB z=qIp;Rv4O?l{LeiD>M{G1M_V8`6|R{Ow_rHe+nXQnzOQe1u@BpKl07Xmv(*Sa#a!K zjbFc#zZca<)z5uVvNkrB4XrXPA<1J@L{6N*KydpBjneQ<$(M=3`s(UuR8?tDm!{|C z-Pv#vO%PWfP21coMNCDgg_sGG!L!ddN&Lx{Oa4GZhT(Hm6f{cRSaG?S<)Q7cCq`_F zaxydNfOa%!9Rb7!By=>?_;vMQYFe6a_=BadIp@xwUt6&F z6C0I~kR25@)R9+~u>IP?ROHjAlq_`Qa*{&LKbk;zb3SvWBIs8F(%*Y}4)9r@<<`*B zdQ-U4TL1L^KCyH)cuzJp5rW4(Ki{#Ct9Gn@d+lg>kPfnP$ZfG7N5>l&-j=dm{^QYS ziTlgi!h%FM4>oiC^_vgN)#5^z(%^KCbC#6!_qSGcdpC_^q(8^?t&TjJg}>;ql&@a> zQD{2|ED9>PcWgx;KVo-AZS?*7cg51*2nt%+v(D1m*-P}|figBVMXJ{|btx%rciml& z>*~0g#Pk*B0{M0?%&q zqtxqNdoV5dNcN^f|3mE(19CtV*glsl9`W7BWqz&=Eske zLz3(re+-#i+cNi~al-r=mSY_qk}b)!-z0@J(lRrbW^5FeSzua3LXum&5%8e`lt5%Zp)b?BTq0ju_ z!V(hiyVswa8Y>8a7u7ix6`HBc23?y58B}t+c4?p>ws&^cD?PQeH04(rpeXs{j$vPA zGs4;_JI~gd1f>$GRIz3_R@H_>k-x(;XrAwg`AV<4l#@y7poj6BmX-x3Usy2lJjKLV zoUf+TTYlZMVImS!**|mO-ZQ8=rPYQ>%v{0@4($=?-J4ums!x4CP36H^?rE~z8w&JP z@2Isc$|bgosfLien>f?&YOQv`)#uOJ%GX#tTr%kYn4@#)iaqrtzdJvbXT3O2&~U6f z!Xb%wE=@W6p#9>6D2_o~Tzr1PVS37=%(UT`xV8V(IfyK=4r67&4p7d)#aS+US}#&1 zd1%BggBJ4?X=l6chZmKV)6(v^T#u4Sdh{k|^2ziY6vkn`H)K54Q)7yWrq|pvKE#37 zW$_g{4|{s(v!b)0?VfmXx=356mx-z5ZAQkqwmmCBlv@?7tcW**pW$2M7?lxU$_ok> z#ybLJeH71(7<@lzJnSFN{ts0jwMHBxrPy0%FI58t1v00r`+ns#_wOS!#pr$&B0yw}8_d`UIkwd?JxS9?A( z&riOF+$$~ZDBth}W#tKVgM*CUC=%6_EiDCRKAxvjzr1J9p7gYR9@H+=`Y)e8{debf z7UY*}_%Vls(4y`etO=zwy|>c+M$#@+T5w`=l9I9mQbv-;zP{c>>`fVd_D0TVvI_Qy z718+ftW0!tOWoaixOoz;f<`)Ll9f-=2w|nc;43f zS#+P-_Hz373=Dn5B$pM79yIWJwJ96pv}N$PlKd03D!`XiaOgBhz(O zoHwfFdGWfmR8Cv_JZ||FVQjHm<7(UBmWfb^hYx9fC`<=$rxKi)xQ*<9EZq+xBJpc$ z_xc`S1pU!|6yA-Q+paJQ0$3rwAv!GM_uW4}4%in^*_S)42G{+>aO3AsE0dFnFK>>K z?*h1DGeE_G;;sFo<9{aJdS-AePD(m)WcRuXrZBL7g&nK3vVct4kb5eUNr1XOd2&8u z7_hJNw4H|wfc+CjKD%zD1eCA`I7y-&-yK-hlG3z5EG%pU8f0Zs8*QHo1p6JiNh-v^S57pJ%+38+><2657`~E#w z6O|==;0mm`m^WR&J|9QxRDu@P;m*(0&x1z~9&vQcXQ!iU&57@hlZn_LTC{E^-f-iC zk)o3Ee|~Lwgocf9v=`qV3za3T8e)fO-fsiGNI|}mM2%z?z&G~Q4_V7q2Uh2g;a-Mj zIXBmC=uZ>V%y-wnALTJr|LKGkB1YtvNc&IvXTRdr4-Ek&=MF!_%UcML7FZ&8fhSp? zP2tK)r;$kE`kT~*~?ZAP}3zrvOe{XH&!|uUVp=S4(me_EiK6?-;g8p2Tpl~CfFQg_y=kO$)#s+ z59Os(P*?XtCd7eIda9YHVGL@Qhyx=JksE@-Uf|Fnugd;pRr`&X^jnV3&L}mn9$}I> zbaT#c$8LYV&@)Cx8bEDSRNi@camJ`TdT`_9?W6QGLU2zE;TK+V7PIdD$iy;6pR77q z9kM?B^u(B^YN-;W%CTSw za!x5J zW_(^>WA-E1IbvehuU;kZ(G_0=%^`w_xV+I;K^G+Lba!yQXTeMvlLM(Z@Kb_o2H#u_ ze|+?*pcW&U1J$zz|7+w0E!VFWzt77G1}Zqkq=72rmfFXuW~JOt2`N)AKySFdWmctD%0r*|@zT%w!&`g?_S zQ{-Ra`IFl>Y0StGFXV{rHba0eVE3*>tIqe1pM!>#1{8&b%DwClq$$g$SO{&@lbqRD z;EUcEIxBFbL)%393X zL!LX{BAet{+p7!&^MSu6k_?r<+&`Q_E;lVF~t)Y7TF;HXKyfao8q2|Q`f9VcNN+i z51buDj0+77%^v2my1IK6#Ah3rR~8nk;&Cf>oo6GSHEd25TpaU$TYOo){Iuxga<5?b z2m9p!4m!GvgBAIA+AL1~N>rePyK3Osdoz7p?H9IQ7dlVBc=zrHtf4un6!{~8-V6*5 z$_3#4Dns_Q^;tEwm$=d2=I(opH+e3#$a7yFzNwh&QjAW6|M9wI{F&Hi+|7)E3me4h zeEribnxd(}LeIb3BWvxPUhr|Aaov!R6rQbEnN3<5Mmpzc(+T88BK6TmLKl&>#Jrn;2eX?yWGmkzagM+ADn?zSxj_Vc{-uz5$V89_>5b9~XY#+P5 zvW$J31RvjHqg^bUHJk#f2O|%c=ZtpxoaF|JhaA_0BAP8Ju5hKZ+_pbBBErK>MYMSI z3d)$s$;r)62EKpqB=dBvX%{=)K^~r#-d_4*-|90eDknpT^Y}#d+3o!am*0RYgYi)O ztD~t%YN$f*7m&JgG`F-=e*0$o?Ijg&xZBr<2?>Vat{ONq?Mn2#q>2~DhLr#AWT>!M zt;wcji=rGS5?gL< zr|d9(K7+mBzMr2ubA>RuXQI*x7BYj%Gid$dE=~XWGd|vLAmUZS7MR6Ys_#Yr>5E$I zr;x>QOK+HMAmuD8YdSLPTPSU2DEJ#jIqgYvGh1E&4rpnFFxZr_-Tz-i>gQY3wG~6p zsNybZUV)iXkrOI`eTs`e)@pVh2yJU=S)7|2uz{U;p^*i_w`WiFeu-@7o>KxMUdaf>eyjBFwvh{B4ZJH~GvrZ?W1qIAFbPNA4WzaL~Ex9v?j*dr8J) z&5U)O2QYd1+fKxKM=vUb{J%YAU-0#`5G?zH1xq7wzuyp0>i?C*zUj@2*W29d^Iv`Vf7tD- z+7Z4mc5V%j=~GH+0f{?8gxtvJZA1hkq_AAfOg55*yIx%`;Sac z9DCk6N<|kZJSSio6J`557P;jL&HJ|08l`Tj7z((uev%0!Be}ujRo3kN)x_&*Q zQrOVkyl?0v*$$5rV4On`mTpi+_t&9SoS88YkcZgZ`X$uGAZg3V#|N{XFvYijHZ(91 zfh+O;s0!nb`})b8k(2AGF+1RWrcZ4}e%Ic;@YcW&?4Nv@#Q@4FYL1-Dm1J%{zQvp- z*1t?=48-?Pe{Qla#g9kK9R%(^(ioR#RQZwhL^78xA!&Y+E$(=*pOE`;Uf%PX_5aOW z-|XR4R8krPT|GCq%lQJ~vf`|-zY);mx&WNQaF9`2s9tL|T4Or^gRdH3yGM~4M5{+$o7GYiWY?5{led!Gp#pI2As zWLz_aja9T*Lk@<77+?pkSBE`*41PQL%JIE|;NXbgsvGru!u%jEt{W9YW|s9zJEiLu zbKjpo{DQJ4UFVjT^s_l>F05`tgbM2O3$t{;3@&cp1Op zl-DIYI6D5GngTbT)!ltWK%YIty`<-o=5p5G_k%bMlRs?@#4$m|&jX=Ts*Cpny&^js zZKXIWL!~YQQq4BWvF{H-Uj=r;J6z_E9tL0-#0A@6cEff}z?g&Vv&{A&51NJeSz&d$ zTr;M?73y?-qGY70ODuLnv#Z`#LiffEa{&7W;;rj~{hb_C)%_dG_AAO?LVPc$RewmwlyOF&uE9*Q676^+qAWjFI-MAJl z+Y7_8sd-t!bq=qrEH#kY0HUuB2pg^#Y&&na8N;i1BO2(d~*9Eg~+ zICM0PeEZs!H$Q+_;jT;S^#wm9UfTH)@Fh4Y&K`V>ca9v%~`no#oe;|`2y&MpY z5b?VZ$$$9J7x1=STwNKd{Gy^#l9ry=Mjq_!=m-o9L>P_UN5bJvN!+@Tw5DbooP&`# z=J-|*y$I@V#G{8vpZ5j{G9X}mWp)C}k-$Lu_|t<+lv-LJ;Kz?4+IDjCtJh06%eK~; z0xBh?rB!23vbwM6s;R-L;}`mt8QWGMrWk2TNl7s>{uvn_uJDW&!PErZjhmsNp{goD zJN@pTKQ9Uz_Wk?uBj_V2l0O4q1XYulQIc=Cw!|&ah8;W0=$}7tU%vd_(Se-W?&r_h zU0!6s5~>T6Elf~a%m)PZO%MqDxM07nMAxtUG(KKloD%2^5-4wjH`5q5=~FX^;v5oD zicr?Qdy9>0j?)DY3jC3$Po3gd5n^XIIqms;W5$RvqL%?i2T_k7AJ^ZY^_2QpQ1BEi zEb#dsA8iA1H!RJcfrUj~Uq3S~Ee&IQinjmoS5h*FyYbd7 zh2A_&IbOWz`sIQ=xXOS~+^!{jSJwjQP0yYM{N4saIW!wDU)}_8 z2fh_(AMWI8uy?MFhz6kN?C1#k-3NO;FXxW=(HLUGHdw9Xm_B)-M+ z*0wrkf`?1q4?|(AuEHIrYy_qoMXvKdqYg&`1O)rv^Y5aj!xYYUbF1T{>}(r5J8CE0 znzD&Py03au9Ala1c^Q#X2S>IgFq%zAg75FF^co}~Wfy5U!|ei^Pw~yqxgdaI1O3|C ziZK?~C^rJg;q?e=su;*-z$X$FWWDxNXbX8go&Q0+d5?|Pb@46u{PieACXDlJ`agjV z`TKWQdiqz))PR(n?_T9Oe3%LRr|{YIk00-0V*_dHe4NhnxVS5qUw~}tlO87Rp8zbl zl779nY}#$6FAZhFqxJ|pZ{zT_() z`wfvqhOl75_>oO@U}e@AtA^n{GizB<5fKq_@#*1u(A_IX8u!2LK{x=|w}V zsC}jX;ul_?x+ZJS^XErEhJzGCKyU5z9FIY>J3{dq8?CUugZ+T@4#?I~O}hL?dGlZK zI7L0x1Elsg;wqa(bvo@<^E1)QxlV+ zQRZXX3wmd~WaHm7fN{S#!IWk2^dN5+y8Nzx6x9p&?n$B2sjfZ`GjOa%s7Tp993+{t zgWn_=l$aF(0P0E8B$!{K%0-ugE$=HpW+qug>^&CM<-D8L|F zwrtxex{&ibX=s$xnm~KdeSbG5L!d1{8K()8C2T36*AakzK_7dYl0xZLezCo?Q$WAC zFni{fl@*u`38A6%5z7p7^E)xH1riL#DV5@xpde~2gP5@(ys9hP2y|^>7Zt48>ee|q z^>^>`_m;RJ2M3|h-!YYp=wQG`*4HKpyFlExg2#?Ipbf!I2=-pxmzg#K*upF-=qC{o zDi<#r=R}K$e8*`5-|!>KGT#abyP;-m{+Qf?VN_C5lAlkDKX`adqiO{0>p@kbs34o_ z_i9sWk+q+fo=XUG^*dev8H~BLZ_GQiiL-+>SY04?Xlq;Eoay%k#5c1%ejobG)a2wR zQ40i4mUC@H=#ssr=2J+ScJJmu*TZpY#n*rPvJ*R9f!p#WG`g^oEV*|r7tt|TS}{P} z*!V~NQNJrR?cf+!WJ+65DeL+Cl%EO#g{Ik3-kb31A7VxpXw#hmWzlLgm z;_a}K;Mnhq73JoxwWcNNr=+EU5kCX*fV1=Rd&|!1P!9UsbE40n$N2vG;*84%WRtC} zHDG^|X-x{Zmk|c2ve2?)q1h{-ZF2LbPn0u3Wg^l66{&hy(P80}C#zapr}`@uFI)&6 zX_!Y7GgNd#Ny%o-;m_?otxfr?@#NBVejLWFHTE zd;@Xd@5RYF%(EfZSXx*Z8D(~GvSa>$A=mJP6sAH`*kU171A~@0<1UAo(`uabe`nCh zr~iq7PFSuxDQH+AKZS&Z;E;WN@5&goK!Js+F&<4tUEPgxZ?c4Mq9;%4>WyNhhaekw z8Fmy#4~q7Vjtu=0wg6vnnbAJjFN|@4*TgHE$w1|TyR=W^O-6>}(3eCYSlEn-;NW14 zIrq3QU4mGx_3bqf{R*tQ#qi4cw<+wzHKSFodwR<0bQZmT{|Hwdq}1#r{5vLSWC7|J zmnpNeC*u>yxJM(z=>T(q?cX&=*p}i9LjS!q8xycWr3rx(1X?$anc~c2ek)GxgG&YV z;KI-aLRm+r^NGN-Gi{#-XR%g*>;I2SE+C*+a<4UAD=+M>|2F>(h=2i5!iP^+R~MUE zcuuXyG#vU)dv3Vk5`b(_G+bU@KH2uT{%H-M=$%wl>AD{VPy_eqTd6_lmHOt5T(Dn| zzyJ9&US&YLP`a3z1-yH=XPQ{*21`dSYr87LzI~nG(GFdxgZlB#Pxnu!O(uUf`$=bD%2HCKM9M1o+-K)|FOHZ;g(Pg@xG!SbGc))pB6L>SL9xtuXp0zyAE0ud7?HEvt8C;G7t_ z9C&4An^J4elV41}`_t~L(9T7>`d_?koO%p5Ny&UWJ3s9720spP3QA0(x3_F7`w3Kd zkP59;(o^D1XZk9z@?)lXmNB5YvvVDP8-Kcf+s+U+w%AC1)w;&U3rdB%cjrk62++pG zCgj@m`=AVU1cBY=Jv~qoX>@N`tScg~hJ)hjlYapS6x4fGJ;iSl5`@ei)en3YF5frt zIruK~Q=$WwqL__?ZE);&(MPGwP&qBFacE`)bqiO7r>AnBO;?BPGmOiHT|KI?{{*7} zF^rd5{8yB7QlaUC+qouh9=*%@d#Ax_iEO&%p$kEnePWBn{mnD301ttug7l>GFTnEy zG>sc8#CaI?XHsDy%T=Nc1qjf@)C5ig#Qpwb5l%u)!$qa6e9vM0`~AS(s^D=4cZt&g zdj%T(^@~fRsr{%hI2{G=-#308xnsR(hy+GgeEz<4?t=%-Zrxf0 zhYZUVUb#8*<$w69*REE@O`xv)J5yN!LZEB}7{;$IJQ)j;DHi+s!9%(N0!KkXLE%{v z#*ofzqrtwuKEzD|eauKd=AF3hb5&q9tgu!vd7|s_a>JPNMe}Hb89OdSgB1)%|RdvvmR1eMqxG)v@aI_hun2Cv`-?6@& zL~351+vue~h#o%0z{p5VHPc%tY=!Q6ZjKrX%7ijU=jCHJ817A8-@v<~C}OAE7X`ON z+yfkvcH}IM_~aXtS!G|Ng$I#c!$1yYYEI74^146Z+AB7MwKZeP^#PUA!U9cIZVG6> zT9-dv^SXM(ak|ID@LL?By0vw53`*Vkj!vF)b}k5M*dye`&d$yuqXG$63CLs>KG|Qt z9#hw3ATJ@dJX?|lFxQ7r0yoqB`>S7MVxByqbAPU1dTe9(X*|l1-cpZ!d-jAyuQ0fe zEminZQqpg3Go9zCtP0$Xjp$iaRXz!Ta$5=C$_TE1hDZ;iqd$Xf6j}p4tjmT($B!Sc z5)#V4etnggn3Ft0JE816Tqm^r8T>EY&HqhRo+n;D{{y5T)?Sf^OJd8i#&AIxfza?W$I~Hy-;6kKYiD ze0==)+=bdSh}T-izst!b_TBo`xh^9i@h{cLed#onPh))9wu#8kH!&f0Tba=iiD74C zd}mzKINJ2#h&ZsZ&%vXrgo;XTUfvewaaf^X5QO4=^7n5njP-ZLoR!vA8=7isRWBX* z?3u)9j2&B@Bsyv9JlTkR6alhKP_$%V?W+-tcq0qH*Hg#M-n9l>TpcWQ21lD zUE8n@baHeAhgMGg+~>)Wk-gwaA=d_aH(=@6Pj)nEd<17D?3v8Auc{>ba98-No{shP zJ=S-aBrW^N+qcR?b4KRo=G&B6eG^#rN zH_wkYP5oXesQ$-ax>XV_Vf*s!+aQd@!o#`L2RO)(q6mGS({Bkz5)c*|L0*uNS^H## zm#=>bf)}zFy!yRX;ynjSb!ll9ddmoFOUuBI7qV|0L#mUoQX@-4jZP(qGxCW_N=grc zgHwo`>x_IXP{&+$1;Xbjpp3s);M|*b9zwV;X^W; zHTWmZb9R8DUGp#C>mQ#9t54*<5K_?7J6ByknECdt&w-))BSP;_o;>;T&kD9lpbv&W zBmQ@euE4WLkFG0JHk&SQZf^SfC+=s4ZHT=5k8ktC;RV)rGy>Ed)Mu1o1a30KjdB$q z5xwY31;bYu7~v`*;&!yZG5~^NgVJN{l6Smy2qW`G>VLt-6+myl8C~S;YyEMa^}VqY zw8XdSpTLD*R#31kHI<=|9;!@~lL;N4Qc~Y2Fd*wTE+*!F3f9*$=ry#mqF!4<-MpXuHx59Mi_7Y!$n4jc6H2C)>d=gf zsl#A9wKDPJJ#z_hF}ro9!t)q9Pqg0o!l!%RpN%;G7|Sn4gv!d_?d<30=H@h*uV2m0 z)d#SemPUj!@7aS<6NE>$XU>$Pqyf^ePI<8Wa+s{_PMbw1)i|kFcWouuVKAhjvE3BR z|3pQyXHkBBsqqSS)o1MO>-#us&;)i#P@qqRVfl+pEp_z=GLGQhUA_7WK1l6_KKE|t zbo_>{<&0)1H3&nf1K(*bFE5h>Z4w)<)u_0CrfcDBA`PQveS($jkR$v0weKx0J6R;) ze?C2JZOw6c5zUv02N==9@1K%M*`!`&Mp_t&z`yfh3ns(8PtDVeXH&!Er-Rr&PRgX33?Erw3{p9 zUJo|B`{T)sjQTk|B{+F`qa!1A3=FpBZh^cf(kseA*2|s-ri2QAcx{(fI>-$VzBH%* zX(iGIG_zzbw(X`O-+L!avnA(-!W9OY{%ii(JoL-5@Im2abZtt6%4BS6|424m8CV|D zXLkPmo20TEHjB_`cDAsY1&3S*?^NWR)7M9ga>;b>GFo(ii<;U} z_v{%0{VFQtdI}DI><>~&hS$}sBMm7@(Y1X{pr8q;$F+(7gK9iV!ZVZ?@AP#| z(q+aF{x<)m>c7A{@H3-xRpoT5P)z#R*k=@U$;rDx-olgu+b8X@=SgeipLQS1eemFr zHhfC-AWRCcYWf5w5*`=mqR|E6nj;tD$YIxWiDAHOo9_bRBN^rlS1NvXh&VqLpwzY& z_5+-R^Lt~Co#BuCcDKL5a|aKz0|?~-mC#F{;Vu-5)Ckc)-XNS&&=ki$(+LVTD1ptu zwQIDq{GmU)P<11Y1}kT7em;2pY#$0NhXgpt0(=K2J-c2ja_{QiFYN#6>~PnIdDJKv zUV(PGXZLQ*Kc~0#=H4?fFaWalX8bI+Q79+(>?y{|xocNqY_v*O@v8m)+VejD$ZZ>S ztiM}_rUE3ovistn0AbrJK#l#;V;;@&XiVfmV#b4wWhKGIn~^^<;I2XO-&f!egpBS+ z7#(*wFR!_ITFJ1_#YmA8231w=(_>>2)-Q-<$Syp${zA$cdg)GCYuZo~$&@^L0yJu! zNneSp{Wkt=R1DkEYrZQHIT4@amywml@h67e@Y`SB>bnk&+0B%F)urKQIDh}jS2%Z$ z4|h&!DHoQ%U+?H^oaSkGW|*J;Z?wI4AlHBU_br4XE7_Z@%(BT!$j;t-h3rk_xzo|`@HV^_s8|eb;arID}DNm_viIGUdQo#KAv8)PTzWe zDg1i^i^13m79A-mzl$>zgekso5?)TR%sCK!z_W6tGa6hCH8lpX&BA01gwz|8D$@DJ zuxWX!%#nKSE);>k>}Y#7pb$gnHfT?1Jo;K6YiqY!x#Ch&{waDH)KKvPd``e33h)Vw zpb_uT+lOH+tVU*LiL_#JG={wo7M~g#ro#oaRxwbw)iNc$uL|PU-+f;sxjKF0DjZe+@;sS9yNzWCT zn3n;FwB9R z9WF;V);!ZcUC|7K(jHt^d!Jr8vVdp<#PbqQQ%{hSOjRvudLE#;khap(6JN!|jNGI0 zIbes84q&mS#wxMl;0MhZlUaGm28EZK{k@5>WkP%2?}+8S<`k~LfyId(0JsjJgXJ(b zRTT*tnF$cb9Qj!N^ydJ~1xM^X9z3}D1{exuhSKWlH}}e7L23_W158oghawz*3Ssc< z?tVj1@yGAq9_J_JV0?X8ImSG%QX^ld25tdxx%D}y(Bco<^K*q$qkYdmffM8VKeDS= zD6wPH(*gJmZ`m5VAG)X980=5NpSswDG>;d-RQuBWG$-D6G( zK~v1km}_)3P@Nxr|1R!~3~cDv>30e@HNJHW!5fO?kIT5T3(8EQmqhE^Zm6Q81vfneTk!-(z7a`{SPqcRZ0_#t=NUZ%+T1F+h0w6h3R-zIW&352P*WcE(PCE$+6%TwCP<9H1JS(=8(U~Z4UK$Xti*4DO@J@CoEhto)@Wj{f@Qkq}RbdVR?MEobKwIpD zPq~AA294?z?ts$~ctJU|hbm1F1vt*YPy;&c()0vk-K;Bss{l)(Q8>r)G8v4EKspA) z(Pqo9iHQsETT%R#UqH{0_YLE)kC^w4h3W^D8Ia|I|5HU>Q`38Isqu*y8XAuG@nhch zq>em=Bp74C&x79|xJhDP(VrKeo=w824yoh94Q2Q%BQJaG+YI9lcsD}-=&yxk+zTi` z-Q9e^WQtD<27sO*rN#p|$o#b7y>jIWY5+`c{7jz1+wMvr-08*M%M%`Tm+o&wVE$rJy}3)x4@a2N&z2p{jaD8>I0;RCmk4omOvaMIoG`NHdjJTQPp+m_Ni zsN2)Li$NNJTs*!LstuB3Hr4_!U*AAyqMKiUUmQeJ>mvwFMN11&mf6e%V)U`z$d1LgD+XZ#kpe7( zjPc=b26bD(Hb_>9N$%{)nXOg;tQG(m0Sy7(<5Y<_k}ys)s`W_#+wyy1#*Gn@ z_pJ4kh-~9#y|EF@@&UEv?@x2Cv(lZ4BquA@`0T@(SK`s5Yqm6}ij_bJ*_rP=J3lut z9FO@H4S~>?Qw?y=e;gYd-e%zfiB#?J;y0=TF#(5w=pQtN!K4>(Li12r=1}MN+<{fR zC*#}_=89A7L*R0y?!?2~Ck4{+7>MTKmZ6si(u-=B`IYR4pu>S)l=I$F-|(;{v{Fg% z-_9*8WZXZ+UTcUu-t83!q4W#%S(tagg#@%z(5}JxC;HVZfWCczJB9!s37i2k{tl#2 z1s*ns=a}%f-QT0^ItG#%^tC_v9q)jC4B{$`jiWR6x|!i`8vRRpiP!B z%(_g&ftQ%aIeWX@Zft=Q2zSa0M~oo5jEabOUQfL{{q`ly&uPfW2nY#xgp|ZzJZC_M zec{_Tq^qZ`?VHCsM%AWeu9ILI8Yb>Xol?IEQAdcXRNuAw74Q>I?qg&9V`DgDmvC&x z!Mlv|wEoo!x!O+KGmg+j2ZJ{@wtftdl|UV}y^T-`x$ONeI)VXfiBauJw73HfF0O~0 z+uCSF<`9<+BXkyE4}O6(Nw1U^ zSRnzPBlY0HBStl4Wlq}?49C#FXFPWHCaW(1l+@J`bX%L2gLH4`BtT!0x52g77)<)kN`3W+19)`vTIbfQ$ay}m~WCWcT z=omlg6r%}{MYl#*iD6P#=FL-;B%KY%yw06=3WnP}nt^o(-d-Sy*82eubplrWU(L

g>}k);5&D^@?P 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 diff --git a/internal/guard/testdata/screens/preferences-chosen.xml b/internal/guard/testdata/screens/preferences-chosen.xml index 6e9a0f5e..c588ec48 100644 --- a/internal/guard/testdata/screens/preferences-chosen.xml +++ b/internal/guard/testdata/screens/preferences-chosen.xml @@ -42,8 +42,8 @@ - - + + @@ -51,16 +51,17 @@ - - - - How this window speaks, and what it keeps between runs. Nothing here changes the files it makes. + + + + How this window speaks, how much memory its runs may take, and what it keeps between runs. Nothing here + changes the files it makes. - + @@ -112,7 +113,53 @@ - + + + + + Memory + + + + + + Memory for a run + + + + + + + + Automatic + Custom + No limit + + + + + + + + + How much memory one run may take, the plan and the files being written together. Pictures wait for room rather than + all being held at once, and a plan larger than this is refused before anything is written. It applies from the next run, and + nothing in the files changes. + + + + + + + Runs may take 8.0 GB, half of the memory this computer gives the program. + + + + + + + + @@ -121,8 +168,8 @@ - Between runs this window keeps three things: the output directory, the size of the window, and the language chosen - above. The folder picker also keeps the last folder it showed. Nothing leaves this computer. + Between runs this window keeps four things: the output directory, the size of the window, and the language and the + memory chosen above. The folder picker also keeps the last folder it showed. Nothing leaves this computer. @@ -157,7 +204,7 @@ - Forget clears the three things above. This window then keeps nothing when it closes, and the next one opens the way + Forget clears the four things above. This window then keeps nothing when it closes, and the next one opens the way the first one did. diff --git a/internal/guard/testdata/screens/preferences.png b/internal/guard/testdata/screens/preferences.png index 2cb78a3ca36c647c8c4b63dbf10f9878da6e940b..5bc9cc2c6ed37fb070e39618def217603febbe4c 100644 GIT binary patch delta 151028 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 j%5-61 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 t{}KQ~4)xjxB%-AfHVylZ=bU@) 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%0AQ9ALCJ+SOmhXp~_r7WYe)A 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 diff --git a/internal/guard/testdata/screens/preferences.xml b/internal/guard/testdata/screens/preferences.xml index a4df9a9d..fc801f98 100644 --- a/internal/guard/testdata/screens/preferences.xml +++ b/internal/guard/testdata/screens/preferences.xml @@ -42,8 +42,8 @@ - - + + @@ -51,16 +51,17 @@ - - - - How this window speaks, and what it keeps between runs. Nothing here changes the files it makes. + + + + How this window speaks, how much memory its runs may take, and what it keeps between runs. Nothing here + changes the files it makes. - + @@ -112,7 +113,53 @@ - + + + + + Memory + + + + + + Memory for a run + + + + + + + + Automatic + Custom + No limit + + + + + + + + + How much memory one run may take, the plan and the files being written together. Pictures wait for room rather than + all being held at once, and a plan larger than this is refused before anything is written. It applies from the next run, and + nothing in the files changes. + + + + + + + Runs may take 8.0 GB, half of the memory this computer gives the program. + + + + + + + + @@ -121,8 +168,8 @@ - Between runs this window keeps three things: the output directory, the size of the window, and the language chosen - above. The folder picker also keeps the last folder it showed. Nothing leaves this computer. + Between runs this window keeps four things: the output directory, the size of the window, and the language and the + memory chosen above. The folder picker also keeps the last folder it showed. Nothing leaves this computer. @@ -157,7 +204,7 @@ - Forget clears the three things above. This window then keeps nothing when it closes, and the next one opens the way + Forget clears the four things above. This window then keeps nothing when it closes, and the next one opens the way the first one did. diff --git a/internal/guard/window_test.go b/internal/guard/window_test.go index ce2a69a3..dbb0b831 100644 --- a/internal/guard/window_test.go +++ b/internal/guard/window_test.go @@ -61,6 +61,12 @@ type fakeHost struct { // Restart now asked for a new window. system string restarts int + // machine is what MachineMemory answers when a guard set it, and + // machineFails makes it answer that it could not ask. Nothing set is the + // fixed figure below, so a stored picture of the Preferences screen is the + // same on every runner. + machine int64 + machineFails bool // waitForWork waits for a preview or a run to finish, without stopping it. // // Separate from intercept, which is the CLOSE intercept and now cancels. @@ -427,6 +433,7 @@ type keptInMemory struct { size fyne.Size dirWrite int language string + memory string forgets int } @@ -439,11 +446,13 @@ func (k *keptInMemory) Size() fyne.Size { return k.size } func (k *keptInMemory) RememberSize(s fyne.Size) { k.size = s } func (k *keptInMemory) Language() string { return k.language } func (k *keptInMemory) RememberLanguage(tag string) { k.language = tag } +func (k *keptInMemory) Memory() string { return k.memory } +func (k *keptInMemory) RememberMemory(m string) { k.memory = m } // Forget removes the values, as the real store does. What it promises for // the rest of the run is window.Forgetting's, which Remembered wraps this in. func (k *keptInMemory) Forget() { - k.dir, k.size, k.language = "", fyne.Size{}, "" + k.dir, k.size, k.language, k.memory = "", fyne.Size{}, "", "" k.forgets++ } diff --git a/internal/gui/run_cgo.go b/internal/gui/run_cgo.go index 37bc91ef..e2666c39 100644 --- a/internal/gui/run_cgo.go +++ b/internal/gui/run_cgo.go @@ -16,6 +16,7 @@ import ( "fyne.io/fyne/v2/dialog" "fyne.io/fyne/v2/lang" + "github.com/donislawdev/TestingFilesGenerator/internal/core" "github.com/donislawdev/TestingFilesGenerator/internal/gui/catalogue" "github.com/donislawdev/TestingFilesGenerator/internal/gui/icon" "github.com/donislawdev/TestingFilesGenerator/internal/gui/parts" @@ -129,11 +130,12 @@ const ( keyWidth = "windowWidth" keyHeight = "windowHeight" keyLanguage = "language" + keyMemory = "memory" ) // ours is every key this program writes, which is what Forget removes and all // it removes. The folder picker's own keys stay: they are the toolkit's. -var ours = []string{keyDirectory, keyWidth, keyHeight, keyLanguage} +var ours = []string{keyDirectory, keyWidth, keyHeight, keyLanguage, keyMemory} func (s stored) Directory() string { return s.prefs.String(keyDirectory) } func (s stored) RememberDirectory(d string) { s.prefs.SetString(keyDirectory, d) } @@ -147,6 +149,15 @@ func (s stored) RememberLanguage(tag string) { s.prefs.SetString(keyLanguage, tag) } +func (s stored) Memory() string { return s.prefs.String(keyMemory) } +func (s stored) RememberMemory(setting string) { + if setting == "" { + s.prefs.RemoveValue(keyMemory) + return + } + s.prefs.SetString(keyMemory, setting) +} + func (s stored) Forget() { for _, key := range ours { s.prefs.RemoveValue(key) @@ -168,6 +179,8 @@ func (s stored) RememberSize(size fyne.Size) { // SettingsFolder is the toolkit's storage root for this application, which is // where its preferences.json lives - asked of the toolkit rather than put // together here, so it is the folder the file is really in. +func (d desktop) MachineMemory() (int64, error) { return core.MachineMemory() } + func (d desktop) SettingsFolder() string { return filepath.FromSlash(fyne.CurrentApp().Storage().RootURI().Path()) } diff --git a/internal/gui/text/locale/en.json b/internal/gui/text/locale/en.json index d718896d..079775a6 100644 --- a/internal/gui/text/locale/en.json +++ b/internal/gui/text/locale/en.json @@ -364,6 +364,16 @@ "hash": "sha256-882e40f5910b", "other": "Manifest file name" }, + "FieldMemorySize": { + "description": "The name above a box somebody fills in.", + "hash": "sha256-4d5e4f1409c1", + "other": "Memory size" + }, + "FieldMemoryWay": { + "description": "The name above a box somebody fills in.", + "hash": "sha256-ac0c32657fb9", + "other": "Memory for a run" + }, "FieldNameTemplate": { "description": "The name above a box somebody fills in.", "hash": "sha256-6d00d6e32977", @@ -466,6 +476,11 @@ "hash": "sha256-986221f924c6", "other": "The record of what this run produced." }, + "HintMemorySize": { + "description": "The line under a field name, saying what the field does.", + "hash": "sha256-e11ecda0afb5", + "other": "8gb" + }, "HintNameTemplate": { "description": "The line under a field name, saying what the field does.", "hash": "sha256-c92ff0a07510", @@ -616,6 +631,51 @@ "hash": "sha256-0b5d14c5fc58", "other": "this run's record is about {{.Size}} and this build reads at most {{.Limit}}, so Verify and Clean up will not be able to read it. Split the run to keep each record readable." }, + "MemoryAutoIs": { + "description": "Shown in the window. Carries one value, {{.Size}}, which has to stay spelled exactly that way.", + "hash": "sha256-3a039b136e1c", + "other": "Runs may take {{.Size}}, half of the memory this computer gives the program." + }, + "MemoryAutoUnknown": { + "description": "Shown in the window. Carries one value, {{.Size}}, which has to stay spelled exactly that way.", + "hash": "sha256-c1b8c2b64c84", + "other": "The memory of this computer could not be read, so runs take {{.Size}}, the most every run took before this setting." + }, + "MemoryCustomEmpty": { + "description": "Shown in the window.", + "hash": "sha256-f021f2e8d953", + "other": "Write a size such as 8gb. Until there is one, runs use Automatic." + }, + "MemoryCustomIs": { + "description": "Shown in the window.", + "hash": "sha256-269b4fa95f8d", + "other": "Runs may take the size above." + }, + "MemoryOffIs": { + "description": "Shown in the window.", + "hash": "sha256-2b45ce57da2e", + "other": "Runs take what they need. Pictures are not held back and the plan has no limit, so a very large run can be ended by the system without a word." + }, + "MemoryUnreadable": { + "description": "Shown in the window. Carries one value, {{.Value}}, which has to stay spelled exactly that way.", + "hash": "sha256-42d966183e49", + "other": "The memory setting kept before, {{.Value}}, could not be read. Runs use Automatic until you choose again." + }, + "MemoryWayAuto": { + "description": "Shown in the window.", + "hash": "sha256-d461a493a375", + "other": "Automatic" + }, + "MemoryWayCustom": { + "description": "Shown in the window.", + "hash": "sha256-494ca78f7374", + "other": "Custom" + }, + "MemoryWayOff": { + "description": "Shown in the window.", + "hash": "sha256-f7fcff0d8fea", + "other": "No limit" + }, "NotAWholeNumber": { "description": "Shown in the window. Carries these values, each of which has to stay spelled exactly that way: {{.Field}}, {{.Value}}.", "hash": "sha256-2537ac57d3c7", @@ -668,8 +728,8 @@ }, "PreferencesForgetWhat": { "description": "Shown on the Preferences screen.", - "hash": "sha256-f7c12f863d64", - "other": "Forget clears the three things above. This window then keeps nothing when it closes, and the next one opens the way the first one did." + "hash": "sha256-8145d3c07952", + "other": "Forget clears the four things above. This window then keeps nothing when it closes, and the next one opens the way the first one did." }, "PreferencesForgotten": { "description": "Shown on the Preferences screen.", @@ -678,8 +738,8 @@ }, "PreferencesKept": { "description": "Shown on the Preferences screen.", - "hash": "sha256-896c43e06cdb", - "other": "Between runs this window keeps three things: the output directory, the size of the window, and the language chosen above. The folder picker also keeps the last folder it showed. Nothing leaves this computer." + "hash": "sha256-d5cfc5e4bd88", + "other": "Between runs this window keeps four things: the output directory, the size of the window, and the language and the memory chosen above. The folder picker also keeps the last folder it showed. Nothing leaves this computer." }, "PreferencesKeptIn": { "description": "Shown on the Preferences screen.", @@ -691,6 +751,11 @@ "hash": "sha256-bc4174717ca7", "other": "Only the window changes language. The files it makes, recipes, manifests and the command line do not." }, + "PreferencesMemoryScope": { + "description": "Shown on the Preferences screen.", + "hash": "sha256-4535de397c9c", + "other": "How much memory one run may take, the plan and the files being written together. Pictures wait for room rather than all being held at once, and a plan larger than this is refused before anything is written. It applies from the next run, and nothing in the files changes." + }, "PreferencesMissing": { "description": "Shown on the Preferences screen. Carries one value, {{.Tag}}, which has to stay spelled exactly that way.", "hash": "sha256-7679a7684a73", @@ -821,6 +886,11 @@ "hash": "sha256-524730d883af", "other": "Notes for the manifest" }, + "SectionMemory": { + "description": "The heading over a group of fields.", + "hash": "sha256-c3963aedaac6", + "other": "Memory" + }, "SectionOutput": { "description": "The heading over a group of fields.", "hash": "sha256-b2439bcb8dee", @@ -918,8 +988,8 @@ }, "SubtitlePreferences": { "description": "The sentence under the heading at the top of a screen, saying what the screen is for.", - "hash": "sha256-0e310c7f4078", - "other": "How this window speaks, and what it keeps between runs. Nothing here changes the files it makes." + "hash": "sha256-836103012003", + "other": "How this window speaks, how much memory its runs may take, and what it keeps between runs. Nothing here changes the files it makes." }, "SubtitlePreset": { "description": "The sentence under the heading at the top of a screen, saying what the screen is for.", diff --git a/internal/gui/text/locale/pl.json b/internal/gui/text/locale/pl.json index 40491977..9c63ac2c 100644 --- a/internal/gui/text/locale/pl.json +++ b/internal/gui/text/locale/pl.json @@ -72,6 +72,8 @@ "FieldLabel": { "hash": "sha256-98e8b12087c4", "other": "Etykieta w każdym pliku" }, "FieldLanguage": { "hash": "sha256-703df606ae88", "other": "Język okna" }, "FieldManifest": { "hash": "sha256-882e40f5910b", "other": "Nazwa pliku manifestu" }, + "FieldMemorySize": { "hash": "sha256-4d5e4f1409c1", "other": "Rozmiar pamięci" }, + "FieldMemoryWay": { "hash": "sha256-ac0c32657fb9", "other": "Pamięć na przebieg" }, "FieldNameTemplate": { "hash": "sha256-6d00d6e32977", "other": "Nazwy plików" }, "FieldOutputDir": { "hash": "sha256-c94c0d681c64", "other": "Katalog wyjściowy" }, "FieldPreset": { "hash": "sha256-7252e7ce0085", "other": "Preset" }, @@ -92,6 +94,7 @@ "HintFormat": { "hash": "sha256-f5616fe5a139", "other": "Jaki rodzaj pliku wytworzyć." }, "HintGroup": { "hash": "sha256-e95a20274902", "other": "Oznacza kilka partii jako jeden rodzaj przypadku." }, "HintManifest": { "hash": "sha256-986221f924c6", "other": "Zapis tego, co wytworzył przebieg." }, + "HintMemorySize": { "hash": "sha256-e11ecda0afb5", "other": "8gb" }, "HintNameTemplate": { "hash": "sha256-c92ff0a07510", "other": "Jak nazywa się każdy plik tej partii." }, "HintOutputDir": { "hash": "sha256-35dfac65eb8a", "other": "Dokąd trafiają pliki i manifest." }, "HintPreset": { "hash": "sha256-e86685eae6f6", "other": "Co testujesz." }, @@ -122,6 +125,15 @@ "ManifestNamed": { "hash": "sha256-f9540bb6e465", "other": "Manifest: {{.Name}}" }, "ManifestNotSaved": { "hash": "sha256-bb722052cb9e", "other": "pliki zostały zapisane, a manifestu nie udało się zapisać do {{.Path}}" }, "ManifestTooLargeToRead": { "hash": "sha256-0b5d14c5fc58", "other": "zapis tego przebiegu ma około {{.Size}}, a ta wersja czyta najwyżej {{.Limit}}, więc polecenia verify i cleanup nie zdołają go odczytać. Podziel przebieg, żeby każdy zapis dał się odczytać." }, + "MemoryAutoIs": { "hash": "sha256-3a039b136e1c", "other": "Przebiegi mogą wziąć {{.Size}}, połowę pamięci, którą ten komputer daje programowi." }, + "MemoryAutoUnknown": { "hash": "sha256-c1b8c2b64c84", "other": "Nie udało się odczytać pamięci tego komputera, więc przebiegi biorą {{.Size}}, czyli najwięcej, ile brał każdy przebieg przed tym ustawieniem." }, + "MemoryCustomEmpty": { "hash": "sha256-f021f2e8d953", "other": "Wpisz rozmiar, na przykład 8gb. Dopóki go nie ma, przebiegi używają ustawienia Automatycznie." }, + "MemoryCustomIs": { "hash": "sha256-269b4fa95f8d", "other": "Przebiegi mogą wziąć rozmiar podany wyżej." }, + "MemoryOffIs": { "hash": "sha256-2b45ce57da2e", "other": "Przebiegi biorą tyle, ile potrzebują. Obrazy nie są wstrzymywane, a plan nie ma limitu, więc bardzo duży przebieg może zostać zakończony przez system bez słowa." }, + "MemoryUnreadable": { "hash": "sha256-42d966183e49", "other": "Zapisanego wcześniej ustawienia pamięci, {{.Value}}, nie udało się odczytać. Przebiegi używają ustawienia Automatycznie, dopóki nie wybierzesz ponownie." }, + "MemoryWayAuto": { "hash": "sha256-d461a493a375", "other": "Automatycznie" }, + "MemoryWayCustom": { "hash": "sha256-494ca78f7374", "other": "Własna" }, + "MemoryWayOff": { "hash": "sha256-f7fcff0d8fea", "other": "Bez limitu" }, "NotAWholeNumber": { "hash": "sha256-2537ac57d3c7", "other": "{{.Field}} ma wartość {{.Value}}, która nie jest liczbą całkowitą. Wpisz same cyfry, na przykład 1 albo 500" }, "NoteBase": { "hash": "sha256-e48510060140", "other": "Z zaznaczonym polem najpierw idą pliki wybranego presetu, a partie poniżej są dodawane po nich. Bez niego partie są całym przepisem." }, "NoteManifestOnly": { "hash": "sha256-794d5d9e2043", "other": "Te pola opisują przypadek. Trafiają do manifestu i niczego nie zmieniają w plikach." }, @@ -132,11 +144,12 @@ "PlaceholderNotSet": { "hash": "sha256-1aef93991721", "other": "nie ustawiono" }, "PlaceholderNotStated": { "hash": "sha256-109df22c5a75", "other": "nie podano" }, "PlaceholderWorkedOut": { "hash": "sha256-195191b2dc3a", "other": "wyliczane z rozmiaru" }, - "PreferencesForgetWhat": { "hash": "sha256-f7c12f863d64", "other": "Zapomnij czyści trzy rzeczy powyżej. To okno nie zachowa potem niczego przy zamknięciu, a następne otworzy się tak jak pierwsze." }, + "PreferencesForgetWhat": { "hash": "sha256-8145d3c07952", "other": "Zapomnij czyści cztery rzeczy wymienione wyżej. To okno nie zapamięta wtedy nic przy zamknięciu, a następne otworzy się tak, jak otworzyło się pierwsze." }, "PreferencesForgotten": { "hash": "sha256-8e950dfcda31", "other": "Zapomniane. Następne okno otworzy się tak jak pierwsze." }, - "PreferencesKept": { "hash": "sha256-896c43e06cdb", "other": "Między uruchomieniami to okno zachowuje trzy rzeczy: katalog wyjściowy, rozmiar okna i język wybrany powyżej. Okno wyboru katalogu zachowuje też ostatni pokazany katalog. Nic nie opuszcza tego komputera." }, + "PreferencesKept": { "hash": "sha256-d5cfc5e4bd88", "other": "Między przebiegami to okno pamięta cztery rzeczy: katalog wyjściowy, rozmiar okna oraz wybrane wyżej język i pamięć. Okno wyboru folderu pamięta też ostatni pokazany folder. Nic nie opuszcza tego komputera." }, "PreferencesKeptIn": { "hash": "sha256-65ceb0c15ff4", "other": "Są przechowywane w tym folderze:" }, "PreferencesLanguageScope": { "hash": "sha256-bc4174717ca7", "other": "Język zmienia tylko okno, a nie pliki, które tworzy, przepisy, manifesty ani linię komend." }, + "PreferencesMemoryScope": { "hash": "sha256-4535de397c9c", "other": "Ile pamięci może wziąć jeden przebieg, plan i zapisywane pliki razem. Obrazy czekają na miejsce, zamiast trzymać się w pamięci wszystkie naraz, a plan większy niż to ustawienie jest odrzucany, zanim cokolwiek zostanie zapisane. Działa od następnego przebiegu i nie zmienia niczego w plikach." }, "PreferencesMissing": { "hash": "sha256-7679a7684a73", "other": "Język wybrany wcześniej, {{.Tag}}, nie jest dostępny w tej wersji. Okno używa języka systemu, dopóki nie wybierzesz ponownie." }, "PreferencesNextStart": { "hash": "sha256-6fee24596599", "other": "Okno mówi wybranym językiem od następnego otwarcia." }, "PreferencesRestartBusy": { "hash": "sha256-1d940383b3e9", "other": "Trwa tworzenie plików. Uruchom ponownie, gdy się skończy." }, @@ -163,6 +176,7 @@ "SectionLanguage": { "hash": "sha256-a4fe65264ef7", "other": "Język" }, "SectionLicence": { "hash": "sha256-f3ec8e880a46", "other": "Licencja" }, "SectionManifestNotes": { "hash": "sha256-524730d883af", "other": "Uwagi do manifestu" }, + "SectionMemory": { "hash": "sha256-c3963aedaac6", "other": "Pamięć" }, "SectionOutput": { "hash": "sha256-b2439bcb8dee", "other": "Wyjście" }, "SectionPreset": { "hash": "sha256-ed65b5dde19f", "other": "Pytanie" }, "SectionRemembered": { "hash": "sha256-3969bfb60b8d", "other": "Co pamięta to okno" }, @@ -182,7 +196,7 @@ "SizeWayRange": { "hash": "sha256-8879adb25c7d", "other": "Zakres" }, "StoppedAfter": { "hash": "sha256-f08278015581", "other": "Zatrzymano. Zapisano: {{.Files}}. Manifest opisuje dokładnie te pliki." }, "SubtitleGenerate": { "hash": "sha256-e7dcd4001e28", "other": "Pliki jednego formatu i jednego rozmiaru, z manifestem, który mówi, jak system pod testem powinien na nie zareagować." }, - "SubtitlePreferences": { "hash": "sha256-0e310c7f4078", "other": "Jak mówi to okno i co zachowuje między uruchomieniami. Nic tutaj nie zmienia plików, które tworzy." }, + "SubtitlePreferences": { "hash": "sha256-836103012003", "other": "Jak to okno mówi, ile pamięci mogą wziąć jego przebiegi i co pamięta między przebiegami. Nic tutaj nie zmienia plików, które tworzy." }, "SubtitlePreset": { "hash": "sha256-7962df9b6a39", "other": "Gotowe zestawy plików, każdy zbudowany, by odpowiedzieć na jedno pytanie o system pod testem." }, "SubtitleRecipe": { "hash": "sha256-784e4d30ec24", "other": "Partie różnych formatów i rozmiarów, generowane razem w jednym przebiegu." }, "SubtitleTools": { "hash": "sha256-53bdfa16d586", "other": "Drobne czynności na plikach, które już masz. Każde narzędzie z tej zakładki jest też w linii poleceń, jako tfg tool." }, diff --git a/internal/gui/text/locale/said/en.json b/internal/gui/text/locale/said/en.json index 0d2225cc..990615a2 100644 --- a/internal/gui/text/locale/said/en.json +++ b/internal/gui/text/locale/said/en.json @@ -630,6 +630,11 @@ "hash": "sha256-87bca52970de", "other": "{{.Setting}} {{.Value}} is negative: write auto, off or a size such as 8gb" }, + "core.MemoryNotASize": { + "description": "Said by internal/core - a refusal under the box it is about or at the foot of the form, or a note after a run. Carries {{.Value}}, written the way the program writes them - keep each spelled exactly that way.", + "hash": "sha256-3afd7272e5a2", + "other": "{{.Setting}} {{.Value}} is not a size: write one such as 8gb" + }, "core.MemoryUnknown": { "description": "Said by internal/core - a refusal under the box it is about or at the foot of the form, or a note after a run. Carries {{.Value}}, written the way the program writes them - keep each spelled exactly that way.", "hash": "sha256-c0a095315898", diff --git a/internal/gui/text/locale/said/pl.json b/internal/gui/text/locale/said/pl.json index 6345b638..8461fea0 100644 --- a/internal/gui/text/locale/said/pl.json +++ b/internal/gui/text/locale/said/pl.json @@ -125,6 +125,7 @@ "core.Error": { "hash": "sha256-6dc38cd1cb85", "other": "{{.Error}}" }, "core.MemoryEmpty": { "hash": "sha256-4a0a99260fc6", "other": "pole {{.Setting}} jest puste: wpisz auto, off albo rozmiar, na przykład 8gb" }, "core.MemoryNegative": { "hash": "sha256-87bca52970de", "other": "{{.Setting}} {{.Value}} jest ujemna: wpisz auto, off albo rozmiar, na przykład 8gb" }, + "core.MemoryNotASize": { "hash": "sha256-3afd7272e5a2", "other": "{{.Setting}} {{.Value}} to nie jest rozmiar: wpisz go, na przykład 8gb" }, "core.MemoryUnknown": { "hash": "sha256-c0a095315898", "other": "{{.Setting}} {{.Value}} to nie jest ustawienie, które ten program zna: wpisz auto, żeby wziąć połowę pamięci tej maszyny, off, żeby nie mieć limitu, albo rozmiar, na przykład 8gb" }, "core.MemoryZero": { "hash": "sha256-1eb04d24e00d", "other": "{{.Setting}} {{.Value}} nie zostawia żadnego miejsca: wpisz off, żeby nie mieć limitu, albo rozmiar, na przykład 8gb" }, "core.PlanTooLargeFix": { "hash": "sha256-1cd8766a17ef", "other": "Poproś o mniej plików albo o tańsze w planowaniu - mniej stron, mniej wpisów - albo podziel pracę na kilka przebiegów. Możesz też dać przebiegowi więcej pamięci w ustawieniu pamięci" }, diff --git a/internal/gui/text/preferences.go b/internal/gui/text/preferences.go new file mode 100644 index 00000000..4618e8db --- /dev/null +++ b/internal/gui/text/preferences.go @@ -0,0 +1,141 @@ +package text + +// The words of the Preferences screen, out of screens.go on 2026-10-27 when +// the Memory section took that file past the ceiling on its length - the +// screen's sentences are one part of what the file held, and it is split by +// what the parts do. + +// The Preferences screen: which language the window speaks, and what it keeps +// between runs. Nothing on it changes the files the window makes - a setting +// that did would be an input the recipe does not carry, and the command the +// window offers to show would make different files (docs/USTAWIENIA-2026-09-29.md +// section 2). +// +// "Preferences" and not "Settings" for the tab, because Settings is already the +// section of the form where a format's own settings stand, and two places +// called the same would read as one. +func TabPreferences() string { return say("TabPreferences", "Preferences") } + +func SubtitlePreferences() string { + return say("SubtitlePreferences", "How this window speaks, how much memory its runs may take, and what it keeps between runs. Nothing here changes the files it makes.") +} + +func SectionLanguage() string { return say("SectionLanguage", "Language") } +func SectionMemory() string { return say("SectionMemory", "Memory") } +func FieldMemoryWay() string { return say("FieldMemoryWay", "Memory for a run") } +func FieldMemorySize() string { return say("FieldMemorySize", "Memory size") } +func HintMemorySize() string { return say("HintMemorySize", "8gb") } +func MemoryWayAuto() string { return say("MemoryWayAuto", "Automatic") } +func MemoryWayCustom() string { return say("MemoryWayCustom", "Custom") } +func MemoryWayOff() string { return say("MemoryWayOff", "No limit") } + +// PreferencesMemoryScope says what the memory setting is for, under it. +func PreferencesMemoryScope() string { + return say("PreferencesMemoryScope", "How much memory one run may take, the plan and the files being written together. Pictures wait for room rather than all being held at once, and a plan larger than this is refused before anything is written. It applies from the next run, and nothing in the files changes.") +} + +// MemoryAutoIs is what Automatic comes to on this computer. +func MemoryAutoIs(size string) string { + return sayf("MemoryAutoIs", "Runs may take {{.Size}}, half of the memory this computer gives the program.", map[string]any{"Size": size}) +} + +// MemoryAutoUnknown is Automatic on a computer that could not be asked. +func MemoryAutoUnknown(size string) string { + return sayf("MemoryAutoUnknown", "The memory of this computer could not be read, so runs take {{.Size}}, the most every run took before this setting.", map[string]any{"Size": size}) +} + +func MemoryCustomIs() string { + return say("MemoryCustomIs", "Runs may take the size above.") +} + +func MemoryCustomEmpty() string { + return say("MemoryCustomEmpty", "Write a size such as 8gb. Until there is one, runs use Automatic.") +} + +func MemoryOffIs() string { + return say("MemoryOffIs", "Runs take what they need. Pictures are not held back and the plan has no limit, so a very large run can be ended by the system without a word.") +} + +// MemoryUnreadable is a kept setting that does not read as one. +func MemoryUnreadable(value string) string { + return sayf("MemoryUnreadable", "The memory setting kept before, {{.Value}}, could not be read. Runs use Automatic until you choose again.", map[string]any{"Value": value}) +} +func SectionRemembered() string { return say("SectionRemembered", "What this window remembers") } +func FieldLanguage() string { return say("FieldLanguage", "Window language") } + +// LanguageName is what the language of a catalogue is called in that language +// itself. Every catalogue carries it, and it is how that language is listed on +// the Preferences screen - so a person who cannot read the language the window +// speaks now can still find their own. +func LanguageName() string { return say("LanguageName", "English") } + +// ChoiceSameAsSystem is the first entry of the language list, and what nobody +// having chosen means. It names the language that choice gives on this machine, +// because "the system" alone does not say whether that is a language this +// window carries. +func ChoiceSameAsSystem(lang string) string { + return sayf("ChoiceSameAsSystem", "Same as the system ({{.Language}})", map[string]any{"Language": lang}) +} + +// PreferencesLanguageScope says what the language reaches, because a list of +// languages invites the question whether the files will be in it too. +func PreferencesLanguageScope() string { + return say("PreferencesLanguageScope", "Only the window changes language. The files it makes, recipes, manifests and the command line do not.") +} + +// PreferencesNextStart is said once a language other than the one on screen is +// chosen. A choice that changed nothing visible and said nothing would read as +// a list that does not work. +func PreferencesNextStart() string { + return say("PreferencesNextStart", "The window speaks the chosen language from the next time it opens.") +} + +func ButtonRestart() string { return say("ButtonRestart", "Restart now") } + +// PreferencesRestartClears is beside the button, because the form on the other +// tabs is not kept across a restart and a person who typed a recipe there +// should know before pressing, not after. +func PreferencesRestartClears() string { + return say("PreferencesRestartClears", "Restarting closes this window and opens it again. Anything typed on the other tabs is cleared.") +} + +// PreferencesRestartBusy stands in for the button's use while files are being +// made: closing the window stops the run (docs/GUI.md G7), and a restart must +// not be a way to stop one without saying so. +func PreferencesRestartBusy() string { + return say("PreferencesRestartBusy", "Files are being made. Restart once they are done.") +} + +// PreferencesRestartFailed is the four parts of D6: what failed, why, and what +// still works - the choice is saved, so opening the window by hand gives it. +func PreferencesRestartFailed(reason string) string { + return sayf("PreferencesRestartFailed", "The window could not start again: {{.Reason}}. The language chosen is saved. Open the program again to see it.", map[string]any{"Reason": reason}) +} + +// PreferencesMissing is said when a language chosen before is not in this +// version. Untouchable rule 6: the window does not quietly speak something +// else. +func PreferencesMissing(tag string) string { + return sayf("PreferencesMissing", "The language chosen before, {{.Tag}}, is not in this version. The window follows the system until you choose again.", map[string]any{"Tag": tag}) +} + +// PreferencesKept says what is kept, in words, and that it stays on this +// computer. The folder picker's own memory is named as well: it writes into the +// same place, and a list of what is kept that left it out would be untrue. +func PreferencesKept() string { + return say("PreferencesKept", "Between runs this window keeps four things: the output directory, the size of the window, and the language and the memory chosen above. The folder picker also keeps the last folder it showed. Nothing leaves this computer.") +} + +func PreferencesKeptIn() string { return say("PreferencesKeptIn", "They are kept in this folder:") } + +func ButtonForget() string { return say("ButtonForget", "Forget") } + +// PreferencesForgetWhat is beside the button, so it says before the press what +// the press does and what it leaves alone. +func PreferencesForgetWhat() string { + return say("PreferencesForgetWhat", "Forget clears the four things above. This window then keeps nothing when it closes, and the next one opens the way the first one did.") +} + +func PreferencesForgotten() string { + return say("PreferencesForgotten", "Forgotten. The next window opens the way the first one did.") +} diff --git a/internal/gui/text/screens.go b/internal/gui/text/screens.go index fdda3cc5..a2fc9b2c 100644 --- a/internal/gui/text/screens.go +++ b/internal/gui/text/screens.go @@ -798,102 +798,6 @@ func DetailGitHub() string { // reason SupportURL gives. const RepositoryURL = legal.Repository -// The Preferences screen: which language the window speaks, and what it keeps -// between runs. Nothing on it changes the files the window makes - a setting -// that did would be an input the recipe does not carry, and the command the -// window offers to show would make different files (docs/USTAWIENIA-2026-09-29.md -// section 2). -// -// "Preferences" and not "Settings" for the tab, because Settings is already the -// section of the form where a format's own settings stand, and two places -// called the same would read as one. -func TabPreferences() string { return say("TabPreferences", "Preferences") } - -func SubtitlePreferences() string { - return say("SubtitlePreferences", "How this window speaks, and what it keeps between runs. Nothing here changes the files it makes.") -} - -func SectionLanguage() string { return say("SectionLanguage", "Language") } -func SectionRemembered() string { return say("SectionRemembered", "What this window remembers") } -func FieldLanguage() string { return say("FieldLanguage", "Window language") } - -// LanguageName is what the language of a catalogue is called in that language -// itself. Every catalogue carries it, and it is how that language is listed on -// the Preferences screen - so a person who cannot read the language the window -// speaks now can still find their own. -func LanguageName() string { return say("LanguageName", "English") } - -// ChoiceSameAsSystem is the first entry of the language list, and what nobody -// having chosen means. It names the language that choice gives on this machine, -// because "the system" alone does not say whether that is a language this -// window carries. -func ChoiceSameAsSystem(lang string) string { - return sayf("ChoiceSameAsSystem", "Same as the system ({{.Language}})", map[string]any{"Language": lang}) -} - -// PreferencesLanguageScope says what the language reaches, because a list of -// languages invites the question whether the files will be in it too. -func PreferencesLanguageScope() string { - return say("PreferencesLanguageScope", "Only the window changes language. The files it makes, recipes, manifests and the command line do not.") -} - -// PreferencesNextStart is said once a language other than the one on screen is -// chosen. A choice that changed nothing visible and said nothing would read as -// a list that does not work. -func PreferencesNextStart() string { - return say("PreferencesNextStart", "The window speaks the chosen language from the next time it opens.") -} - -func ButtonRestart() string { return say("ButtonRestart", "Restart now") } - -// PreferencesRestartClears is beside the button, because the form on the other -// tabs is not kept across a restart and a person who typed a recipe there -// should know before pressing, not after. -func PreferencesRestartClears() string { - return say("PreferencesRestartClears", "Restarting closes this window and opens it again. Anything typed on the other tabs is cleared.") -} - -// PreferencesRestartBusy stands in for the button's use while files are being -// made: closing the window stops the run (docs/GUI.md G7), and a restart must -// not be a way to stop one without saying so. -func PreferencesRestartBusy() string { - return say("PreferencesRestartBusy", "Files are being made. Restart once they are done.") -} - -// PreferencesRestartFailed is the four parts of D6: what failed, why, and what -// still works - the choice is saved, so opening the window by hand gives it. -func PreferencesRestartFailed(reason string) string { - return sayf("PreferencesRestartFailed", "The window could not start again: {{.Reason}}. The language chosen is saved. Open the program again to see it.", map[string]any{"Reason": reason}) -} - -// PreferencesMissing is said when a language chosen before is not in this -// version. Untouchable rule 6: the window does not quietly speak something -// else. -func PreferencesMissing(tag string) string { - return sayf("PreferencesMissing", "The language chosen before, {{.Tag}}, is not in this version. The window follows the system until you choose again.", map[string]any{"Tag": tag}) -} - -// PreferencesKept says what is kept, in words, and that it stays on this -// computer. The folder picker's own memory is named as well: it writes into the -// same place, and a list of what is kept that left it out would be untrue. -func PreferencesKept() string { - return say("PreferencesKept", "Between runs this window keeps three things: the output directory, the size of the window, and the language chosen above. The folder picker also keeps the last folder it showed. Nothing leaves this computer.") -} - -func PreferencesKeptIn() string { return say("PreferencesKeptIn", "They are kept in this folder:") } - -func ButtonForget() string { return say("ButtonForget", "Forget") } - -// PreferencesForgetWhat is beside the button, so it says before the press what -// the press does and what it leaves alone. -func PreferencesForgetWhat() string { - return say("PreferencesForgetWhat", "Forget clears the three things above. This window then keeps nothing when it closes, and the next one opens the way the first one did.") -} - -func PreferencesForgotten() string { - return say("PreferencesForgotten", "Forgotten. The next window opens the way the first one did.") -} - // The Tools tab - docs/NARZEDZIA-SUMY-2026-09-29.md. What each tool says about // itself comes from its declaration through registry.go. These are the words // of the screen around it. diff --git a/internal/gui/window/generate.go b/internal/gui/window/generate.go index fc50dba4..bc7ee54c 100644 --- a/internal/gui/window/generate.go +++ b/internal/gui/window/generate.go @@ -156,6 +156,13 @@ type Host interface { // names what "Same as the system" comes to on this machine with it. SystemLanguage() string + // MachineMemory is how much memory this machine gives the program, which + // the memory setting's auto halves - core.MachineMemory in the real + // window. Asked through here so the Preferences screen can say what auto + // comes to on this machine, and a guard can draw that screen with a number + // of its own rather than with the memory of whichever runner it is on. + MachineMemory() (int64, error) + // RestartWhenClosed asks for this program to start again once this window // has closed - the second half of Restart now, after the screens have // closed the window the way a person closing it does. Starting the new @@ -230,7 +237,7 @@ type Generate struct { // NewGenerate builds the screen. links are the buttons to the other screens. func NewGenerate(host Host, links ...fyne.CanvasObject) *Generate { - g := &Generate{runner: newRunner(host.Later), host: host, tips: parts.NewTips(), settingsFolded: true} + g := &Generate{runner: newRunner(host.Later, host.Remembered), host: host, tips: parts.NewTips(), settingsFolded: true} g.runner.settle = watchedSettle(host, g.runner, g.settle) g.runner.offer.through(host) // This screen is one target and draws its boxes under the bare key, so a diff --git a/internal/gui/window/preferences.go b/internal/gui/window/preferences.go index b5a73ae0..35eed816 100644 --- a/internal/gui/window/preferences.go +++ b/internal/gui/window/preferences.go @@ -11,7 +11,8 @@ import ( // Preferences is the screen of how the window speaks and what it keeps between // runs - docs/USTAWIENIA-2026-09-29.md, the owner's decisions of that day. // -// Nothing on it changes the files the window makes. A setting that did would +// Nothing on it changes the files the window makes - the memory a run may take +// changes when files are written and never what is in them. A setting that did would // be an input the recipe does not carry, and the command the window offers to // show would then make different files from the ones on screen - so anything // that shapes a file belongs in the form, not here. @@ -41,6 +42,9 @@ type Preferences struct { forget *parts.Button forgotten *parts.QuietText + // memory is the section that says how much memory a run may take. + memory *memoryPreference + object fyne.CanvasObject } @@ -79,7 +83,8 @@ func NewPreferences(h Host, leave func(), busy func() bool) *Preferences { p.forget)), p.forgotten, ) - page := parts.Screen(parts.Titled(text.TabPreferences(), text.SubtitlePreferences()), language, remembered) + p.memory = newMemoryPreference(h) + page := parts.Screen(parts.Titled(text.TabPreferences(), text.SubtitlePreferences()), language, p.memory.object, remembered) p.object = container.NewVScroll(page) return p } @@ -127,6 +132,7 @@ func (p *Preferences) restartNow() { func (p *Preferences) forgetNow() { p.host.Remembered().Forget() p.show(p.choices.optionFor("")) + p.memory.open("") p.forgotten.SetText(text.PreferencesForgotten()) p.forget.Disable() p.refresh() diff --git a/internal/gui/window/prefmemory.go b/internal/gui/window/prefmemory.go new file mode 100644 index 00000000..46ec1236 --- /dev/null +++ b/internal/gui/window/prefmemory.go @@ -0,0 +1,175 @@ +package window + +import ( + "fyne.io/fyne/v2" + + "github.com/donislawdev/TestingFilesGenerator/internal/core" + "github.com/donislawdev/TestingFilesGenerator/internal/gui/parts" + "github.com/donislawdev/TestingFilesGenerator/internal/gui/text" +) + +// memoryPreference is the Memory section of the Preferences screen: how much +// memory a run may take - docs/STABILITY-REVIEW-2026-10-26.md section 10.8, +// the owner's decisions of 2026-10-27. +// +// The window's half of --memory. Three ways on one switch - Automatic, Custom +// and No limit - and a box for the size that is on the screen only while +// Custom is chosen, the way the form shows one of its three boxes for a size. +// What is chosen is kept at once, as the language is, and read at the start of +// every run (runner.kept), so it applies from the next run and never to one +// already going. +// +// A section of its own type from the start (GUI rule 9): it has a switch, a +// box, a line that says what the choice comes to on this machine, and the rule +// that opening the screen writes nothing. +type memoryPreference struct { + host Host + fields *parts.Fields + way *parts.Segments + size *parts.Entry + box fyne.CanvasObject + // state is what the chosen way comes to on this machine, or why a kept + // value was not used. Never empty, so the section does not move when it + // changes - GUI rule 3. + state *parts.QuietText + // opening is true while the screen puts the kept value on the controls, + // when their callbacks must not write it back. + opening bool + object fyne.CanvasObject +} + +func newMemoryPreference(h Host) *memoryPreference { + m := &memoryPreference{host: h, fields: parts.NewFields(), size: parts.NewEntry()} + // The callbacks go on before the controls are registered, because the + // fields chain what a control already does rather than replace it. + m.way = parts.NewSegments(memoryWayNames(), m.chose) + m.size.OnChanged = m.typed + m.box = m.fields.Add(core.SettingMemory, text.FieldMemorySize(), text.HintMemorySize(), parts.NoDetail, parts.Numeric(m.size)) + m.state = parts.NewQuietText("") + m.state.Wrapping = fyne.TextWrapWord + m.open(h.Remembered().Memory()) + + m.object = parts.Section(text.SectionMemory(), + parts.Grid(m.fields.Named(text.FieldMemoryWay(), parts.NoDetail, m.way), m.box), + parts.Prose(text.PreferencesMemoryScope()), + m.state, + ) + return m +} + +// The three ways, in one order, named once. +func memoryWayNames() []string { + return []string{text.MemoryWayAuto(), text.MemoryWayCustom(), text.MemoryWayOff()} +} + +// open puts a kept setting on the controls without saving anything. A kept +// value that does not read is shown as Automatic, which is what a run does with +// it, and the line under the switch says what it was - saving Automatic over it +// would erase the person's choice without a press, untouchable rule 7. +func (m *memoryPreference) open(kept string) { + m.opening = true + defer func() { m.opening = false }() + parsed, err := core.ParseMemory(kept) + unreadable := "" + switch { + case kept == "": + m.way.SetSelected(text.MemoryWayAuto()) + case err != nil: + m.way.SetSelected(text.MemoryWayAuto()) + unreadable = kept + case parsed.IsOff(): + m.way.SetSelected(text.MemoryWayOff()) + default: + m.way.SetSelected(text.MemoryWayCustom()) + m.size.SetText(parsed.String()) + } + m.show(unreadable) +} + +// chose keeps the way picked on the switch. Custom keeps the size in the box +// when there is one, and Automatic until there is - which the line says. +func (m *memoryPreference) chose(string) { + if m.opening { + return + } + m.fields.Clear(core.SettingMemory) + m.host.Remembered().RememberMemory(keptAs(m.chosen())) + m.show("") +} + +// typed keeps a size as it is typed, and marks the box while what is in it is +// not one - the run then uses Automatic, and the line says so. +func (m *memoryPreference) typed(string) { + if m.opening || m.way.Selected != text.MemoryWayCustom() { + return + } + if _, err := core.ParseMemorySize(m.size.Text); err != nil { + m.fields.Mark(core.SettingMemory, err) + } else { + m.fields.Clear(core.SettingMemory) + } + m.host.Remembered().RememberMemory(keptAs(m.chosen())) + m.show("") +} + +// chosen is the setting the controls say, as a run will read it. +func (m *memoryPreference) chosen() core.Memory { + switch m.way.Selected { + case text.MemoryWayOff(): + return core.MemoryOff() + case text.MemoryWayCustom(): + if size, err := core.ParseMemorySize(m.size.Text); err == nil { + return size + } + } + return core.Memory{} +} + +// show leaves the box on the screen for Custom alone and says what the choice +// comes to. +func (m *memoryPreference) show(unreadable string) { + if m.way.Selected == text.MemoryWayCustom() { + m.box.Show() + } else { + m.box.Hide() + } + m.state.SetText(m.sentence(unreadable)) +} + +// sentence is the line under the switch. +func (m *memoryPreference) sentence(unreadable string) string { + switch { + case unreadable != "": + return text.MemoryUnreadable(unreadable) + case m.way.Selected == text.MemoryWayOff(): + return text.MemoryOffIs() + case m.way.Selected == text.MemoryWayCustom() && m.chosen().IsAuto(): + return text.MemoryCustomEmpty() + case m.way.Selected == text.MemoryWayCustom(): + return text.MemoryCustomIs() + } + limits := core.Memory{}.On(m.host.MachineMemory) + if limits.Unknown != nil { + return text.MemoryAutoUnknown(text.HumanBytes(limits.Run)) + } + return text.MemoryAutoIs(text.HumanBytes(limits.Run)) +} + +// keptAs is the text a setting is kept as: nothing for Automatic, so the value +// is removed rather than written, the way a language left to the system is. +func keptAs(m core.Memory) string { + if m.IsAuto() { + return "" + } + return m.String() +} + +// memoryOf is the kept setting as a run reads it. A value that does not read is +// Automatic, the same answer the screen shows for it. +func memoryOf(kept Remembered) core.Memory { + m, err := core.ParseMemory(kept.Memory()) + if err != nil { + return core.Memory{} + } + return m +} diff --git a/internal/gui/window/preset.go b/internal/gui/window/preset.go index 18e9aa0a..36abb00d 100644 --- a/internal/gui/window/preset.go +++ b/internal/gui/window/preset.go @@ -58,7 +58,7 @@ type Preset struct { // NewPreset builds the screen. links are the buttons to the other screens. func NewPreset(host Host, links ...fyne.CanvasObject) *Preset { - p := &Preset{runner: newRunner(host.Later), host: host, tips: parts.NewTips()} + p := &Preset{runner: newRunner(host.Later, host.Remembered), host: host, tips: parts.NewTips()} p.runner.offer.through(host) p.runner.settle = watchedSettle(host, p.runner, p.settle) // No readdress here, and that is the boundary of this screen rather than an diff --git a/internal/gui/window/recipe.go b/internal/gui/window/recipe.go index 86f0c18c..5ab1ffa0 100644 --- a/internal/gui/window/recipe.go +++ b/internal/gui/window/recipe.go @@ -158,7 +158,7 @@ type content struct { // anybody does a press of "Add a batch" to find out what the screen is. One is // also what the single batch screen shows, so the two read as one tool. func NewRecipe(host Host, links ...fyne.CanvasObject) *Recipe { - r := &Recipe{runner: newRunner(host.Later), host: host, tips: parts.NewTips()} + r := &Recipe{runner: newRunner(host.Later, host.Remembered), host: host, tips: parts.NewTips()} r.runner.settle = watchedSettle(host, r.runner, r.settle) r.runner.offer.through(host) // A refusal about a size belongs on the box the switch is showing. diff --git a/internal/gui/window/remembered.go b/internal/gui/window/remembered.go index c6abff43..eed8d486 100644 --- a/internal/gui/window/remembered.go +++ b/internal/gui/window/remembered.go @@ -12,8 +12,9 @@ import "fyne.io/fyne/v2" // // And since 2026-09-29 one thing it is told: the language chosen on the // Preferences screen. That is not last week's state coming back uninvited, it -// is a choice somebody made in order to keep it, and it is the one value here -// that nothing writes but a person. +// is a choice somebody made in order to keep it, and nothing writes it but a +// person. Since 2026-10-27 the memory setting beside it is the second such +// value. // // It is an interface on the Host rather than a call to the toolkit's global // preferences, for the reason every other seam here exists: the screens build @@ -52,6 +53,15 @@ type Remembered interface { Language() string RememberLanguage(tag string) + // Memory is the memory setting somebody chose on the Preferences screen, + // as core.Memory writes it - "8gb", "off" - or empty when nobody has, + // which means auto (docs/STABILITY-REVIEW-2026-10-26.md section 10.8). + // Like the language it is a choice somebody made in order to keep it, so + // it is written after Forget too, and RememberMemory with an empty text + // removes the value rather than writing an empty one. + Memory() string + RememberMemory(setting string) + // Forget removes everything above, on the press of the Forget button and // at no other time - untouchable rule 7. For the rest of this run the // folder and the size are not written down again either, or closing the diff --git a/internal/gui/window/run.go b/internal/gui/window/run.go index bd2e1ec7..1deb216c 100644 --- a/internal/gui/window/run.go +++ b/internal/gui/window/run.go @@ -77,6 +77,10 @@ type settler func() ([]engine.Target, engine.Options, error) // run was cut short. type runner struct { settle settler + // kept is where the memory setting chosen on the Preferences screen is + // read from, at the start of every preview and run - so a setting changed + // there applies from the next run and never to one already going. + kept func() Remembered previewBtn *parts.Button generateBtn *parts.Button @@ -338,8 +342,8 @@ func lineFrom(r *runner, targets []engine.Target, opt engine.Options, err error) showOn(r.status, r.line.said(summarise(targets), opt.OutDir)) } -func newRunner(wait later) *runner { - r := &runner{fields: parts.NewFields(), line: &runLine{}, sections: newSections()} +func newRunner(wait later, kept func() Remembered) *runner { + r := &runner{fields: parts.NewFields(), line: &runLine{}, sections: newSections(), kept: kept} // Wired once, here, so that a field added later is covered without anybody // remembering to wire it. See Fields.WhenTypedIn and recheck. r.fields.WhenTypedIn(r.recheck) @@ -436,6 +440,7 @@ func (r *runner) onPreview() { return } opt.DryRun = true + opt.Memory = memoryOf(r.kept()) // Occupied, and stoppable. Both of those changed on 2026-08-26. // @@ -595,6 +600,7 @@ func (r *runner) onGenerate() { } func (r *runner) startRun(targets []engine.Target, opt engine.Options) { + opt.Memory = memoryOf(r.kept()) ctx, cancel := context.WithCancel(context.Background()) done := make(chan struct{}) r.settled = done From a6a91077e6a7609b94102badf3db570f28697612 Mon Sep 17 00:00:00 2001 From: DonislawDev Date: Wed, 28 Oct 2026 00:31:07 +0100 Subject: [PATCH 6/9] changelog and mutation entries for the memory setting Co-Authored-By: Claude Opus 5.5 --- CHANGELOG.md | 8 ++ internal/guard/mutation/entries.py | 164 ++++++++++++++++++++++++++++- 2 files changed, 170 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d818d758..9645e0b0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,14 @@ because it turns other people's test suites red. ### Added +- **How much memory a run may use is yours to set.** `--memory` on + `generate`, `validate` and `preset show`, and Memory on the window's + Preferences screen: `auto` (half of what this machine or container gives + the program), a size such as `8gb`, or `off`. Pictures and films wait for + room rather than all being held at once. A plan is refused at this + setting rather than at a fixed 2 GiB, and `auto` never goes below that. + Files come out byte for byte the same. + - **A Docker image.** `ghcr.io/donislawdev/tfg` holds the Linux command line of a release and nothing else, for x64 and Arm, and runs with no network. It is made from the published archive once its checksum and attestation check diff --git a/internal/guard/mutation/entries.py b/internal/guard/mutation/entries.py index a4c6f618..2c0658dc 100644 --- a/internal/guard/mutation/entries.py +++ b/internal/guard/mutation/entries.py @@ -8010,8 +8010,8 @@ ( "validate goes back to planning with a context nobody can finish", "internal/cli/recipecmd.go", - "engine.PlanContext(ctx, targets, planningOptions(rec))", - "engine.Plan(targets, planningOptions(rec))", + "engine.PlanContext(ctx, targets, opt)", + "engine.Plan(targets, opt)", "TestPlanningFromTheCommandLineCanBeStopped", ), ( @@ -16042,4 +16042,164 @@ "pl.budget = newPlanMemory(opt.Memory, core.MemoryLimits{Plan: core.MaxPlanBytes})", "TestThePlanCeilingIsTheMemorySetting", ), + ( + # A jpg declares nothing, so sixteen of its pictures go out at once + # whatever the memory setting says - R02 back for that one format. + "a jpg does not declare the picture writing it holds", + "internal/format/jpg/jpg.go", + "\tp.Holds = holdsPerPixel * int64(w) * int64(h)\n", + "\tp.Holds = 0 * holdsPerPixel * int64(w) * int64(h)\n", + "TestEveryPictureSaysWhatWritingItHolds", + ), + ( + "a png does not declare the picture writing it holds", + "internal/format/png/png.go", + "\tp.Holds = holdsPerPixel * int64(w) * int64(h)\n", + "\tp.Holds = 0 * holdsPerPixel * int64(w) * int64(h)\n", + "TestEveryPictureSaysWhatWritingItHolds", + ), + ( + "a gif does not declare the picture writing it holds", + "internal/format/gif/gif.go", + "\tp.Holds = holdsPerPixel * int64(w) * int64(h) / 2\n", + "\tp.Holds = 0 * holdsPerPixel * int64(w) * int64(h) / 2\n", + "TestEveryPictureSaysWhatWritingItHolds", + ), + ( + # The film declares the part that does not grow and drops the part + # that does, so a 4K film is held back like a small one. + "a film declares the same whatever the size of its picture", + "internal/format/video/plan.go", + "\treturn 4<<20 + 2*int64(width)*int64(height)", + "\treturn 4<<20 + 0*int64(width)*int64(height)", + "TestEveryPictureSaysWhatWritingItHolds", + ), + ( + # A jxl chosen from the ladder is coded while writing and declares + # nothing, so the setting cannot see it. + "a jxl coded while writing declares nothing", + "internal/format/jxl/jxl.go", + "\tif m.coded == nil {\n\t\t// Coded while writing", + "\tif false && m.coded == nil {\n\t\t// Coded while writing", + "TestEveryPictureItChoosesSaysWhatWritingItHolds", + ), + ( + "an avif coded while writing declares nothing", + "internal/format/avif/avif.go", + "\tif m.coded == nil {\n\t\t// Coded while writing", + "\tif false && m.coded == nil {\n\t\t// Coded while writing", + "TestEveryPictureItChoosesSaysWhatWritingItHolds", + ), + ( + # A zip of pictures declares nothing, though it codes each picture + # while it writes. + "a zip does not pass up what its pictures hold", + "internal/format/zip/zip.go", + "\tp.Holds = format.OneAtATime(m.children, func(c child) format.Plan { return c.plan })\n", + "\tp.Holds = 0 * format.OneAtATime(m.children, func(c child) format.Plan { return c.plan })\n", + "TestAContainerHoldsWhatItsLargestPictureHolds", + ), + ( + # The pictures a message shows in its text are a list of their own, + # and leaving them out leaves a message of pictures declaring nothing. + "a mail message does not pass up what the pictures in its text hold", + "internal/format/eml/eml.go", + "format.OneAtATime(m.pictures, plan))", + "0*format.OneAtATime(m.pictures, plan))", + "TestAContainerHoldsWhatItsLargestPictureHolds", + ), + ( + # A container adds its pictures up rather than taking the largest, as + # if it wrote them all at once - every container of pictures waits + # for room it will never use. + "a container declares the sum of its pictures rather than the largest", + "internal/format/container.go", + "\t\tmost = max(most, plan(f).Holds)", + "\t\tmost += plan(f).Holds", + "TestAContainerHoldsWhatItsLargestPictureHolds", + ), + ( + # generate reads --memory and then hands the planner auto instead - + # the flag is accepted and does nothing, which is the worst kind of + # option this tool can have. + "generate reads --memory and plans under auto anyway", + "internal/cli/generate.go", + "\t\tMemory: memory.Memory,", + "\t\tMemory: memoryValue{}.Memory,", + "TestTheMemoryFlagReachesThePlanOnEveryCommandThatPlans", + ), + ( + "validate reads --memory and plans under auto anyway", + "internal/cli/recipecmd.go", + "\topt.Memory = v.memory.Memory", + "\topt.Memory = memoryValue{}.Memory", + "TestTheMemoryFlagReachesThePlanOnEveryCommandThatPlans", + ), + ( + "preset show reads --memory and counts the budget under auto anyway", + "internal/cli/presetcmd.go", + "budgetOf(ctx, expanded, memory.Memory)", + "budgetOf(ctx, expanded, memoryValue{}.Memory)", + "TestTheMemoryFlagReachesThePlanOnEveryCommandThatPlans", + ), + ( + # The help of preset show is written by hand, so the flag can be there + # and its sentence missing. + "the help of preset show does not say what --memory does", + "internal/cli/presetcmd.go", + " \t`+memoryHelp+` (default auto)", + " \t(default auto)", + "TestTheMemoryFlagReachesThePlanOnEveryCommandThatPlans", + ), + ( + # The command line prints the manifest's notes and not the run's, so a + # file written past the memory setting goes unsaid there - rule 6. + "the command line does not print what the run says about its memory", + "internal/cli/generate.go", + "sayNotes(append(saidAll(res.RunNotes), res.Manifest.Notes()...), errOut)", + "sayNotes(res.Manifest.Notes(), errOut)", + "TestAFileWrittenPastTheMemorySettingIsSaidOnTheCommandLine", + ), + ( + # A preview from the window plans under auto whatever Preferences + # keeps - the setting is on the screen and does nothing. + "a preview in the window ignores the memory setting kept on Preferences", + "internal/gui/window/run.go", + "\topt.DryRun = true\n\topt.Memory = memoryOf(r.kept())", + "\topt.DryRun = true\n\t_ = memoryOf(r.kept())", + "TestARunPlansUnderTheMemorySettingKeptOnPreferences", + ), + ( + "a run in the window ignores the memory setting kept on Preferences", + "internal/gui/window/run.go", + "\topt.Memory = memoryOf(r.kept())\n\tctx, cancel", + "\t_ = memoryOf(r.kept())\n\tctx, cancel", + "TestARunPlansUnderTheMemorySettingKeptOnPreferences", + ), + ( + # Automatic is kept as the word auto rather than as no value, so + # Forget and the language's rule of "nothing chosen is nothing kept" + # part ways. + "Automatic is written into preferences.json rather than left out", + "internal/gui/window/prefmemory.go", + "\tif m.IsAuto() {\n\t\treturn \"\"", + "\tif false {\n\t\treturn \"\"", + "TestTheMemorySettingIsChosenOnPreferencesAndKept", + ), + ( + # A kept value that does not read is shown as Automatic without a word + # about what was there. + "an unreadable memory setting is shown as Automatic without saying so", + "internal/gui/window/prefmemory.go", + "\t\tunreadable = kept\n", + "\t\t_ = kept\n", + "TestOpeningPreferencesKeepsAnUnreadableMemorySetting", + ), + ( + "a box for the memory that holds no size is not marked", + "internal/gui/window/prefmemory.go", + "\t\tm.fields.Mark(core.SettingMemory, err)\n", + "\t\t_ = err\n", + "TestTheMemorySettingIsChosenOnPreferencesAndKept", + ), ] From 271a7abdb4dd9f303e3fa4851eaef41dbf9adc52 Mon Sep 17 00:00:00 2001 From: DonislawDev Date: Wed, 28 Oct 2026 09:44:22 +0100 Subject: [PATCH 7/9] core: cgroup v1 reads the slices above, and why memory went unread is a sentence Version 1 accounts up the hierarchy as version 2 does, so its limit is now the smallest memory.limit_in_bytes from the group to the top of the mount, not the group's own file alone. A group path with "." or ".." past the namespace prefix is refused rather than joined to the mount, where it could walk out and read a limit from elsewhere. The causes a run gives for memory it could not read are said as sentences (core.CgroupMalformed, core.MachineMemoryNone) with Polish entries. On macOS an hw.memsize answer longer than eight bytes is a defect: a sentence in a file built on one system alone would put the catalogue out of step on the others. Co-Authored-By: Claude Opus 5.5 --- internal/core/cgroup.go | 50 ++++++++++++++++++--------- internal/core/machinememory_darwin.go | 8 ++++- internal/core/memory.go | 2 +- internal/guard/cgrouplimit_test.go | 37 ++++++++++++++++++++ internal/gui/text/locale/said/en.json | 10 ++++++ internal/gui/text/locale/said/pl.json | 2 ++ 6 files changed, 91 insertions(+), 18 deletions(-) diff --git a/internal/core/cgroup.go b/internal/core/cgroup.go index 5613ed13..787c57b4 100644 --- a/internal/core/cgroup.go +++ b/internal/core/cgroup.go @@ -2,7 +2,6 @@ package core import ( "errors" - "fmt" "io/fs" "path" "strconv" @@ -20,12 +19,17 @@ import ( // where that group is mounted, and in a container with its own cgroup // namespace the two have to be put together carefully. // +// Both versions are read from the group up to the top of its mount, because a +// parent's limit holds every group under it in both - version 1 accounts up the +// hierarchy too (docs.kernel.org cgroup-v1/memory, section 6, read 2026-10-28). +// // What it does not read, and why. memory.high is a point where the kernel -// starts to reclaim rather than a limit it ends the process at. In version 1, -// only the group's own memory.limit_in_bytes is read and not its parents' - -// version 1 is the old layout, every container runtime puts the limit on the -// container's own group, and following a parent there means another file per -// level for a case nobody has reported. +// starts to reclaim rather than a limit it ends the process at. A parent above +// the top of the mount - the slice a container with its own namespace sits in - +// is not read in either version, because no path this process can see reaches +// it. Version 1 would name it in memory.stat (hierarchical_memory_limit), and +// version 2 has no file that does, so reading it for the old layout alone would +// make the two answer differently for the same container. // CgroupMemoryLimit is the memory limit of this process's control group, read // through read from the paths Linux keeps the answer at. limited is false when @@ -58,9 +62,9 @@ func CgroupMemoryLimit(read func(name string) ([]byte, error)) (limit int64, lim } if v1 { - return limitIn(read, path.Join(mount, rel, "memory.limit_in_bytes")) + return limitAbove(read, mount, rel, "memory.limit_in_bytes") } - return limitAbove(read, mount, rel) + return limitAbove(read, mount, rel, "memory.max") } // memoryGroup is the path of the group holding this process's memory, from @@ -107,6 +111,11 @@ func groupLine(line string) (hierarchy, controllers, where string, err error) { // namespace the group is a path under a mount whose root is the hierarchy's // root. A group shown as starting with "/.." is outside the namespace this // process can see, and no mount reaches it. +// +// Any other "." or ".." in the group is refused rather than followed. Linux +// writes the path clean and gives no group either name, so one that is there +// is a file that does not say what Linux writes - and joined to the mount it +// would walk out of it and read a limit from wherever it lands. func memoryMount(text string, v1 bool, group string) (mount, rel string, err error) { for _, line := range lines(text) { m, err := mountLine(line) @@ -120,9 +129,14 @@ func memoryMount(text string, v1 bool, group string) (mount, rel string, err err if err != nil { return "", "", err } - if rel, reached := under(group, root); reached && rel != "/.." && !strings.HasPrefix(rel, "/../") { - return point, rel, nil + rel, reached := under(group, root) + switch { + case !reached || rel == "/.." || strings.HasPrefix(rel, "/../"): + continue + case rel != "" && path.Clean(rel) != rel: + return "", "", malformed("/proc/self/cgroup", group) } + return point, rel, nil } return "", "", nil } @@ -188,14 +202,15 @@ func under(group, root string) (string, bool) { return rest, true } -// limitAbove is the smallest memory.max from the group up to the top of the -// mount. A parent's limit holds every group under it, so a container whose own -// group says max can still be held by the slice it sits in. -func limitAbove(read func(string) ([]byte, error), mount, rel string) (int64, bool, error) { +// limitAbove is the smallest limit in file from the group up to the top of the +// mount - memory.max in version 2, memory.limit_in_bytes in version 1. A +// parent's limit holds every group under it, so a container whose own group +// says max can still be held by the slice it sits in. +func limitAbove(read func(string) ([]byte, error), mount, rel, file string) (int64, bool, error) { var least int64 var found bool for dir := path.Join(mount, rel); ; dir = path.Dir(dir) { - n, ok, err := limitIn(read, path.Join(dir, "memory.max")) + n, ok, err := limitIn(read, path.Join(dir, file)) if err != nil { return 0, false, err } @@ -266,6 +281,9 @@ func hasWord(list, word string) bool { return false } +// malformed is the refusal for a file that does not say what it should. Said +// as a sentence because it reaches a person: it is the cause the note after a +// run gives for the memory it could not read. func malformed(name, text string) error { - return fmt.Errorf("%s does not say what Linux writes there: %q", name, text) + return Refuse(Says("core.CgroupMalformed", "%s does not say what Linux writes there: %q", A("File", name), A("Text", text))) } diff --git a/internal/core/machinememory_darwin.go b/internal/core/machinememory_darwin.go index d0f0786a..c88d8ee7 100644 --- a/internal/core/machinememory_darwin.go +++ b/internal/core/machinememory_darwin.go @@ -25,8 +25,14 @@ func MachineMemory() (int64, error) { return 0, err } raw := []byte(answer) + // hw.memsize is a uint64_t (sys/sysctl.h of the macOS 26 SDK, read + // 2026-10-28), so a longer answer can only come from a change in + // syscall.Sysctl or in the kernel's type - a fault in what this program + // assumes rather than something a person did. A defect + // rather than a sentence: a sentence in this file alone would be in the + // window's catalogue on macOS and missing from it everywhere else. if len(raw) > 8 { - return 0, fmt.Errorf("hw.memsize came back as %d bytes rather than eight", len(raw)) + return 0, Defect(fmt.Errorf("hw.memsize came back as %d bytes rather than eight", len(raw))) } for len(raw) < 8 { raw = append(raw, 0) diff --git a/internal/core/memory.go b/internal/core/memory.go index 69de69e0..12399677 100644 --- a/internal/core/memory.go +++ b/internal/core/memory.go @@ -191,7 +191,7 @@ func (m Memory) On(machine func() (int64, error)) MemoryLimits { if err == nil && total <= 1 { // An answer, but not one about a machine that runs anything, so it is // treated as no answer rather than halved into a limit of nothing. - err = fmt.Errorf("the system said this machine has %d B of memory", total) + err = Refuse(Says("core.MachineMemoryNone", "the system said this machine has %d B of memory", A("Bytes", total))) } if err != nil { return MemoryLimits{Run: MaxPlanBytes, Plan: MaxPlanBytes, Unknown: err} diff --git a/internal/guard/cgrouplimit_test.go b/internal/guard/cgrouplimit_test.go index aa51d009..4aa4e01a 100644 --- a/internal/guard/cgrouplimit_test.go +++ b/internal/guard/cgrouplimit_test.go @@ -137,6 +137,43 @@ var containerLayouts = []struct { }, limit: 9223372036854771712, limited: true, }, + { + // A systemd host on the old layout: the session's own group has no + // limit, the user's slice above it has. Version 1 accounts up the + // hierarchy as version 2 does, so the slice holds the session. + name: "version 1, no limit on its own group and a limit on the slice above it", + files: map[string]string{ + "/proc/self/cgroup": "9:memory:/user.slice/user-1000.slice/session-2.scope\n", + "/proc/self/mountinfo": "40 30 0:35 / /sys/fs/cgroup/memory rw,nosuid - cgroup cgroup rw,memory\n", + "/sys/fs/cgroup/memory/user.slice/user-1000.slice/session-2.scope/memory.limit_in_bytes": "9223372036854771712\n", + "/sys/fs/cgroup/memory/user.slice/user-1000.slice/memory.limit_in_bytes": "4294967296\n", + "/sys/fs/cgroup/memory/user.slice/memory.limit_in_bytes": "9223372036854771712\n", + "/sys/fs/cgroup/memory/memory.limit_in_bytes": "9223372036854771712\n", + }, + limit: 4 << 30, limited: true, + }, + { + // Linux writes no group with "." or ".." in it past the run that says + // it is outside the namespace. Joined to the mount, this one walks out + // of it to a file that holds a limit nobody set on this process. + name: "a group that would walk out of its mount", + files: map[string]string{ + "/proc/self/cgroup": "0::/a/../../etc\n", + "/proc/self/mountinfo": cgroupV2Mount, + "/sys/fs/etc/memory.max": "1048576\n", + "/sys/fs/cgroup/memory.max": "max\n", + }, + fails: true, + }, + { + name: "a group with a step that goes nowhere", + files: map[string]string{ + "/proc/self/cgroup": "4:memory:/docker/./abc\n", + "/proc/self/mountinfo": "40 30 0:35 / /sys/fs/cgroup/memory rw - cgroup cgroup rw,memory\n", + "/sys/fs/cgroup/memory/docker/abc/memory.limit_in_bytes": "1048576\n", + }, + fails: true, + }, { name: "a mount whose root does not reach the group", files: map[string]string{ diff --git a/internal/gui/text/locale/said/en.json b/internal/gui/text/locale/said/en.json index 990615a2..0654f29e 100644 --- a/internal/gui/text/locale/said/en.json +++ b/internal/gui/text/locale/said/en.json @@ -580,6 +580,11 @@ "hash": "sha256-54b8e801756c", "other": "the set needs a size one byte below the limit, and there is nothing below zero" }, + "core.CgroupMalformed": { + "description": "Said by internal/core - a refusal under the box it is about or at the foot of the form, or a note after a run. Carries {{.File}}, {{.Text}}, written the way the program writes them - keep each spelled exactly that way.", + "hash": "sha256-df81172914cc", + "other": "{{.File}} does not say what Linux writes there: {{.Text}}" + }, "core.DurationEmpty": { "description": "Said by internal/core - a refusal under the box it is about or at the foot of the form, or a note after a run.", "hash": "sha256-3a7508d80a33", @@ -620,6 +625,11 @@ "hash": "sha256-6dc38cd1cb85", "other": "{{.Error}}" }, + "core.MachineMemoryNone": { + "description": "Said by internal/core - a refusal under the box it is about or at the foot of the form, or a note after a run. Carries {{.Bytes}}, written the way the program writes them - keep each spelled exactly that way.", + "hash": "sha256-76987096904d", + "other": "the system said this machine has {{.Bytes}} B of memory" + }, "core.MemoryEmpty": { "description": "Said by internal/core - a refusal under the box it is about or at the foot of the form, or a note after a run.", "hash": "sha256-4a0a99260fc6", diff --git a/internal/gui/text/locale/said/pl.json b/internal/gui/text/locale/said/pl.json index 8461fea0..6a43cba2 100644 --- a/internal/gui/text/locale/said/pl.json +++ b/internal/gui/text/locale/said/pl.json @@ -115,6 +115,7 @@ "core.BoundaryTooSmall": { "hash": "sha256-a0fd66f30b3f", "other": "{{.Why}}. {{.Fix}}" }, "core.BoundaryTooSmallFix": { "hash": "sha256-d3ccef8f1f9d", "other": "Użyj limitu co najmniej 1 B" }, "core.BoundaryTooSmallWhy": { "hash": "sha256-54b8e801756c", "other": "zestaw potrzebuje rozmiaru o bajt mniejszego od limitu, a poniżej zera nic nie ma" }, + "core.CgroupMalformed": { "hash": "sha256-df81172914cc", "other": "{{.File}} nie mówi tego, co Linux tam zapisuje: {{.Text}}" }, "core.DurationEmpty": { "hash": "sha256-3a7508d80a33", "other": "pusty czas trwania: wpisz go tak jak 10s, 1m30s albo 500ms" }, "core.DurationNoUnit": { "hash": "sha256-6f7e4e89b31d", "other": "{{.Value}} nie ma jednostki: wpisz 10s dla sekund albo 10ms dla milisekund, bo sama liczba może znaczyć jedno albo drugie" }, "core.DurationNotALength": { "hash": "sha256-1b6907777cb3", "other": "{{.Value}} nie jest czasem trwania: wpisz go tak jak 10s, 1m30s albo 500ms. Znak, wykładnik czy przecinek są odrzucane, a nie zgadywane" }, @@ -123,6 +124,7 @@ "core.DurationTooLong": { "hash": "sha256-06c88d98ae65", "other": "{{.Value}} jest za długi, żeby policzyć go w milisekundach" }, "core.DurationUnknownUnit": { "hash": "sha256-96f50400bd65", "other": "{{.Value}} ma nieznaną jednostkę {{.Unit}}: użyj h, m, s albo ms" }, "core.Error": { "hash": "sha256-6dc38cd1cb85", "other": "{{.Error}}" }, + "core.MachineMemoryNone": { "hash": "sha256-76987096904d", "other": "system podał, że ta maszyna ma {{.Bytes}} B pamięci" }, "core.MemoryEmpty": { "hash": "sha256-4a0a99260fc6", "other": "pole {{.Setting}} jest puste: wpisz auto, off albo rozmiar, na przykład 8gb" }, "core.MemoryNegative": { "hash": "sha256-87bca52970de", "other": "{{.Setting}} {{.Value}} jest ujemna: wpisz auto, off albo rozmiar, na przykład 8gb" }, "core.MemoryNotASize": { "hash": "sha256-3afd7272e5a2", "other": "{{.Setting}} {{.Value}} to nie jest rozmiar: wpisz go, na przykład 8gb" }, From 797c520381eb663491c1ae2fe7dcc0c819204ea8 Mon Sep 17 00:00:00 2001 From: DonislawDev Date: Wed, 28 Oct 2026 09:44:32 +0100 Subject: [PATCH 8/9] window: a run's memory notes reach the window, Forget empties the size, and auto's plan floor is said What a run says about the memory it ran in (Result.RunNotes) is said after a run and after a preview, ahead of the notes about files, as the command line says it. The runner asks Host.MachineMemory, the host the Preferences screen asks, so the screen and the run name the same machine. Forget empties the box for a size, so choosing Custom after it no longer keeps the forgotten size again. --help, the README and the Preferences screen say that under auto a plan of up to 2.0 GB is never refused - the floor auto keeps on machines of four gigabytes or less. The figure comes from core.MaxPlanBytes. Co-Authored-By: Claude Opus 5.5 --- README.md | 2 +- internal/cli/memoryflag.go | 9 ++-- internal/guard/memoryflag_test.go | 11 ++-- internal/guard/prefmemory_test.go | 47 +++++++++++++++++- .../testdata/screens/preferences-chosen.png | Bin 175072 -> 180798 bytes .../testdata/screens/preferences-chosen.xml | 4 +- .../guard/testdata/screens/preferences.png | Bin 175165 -> 180891 bytes .../guard/testdata/screens/preferences.xml | 4 +- internal/gui/text/locale/en.json | 6 +-- internal/gui/text/locale/pl.json | 2 +- internal/gui/text/preferences.go | 9 +++- internal/gui/window/generate.go | 2 +- internal/gui/window/prefmemory.go | 7 +++ internal/gui/window/preset.go | 2 +- internal/gui/window/recipe.go | 2 +- internal/gui/window/run.go | 15 ++++-- internal/gui/window/runoutcome.go | 14 ++++++ 17 files changed, 110 insertions(+), 26 deletions(-) diff --git a/README.md b/README.md index b6a32fea..4bed31dd 100644 --- a/README.md +++ b/README.md @@ -345,7 +345,7 @@ tfg generate --format txt --size 1mb settings come from the flags | `--clean` | turn off the self describing label written inside each file | | `--dry-run` | count and show, write nothing at all | | `--json` | write the manifest to standard output | -| `--memory ` | how much memory the run may use: `auto` (the default, half of what this machine gives the program), a size such as `8gb`, or `off` for no limit. Pictures wait for room rather than all being held at once, and a plan larger than this is refused before anything is written. Also on `validate` and `preset show` | +| `--memory ` | how much memory the run may use: `auto` (the default, half of what this machine gives the program), a size such as `8gb`, or `off` for no limit. Pictures wait for room rather than all being held at once, and a plan larger than this is refused before anything is written. Under `auto`, a plan of up to 2.0 GB is never refused. Also on `validate` and `preset show` | ### `tfg validate` diff --git a/internal/cli/memoryflag.go b/internal/cli/memoryflag.go index 8a1894fa..5e8f67f3 100644 --- a/internal/cli/memoryflag.go +++ b/internal/cli/memoryflag.go @@ -15,12 +15,15 @@ import ( // // The help is a fixed sentence with no number from this machine in it. The // site prints the help of every command, and a number read off the machine -// that built the site would be a number about nobody's machine. +// that built the site would be a number about nobody's machine. The floor of +// the plan under auto is a number of the program rather than of the machine, +// so it is said, from the constant that sets it. // memoryHelp is what --help says about the flag. -const memoryHelp = "how much memory this run may use: auto (half of what this machine gives the program), " + +var memoryHelp = "how much memory this run may use: auto (half of what this machine gives the program), " + "a size such as 8gb, or off for no limit. Pictures wait for room rather than all being held at once, " + - "and a plan larger than this is refused before anything is written" + "and a plan larger than this is refused before anything is written. " + + "Under auto, a plan of up to " + core.HumanBytes(core.MaxPlanBytes) + " is never refused" // memoryValue is the flag's value, auto until somebody writes one. type memoryValue struct{ core.Memory } diff --git a/internal/guard/memoryflag_test.go b/internal/guard/memoryflag_test.go index fc6550f0..5e5b9d3f 100644 --- a/internal/guard/memoryflag_test.go +++ b/internal/guard/memoryflag_test.go @@ -7,6 +7,7 @@ import ( "testing" "github.com/donislawdev/TestingFilesGenerator/internal/cli" + "github.com/donislawdev/TestingFilesGenerator/internal/core" ) // --memory is read the same way on every command that plans - generate, @@ -59,10 +60,14 @@ func TestTheMemoryFlagReachesThePlanOnEveryCommandThatPlans(t *testing.T) { t.Errorf("%s --memory 0: exit %d, expected %d and why nought is refused:\n%s", c.name, code, cli.ExitUsage, errOut) } - // And the help says the flag is there, and what auto means. + // And the help says the flag is there, and what auto means - with + // the floor the plan keeps under it, or a machine of four gigabytes + // or less reads a refusal the run would never give (review on #208). _, help, _ := run(t, append(c.args[:len(c.args):len(c.args)], "--help")...) - if !strings.Contains(help, "-memory") || !strings.Contains(help, "half of what this machine gives the program") { - t.Errorf("%s --help does not offer --memory and say what auto is:\n%s", c.name, help) + floor := "a plan of up to " + core.HumanBytes(core.MaxPlanBytes) + " is never refused" + if !strings.Contains(help, "-memory") || !strings.Contains(help, "half of what this machine gives the program") || + !strings.Contains(help, floor) { + t.Errorf("%s --help does not offer --memory and say what auto is, floor included:\n%s", c.name, help) } } } diff --git a/internal/guard/prefmemory_test.go b/internal/guard/prefmemory_test.go index 64469ce5..8a20d1b4 100644 --- a/internal/guard/prefmemory_test.go +++ b/internal/guard/prefmemory_test.go @@ -7,6 +7,7 @@ import ( "fyne.io/fyne/v2" + "github.com/donislawdev/TestingFilesGenerator/internal/core" "github.com/donislawdev/TestingFilesGenerator/internal/gui/parts" "github.com/donislawdev/TestingFilesGenerator/internal/gui/text" "github.com/donislawdev/TestingFilesGenerator/internal/gui/window" @@ -31,6 +32,12 @@ func TestTheMemorySettingIsChosenOnPreferencesAndKept(t *testing.T) { if said := textIn(prefs); !strings.Contains(said, text.MemoryAutoIs(text.HumanBytes(8<<30))) { t.Errorf("the screen does not say what Automatic comes to on a machine of sixteen gigabytes:\n%s", said) } + // And the floor the plan keeps under it, from the constant that sets it - + // review on #208: without it a machine of four gigabytes or less reads a + // refusal the run would never give. + if said := textIn(prefs); !strings.Contains(said, "a plan of up to "+text.HumanBytes(core.MaxPlanBytes)+" is never refused") { + t.Errorf("the screen does not say the floor of the plan under Automatic:\n%s", said) + } // Custom keeps the size as it is typed, and a size that is not one is // marked and kept as Automatic rather than as what was typed. @@ -63,11 +70,22 @@ func TestTheMemorySettingIsChosenOnPreferencesAndKept(t *testing.T) { } // Forget takes it away with the rest, and the switch goes back with it. - way.SetSelected(text.MemoryWayOff()) + // Kept as a size, so the box holds one that reads - and the size goes with + // the rest: a box left holding it would keep it again the moment Custom is + // chosen after Forget. + way.SetSelected(text.MemoryWayCustom()) + size.SetText("512mb") + if got := host.Remembered().Memory(); got != "512mb" { + t.Fatalf("512mb was typed under Custom and %q was kept", got) + } buttonNamed(prefs, text.ButtonForget()).OnTapped() if got := host.Remembered().Memory(); got != "" || way.Selected != text.MemoryWayAuto() { t.Errorf("after Forget %q is kept and the switch shows %q", got, way.Selected) } + way.SetSelected(text.MemoryWayCustom()) + if got := host.Remembered().Memory(); got != "" || size.Text != "" { + t.Errorf("Custom chosen after Forget keeps %q with %q in the box - the size Forget took away came back", got, size.Text) + } } // Opening the screen writes nothing, and a kept value that does not read is @@ -129,6 +147,33 @@ func TestARunPlansUnderTheMemorySettingKeptOnPreferences(t *testing.T) { } } +// What a run says about the memory it ran in reaches the window, from a +// preview and from a run - review on #208. The command line has said it since +// the setting existed, and the window said only what the run said about its +// files, so a run that could not ask the machine worked to a limit nobody on +// the screen was told the source of (untouchable rule 6). +// +// Asked on a host that cannot say how much memory the machine has, which is +// also the proof that a run asks the same host the Preferences screen asks. +func TestTheWindowSaysWhatARunSaidAboutItsMemory(t *testing.T) { + host := newFakeHost(t) + host.machineFails = true + window.Open(host) + t.Cleanup(func() { join(host) }) + content := tabNamed(t, host.content, text.TabOneTarget()) + fill(t, content, text.FieldOutputDir(), t.TempDir()) + fill(t, content, text.FieldSize(), "1kb") + fill(t, content, text.FieldCount(), "2") + const said = "the memory of this machine could not be read" + for _, button := range []string{text.ButtonPreview(), text.ButtonGenerate()} { + press(t, content, button) + join(host) + if on := textIn(content); !strings.Contains(strings.ToLower(on), said) { + t.Errorf("%s on a machine that could not be asked does not say so:\n%s", button, on) + } + } +} + // memoryControls are the switch and the box of the Memory section. The screen // holds no other switch and no other box, which is asserted rather than // assumed, or the guard could be pressing a control of another section. diff --git a/internal/guard/testdata/screens/preferences-chosen.png b/internal/guard/testdata/screens/preferences-chosen.png index 8008daf98a6c284fc874eb5c33c7befa032a3e55..16dc4cc1ff32810f6ea8fb85bc03fcff3e3beb08 100644 GIT binary patch delta 84577 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 How much memory one run may take, the plan and the files being written together. Pictures wait for room rather than - all being held at once, and a plan larger than this is refused before anything is written. It applies from the next run, and - nothing in the files changes. + all being held at once, and a plan larger than this is refused before anything is written. Under Automatic, a plan of up to + 2.0 GB is never refused. It applies from the next run, and nothing in the files changes. diff --git a/internal/guard/testdata/screens/preferences.png b/internal/guard/testdata/screens/preferences.png index 5bc9cc2c6ed37fb070e39618def217603febbe4c..42f893dc54fb4558bf8bcb75bc892b23f0d2c54a 100644 GIT binary patch delta 84524 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 Q-utiUXy~cutKACu54_79l>h($ delta 78839 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

x+vEw^DCm$;Nh) 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 A6#xJL diff --git a/internal/guard/testdata/screens/preferences.xml b/internal/guard/testdata/screens/preferences.xml index fc801f98..b44c3a0b 100644 --- a/internal/guard/testdata/screens/preferences.xml +++ b/internal/guard/testdata/screens/preferences.xml @@ -143,8 +143,8 @@ How much memory one run may take, the plan and the files being written together. Pictures wait for room rather than - all being held at once, and a plan larger than this is refused before anything is written. It applies from the next run, and - nothing in the files changes. + all being held at once, and a plan larger than this is refused before anything is written. Under Automatic, a plan of up to + 2.0 GB is never refused. It applies from the next run, and nothing in the files changes. diff --git a/internal/gui/text/locale/en.json b/internal/gui/text/locale/en.json index 079775a6..6ba26057 100644 --- a/internal/gui/text/locale/en.json +++ b/internal/gui/text/locale/en.json @@ -752,9 +752,9 @@ "other": "Only the window changes language. The files it makes, recipes, manifests and the command line do not." }, "PreferencesMemoryScope": { - "description": "Shown on the Preferences screen.", - "hash": "sha256-4535de397c9c", - "other": "How much memory one run may take, the plan and the files being written together. Pictures wait for room rather than all being held at once, and a plan larger than this is refused before anything is written. It applies from the next run, and nothing in the files changes." + "description": "Shown on the Preferences screen. Carries one value, {{.Floor}}, which has to stay spelled exactly that way.", + "hash": "sha256-847b853f524e", + "other": "How much memory one run may take, the plan and the files being written together. Pictures wait for room rather than all being held at once, and a plan larger than this is refused before anything is written. Under Automatic, a plan of up to {{.Floor}} is never refused. It applies from the next run, and nothing in the files changes." }, "PreferencesMissing": { "description": "Shown on the Preferences screen. Carries one value, {{.Tag}}, which has to stay spelled exactly that way.", diff --git a/internal/gui/text/locale/pl.json b/internal/gui/text/locale/pl.json index 9c63ac2c..d4fe2f7d 100644 --- a/internal/gui/text/locale/pl.json +++ b/internal/gui/text/locale/pl.json @@ -149,7 +149,7 @@ "PreferencesKept": { "hash": "sha256-d5cfc5e4bd88", "other": "Między przebiegami to okno pamięta cztery rzeczy: katalog wyjściowy, rozmiar okna oraz wybrane wyżej język i pamięć. Okno wyboru folderu pamięta też ostatni pokazany folder. Nic nie opuszcza tego komputera." }, "PreferencesKeptIn": { "hash": "sha256-65ceb0c15ff4", "other": "Są przechowywane w tym folderze:" }, "PreferencesLanguageScope": { "hash": "sha256-bc4174717ca7", "other": "Język zmienia tylko okno, a nie pliki, które tworzy, przepisy, manifesty ani linię komend." }, - "PreferencesMemoryScope": { "hash": "sha256-4535de397c9c", "other": "Ile pamięci może wziąć jeden przebieg, plan i zapisywane pliki razem. Obrazy czekają na miejsce, zamiast trzymać się w pamięci wszystkie naraz, a plan większy niż to ustawienie jest odrzucany, zanim cokolwiek zostanie zapisane. Działa od następnego przebiegu i nie zmienia niczego w plikach." }, + "PreferencesMemoryScope": { "hash": "sha256-847b853f524e", "other": "Ile pamięci może wziąć jeden przebieg, plan i zapisywane pliki razem. Obrazy czekają na miejsce, zamiast trzymać się w pamięci wszystkie naraz, a plan większy niż to ustawienie jest odrzucany, zanim cokolwiek zostanie zapisane. Przy ustawieniu Automatycznie plan do {{.Floor}} nigdy nie jest odrzucany. Działa od następnego przebiegu i nie zmienia niczego w plikach." }, "PreferencesMissing": { "hash": "sha256-7679a7684a73", "other": "Język wybrany wcześniej, {{.Tag}}, nie jest dostępny w tej wersji. Okno używa języka systemu, dopóki nie wybierzesz ponownie." }, "PreferencesNextStart": { "hash": "sha256-6fee24596599", "other": "Okno mówi wybranym językiem od następnego otwarcia." }, "PreferencesRestartBusy": { "hash": "sha256-1d940383b3e9", "other": "Trwa tworzenie plików. Uruchom ponownie, gdy się skończy." }, diff --git a/internal/gui/text/preferences.go b/internal/gui/text/preferences.go index 4618e8db..e0401efa 100644 --- a/internal/gui/text/preferences.go +++ b/internal/gui/text/preferences.go @@ -1,5 +1,7 @@ package text +import "github.com/donislawdev/TestingFilesGenerator/internal/core" + // The words of the Preferences screen, out of screens.go on 2026-10-27 when // the Memory section took that file past the ceiling on its length - the // screen's sentences are one part of what the file held, and it is split by @@ -29,9 +31,12 @@ func MemoryWayAuto() string { return say("MemoryWayAuto", "Automatic") } func MemoryWayCustom() string { return say("MemoryWayCustom", "Custom") } func MemoryWayOff() string { return say("MemoryWayOff", "No limit") } -// PreferencesMemoryScope says what the memory setting is for, under it. +// PreferencesMemoryScope says what the memory setting is for, under it. The +// floor of the plan under Automatic is said from the constant that sets it, +// the way --help says it. func PreferencesMemoryScope() string { - return say("PreferencesMemoryScope", "How much memory one run may take, the plan and the files being written together. Pictures wait for room rather than all being held at once, and a plan larger than this is refused before anything is written. It applies from the next run, and nothing in the files changes.") + return sayf("PreferencesMemoryScope", "How much memory one run may take, the plan and the files being written together. Pictures wait for room rather than all being held at once, and a plan larger than this is refused before anything is written. Under Automatic, a plan of up to {{.Floor}} is never refused. It applies from the next run, and nothing in the files changes.", + map[string]any{"Floor": HumanBytes(core.MaxPlanBytes)}) } // MemoryAutoIs is what Automatic comes to on this computer. diff --git a/internal/gui/window/generate.go b/internal/gui/window/generate.go index bc7ee54c..bd841478 100644 --- a/internal/gui/window/generate.go +++ b/internal/gui/window/generate.go @@ -237,7 +237,7 @@ type Generate struct { // NewGenerate builds the screen. links are the buttons to the other screens. func NewGenerate(host Host, links ...fyne.CanvasObject) *Generate { - g := &Generate{runner: newRunner(host.Later, host.Remembered), host: host, tips: parts.NewTips(), settingsFolded: true} + g := &Generate{runner: newRunner(host.Later, host.Remembered, host.MachineMemory), host: host, tips: parts.NewTips(), settingsFolded: true} g.runner.settle = watchedSettle(host, g.runner, g.settle) g.runner.offer.through(host) // This screen is one target and draws its boxes under the bare key, so a diff --git a/internal/gui/window/prefmemory.go b/internal/gui/window/prefmemory.go index 46ec1236..2a6e4d6f 100644 --- a/internal/gui/window/prefmemory.go +++ b/internal/gui/window/prefmemory.go @@ -66,9 +66,16 @@ func memoryWayNames() []string { // value that does not read is shown as Automatic, which is what a run does with // it, and the line under the switch says what it was - saving Automatic over it // would erase the person's choice without a press, untouchable rule 7. +// +// The box is emptied first. Forget opens the screen again on nothing kept, and +// a size left standing in the box from before would come back the moment +// Custom is chosen - kept again by the choice, after the person asked for it +// to be forgotten. func (m *memoryPreference) open(kept string) { m.opening = true defer func() { m.opening = false }() + m.size.SetText("") + m.fields.Clear(core.SettingMemory) parsed, err := core.ParseMemory(kept) unreadable := "" switch { diff --git a/internal/gui/window/preset.go b/internal/gui/window/preset.go index 36abb00d..c81c3095 100644 --- a/internal/gui/window/preset.go +++ b/internal/gui/window/preset.go @@ -58,7 +58,7 @@ type Preset struct { // NewPreset builds the screen. links are the buttons to the other screens. func NewPreset(host Host, links ...fyne.CanvasObject) *Preset { - p := &Preset{runner: newRunner(host.Later, host.Remembered), host: host, tips: parts.NewTips()} + p := &Preset{runner: newRunner(host.Later, host.Remembered, host.MachineMemory), host: host, tips: parts.NewTips()} p.runner.offer.through(host) p.runner.settle = watchedSettle(host, p.runner, p.settle) // No readdress here, and that is the boundary of this screen rather than an diff --git a/internal/gui/window/recipe.go b/internal/gui/window/recipe.go index 5ab1ffa0..94ac0ea4 100644 --- a/internal/gui/window/recipe.go +++ b/internal/gui/window/recipe.go @@ -158,7 +158,7 @@ type content struct { // anybody does a press of "Add a batch" to find out what the screen is. One is // also what the single batch screen shows, so the two read as one tool. func NewRecipe(host Host, links ...fyne.CanvasObject) *Recipe { - r := &Recipe{runner: newRunner(host.Later, host.Remembered), host: host, tips: parts.NewTips()} + r := &Recipe{runner: newRunner(host.Later, host.Remembered, host.MachineMemory), host: host, tips: parts.NewTips()} r.runner.settle = watchedSettle(host, r.runner, r.settle) r.runner.offer.through(host) // A refusal about a size belongs on the box the switch is showing. diff --git a/internal/gui/window/run.go b/internal/gui/window/run.go index 1deb216c..f91b1fee 100644 --- a/internal/gui/window/run.go +++ b/internal/gui/window/run.go @@ -81,6 +81,10 @@ type runner struct { // read from, at the start of every preview and run - so a setting changed // there applies from the next run and never to one already going. kept func() Remembered + // machine is the memory this machine gives the program, asked of the same + // host the Preferences screen asks, so the run works to the figure that + // screen says Automatic comes to. + machine func() (int64, error) previewBtn *parts.Button generateBtn *parts.Button @@ -342,8 +346,8 @@ func lineFrom(r *runner, targets []engine.Target, opt engine.Options, err error) showOn(r.status, r.line.said(summarise(targets), opt.OutDir)) } -func newRunner(wait later, kept func() Remembered) *runner { - r := &runner{fields: parts.NewFields(), line: &runLine{}, sections: newSections(), kept: kept} +func newRunner(wait later, kept func() Remembered, machine func() (int64, error)) *runner { + r := &runner{fields: parts.NewFields(), line: &runLine{}, sections: newSections(), kept: kept, machine: machine} // Wired once, here, so that a field added later is covered without anybody // remembering to wire it. See Fields.WhenTypedIn and recheck. r.fields.WhenTypedIn(r.recheck) @@ -440,7 +444,7 @@ func (r *runner) onPreview() { return } opt.DryRun = true - opt.Memory = memoryOf(r.kept()) + opt.Memory, opt.MachineMemory = memoryOf(r.kept()), r.machine // Occupied, and stoppable. Both of those changed on 2026-08-26. // @@ -536,7 +540,7 @@ func (r *runner) previewFinished(res *engine.Result, planned []engine.PlannedFil r.line.measured(opt.OutDir, room.free) } said := r.line.said(exactly(planned), opt.OutDir) + text.AndNothingWrittenYet() - r.say(append([]string{said}, manifestReachNote(res.Record)...)...) + r.say(append(append([]string{said}, manifestReachNote(res.Record)...), runNotesOf(res)...)...) } // formatsOf is what kinds of file the run would produce, each named once. @@ -600,7 +604,7 @@ func (r *runner) onGenerate() { } func (r *runner) startRun(targets []engine.Target, opt engine.Options) { - opt.Memory = memoryOf(r.kept()) + opt.Memory, opt.MachineMemory = memoryOf(r.kept()), r.machine ctx, cancel := context.WithCancel(context.Background()) done := make(chan struct{}) r.settled = done @@ -731,6 +735,7 @@ func (r *runner) runFinished(res *engine.Result, runErr, saveErr error, room dis // sentence both - the second carries the path again (review on #140). said = append(said, text.InstructionsNotSaved(core.Shown(saved.Missed.Path), core.ShownText(text.Refusal(saved.Missed.Err, "")))) } + said = append(said, runNotesOf(res)...) r.say(append(said, notesOf(res)...)...) r.toneOfOutcome(res, runErr) r.offer.theFolder(res) diff --git a/internal/gui/window/runoutcome.go b/internal/gui/window/runoutcome.go index 259367c9..f4e8edd2 100644 --- a/internal/gui/window/runoutcome.go +++ b/internal/gui/window/runoutcome.go @@ -24,6 +24,20 @@ func outcomeText(res *engine.Result, runErr error) string { return text.Written(written) } +// runNotesOf is what a run says about itself rather than about its files - the +// memory it ran in - in the window's language. Said ahead of the notes about +// files, in the order the command line says them. +func runNotesOf(res *engine.Result) []string { + if res == nil { + return nil + } + out := make([]string, 0, len(res.RunNotes)) + for _, s := range res.RunNotes { + out = append(out, text.Sentence(s)) + } + return out +} + // notesOf is what a run says about its files, in the window's language. A // note the run did not remember as a sentence - there is none today - is said // as the manifest holds it. From bfc54dfabe407d6e6c3ec36b7eefbe555c91cc15 Mon Sep 17 00:00:00 2001 From: DonislawDev Date: Wed, 28 Oct 2026 09:44:33 +0100 Subject: [PATCH 9/9] guard: Preferences is named with its one box, and the plan floor is asked where it holds The menu guards' exception for Preferences states the one box the screen now holds - the size of the memory setting - and errors when the count changes. TestAnOrdinaryRunIsNotRefusedByThePlanCeiling plans on a machine of 4 MiB, where half cannot hold the run and the floor is the ceiling in force, and asserts that state. On a large runner half was the ceiling and a floor dropped to nothing went unseen. Three mutation entries repointed to the runner's new shape, nine added for the changes above. Co-Authored-By: Claude Opus 5.5 --- internal/guard/menushape_test.go | 28 ++++++---- internal/guard/mutation/entries.py | 86 +++++++++++++++++++++++++++--- internal/guard/planmemory_test.go | 32 ++++++++--- 3 files changed, 125 insertions(+), 21 deletions(-) diff --git a/internal/guard/menushape_test.go b/internal/guard/menushape_test.go index 949a0999..cccb5d3f 100644 --- a/internal/guard/menushape_test.go +++ b/internal/guard/menushape_test.go @@ -47,7 +47,7 @@ func TestAMenuIsNotDrawnAsWideAsABoxToTypeIn(t *testing.T) { for _, tab := range allTabs() { screen := selectTab(t, content, tab) menus, boxes := menusOn(screen), typingBoxesOn(screen) - if len(menus) == 0 || holdsNoBoxByDesign(t, tab, boxes) { + if len(menus) == 0 || besideNoBoxByDesign(t, tab, boxes) { continue } widest := float32(0) @@ -175,25 +175,35 @@ func menusOn(screen fyne.CanvasObject) []*parts.Chooser { return found } -// holdsNoBoxByDesign says whether a screen is the one whose menus stand beside +// besideNoBoxByDesign says whether a screen is the one whose menus stand beside // no box to type in, so that a guard comparing a menu with the boxes beside it -// has nothing to compare on it. Preferences holds one menu and no box. +// has nothing to compare on it. Preferences holds one menu, the language, and +// one box - the size of the memory setting, in a section of its own, on the +// screen only while Custom is chosen, and held to the width of a number rather +// than to the column. Neither guard's question is about that pair: the two are +// never in one section, the box is not the column a menu could grow to, and +// the language is not a setting drawn anywhere else at another width. // // Named rather than skipped whenever a screen comes back with no box: a screen // that lost its boxes to a renamed part would otherwise pass these guards by -// not looking. Held both ways - the day a box stands on the named screen, the -// name stops being true out loud. -func holdsNoBoxByDesign(t *testing.T, tab string, boxes []*parts.Entry) bool { +// not looking. Held both ways - the day the count of boxes on the named screen +// changes, the name stops being true out loud. +func besideNoBoxByDesign(t *testing.T, tab string, boxes []*parts.Entry) bool { t.Helper() if tab != text.TabPreferences() { return false } - if len(boxes) != 0 { - t.Errorf("the %s screen holds %d box(es) to type in and is still named as holding none", tab, len(boxes)) + if len(boxes) != preferencesBoxes { + t.Errorf("the %s screen holds %d box(es) to type in and is named as holding %d, the size of the memory setting", + tab, len(boxes), preferencesBoxes) } return true } +// preferencesBoxes is how many boxes to type in the Preferences screen holds: +// the size of the memory setting. +const preferencesBoxes = 1 + func typingBoxesOn(screen fyne.CanvasObject) []*parts.Entry { var found []*parts.Entry walk(screen, func(o fyne.CanvasObject) { @@ -301,7 +311,7 @@ func TestNoMenuIsNarrowerThanTheBoxesItStandsBeside(t *testing.T) { checked := 0 inEveryMenuLayout(t, func(l menuLayout) { boxes := typingBoxesOn(l.screen) - if len(l.menus) == 0 || holdsNoBoxByDesign(t, l.tab, boxes) { + if len(l.menus) == 0 || besideNoBoxByDesign(t, l.tab, boxes) { return } narrowest := float32(0) diff --git a/internal/guard/mutation/entries.py b/internal/guard/mutation/entries.py index 2c0658dc..8ada20f8 100644 --- a/internal/guard/mutation/entries.py +++ b/internal/guard/mutation/entries.py @@ -53,8 +53,8 @@ ( "the preview stops warning that the record will be too big to read back", "internal/gui/window/run.go", - "r.say(append([]string{said}, manifestReachNote(res.Record)...)...)", - "r.say(said)", + "r.say(append(append([]string{said}, manifestReachNote(res.Record)...), runNotesOf(res)...)...)", + "r.say(append([]string{said}, runNotesOf(res)...)...)", "TestTheWindowSaysWhenItsManifestWillBeTooBigToReadBack", ), ( @@ -16165,15 +16165,15 @@ # keeps - the setting is on the screen and does nothing. "a preview in the window ignores the memory setting kept on Preferences", "internal/gui/window/run.go", - "\topt.DryRun = true\n\topt.Memory = memoryOf(r.kept())", - "\topt.DryRun = true\n\t_ = memoryOf(r.kept())", + "\topt.DryRun = true\n\topt.Memory, opt.MachineMemory = memoryOf(r.kept()), r.machine", + "\topt.DryRun = true\n\topt.Memory, opt.MachineMemory = core.Memory{}, r.machine", "TestARunPlansUnderTheMemorySettingKeptOnPreferences", ), ( "a run in the window ignores the memory setting kept on Preferences", "internal/gui/window/run.go", - "\topt.Memory = memoryOf(r.kept())\n\tctx, cancel", - "\t_ = memoryOf(r.kept())\n\tctx, cancel", + "\topt.Memory, opt.MachineMemory = memoryOf(r.kept()), r.machine\n\tctx, cancel", + "\topt.Memory, opt.MachineMemory = core.Memory{}, r.machine\n\tctx, cancel", "TestARunPlansUnderTheMemorySettingKeptOnPreferences", ), ( @@ -16202,4 +16202,78 @@ "\t\t_ = err\n", "TestTheMemorySettingIsChosenOnPreferencesAndKept", ), + ( + # Review on #208. Version 1 reads its own group alone again, and an + # unlimited session under a limited slice is planned as the machine. + "version 1 reads the limit of its own group and not the slice above it", + "internal/core/cgroup.go", + "return limitAbove(read, mount, rel, \"memory.limit_in_bytes\")", + "return limitIn(read, path.Join(mount, rel, \"memory.limit_in_bytes\"))", + "TestTheLimitOfAContainerIsFoundInItsControlGroup", + ), + ( + # Review on #208. A group with ".." in it is joined to the mount and + # read wherever it lands. + "a group with a step out of its mount is followed rather than refused", + "internal/core/cgroup.go", + "\t\tcase rel != \"\" && path.Clean(rel) != rel:", + "\t\tcase false:", + "TestTheLimitOfAContainerIsFoundInItsControlGroup", + ), + ( + # Review on #208. Forget leaves the size in the box, and Custom chosen + # after it keeps the size again. + "Forget leaves the forgotten size in the box", + "internal/gui/window/prefmemory.go", + "\tm.size.SetText(\"\")\n\tm.fields.Clear(core.SettingMemory)\n\tparsed", + "\tm.fields.Clear(core.SettingMemory)\n\tparsed", + "TestTheMemorySettingIsChosenOnPreferencesAndKept", + ), + ( + # Review on #208. What a run said about its memory stays in the result + # and never reaches the window. + "a run in the window does not say what it said about its memory", + "internal/gui/window/run.go", + "\tsaid = append(said, runNotesOf(res)...)\n", + "\tsaid = append(said, notesOf(nil)...)\n", + "TestTheWindowSaysWhatARunSaidAboutItsMemory", + ), + ( + "a preview in the window does not say what it said about its memory", + "internal/gui/window/run.go", + "manifestReachNote(res.Record)...), runNotesOf(res)...)...)", + "manifestReachNote(res.Record)...), notesOf(nil)...)...)", + "TestTheWindowSaysWhatARunSaidAboutItsMemory", + ), + ( + # The run asks the system rather than the host the Preferences screen + # asks, so the screen and the run can name two different machines. + "a run in the window asks the system for the machine rather than the host", + "internal/gui/window/run.go", + "\topt.Memory, opt.MachineMemory = memoryOf(r.kept()), r.machine\n\tctx, cancel", + "\topt.Memory, opt.MachineMemory = memoryOf(r.kept()), nil\n\tctx, cancel", + "TestTheWindowSaysWhatARunSaidAboutItsMemory", + ), + ( + "a preview in the window asks the system for the machine rather than the host", + "internal/gui/window/run.go", + "\topt.DryRun = true\n\topt.Memory, opt.MachineMemory = memoryOf(r.kept()), r.machine", + "\topt.DryRun = true\n\topt.Memory, opt.MachineMemory = memoryOf(r.kept()), nil", + "TestTheWindowSaysWhatARunSaidAboutItsMemory", + ), + ( + # Review on #208. The help names a floor other than the one auto keeps. + "--help names a floor of the plan other than the one auto keeps", + "internal/cli/memoryflag.go", + "core.HumanBytes(core.MaxPlanBytes) + \" is never refused\"", + "core.HumanBytes(core.MaxPlanBytes*2) + \" is never refused\"", + "TestTheMemoryFlagReachesThePlanOnEveryCommandThatPlans", + ), + ( + "the Preferences screen names a floor of the plan other than the one auto keeps", + "internal/gui/text/preferences.go", + "map[string]any{\"Floor\": HumanBytes(core.MaxPlanBytes)}", + "map[string]any{\"Floor\": HumanBytes(core.MaxPlanBytes * 2)}", + "TestTheMemorySettingIsChosenOnPreferencesAndKept", + ), ] diff --git a/internal/guard/planmemory_test.go b/internal/guard/planmemory_test.go index 4e91cf6d..2571b187 100644 --- a/internal/guard/planmemory_test.go +++ b/internal/guard/planmemory_test.go @@ -91,20 +91,40 @@ func TestAPlanTooBigToHoldIsRefusedWhileItIsBuilt(t *testing.T) { // never read again. The full mutation run of 2026-09-16 found exactly that - // a 2 KB ceiling green under four thousand files. At ten thousand the second // reading lands on four thousand planned files that nothing can collect. +// +// On a machine whose half cannot hold the run, so that the floor of auto is +// the ceiling in force. On any machine of more than four gigabytes half is +// above the floor, and a floor dropped to nothing went unseen there - the +// mutation run on #208 found exactly that. Asserted rather than assumed: half +// of the same machine, set as a size, refuses the run. func TestAnOrdinaryRunIsNotRefusedByThePlanCeiling(t *testing.T) { const files = 10000 + const machine = 4 << 20 targets := []engine.Target{{ ID: "files", Format: "txt", Sizes: engine.Uniform(files, 4096), }} + opt := engine.Options{ + OutDir: "out", + ManifestName: "manifest.json", + MachineMemory: func() (int64, error) { return machine, nil }, + } - planned, err := engine.Plan(targets, engine.Options{ - OutDir: "out", - ManifestName: "manifest.json", - // The zero value of Memory is auto, which is what a caller that sets - // nothing gets - two gigabytes of ceiling at the least. - }) + half, err := core.ParseMemorySize(core.HumanBytes(machine / 2)) + if err != nil { + t.Fatal(err) + } + withHalf := opt + withHalf.Memory = half + if _, err := engine.Plan(targets, withHalf); err == nil { + t.Fatalf("ten thousand text files planned under %s, half of this machine, so the floor"+ + " is not what holds the run below and this guard asks nothing of it", half) + } + + // The zero value of Memory is auto, which is what a caller that sets + // nothing gets - two gigabytes of ceiling at the least. + planned, err := engine.Plan(targets, opt) if err != nil { t.Fatalf("ten thousand text files were refused under the real ceiling: %v", err) }