Done

August 5, 2026 · View on GitHub

Append-only, newest first. Format: date — id — title — outcome (commit/PR/plan link). Migrated from studio tracker 2026-07-31.

  • 2026-08-04 — plato-442 — Builders for the spatial structures, hulls and Delaunay — done (decision f9948e96, sort d52bda7b+b68442d2, builders 63868232, TS backend f23d6519); SortedIndices/Sort + ConvexHull/BuildBvh/BuildOctree/BuildLooseOctree; executed via foundation tests (37/37) and geometry-samples Node suite (26/26); Delaunay + kd builders deferred per decision
  • 2026-08-04 — plato-439 — geometry-samples: rebuild the TS samples on stdlib types, port missing builders back to stdlib — done (b7f6a682 + follow-up); samples rebuilt on stdlib types, four gaps filled in stdlib/geometry, six writer defects fixed, six filed
  • 2026-08-04 — plato-445 — Extend the stdlib comparison with OCCT, Wolfram, and Three.js — done (0ce707b2)
  • 2026-08-03 — plato-436 — TypeScript writer: Arr is a lazy view with no memoization, so library members are super-linear in their own iteration counts — done (7dcd7d06) — Arr memoizes; five cases at arithmetic cost; demo workarounds deleted
  • 2026-08-03 — plato-435 — Compare Plato stdlib with external numerical and geometry libraries — done (73fb760b)
  • 2026-08-03 — plato-426 — Cloth simulation: mass-spring and PBD cloth over the particle vocabulary — done (library 819033e1, demo+shims 475cad2b); solver verified stable; findings filed as plato-437
  • 2026-08-03 — plato-423 — Remeshing: subdivision, decimation, isotropic remeshing and smoothing — done (library 9b4b732c, demo+shims 475cad2b); bodies executed via the browser demo; findings filed as plato-436
  • 2026-08-03 — plato-424 — Finite element analysis vocabulary: elements, assembly, and a linear-elastic solve — done (library 4a7c936f, demo e4c8a703); all closed forms reproduced in the browser; prelude eager fix in the demo commit
  • 2026-08-03 — plato-425 — Rigid body dynamics: fill in the future-tier integrator, contacts and constraints — done (library b5cd0faa, demo 2834a0d6); solver verified stable; defects filed as plato-434
  • 2026-08-03 — plato-421 — 3D lattice structures: unit cells, tilings, and lattice operators — done (library ea7795f4, demo 25ce082b); findings filed as plato-431/432/433
  • 2026-08-03 — plato-422 — Blue noise and low-discrepancy sampling: implement the declared point-pattern types — done (library e1ac6627, demo e76b1bb4); findings filed as plato-430
  • 2026-08-02 — plato-411 — Signed distance fields do not say whether their values are exact, a lower bound, or neither — done (82cff5a3)
  • 2026-08-02 — plato-407 — Simplify rules for duplicated bodies an interface already covers — done (79cde6b)
  • 2026-08-02 — plato-404 — plato_simplify SIM001 rewrites tuples outside return position, breaking the type check — done (88888d7)
  • 2026-08-02 — plato-406 — plato_check style gate produced findings for retired rules, then stopped — done (studio 72472f8)
  • 2026-08-02 — plato-405 — plato_simplify has no compact result mode: a full-corpus run exceeds the MCP result budget — done (studio d7651d1)
  • 2026-08-02 — compiler-403 — ExistentialConceptCheckerTests point at pre-rename fixture filenames — done (051f538) - fixtures renamed to the post-sweep interface names; PlatoTests 247/247
  • 2026-08-02 — compiler-399 — Single-field mirror emits unsound implicit operators in generated C# — single-field mirror emits the unwrap only; wrap suppressed (1105851)
  • 2026-08-02 — stdlib-400 — Corpus-floor assertion stale after the stdlib file consolidation — done (c42dea5) - floor is now MinCorpusFiles, a collapse guard
  • 2026-08-02 — stdlib-398 — Law packet moved into stdlib/ breaks the checker ratchet — done (c42dea5) - forward corpus is tier-scoped; packet stays at stdlib/tests
  • 2026-08-01 — repo-396 — Retire bonepile All/Any LINQ shadows; guard Corpus roots — done (14e8311)
  • 2026-08-01 — plato-376 — Interface obligations on a GENERIC type can never be discharged — done — pairing fix landed in ConcreteType.ImplementationFor (positional one-way unification, tests in tests/PlatoTests/LinterGenericObligationTests.cs); the Array2D/Array3D half was cleared by plato-378 (91a7f57); the last box (split the remaining track blocker) was discharged by filing plato-382, now itself implemented and closed (37e3231 grammar/AST, 784873f checking, 5595c2b emission, 77e47d3 stdlib, 06e9d36 function bounds, 8f0135e ADR/close) — Tween now declares where T: Interpolatable with a real Sample body, LINT001 across the three shipping tiers is 0, ratchet 33 -> 32. Resolution amended 2026-08-01 to retract its stale forward-looking claims about Tween.
  • 2026-08-01 — plato-382 — Constrained type parameters on concrete types, and constraint-carrying C# emission — done (37e3231 grammar/AST, 784873f checker, 5595c2b emission, 77e47d3 stdlib, 06e9d36 function bounds); ADR tracker/decisions/2026-08-01-declared-type-parameter-bounds-are-verified-and-emitted.md
  • 2026-08-01 — plato-393 — Where-clause bounds on library function declarations — done — where-clause bounds on library function declarations, verified at the call site (CHK206) and emitted as the C# where clause; DeCasteljau collapsed from five overloads to one. Work is in the tree UNCOMMITTED (mission ran under a no-commit rule); follow-up plato-394 filed.
  • 2026-08-01 — repo-392 — Repoint Navigation test corpus at tests/stdlib-tests; unshadow LINQ in test namespace — done (f994bf7)
  • 2026-08-01 — docs-391 — AGENTS.md still documents the retired --methods / --no-properties flags — done (83df492)
  • 2026-08-01 — compiler-387 — Property-free C# emission becomes unconditional — done (7d825b5; writer half landed in bf50cbf via a concurrent bulk commit)
  • 2026-08-01 — plato-383 — default(String) wraps a null system string; every observation throws — done (d826f74)
  • 2026-07-31 — stdlib-377 — Move animation tracks + skeletal animation to stdlib/future; exclude future from codegen and lint by default — done (abe4db4); future tier is declared-only — parses and type-checks, not linted, not converted to C# without an explicit flag
  • 2026-07-31 — plato-375 — plato-321 matrix obligation bodies break forward codegen: CS0736 static-vs-instance + CS0111 against handwritten intrinsics — fixed; forward conformance PASS 44/0/3, lint ratchet 44
  • 2026-07-31 — plato-321 — Burn down forward-stdlib LINT001 interface obligations (228 remaining) — 192 -> 8 LINT001; residue is plato-376 (generic-type obligation pairing). Batches c25e0bc d3f5047 11af469 01153a4 debb02c 8ddc9ab 249f9bc
  • 2026-07-31 — plato-371 — Interface hierarchy export and redundant inherits lint — done (ff7b087)
  • 2026-07-31 — plato-023 — TIR scalar lowering pass + type-checker completion — done: Mission 2 (TirScalarLowerer S0-S3, ScalarEraseAnalysis deleted) shipped; split leftovers to plato-369 (checker→0) and plato-370 (--scalar=double)
  • 2026-07-30 — plato-367 — primitive keyword: declare compiler-assumed types with primitive instead of type — primitive keyword shipped: parakeet 817e636 (grammar+CST), Plato 571f077 (IsPrimitiveDeclaration flag + stdlib/foundation/primitives.plato, 20 decls). lint --strict over the 4 stdlib tiers: exit 0, 786 files, 0 parse / 0 resolution / 0 lint errors, ratchet 229 unchanged. Object + Array2D/3D stay 'type'.
  • 2026-07-30 — plato-363 — Legacy golden drift + CS0557 conformance breakage — closed WITHOUT fixing: legacy conformance suite (Ara3D.SDK.ConformanceTests + regen-conformance.ps1) and golden diff-gate (regen-generated.ps1) RETIRED per decisions/2026-07-30-retire-legacy-conformance-and-goldens.md; Generated/ projects demoted to ordinary cached output; check-frozen-v1 tripwire kept; plato-308 (forward suite green) promoted to p1 as the replacement coverage.
  • 2026-07-30 — plato-362 — Type-token members: static fills satisfy instance obligations, both access surfaces — shipped: _ fill + instance obligation now emits static + explicit interface impl pair (CSharpConcreteTypeWriter); Zero/One intrinsics for Number+Integer, Integer limits in Intrinsics V2/V3; Color/Complex/Proportion/Percent/Probability/fixed-matrix fills flipped to _; LINT012 now flags only the reverse direction. Forward conformance 91 -> 85 errors (A-B measured), Zero-family class gone; fast gate PASS. Follow-up filed plato-363 (pre-existing golden drift).
  • 2026-07-29 — plato-327 — LINT014: identifier that is both a struct field and a no-arg library function (rendering-ambiguity trap) — LINT014 landed (Plato dba7429): flags a name that is both a struct field and a no-arg library function on an unrelated receiver. Info severity, out of the ratchet. Blast-radius pre-measurement for plato-323 item 2: stdlib 280 findings / 47 names (Amount 50 largest), stdlib-legacy 111 / 35. Gates: PlatoTests 169/0, lint both folders exit 0, check-stdlib-fast PASS, check-frozen-v1 clean.
  • 2026-07-29 — plato-294 — Forward-stdlib generated C# does not compile: 332 structural errors (F-bounded Self, type-arg mismatches) — duplicate of plato-308 (same bug, filed same day by a concurrent session; 294's 332 = 308's 324 plus the 8 CS0736 already fixed there). Unique content merged into plato-308: plato-291 provenance, degraded-body regression box (44 at filing), Stage-2 -Test flip, per-shape measurement discipline, writer-collision warning.
  • 2026-07-29 — plato-324 — Face interface: unify TriangleFace/QuadFace corner access + fill indexed-mesh interface obligations — shipped (Plato 2e1e31b): interface Face (Value+Hashable+Indexable), Count/At/Vertices + Edge/Edges/HasVertex/FanTriangles in meshes-faces.library, all MeshElementCounts/TriangulatedGeometry3D/Meshable2D/3D obligations for TriangleMesh3D/2D+QuadMesh3D in meshes-indexed.library; fast gate PASS
  • 2026-07-29 — plato-311 — Interface in type position (existential) has no defined C# lowering — Dual-interface lowering landed (WIP f859808 + completion e2d8b83): object-safe non-generic views, C : C, type-position lowers to view, view explicit impls on structs, CHK308 (fields-only: bare-interface library params are constraint-position by convention) with fixture tests + zero-CHK308 hard gate on the forward stdlib. ADR in 55d0d97-era commit 55c27d6. All 166+ CS0315 gone; declaration layer fully clean. Remaining forward build errors are the newly-unmasked body layer, tracked as plato-323.
  • 2026-07-29 — plato-310 — CSharpWriter mangles Function1-typed values: System.Func loses type args, constructor calls emit as extension calls — Fixed in Plato e2d8b83 (building on WIP f859808): FunctionN digit-check stops FunctionVolume3D-style names rendering as bare System.Func; TIR constructor calls emit as new T(...); arity-0 mapped-intrinsic render is now a hard writer error. Verified: zero bare System.Func in 1244 regenerated files, Complement() emits new FunctionVolume3D(p => ...); legacy goldens refreshed deliberately (view interfaces), SDK conformance 205/205, frozen V1 green.
  • 2026-07-29 — plato-287 — Add BoundedSdf (SDF with finite domain bounds) — done (2746e83378c9b46c1e3a7edb30900b0c2fc2bbdc)
  • 2026-07-29 — plato-315 — Carry legacy geometry interfaces into stdlib: Curve generics, indexed-face access, unwelded face arrays, Procedural doc table; retire or wire Dimensioned — done (7d4c12e, 815883e, fe6b67a, 0aa7331); FaceIndexedGeometry3D dropped by decision, superseded by MeshIncidence
  • 2026-07-29 — plato-319 — Eval application sugar: (args) vs [args] — archived: parked Eval sugar; (args) preferred over [args] if revived; no near-term language work
  • 2026-07-29 — plato-314 — Split MeshTopology into MeshElementCounts + MeshIncidence; qualify unqualified Edge names — done (b40f97f) - MeshElementCounts + new MeshIncidence rung + UndirectedEdge* qualification; check-stdlib-fast both gates PASS; follow-ups plato-316 (no implementer yet) / plato-317 (stale ai-summary)
  • 2026-07-29 — plato-301 — Implement Plato polyhedra library (seeds + Conway) in small-function style — Six stdlib library files: Platonic seeds, corner-as-half-edge navigation, Dual/Ambo/Truncate, 11 named aliases. Consumes plato-303 Jagged/CSR. Found and corrected two C# oracle bugs (inward-winding duals; normalization breaking Catalan planarity - now polar reciprocation). check-stdlib-fast both gates PASS; 19-case mirror verification.
  • 2026-07-29 — plato-303 — CompressedSparseRow type/interface and library — done (ec84f2b) — shipped as interface Jagged + JaggedArray + row library; the 3 adjacency tables implement by projection; PolygonMesh3D since refactored to composition — Faces: JaggedArray field, implements dropped (28599cc, see issue addendum)
  • 2026-07-29 — plato-312 — Emit _-receiver interface members as C# static abstract — done (0600e5a + 8d488a8) - opt-in --static-abstract over the 3 genuinely type-level members; Vector.Broadcast drift fixed; LINT012 gates receiver-marker agreement (legacy 0 findings, stdlib 2 listed)
  • 2026-07-29 — plato-309 — Plato agent guidance drift: add AGENTS.md, fix stale stdlib claims, move house knowledge into repo — done (4a818b3, dbe98fc)
  • 2026-07-29 — plato-307 — Additive declares no identity element (Zero) — done (45dbd6e) - Zero moved to Additive; Quantity generic fill + 6 concrete matrix fills; LINT001 flat at 278
  • 2026-07-29 — plato-300 — Prefer arithmetic operators over Add/Multiply method calls in Plato — done (0e84382)
  • 2026-07-29 — plato-295 — Prefer array literals over MapRange for fixed corners/points — done (MapRange->literals + STYLE_GUIDE array-literal section via plato-299)
  • 2026-07-29 — plato-299 — Align Plato stdlib CONVENTIONS with SDK and Studio style guides — done (CONVENTIONS Z-up + System.Numerics; STYLE_GUIDE.md; README cross-links)
  • 2026-07-29 — plato-293 — stdlib: re-partition forward vocabulary by kind + domain, add Wikipedia links — stdlib re-partitioned by kind+domain: 85 -> 344 files, all <=12 decls; 446 -> 1039 Wikipedia links; indexes rebuilt (2c73f49)
  • 2026-07-29 — plato-291 — CSharpWriter: no ground TIR for bodied concrete members blocks forward-stdlib codegen — Ground-TIR abort fixed (Plato 61ad4a3): writer degrades gracefully -- NotImplementedException stub naming the member, counted and surfaced as 'DEGRADED bodies: N' (44 at close, population grouped in the issue). Two root-cause compiler fixes en route: CstNodeFilter .Present test in AstNodeFactory and block-lambda body binding via Resolve in SymbolFactory. Legacy byte-identity preserved (184/0/0/0 both variants). Forward codegen completes (1209 files); the generated C# not compiling (332 structural errors) is the successor blocker, filed as plato-294.
  • 2026-07-28 — plato-289 — Compilation ctor swallows exceptions: CompletedCompilation false with zero reported errors — Fixed both halves. Compilation.LogInternalError records type/message/stack into InternalErrors on every catch and both early returns, so CompletedCompilation == false always implies a non-empty InternalErrors (pinned by a new fixture). The swallowed exception was Debug.Assert(CountTypeVars(first.Type) == 0) at FunctionInstance.cs:143, fired by Intrinsics.All(xs: Array<T>,...)a^€”acompilerbug,notalibraryone:legacydeclaresarrayintrinsicsontheinterfaceIArray<T>, ...) — a compiler bug, not a library one: legacy declares array intrinsics on the interface IArray<T> and takes the interface branch, while the forward stdlib declares them on the concrete Array<$T>, whose free type variables are legitimately inferred from the argument (the case the single-parameter guard at :166-183 already permits). Assert deleted, premise documented, no .plato changed. Debug and Release now agree; stdlib compiles clean.
  • 2026-07-28 — plato-272 — Add Constants library to stdlib and use it — library Constants shipped in submodules/Plato@ffb2976 (Constants+Angles port, Tier 0): GoldenRatio/Phi/RPhi/SqrtTwo/SqrtThree/SqrtFive/Ln10/Ln2/Log10E, TwoPi/HalfPi/RadiansPerDegree/DegreesPerRadian, unit-conversion factors, Vector2D/Vector3D unit axes, NumberInterval.UnitInterval, Circle.UnitCircle. Zero/One/Epsilon/Pi/Tau/MinValue/MaxValue deliberately left as intrinsics/interface members (documented in file header), not redeclared. lint stdlib: 0 parse, 0 resolution errors. Adopted at call sites in intervals-transforms.library.plato (UnitX/UnitY/UnitZ). LIBRARIES.md documents the file. Already pushed to submodule origin/main; outer repo submodule pointer still 22 commits behind (902e0da), not bumped by this session to avoid pulling in unrelated concurrent WIP.
  • 2026-07-28 — plato-288 — Add Axis3D / SignedAxis3D enum-like sum types to forward stdlib — axes.plato shipped: Axis3D/Axis2D/SignedAxis3D + conversions; CONVENTIONS.md axis-selector clause rescoped
  • 2026-07-28 — plato-290 — Duplicate Range(Integer) declaration in stdlib-legacy intrinsics blocks lint --strict — Deleted the duplicate Range(n: Integer) at intrinsics.plato:474, keeping the :402 receiver-style form (no emitter keys off parameter name; regen-generated diff empty). lint stdlib-legacy --strict now exits 0. Wired lint --strict into check-all.ps1 for both stdlib-legacy and the forward stdlib, so LINT004 regressions now fail the gate battery.
  • 2026-07-28 — plato-263 — Rename plato-src and plato-src-v3 to clearer stdlib names — done (6174ec0): stdlib<-v3, stdlib-legacy<-plato-src, de-numbered v3 files
  • 2026-07-28 — plato-257 — Plato geometry/math lessons (V1 markdown corpus) — done (4956036)
  • 2026-07-28 — plato-262 — Plato C++/CUDA: dynamic Array + rich ToString — done (a530669)
  • 2026-07-28 — plato-261 — Write succinct accurate Plato language semantics doc — Wrote submodules/Plato/docs/plato-language-semantics.md (normative semantics: constructs, sum/match v1, overload tiers, Self/monomorphization, coercions, non-features); linked from plato-for-agents.md + README. Spot-checked via Plato.CLI lint fixture. Plato commit 55c109f.
  • 2026-07-27 — plato-239 — plato-239 — done (e0653a4)
  • 2026-07-27 — plato-238 — Plato.Navigation v2: per-file parse cache (IncrementalIndexer) — IncrementalIndexer + ParseCache keyed by (path, content hash); Update(s) byte-identical to Build(s) across build/unchanged/edit/add/remove; MCP Reload wired, reports cache hits+misses. Reload 61ms vs 706ms full build (34 files), 59ms vs 779ms (70 files). 30/30 nav tests, 14/14 MCP tests.
  • 2026-07-27 — plato-237 — Plato navigation MCP tool pack (first consumer of Plato.Navigation) — done - labs/PlatoNavigationMcp, 7 tools, 13 tests
  • 2026-07-27 — plato-236 — Plato.Navigation: bind-based navigation index library (go-to-def, find-refs, outline) — done (51d9dfb) - Plato.Navigation M0-M5
  • 2026-07-27 — plato-234 — GLSL writer drops every Angle-typed function and struct (Angle unrepresentable) — fixed (Plato a98fc42) — Angle -> float; stdlib 1259/939 -> 1433/960, zero Angle skips, 8 demos at 0 skips WebGL2-verified
  • 2026-07-27 — plato-232 — Sum types with exhaustive matching for Plato — done — sum types + exhaustive match: grammar(parakeet 12aad78)/AST(Plato 1d3ed84)/checker CHK300-306+320+lowering+C# tagged-struct emission(507de64)/tests + 5 flagship v3 migrations(37ed5e9); follow-up sweep plato-233
  • 2026-07-27 — plato-230 — Comprehensive Plato v3 type and interface vocabulary (plato-src-v3) — done: 70 files, 154 interfaces + 1125 types, lint-clean (Plato 7cec1e3 + 72912d8)
  • 2026-07-27 — plato-228 — Prototype a broad Plato v2 type and interface library — done (391eff7)