Skip to content

chore: land verified fleet candidate - #50

Merged
charlieijk merged 10 commits into
mainfrom
codex/fleet-final-20260823
Aug 23, 2026
Merged

chore: land verified fleet candidate#50
charlieijk merged 10 commits into
mainfrom
codex/fleet-final-20260823

Conversation

@charlieijk

Copy link
Copy Markdown
Owner

Lands the locally verified fleet candidate from immutable HEAD 5d545eb (tree 3b4b19350c2f3329e8925059c7c9cc7754477ef3). Supersedes open PRs #49, #48, #47, #32, and #31 after post-merge tree verification.

charlieijk and others added 10 commits August 22, 2026 20:20
Strata's authoritative simulation is a stdlib-only Go package, so it runs
anywhere a Go toolchain does -- including a headless Colab VM, where the
browser client and the Wails desktop host cannot run at all. This adds the
harness and the notebook that exploit that.

`cmd/strata-simtrace` advances `sim.Step()` a fixed number of times and
writes one CSV or JSONL record per tick straight off `sim.Snapshot`, with an
optional per-tick sha256 over the whole snapshot (mirroring the replay
contract's authoritative hash, so agreement covers every agent position,
energy and overlay cell rather than the summary metrics alone). It decides
nothing itself. It rejects seed 0, which `sim.Reset` reads as a wall-clock
seed, and an unknown preset name, which the engine would otherwise answer
silently as `focus-agent`.

`notebooks/01_simulation_dynamics.ipynb` installs the Go toolchain that
`go.mod` pins -- read from the file, asserted, never hardcoded -- clones via
a Colab secret and strips the token from the remote, then measures two
things on 10 seeds of the `ecosystem` preset:

- Determinism: a 2500-tick trace is byte-identical across two processes at
  seed 101 (sha256 e10be14e...), all 2500 per-tick snapshot hashes match,
  and a 1000-tick run is a prefix of the 2500-tick one. Against seed 202
  every one of the 2500 ticks differs, first difference on tick 1, no hash
  collisions -- while populations stay within 24 agents. The seed decides
  which agent stands where, not how many the world carries.
- Dynamics: 1000 agents overshoot to 1004-1025, crash through half the
  starting count at tick 1672 +/- 12, then hold a plateau of 241-288 agents
  (CV 6.1%) with a fitted tail slope under 0.1 agents per 1000 ticks and no
  extinction in any seed. Mean energy per survivor climbs from ~85 to
  2202-2787: nothing caps it, and reproduction is gated on crowding and
  stress as well as energy.

Results carry a provenance stamp and land in a git-ignored
`notebooks/results/`; a committed measurement quietly becomes a stale claim
the next time the preset is tuned.
The dynamics section claimed births roughly match deaths on the plateau, but
the only counters in the table were cumulative and therefore dominated by the
crash that precedes it -- 99-418 births against 858-1130 deaths says nothing
about whether the tail is held or slowly draining.

Difference the counters across the tail window instead. Across the ten seeds
the plateau runs 1198 births against 1181 deaths, a 1.4% imbalance, which is
what makes it an equilibrium rather than a slow decay.

Also corrects the prose on the fitted tail slope: it averages +0.09 agents per
1000 ticks, but one seed reaches 2.31, so "a fraction of an agent" was true of
the mean and not of the sample.
CI's golangci-lint run flagged the unchecked fmt.Fprintln (errcheck). The
metadata line carries the run's identity -- seed, preset, toolchain -- so a
silent failure to write it would leave a trace with no provenance attached,
which is exactly the failure the notebook's stamp exists to prevent. Return
the error.
…reset [skip ci]

Every Dependabot PR rebase fires ci.yml on billable minutes; with 165 open
PRs fleet-wide and ~$8 of August budget left, version updates are paused by
setting open-pull-requests-limit: 0. Existing PRs stay open for later triage;
security updates are unaffected.
@coderabbitai

coderabbitai Bot commented Aug 23, 2026

Copy link
Copy Markdown

Warning

Review limit reached

Next included review available in 59 minutes.

View limit details

Limit details: You’ve used the included review currently available.

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Free

Run ID: 1c1371c9-3745-4278-9705-d6d36d04e8c1

📥 Commits

Reviewing files that changed from the base of the PR and between 2f53822 and 5d545eb.

⛔ Files ignored due to path filters (2)
  • site/package-lock.json is excluded by !**/package-lock.json
  • web/package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (12)
  • .github/dependabot.yml
  • .gitignore
  • AGENTS.md
  • CHANGELOG.md
  • README.md
  • cmd/strata-simtrace/main.go
  • cmd/strata-simtrace/main_test.go
  • notebooks/01_simulation_dynamics.ipynb
  • notebooks/README.md
  • site/package.json
  • test_flask_app.py
  • web/package.json

Note

🎁 Summarized by CodeRabbit Free

Your organization is on the Free plan. CodeRabbit will generate a high-level summary and a walkthrough for each pull request. For a comprehensive line-by-line review, please upgrade your subscription to CodeRabbit Pro by visiting https://app.coderabbit.ai/settings/billing.

Comment @coderabbitai help to get the list of available commands.

@charlieijk
charlieijk merged commit d80ae6b into main Aug 23, 2026
8 checks passed
@charlieijk
charlieijk deleted the codex/fleet-final-20260823 branch August 23, 2026 20:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant