19 KiB
Schema8 core source handoff
Current root execution and review — 2026-09-11
Root completed the corrected required depth128/129 and call32/33 regression
(1/1), the complete analysis:: filter (28/28:25 analysis plus3 topology),
numeric26/26, and strict core all-target Clippy with -D warnings (exit0,3m37s).
The default Windows test stack and required limits were unchanged. Independent
analysis_core_review found no material new correctness/resource defect in the
iterative checker/admission correction; Gitea342
records its conclusion. Source hashes match the correction freeze below.
Root's durable harness/release-analysis-core-iterative-gate-20260911.md and
harness/release-analysis-core-iterative-review-20260911.md record execution and
independent scope. Immutable root .local/analysis-core-iterative-gate-20260911/
contains274-input manifest SHA256
28D6CEAE5C52765F5DB5CB411D7E42EDAB91359C9E351663315BC4B7F1FF2B7A
and corrected test executable SHA256
2B4EE8BA63B20415B352E084314CC7504E778C093598B9564C6EA4F56BC921C9.
Clippy log SHA256:
6FE529BBA6A761FEDACB1A3933BB86E4FB644D8CC192F57FB0F45EFA5B9ABFFF.
This supersedes the awaiting-rerun status below, preserving the first actual failure. It does not close full core integration, bounded codec/lifecycle/output, source8, evaluator, UI/REST/CLI parity, libraries or release acceptance. The source remains isolated from root's runnable schema7 application.
Historical stack-overflow correction source freeze — 2026-09-11
Codex-956atf /root/analysis_core_resume, renewed debugging lease after root's actual first Windows gate. The same dedicated worktree/branch remains at HEAD b96ff3935ab3f36b7144566e46559a05a29292a5 plus uncommitted corrections. The first candidate failed; this replacement is frozen source awaiting root's rerun. No compiler was run by the worker.
Root's original cargo test --locked -p oa-core --lib analysis:: -- --test-threads=1 compiled warning-free in3m34s, discovered28 tests, logged16 named passes, then aborted at analysis::tests::logical_depth_and_call_depth_have_exact_boundaries with Windows STATUS_STACK_OVERFLOW / 0xc00000fd. Preserve the original root .local/logs/analysis-core-first-20260911.log (SHA256 84C6B63039472363412B66C7A24DE825A846518725EC9F7436C252603AEF54FC) and root-reported binary target/debug/deps/oa_core-a7a95d666500007c.exe (SHA256 548850D3606C9B4A58859677E86A1C1813EB6E71785C529F771E04125E7A33AF). Gitea issue1 comment305 records the actual failure. Neither compile success nor the16 earlier passes establish a full gate pass.
The test-count discrepancy is resolved: Rust's substring filter analysis:: selects25 schema8 tests plus three existing topology_context::analysis::tests, declared through topology_context/analysis.rs into analysis_tests.rs. The earlier prepared25 was the schema8-module count, not the full filter count; the saved22 would likewise have selected25 with those topology tests. The current corrected filter still expects28, with no ignored/removed or additional test functions.
The large recursive Checker::expression was the concrete source-level suspect; no profiler/frame-size measurement established the exact abort instruction. It is now an explicit continuation machine with at most128 heap frames and one returned type. Each frame borrows its Expr and any calculation definition and owns only fixed-size resolved types/handles. Lists and calls schedule one ordered child at a time. The rejected129th frame is never allocated, while its entry event is still charged to preserve failure precedence. Rust call depth no longer scales with Expr depth, and typechecker-frame destruction does not destroy the borrowed Expr tree.
The continuation states retain left-before-right operands, condition-before-both-branches, Sum initial-before-values, AsKind target resolution-before-operand, declaration-order call arguments, contextual empty-list typing, branch type equality and existing node/key/argument meter precharges. No numeric operator semantics, fixed KindHandle, lowerable1,000,000-event ceiling, accepted128-depth bound or stored schema was changed. No stack-size override, release-only workaround or ignored test was introduced.
The original failing test now includes diagnostic phase markers and unary128/129, mixed Binary/If/Call/Power/Unary128/129, contextual empty-list If/Call128 and definition-call32/33 boundaries. The existing parameter-purity test now makes call declaration order versus UUID order and binary left-to-right error precedence observable through distinct invalid-reference errors. The already compiled meter tests retain their exact event expectations.
| Path | SHA256 at correction freeze |
|---|---|
crates/oa-core/src/analysis/typecheck.rs |
831F14346BBAE83FBDEEB744F9F29460FAB13A8315645FAA6CE94D0B60B1516F |
crates/oa-core/src/analysis/tests.rs |
9FB30B28E305CB00E7C39204912F8311E96AA92D0334CE4A73FB08FADDFE83C5 |
crates/oa-core/src/analysis/admission.rs (unchanged since first candidate) |
5F85EAA868AC43C4819C98556281D8226F9C0E2A4B11E5C97CF24D855D2127AE |
Standalone installed rustfmt2024 check and git diff --check pass for the correction. Root's next commands from this worktree, using its established toolchain/cache:
cargo test --locked -p oa-core --lib analysis::tests::logical_depth_and_call_depth_have_exact_boundaries -- --exact --test-threads=1 --nocapturecargo test --locked -p oa-core --lib analysis:: -- --test-threads=1(28 expected).cargo test --locked -p oa-core --lib analysis_numeric::tests -- --test-threads=1(26 expected).cargo clippy --locked -p oa-core --all-targets -- -D warnings.
Admission's structural Expr/reference walks and dependency/case graphs are already iterative. Inspected architectural index construction borrows analysis records and clones only ordinary step-ID vectors; its analysis-reference branch avoids cloning Expr-bearing elements. This identifies no further recursive Expr traversal in the immediate admission path, but is not execution or stack/RSS evidence. Derived Expr Clone/Debug/equality/Serialize/Deserialize/Drop, partial decode teardown, command cloning, output expansion and full codec/lifecycle/source parity remain the separately documented production risks. Default Serde recursion rejection remains unchanged. Root owns execution, follow-up findings, integration and release publication; there is no complete schema8 transport or release claim.
Historical first resumed source freeze — 2026-09-11
Codex-956atf /root/analysis_core_resume, resumed by root after the user returned. Source frozen for root's first compilation gate; still uncompiled staging. The dedicated worktree remains C:/Users/User/Documents/Git/ARCADIA-Studio/.local/analysis-core-worktree-20260911, branch codex/analysis-core-20260911, HEAD b96ff3935ab3f36b7144566e46559a05a29292a5. No commit was made by this worker. The reboot record below is retained as historical evidence; this section supersedes its stopped/pending-static-review status only.
The resumed delta changes three Rust files plus this report:
| Path | SHA256 at resumed freeze |
|---|---|
crates/oa-core/src/analysis/admission.rs |
5F85EAA868AC43C4819C98556281D8226F9C0E2A4B11E5C97CF24D855D2127AE |
crates/oa-core/src/analysis/typecheck.rs |
1AC3A92E97B886F4BFAC31BA22C182347131D0A82BEDBF6B2F2073D02AD5A6E4 |
crates/oa-core/src/analysis/tests.rs |
9EC9C12C618600039BC2DC0A9B9BF6DC5378FD4D8749E21EDEC699EEE06AB0E2 |
admission.rsprecharges expression child slots before queue growth, rejects visited-plus-pending closure overflow before allocation, meters initial closure queue entries, text spans and scoped parameter names, and charges each relation-subject traversal hop. Known indexed element layers use direct map lookup. This closes analysis-specific unmetered work; it does not bound the existing architectural validator, wire decoding or recursive lifecycle operations.typecheck.rsgroups owner/field/layer/parameters inBindingContext, removing the eight-argument helper. Call arity remains an O(1) check; the complete scoped-key scan is precharged before lookups, then declaration-order argument lookup/type work is separately charged. Actual parameter identity and all-branch checking are preserved.- Three new meter tests exercise 1,024-wide List/Call precharge, a 64-parameter malformed/valid Call at exact work boundaries, and 64 relation hops with terminal element/missing/cyclic endpoints. The existing real-Project aggregate-limit test also checks text-byte accounting and exhaustion before invalid text inspection. These relation-chain fixtures deliberately test malformed input before architectural admission, not newly accepted architectural relations.
Expected focused count is now25: the saved22 plus three new meter tests (21 actual-Project tests and four meter tests total). Command from this worktree: cargo test --locked -p oa-core --lib analysis:: -- --test-threads=1. Root owns the toolchain/cache configuration and all execution. Follow with the changed numeric-helper regression filter analysis_numeric::tests, then strict core Clippy; the earlier26 numeric passes apply to7d14bd0, not this schema8 candidate.
Read-only review covered existing persistent-enum/Project constructors, command/reference call sites and the analysis lifetime/borrow paths. Standalone installed rustfmt --edition 2024 --check passes for all three changed Rust files; git diff --check is clean. No Cargo/rustc, test, Clippy, native, Linux or memory/stack measurement was run by this worker. No root-checkout files, manifests, lockfiles, ledgers, fixed KindHandle, numeric semantics or other worktree-owned source changed during resume.
The lowerable aggregate1,000,000 static-event ceiling, nominal/exact arithmetic, baseline/case/unused-branch checks and scoped parameters remain settled. Default serde_json recursion rejection stays enabled. Schema8 codec/allocation/output/lifecycle closure, source8, evaluator, package environment, capture, API/CLI/UI and historical/transition parity remain pending; this is not a runnable release or complete product transport. Gitea issue1 comment291 records the resume lease; root owns integration/publication and any subsequent compiler-driven corrections.
Historical reboot freeze
Codex-956atf /root/requirements_delta, 2026-09-11. Frozen immediately at the user's reboot checkpoint; uncompiled work, not a runnable product. Do not resume without root follow-up after reboot.
Worktree: C:/Users/User/Documents/Git/ARCADIA-Studio/.local/analysis-core-worktree-20260911, branch codex/analysis-core-20260911, base 7d14bd0dd1cf4a2293c00c185573fd4a7fc364ae. All edits in this assignment are in that isolated worktree. Root retains commits, pushes, builds, integration and the original checkout. No manifests, lockfile, source8 grammar, evaluator, server/CLI/UI, generated schemas, ledgers or prior frozen reports were edited.
Coherent implementation present
- Schema8
Project.definitionsis required. Local quantity-kind, unit and pure calculation definitions share global UUID/alias/header identity;ParameterIdis scoped to its calculation.DefinitionRef::Localis the only admitted reference variant. Imported packages are not simulated. - Three explicit
SharedBodyrecords implement property-owned bases, subjectless or subject-bearing one-level cases, and shared checks.Binding::{Unbound, Expression}has no persisted Clear/default-case state. The closed expression/type vocabulary is inanalysis/types.rs. analysis::admit(&Project, AdmissionLimits)returns the resolved kind/unit/calculation environment, accepted limits and usage.effective_binding(property, ModelBaseline|Case(id))returns the selected binding and its origin; it does not evaluate. Private boundedKindHandlecontains project and definition UUIDs and is valid within one admitted environment.- Static checking uses pure
NumericTyperesult helpers also used byNumericValue. It checks every stored branch, pure parameter scope, exact call arguments, declared/display types, same-layer subjects/property reads/case targets, affine kinds/units, flat homogeneous lists, acyclic calculation/effective-property dependencies, logical depth128, call depth32 and stored closure65,536. Checks may be Boolean false; supported runtime domain failures such as 0/0 do not become typing errors. - Root ratified the provisional static ceiling1,000,000 events, explicitly lowerable and separate from runtime work. One meter spans the document and every effective case; it latches on exhaustion. Final ceiling acceptance still needs a measured gate. This meter is analysis work accounting, not a bound on all existing architectural validation or JSON allocation.
- Commands add Create/EditDefinition, SetAnalysisBase, SetAnalysisOverride and ClearAnalysisOverride. General element creation/editing remains the actual shared command path. Reidentification rewrites property/local-definition references and case keys, preserves scoped parameters, and rejects colliding keys before mutation. Deletion retains live analysis dependencies, so the same transaction must repair or remove them. Existing Session history/provenance is reused.
- Frozen schema5/6/7 JSON envelopes migrate with an empty catalog and reject new fields/kinds. Existing descriptive units/constraints remain strings.
language.rscontains only old-source compatibility/refusal and record-count glue. Explicit guards refuse header-only semantic review or transition of analysis records.
Evidence and remaining risks
**22 tests are prepared, zero were compiled or executed by this worker:**21 actual-Project tests and one static-meter test. The independently specified complete17-UUID response-budget fixture covers shallow JSON reopen, base/case/Unbound selection, commands/history, identity domains, atomic deletion repair, case-only cycles, unused branches, parameter purity, types/units, R6/runtime agreement, lists, logical/call/closure boundaries, aggregate static work, transport record counts, closed wire input, old-schema metadata preservation and unsupported review/transition refusal. The expected mixed-unit evaluation totals are not claimed; there is no evaluator in this lease.
Standalone rustfmt parsed/formatted the new modules, migration_v7 and changed numeric quantity file. A read-only git diff --check before the stop request was clean. Neither is a compile/test gate. Root reported the earlier numeric foundation at7d14bd0 passed26 tests; that result does not cover this WIP or its modified numeric helper code.
The default serde_json recursion guard is deliberately unchanged. Some programmatically admitted depth128 trees cannot reopen through the current decoder. Pretty serialization can exceed64MiB while semantic node limits still fit. Header Value allocation and per-Exact String/BigInt decoding precede aggregate static admission. Clone/Serialize/Debug/Drop and command cloning need the coherent bounded-codec/lifecycle gate. See the independent decoder review harness/release-analysis-decoder-review-20260911.md in the original checkout (Gitea#257). Do not publish a runnable schema8 product before codec/output closure.
Source8 parsing/formatting/update/history parity is pending: the model/schema header is8 while the existing source parser still accepts only3..7. Existing full source regression tests therefore cannot be represented as passing. Old synthetic tests that serialize a current Project after merely changing its schema number may need to remove the new catalog field to represent a real frozen old envelope. Generic factory creation refuses analysis kinds because required semantics cannot be defaulted.
Compiler/borrow/exhaustive-match checks remain outstanding. Static review was interrupted: the private typechecker binding helper has8 arguments and may trigger strict Clippy's argument-count lint; grouping its located binding context was the next cleanup under consideration, not applied. Review the static event precharge coverage of the call-argument arity/key scan before treating its weights as final. Existing architectural validators still have their own scaling costs. No claim of full decoder safety, source parity, frozen export, package compatibility execution, approximate mathematics or finished release capability is made.
Exact edited paths
All paths below are relative to the isolated worktree, not the original checkout. This report is the only additional edited file beyond this20-file inventory.
| Path | SHA256 at stop |
|---|---|
crates/oa-core/src/analysis.rs |
7C197D80CD6C5A17345E9ABD20107CF9EE1887A77596144A8FAADB3253A9664B |
crates/oa-core/src/analysis/admission.rs |
60661ADEBFBDFA2A04A354A106D3DB3F81821EF4A50786A6CF611988666FDB85 |
crates/oa-core/src/analysis/references.rs |
FE50EDC049B9900D91CADE3F58D15ACA4101211C39BB090317F548259D634529 |
crates/oa-core/src/analysis/resolve.rs |
67AAA97DA8190DEDE71F0E2F98F1884A1DA38596B4B2DC6F8D61FF4377BDC80F |
crates/oa-core/src/analysis/typecheck.rs |
23F13E0EF971E794210FB3886178E1145661E4BC668A50B753F7BAAA9591035E |
crates/oa-core/src/analysis/types.rs |
CFD03E2B01D34AE6979403458D9861B7B1252383A2313CB56133AB64167F72B2 |
crates/oa-core/src/analysis/tests.rs |
7137A47E994E629D7F349D023F32C10FD0563261678E59878A23E3BF6A101F05 |
crates/oa-core/src/analysis_numeric/quantity.rs |
B9F23A9485F8BD913722023C35FB9D8917C9F160078655B3A5C52C8F7F12AB94 |
crates/oa-core/src/language.rs |
B65098321ECF79E4DC1182A7FAB7BAFEEC0A238BB56153E81782F04FAB838558 |
crates/oa-core/src/lib.rs |
C9BF3462A57A465B6CC7ECD7866E0D331B35F299E89D9C917E0A4587BB1DCD89 |
crates/oa-core/src/migration_v4.rs |
BF4056DA11AC4F27627320742539CC2408ED42334106F3068C432FF70C62DB25 |
crates/oa-core/src/migration_v7.rs |
474F4CEBDD343A7EECDF243149BBCBF08E12EAA05B8532BF2593705287017B30 |
crates/oa-core/src/model.rs |
1C06BCC4AA7ABFEF89876C3A001171C742558D664612CF36152AC0AA52BC7BAF |
crates/oa-core/src/persistence.rs |
30B05FA464C49629080F3E20C6D3DA5226858A99B7C4C9554356847F8A5975EE |
crates/oa-core/src/references.rs |
63CD8655F67D919CC8F6B796F4CEC42D7B020AA37880E50F19190AAB8B0029A3 |
crates/oa-core/src/semantic/catalog.rs |
47D74ACC4862139BA835DB3D6B769411E27860A99426A7F03EDEA26F44F7F7B3 |
crates/oa-core/src/session.rs |
06115011BC86F0C95BBBE6D14BDAEDD7B83A66C0104DB186900B0F047B0F9C43 |
crates/oa-core/src/transitions.rs |
127E429BCA4B2EA9A189ECE7E7B6DFD05A30B5FDEE98B2D10288A6F7C17B5931 |
crates/oa-core/src/validation.rs |
E4C61F5ABB22AE3E595E16E93472E4364CDE4DB9064EC6DF826228C3D5962E42 |
crates/oa-core/tests/source7_contract.rs |
0702D3BD0173DEF4F67770458E4AF2B23F213FD5938EE70E3AE0042897EF5F1E |
Next authorized gate after reboot
Root first preserves/pushes this WIP and confirms the exact checkout. After root explicitly resumes work, the proposed narrow root-owned command from this worktree is cargo test --locked -p oa-core --lib analysis:: -- --test-threads=1, using the established toolchain and root-selected target directory. Fix actual compiler/test findings, rerun modified numeric tests, then strict core Clippy; only then continue independent review and coherent bounded codec/source8/evaluator integration. This worker has not run that command and will remain stopped.