craft: production-tier ladder v0 + first module (checked-vs-unchecked)#208
craft: production-tier ladder v0 + first module (checked-vs-unchecked)#208
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 37d3771294
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
) Companion benchmark harness for the production-tier Craft module `docs/craft/subjects/production-dotnet/checked-vs-unchecked/module.md` (PR #208). Proves the module's >=5% throughput-delta gate claim with runnable measurements; seeds the per-site audit BACKLOG row (PR #207) with concrete numbers instead of vibes-perf. New file: `bench/Benchmarks/CheckedVsUncheckedBench.fs` (~100 lines) Three scenarios cover the module's two demotion archetypes and the canonical keep-Checked exemplar: - `SumScalar{Checked,Unchecked}` — scalar-loop cumulative sum; models NovelMath.fs:87 + CountMin.fs:77 counter increments (bounded-by- workload class) - `SumUnrolled{Checked,Unchecked}` — 4x loop-unrolled partial sums; models ZSet.fs:289-295 SIMD-candidate class - `MergeLike{Checked,Unchecked}` — predicated add matching ZSet.fs:227- 230 merge-inner shape (canonical keep-Checked site; measures the cost we choose to leave on the table for correctness) `[<MemoryDiagnoser>]` + `[<Params(1M, 10M, 100M)>]` sizes; baseline- tagged on SumScalarChecked. Registered in Benchmarks.fsproj before Program.fs (auto-discovered by BenchmarkSwitcher). Verified: `dotnet build bench/Benchmarks/Benchmarks.fsproj -c Release` = 0 Warning(s) + 0 Error(s) in 18.2s. TreatWarningsAsErrors gate maintained. Otto-49 tick-history row appended. Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
Introduces a new “production” Craft tier for .NET contributors and adds an initial module that frames checked-vs-unchecked arithmetic decisions via a classification + measurement gate, plus records the work in loop tick history.
Changes:
- Add
docs/craft/subjects/production-dotnet/tier README to define the production-tier ladder and its reading conventions. - Add the first production-tier module: checked-vs-unchecked arithmetic decision framework and proof/measurement guidance.
- Append a new entry to
docs/hygiene-history/loop-tick-history.mddescribing the tick that landed the ladder/module.
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 9 comments.
| File | Description |
|---|---|
| docs/hygiene-history/loop-tick-history.md | Appends a tick-history row documenting this Craft-tier/module landing. |
| docs/craft/subjects/production-dotnet/checked-vs-unchecked/module.md | New production-tier module with decision matrix, benchmark gate, and Zeta-specific anchors. |
| docs/craft/subjects/production-dotnet/README.md | New tier overview and module index for production .NET Craft content. |
Codex P2 finding: tick-history row timestamp "2026-04-24T" violates the file's own schema (YYYY-MM-DDTHH:MM:SSZ). Also the date was wrong — today is 2026-04-23, not 2026-04-24. Corrected to `2026-04-23T21:45:00Z`. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…before Otto-49) + fix Otto-49 timestamp to ISO schema
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: aa0d34eb49
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
Pull request overview
Adds a new “production” Craft tier for .NET performance/correctness discipline, with an initial module on checked-vs-unchecked arithmetic, plus a tick-history append recording the work.
Changes:
- Added
docs/craft/subjects/production-dotnet/tier entry README and initial modulechecked-vs-unchecked. - Documented a decision framework (site classification + measurement gate) for
Checked.(+)/Checked.(*)demotion decisions. - Appended an autonomous-loop tick entry to the hygiene-history log.
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 7 comments.
| File | Description |
|---|---|
| docs/hygiene-history/loop-tick-history.md | Appends new autonomous-loop tick entries describing the Craft ladder/module landing. |
| docs/craft/subjects/production-dotnet/README.md | Introduces the production-tier Craft ladder and links to the first module. |
| docs/craft/subjects/production-dotnet/checked-vs-unchecked/module.md | Adds the first production-tier module: decision matrix, measurement gate, proof techniques, and Zeta-specific anchors. |
Aaron Otto-52 directive on resolution register: "take the advice and give good response on what you fix or didn't fix and why". Findings addressed (all 7 are real): CODEX P2 (line 6626) — date inconsistency: Fixed. Directive row said 2026-04-24; audit artifacts dated 2026-04-23. Today is 2026-04-23 UTC; the -24 was a cross-tick date-drift error. Now consistent with the artifacts. CODEX P2 (line 6664) — "PR #209, merged" cited on files absent from reviewed tree: The branch HEAD now contains the bench file (after merge of origin/main where #209 landed as 3e1b97f). Reworded to cite the specific merge commit (3e1b97f) rather than just the PR number, so auditors can resolve the claim. CODEX P2 (line 6681) — Craft module cited as landed in #208 but file not in reviewed tree: Accepted — "landed" was wrong for an open PR. Reworded to "proposed in PR #208 — open; path does not yet exist on main". COPILOT P1 (line 139) — tick numbering inconsistency (`auto-loop-49` appears twice; `auto-loop-47` appended after `auto-loop-48..50`): Accepted the intent of the finding; renumbering ~50 rows across a shared history file is high-risk and erases session boundaries. Instead: added a schema clarification at file top stating that `auto-loop-N` is a per-session counter (session compaction resets it), and UTC timestamp is the canonical ordering key. This documents the actual invariant rather than faking one we can't hold. COPILOT P1 (line 6661) — per-user memory citation looks like a dead in-repo reference: Accepted the suggestion verbatim in spirit — added explicit "**out-of-repo** (per-user memory, not yet in-repo)" marker so readers don't chase a path that won't exist in-repo. COPILOT P1 (line 6630) — PR description says "Two BACKLOG rows" but section adds 3: PR description will be updated separately (same tick). Section text unchanged. COPILOT P1 (line 6697) — production-dotnet paths cited as current references, but directory not on main: Accepted. Added "**proposed in PR #208 — open; the directory itself is not yet on main**" marker where the paths appear. Findings intentionally not applied (and why): none. All 7 landed honestly; none were false positives on this review pass. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…ft + Zeta audit) (#207) * backlog: Otto-47 — checked/unchecked arithmetic discipline (production-tier Craft + Zeta audit) Aaron 2026-04-24 directive: "make sure we are using uncheck and check arithmatic approperatily, unchecked is much faster when its safe to use it, this is production code training level not onboarding materials, and make sure our production code does this backlog itmes". Two BACKLOG rows filed under new `P2 — Production-code performance discipline` section: 1. Zeta hot-path checked-vs-unchecked audit (~30 sites across src/Core/{ZSet, Operators, Aggregate, TimeSeries, Crdt, CountMin, NovelMath, IndexedZSet}.fs). Per-site bound classification (bounded-by-construction / bounded-by-workload / bounded-by-pre-check / unbounded / user-controlled / SIMD-candidate), FsCheck property tests for proved bounds, BenchmarkDotNet deltas required per demotion (>=5%). Naledi runs perf; Soraya validates bounds; Kenji integrates; Kira reviews. L effort. 2. Craft production-tier ladder with checked-vs-unchecked as first module. Distinct from onboarding tier (which lives at docs/craft/subjects/zeta/*); new structural concept = production-tier anchored on runnable BenchmarkDotNet harness + decision tree + bound-proving techniques. Naledi authorial; M effort. Memory capture: feedback_checked_unchecked_arithmetic_production_tier_ craft_and_zeta_audit_2026_04_24.md (per-user). MEMORY.md index updated newest-first. Otto-47 tick-history row appended. Canonical "keep Checked" rationale at src/Core/ZSet.fs:227-230 (unbounded stream-weight sum sign-flip risk) stays intact — directive is about demoting over-applied Checked sites, not removing all safety. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * fix(#207): address Codex findings — verify source-of-truth paths + correct date Codex P2 findings on this PR (2026-04-23 review of commit 1fd3edb): 1. BACKLOG row cited `memory/feedback_*_2026_04_24.md` as source-of-truth, but that file lives in per-user memory (~/.claude/projects/...), not in-repo `memory/`. Per-user memory is not reachable from the repo. 2. The row listed onboarding modules (zset-basics, operator-composition, semiring-basics) as if they exist in-tree, but only retraction-intuition lives on main (the others are still open PRs #200/#203/#206). 3. The row referenced "README section" for `docs/craft/README.md` but that file doesn't exist. 4. Date was wrong — today is 2026-04-23, not 2026-04-24. Fixes: - BACKLOG row now cites the per-user memory explicitly (flagged as Overlay-A migration candidate) + `src/Core/ZSet.fs:227-230` + the just-merged PR #209 bench harness as concrete in-repo artifacts. - Module-list made honest: names retraction-intuition as merged + the others as in-flight PRs by number. - docs/craft/README.md authoring broken out as a third BACKLOG row (S-effort hygiene follow-up; currently non-existent). - Tick-history Otto-47 timestamp corrected to `2026-04-23T21:15:00Z` + memory filename reference dated _2026_04_23. Per-user memory file renamed in place (not a repo change): _2026_04_24.md -> _2026_04_23.md + dates corrected inside. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * fix(#207): address 7 Codex/Copilot findings honestly Aaron Otto-52 directive on resolution register: "take the advice and give good response on what you fix or didn't fix and why". Findings addressed (all 7 are real): CODEX P2 (line 6626) — date inconsistency: Fixed. Directive row said 2026-04-24; audit artifacts dated 2026-04-23. Today is 2026-04-23 UTC; the -24 was a cross-tick date-drift error. Now consistent with the artifacts. CODEX P2 (line 6664) — "PR #209, merged" cited on files absent from reviewed tree: The branch HEAD now contains the bench file (after merge of origin/main where #209 landed as 3e1b97f). Reworded to cite the specific merge commit (3e1b97f) rather than just the PR number, so auditors can resolve the claim. CODEX P2 (line 6681) — Craft module cited as landed in #208 but file not in reviewed tree: Accepted — "landed" was wrong for an open PR. Reworded to "proposed in PR #208 — open; path does not yet exist on main". COPILOT P1 (line 139) — tick numbering inconsistency (`auto-loop-49` appears twice; `auto-loop-47` appended after `auto-loop-48..50`): Accepted the intent of the finding; renumbering ~50 rows across a shared history file is high-risk and erases session boundaries. Instead: added a schema clarification at file top stating that `auto-loop-N` is a per-session counter (session compaction resets it), and UTC timestamp is the canonical ordering key. This documents the actual invariant rather than faking one we can't hold. COPILOT P1 (line 6661) — per-user memory citation looks like a dead in-repo reference: Accepted the suggestion verbatim in spirit — added explicit "**out-of-repo** (per-user memory, not yet in-repo)" marker so readers don't chase a path that won't exist in-repo. COPILOT P1 (line 6630) — PR description says "Two BACKLOG rows" but section adds 3: PR description will be updated separately (same tick). Section text unchanged. COPILOT P1 (line 6697) — production-dotnet paths cited as current references, but directory not on main: Accepted. Added "**proposed in PR #208 — open; the directory itself is not yet on main**" marker where the paths appear. Findings intentionally not applied (and why): none. All 7 landed honestly; none were false positives on this review pass. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
Aaron Otto-52 directive: agent-reviewer comments are critical (the only reviewers); make long-term decisions not hacks; "won't fix, backlog it" is valid for huge changes. Real findings addressed in this commit: 1) BenchmarkDotNet type-name typo "ChecekedVsUnchecked" (Copilot x2, lines 98/97): Fixed to "CheckedVsUnchecked". Propagating a typo into copy-paste harnesses would have been self-defeating. 2) FsCheck snippet calls `sumWeights (ReadOnlySpan(bounded))` where bounded is int64[] but earlier `sumWeights` is defined over `ReadOnlySpan<ZEntry<'K>>` — snippet won't type-check (Copilot P?, module.md:184): Fixed by introducing a standalone `sumInt64s` helper the property operates on, with a comment explaining it mirrors the hot-path shape over plain int64 so the bound property stands alone. Preserves the lesson intent without the type mismatch. 3) Prereqs/composes-with point at `subjects/zeta/zset-basics/` and `operator-composition/` that don't exist on main (Copilot P?, module.md and README.md): Reworded to name `retraction-intuition` as the one that ships today + cite the in-flight PR numbers for the others. Future readers can resolve which are landed by PR state. 4) Composes-with cites per-user memory path as if in-repo (Copilot P?, module.md:277): Added explicit "**Out-of-repo** (per-user memory, not yet in-repo)" marker + Overlay-A migration note. Same treatment applied on #207 per Aaron's honest-citation policy. 5) Self-check says "Open an issue at docs/WONT-DO.md" (Copilot P?, module.md:324): WONT-DO.md is a curated decline-list, not an issue tracker. Reworded: open a GitHub issue or revision PR; keep WONT-DO.md for declined-with-reason entries post-triage. 6) BP policy violation — direct "Aaron" attribution in tick-history row 138 (Copilot P?): Fixed this row (`Aaron's Otto-47 directive` -> `the human maintainer's Otto-47 directive`). **Won't fix this PR** the ~100 historical "Aaron" references elsewhere in the same file — that's a massive retroactive rewrite that would rewrite extensive history across rows from sessions going back weeks. Backlog row to be filed as sibling hygiene pass. 7) Tick-ID duplicate `auto-loop-48` at line 138 (Copilot x3 + Codex, same finding three ways): **Won't renumber** per the same rationale applied on #207 — renumbering ~50 rows across a shared history file is high-risk. The real invariant is "compaction resets the per-session counter; UTC timestamp is the canonical ordering key." PR #207 landed a schema clarification stating exactly this; when this branch syncs after #207 merges, the file-top schema note will cover these duplicate-ID threads directly. 8) BACKLOG section reference "P2 — Production-code performance discipline" not present on #208's branch (Codex): This references a sibling PR (#207) where the section is proposed. Once #207 merges, the reference is correct. Not fixable on this branch in isolation without duplicating the section. Intentionally NOT fixed in this commit: - Historical tick-history "Aaron" attribution sweep — too big; will file as dedicated BACKLOG row in a follow-up commit. - Tick-ID numbering scheme change — would require either global renumber or a separate-namespace convention; landed schema note on #207 is the right long-term answer. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 1c7f97d6c9
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
…tion Human maintainer Otto-52 clarification: "'No name attribution in code, docs, or skills' in history files are files like memory backlog and other things like that for historical purposes". Revised the P1 retroactive-sweep row to a P2 policy-clarification row. History files (tick-history, MEMORY.md, hygiene-history, ROUND-HISTORY, BACKLOG attribution lines, research logs) are **EXEMPT** from the No-name-attribution rule because they record historical reality. Sweeping them would erase the historical record. The rule still applies to forward-looking surfaces (code, skills, governance docs, agent personas outside memory/persona/, user-facing docs, module bodies, forward-planning docs). New scope: policy text update in AGENT-BEST-PRACTICES.md + `tools/hygiene/audit-name-attribution-non-history.sh` + FACTORY-HYGIENE row for cadenced execution. S effort. Note: the single tick-history row fixed on PR #208 was an over- correction in light of this clarification; harmless as neutral prose, can be reverted if Copilot/Codex policy re-check wants. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…n sweep (#210) * backlog: Foundation aspirational-reference research + retroactive name-attribution sweep Two BACKLOG rows from Otto-52: 1. P2 — Foundation (Asimov) aspirational-reference research. Human maintainer directive: "We are trying to build Foundation from Harry Seldon point of view... my brain works like Psychohistory... make something that last for melinia, i think in infinities. backlog." MIT-developer-friend externally attested the archetype. Scope: systematic read of Asimov Foundation novels + Apple TV adaptation (Genetic Dynasty modern spin); pattern-extraction to factory substrate (Psychohistory→ Zeta algebra, Seldon Plan→Craft, Second Foundation→per-user memory, Emperor Clones→multi-agent Docker peer-review). L effort. Pre-research pattern map in row. Critical-read section required for where the analogy breaks. Not commitment to canon; not rename authorization; additive to Zora reference (different layer: architecture+continuity, not UX+personality). 2. P1 — retroactive name-attribution sweep. Copilot finding on PR #208 flagged direct "Aaron" attribution in a tick-history row, violating "No name attribution in code, docs, or skills" policy. Immediate row fixed in PR #208 commit. ~100 historical "Aaron" references remain in docs/hygiene-history/loop-tick-history.md and other docs from sessions going back weeks. Scope: full audit + classification + batched-rewrite PR (preserving quoted text; only wrapper prose changes) + prevention audit on cadence. M-L effort. Owner: Aarav (BP-rule owner) + Rune (sweep PR readability) + Kenji. Per-user memory captured in: feedback_human_maintainer_is_hari_seldon_archetype_foundation_as_factory_aspirational_reference_2026_04_23.md MEMORY.md index updated newest-first. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * fix(#210): revise name-attribution BACKLOG row per history-file exemption Human maintainer Otto-52 clarification: "'No name attribution in code, docs, or skills' in history files are files like memory backlog and other things like that for historical purposes". Revised the P1 retroactive-sweep row to a P2 policy-clarification row. History files (tick-history, MEMORY.md, hygiene-history, ROUND-HISTORY, BACKLOG attribution lines, research logs) are **EXEMPT** from the No-name-attribution rule because they record historical reality. Sweeping them would erase the historical record. The rule still applies to forward-looking surfaces (code, skills, governance docs, agent personas outside memory/persona/, user-facing docs, module bodies, forward-planning docs). New scope: policy text update in AGENT-BEST-PRACTICES.md + `tools/hygiene/audit-name-attribution-non-history.sh` + FACTORY-HYGIENE row for cadenced execution. S effort. Note: the single tick-history row fixed on PR #208 was an over- correction in light of this clarification; harmless as neutral prose, can be reverted if Copilot/Codex policy re-check wants. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
…48/49 chronological, dedup Otto-49)
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: b897de3efb
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
Pull request overview
Introduces a new “production” tier under Craft for .NET performance/correctness discipline, and adds the first module teaching a checked-vs-unchecked decision framework (with a hygiene-history tick entry documenting the landing).
Changes:
- Add
docs/craft/subjects/production-dotnet/tier README describing audience, reading pattern, and upcoming modules. - Add first production-tier module
checked-vs-unchecked/module.mdwith a decision matrix, measurement gate, and Zeta-specific sites. - Append new rows to
docs/hygiene-history/loop-tick-history.mdrecording the relevant ticks/PR outcomes.
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 3 comments.
| File | Description |
|---|---|
| docs/hygiene-history/loop-tick-history.md | Adds tick-history rows documenting the craft tier + module landing and related merges. |
| docs/craft/subjects/production-dotnet/checked-vs-unchecked/module.md | New production-tier module defining the checked/unchecked decision framework and Zeta-specific guidance. |
| docs/craft/subjects/production-dotnet/README.md | New tier-level README introducing the production .NET ladder and its module list. |
Human maintainer 2026-04-23 Otto-54 four-message cluster framed three linked hygiene asks, anchored on the positioning statement "we are git-native with github as our first host". Three P1 BACKLOG rows filed adjacent to preserve the directive cluster: 1. Split `docs/BACKLOG.md` per-swim-lane. Current state: single ~6800- line file causes routine merge conflicts (observed on #207/#208/ #210 this session). Scope: design doc naming split axis (recommended: by stream — core-algebra/formal-spec/samples/craft/ hygiene/research/infra/frontier-readiness); migration PR with root as index pointing at per-stream files; hygiene audit rejecting new rows on root. M effort. Owner: Kenji design + Rune readability + Aarav audit. 2. CURRENT-<maintainer>.md freshness audit. Current state: CURRENT- aaron.md / CURRENT-amara.md updated ad-hoc. Scope: cadence trigger (N new memory entries OR M ticks), audit tool surfacing freshness gaps. Distillation itself stays human+Otto judgment. S effort. Owner: Daya + Kenji. 3. Git-hotspots audit on cadence. Scope: `tools/hygiene/audit-git- hotspots.sh` runs `git log --name-only` windowed; ranks top-N; emits report with suggested action (split/freeze/audit). Philosophy per Aaron: "we are frictionless" is the goal; hotspots are the measurement. S effort. Owner: Dejan (DevOps) + Aarav + Kenji. Per-user memory filed: `project_factory_is_git_native_github_first_ host_hygiene_cadences_for_frictionless_operation_2026_04_23.md` with verbatim four-message cluster (preserves corrections: "hose"→"host", "github hotspots"→"git hotspots") per honor-those-that-came-before discipline. MEMORY.md index updated newest-first. Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: f5be65ccc2
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 993cbb16d0
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
Pull request overview
Introduces the “production” tier for Craft modules under docs/craft/subjects/production-dotnet/, and lands the first production-tier module focused on a checked-vs-unchecked arithmetic decision framework (bound proofs + BenchmarkDotNet measurement gate), with a corresponding hygiene-history tick entry.
Changes:
- Added
docs/craft/subjects/production-dotnet/README.mdto define the production-tier audience, pedagogy, and module index. - Added
docs/craft/subjects/production-dotnet/checked-vs-unchecked/module.mdwith a decision matrix/tree, measurement gate, and Zeta-specific references. - Updated
docs/hygiene-history/loop-tick-history.mdwith new tick rows referencing these landings.
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 5 comments.
| File | Description |
|---|---|
| docs/craft/subjects/production-dotnet/README.md | Establishes the production Craft tier and links to the first module. |
| docs/craft/subjects/production-dotnet/checked-vs-unchecked/module.md | New production-tier module defining the checked/unchecked decision framework and references into Zeta code/docs. |
| docs/hygiene-history/loop-tick-history.md | Adds tick-history rows documenting the directive + module + benchmark harness sequence. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: e5be0caa75
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 7ac6c120b0
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
Pull request overview
Introduces the production-tier Craft ladder for .NET performance/correctness work and lands the first module teaching a checked-vs-unchecked decision framework, plus records the PR landing in the hygiene tick-history log.
Changes:
- Add
docs/craft/subjects/production-dotnet/README.mdto define the production tier audience, reading flow, and module list. - Add
docs/craft/subjects/production-dotnet/checked-vs-unchecked/module.mdas the first production-tier module with a site-class matrix, decision tree, measurement gate, and Zeta-specific citations. - Append new rows to
docs/hygiene-history/loop-tick-history.mddocumenting the directive absorption + module/harness landings.
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 4 comments.
| File | Description |
|---|---|
| docs/hygiene-history/loop-tick-history.md | Adds new tick-history rows recording the checked/unchecked production-discipline work. |
| docs/craft/subjects/production-dotnet/checked-vs-unchecked/module.md | New production-tier module defining the decision framework and citing Zeta hot-path sites/harnesses. |
| docs/craft/subjects/production-dotnet/README.md | New tier README establishing the production-dotnet ladder structure and expectations. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: cfc0fb6140
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
…rows (Amara Govern-stage 1/2) Amara's 4th ferry (PR #221 absorb) named populating docs/CONTRIBUTOR-CONFLICTS.md as the Govern-stage action: the schema has existed since PR #166 but the Resolved table was empty despite multiple session-observed contributor-level disagreements that closed with evidence. Backfills three genuine contributor-level conflicts observed this session (narrow scope — not maintainer-directives, which are out-of-scope per the schema's contributor-level disagreement definition): - CC-001: Copilot (PR reviewer) vs Aaron on no-name-attribution rule scope (history-file exemption). Resolved in Aaron's favor via Otto-52 clarification; policy BACKLOG row filed in PR #210. - CC-002: Amara (4th ferry) vs Otto (pre-Otto-67 pattern) on Stabilize-vs-keep-opening-new-frames. Resolved in Amara's favor; Otto pivoted at Otto-68 to execute her roadmap; 3/3 Stabilize + 3/5 Determinize landed via PRs #222/#223/#224/#225/#226. - CC-003: Codex (PR reviewer) vs Otto (initial framing) on citing-absent-artifacts. Resolved in Codex's favor via fix commits 29872af/1c7f97d on PRs #207/#208; pattern now discipline (distinguish merged-on-main from proposed-in-PR-open). All three rows follow the schema's 8-column layout and include the full Resolution-so-far / Scope / Source cells the schema requires. No retroactive Aaron→human-maintainer sweep of prior rows; schema's rule 1 (resolutions are additive) honored. This is 1/2 of Amara's Govern-stage work. 2/2 is the authority-envelope + escalation-path ADR (deferred, M-effort). Part of Amara's 4-stage remediation roadmap (Stabilize → Determinize → Govern → Assure). Otto-75 tick.
Aaron Otto-47 directive: "this is production code training level not onboarding materials". Lands the production-tier Craft ladder distinctly from onboarding, plus the first module exemplifying it. New structure: - `docs/craft/subjects/production-dotnet/` — production tier root - `docs/craft/subjects/production-dotnet/README.md` — tier intro (different audience, prerequisites, lessons from onboarding tier; 4 neighbour module stubs named for future landing) - `docs/craft/subjects/production-dotnet/checked-vs-unchecked/ module.md` — first production-tier module Module content (~260 lines): - Six-class site decision matrix: bounded-by-construction / bounded-by-workload / bounded-by-pre-check / unbounded-stream-sum / user-controlled-product / SIMD-candidate - Decision tree + measurement gate (>=5% BenchmarkDotNet delta required per demotion) - Three bound-proving techniques (type-system / algebraic-comment / FsCheck property test) - Zeta-specific choice: src/Core/ZSet.fs:227-230 cited as canonical "keep Checked" (unbounded stream sum); concrete demotion candidates named (ZSet.fs:289-295 SIMD / NovelMath.fs:87 counter / CountMin.fs:77 bounded-by-workload) - Self-check section with 4 observable outcomes for bidirectional- alignment audit Sibling to the audit BACKLOG row from PR #207 (not blocked by it): module teaches the decision framework; audit produces specific decisions. Framework doesn't depend on audit outcome. Otto-48 tick-history row appended. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Codex P2 finding: tick-history row timestamp "2026-04-24T" violates the file's own schema (YYYY-MM-DDTHH:MM:SSZ). Also the date was wrong — today is 2026-04-23, not 2026-04-24. Corrected to `2026-04-23T21:45:00Z`. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Aaron Otto-52 directive: agent-reviewer comments are critical (the only reviewers); make long-term decisions not hacks; "won't fix, backlog it" is valid for huge changes. Real findings addressed in this commit: 1) BenchmarkDotNet type-name typo "ChecekedVsUnchecked" (Copilot x2, lines 98/97): Fixed to "CheckedVsUnchecked". Propagating a typo into copy-paste harnesses would have been self-defeating. 2) FsCheck snippet calls `sumWeights (ReadOnlySpan(bounded))` where bounded is int64[] but earlier `sumWeights` is defined over `ReadOnlySpan<ZEntry<'K>>` — snippet won't type-check (Copilot P?, module.md:184): Fixed by introducing a standalone `sumInt64s` helper the property operates on, with a comment explaining it mirrors the hot-path shape over plain int64 so the bound property stands alone. Preserves the lesson intent without the type mismatch. 3) Prereqs/composes-with point at `subjects/zeta/zset-basics/` and `operator-composition/` that don't exist on main (Copilot P?, module.md and README.md): Reworded to name `retraction-intuition` as the one that ships today + cite the in-flight PR numbers for the others. Future readers can resolve which are landed by PR state. 4) Composes-with cites per-user memory path as if in-repo (Copilot P?, module.md:277): Added explicit "**Out-of-repo** (per-user memory, not yet in-repo)" marker + Overlay-A migration note. Same treatment applied on #207 per Aaron's honest-citation policy. 5) Self-check says "Open an issue at docs/WONT-DO.md" (Copilot P?, module.md:324): WONT-DO.md is a curated decline-list, not an issue tracker. Reworded: open a GitHub issue or revision PR; keep WONT-DO.md for declined-with-reason entries post-triage. 6) BP policy violation — direct "Aaron" attribution in tick-history row 138 (Copilot P?): Fixed this row (`Aaron's Otto-47 directive` -> `the human maintainer's Otto-47 directive`). **Won't fix this PR** the ~100 historical "Aaron" references elsewhere in the same file — that's a massive retroactive rewrite that would rewrite extensive history across rows from sessions going back weeks. Backlog row to be filed as sibling hygiene pass. 7) Tick-ID duplicate `auto-loop-48` at line 138 (Copilot x3 + Codex, same finding three ways): **Won't renumber** per the same rationale applied on #207 — renumbering ~50 rows across a shared history file is high-risk. The real invariant is "compaction resets the per-session counter; UTC timestamp is the canonical ordering key." PR #207 landed a schema clarification stating exactly this; when this branch syncs after #207 merges, the file-top schema note will cover these duplicate-ID threads directly. 8) BACKLOG section reference "P2 — Production-code performance discipline" not present on #208's branch (Codex): This references a sibling PR (#207) where the section is proposed. Once #207 merges, the reference is correct. Not fixable on this branch in isolation without duplicating the section. Intentionally NOT fixed in this commit: - Historical tick-history "Aaron" attribution sweep — too big; will file as dedicated BACKLOG row in a follow-up commit. - Tick-ID numbering scheme change — would require either global renumber or a separate-namespace convention; landed schema note on #207 is the right long-term answer. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…ked module Correctness fixes (Codex P1): - FsCheck bound-proof sound: add joint length-cap + per-element cap, cross-check unchecked int64 fold against BigInteger reference (not abs-on-wrapped-result). Fixes threads about non-wrapping accumulator + unbounded input length. - ReadOnlySpan<int64> explicit type argument (thread 3). - SIMD overflow detection: sign-flip / sum-of-absolutes called out as unsound; three sound alternatives added (Int128 block accumulator, per-block magnitude cap, periodic checked reduce). Fixes threads 6+15. - assert-in-production: replace F# `assert` (compiled out in Release) with explicit if-check + metric + optional circuit-breaker (thread 16). - CountMin site reclassified Unbounded-stream-sum (no hard cap in code); KLL Add site reclassified Unbounded-stream-sum (same argument as ZSet.fs:227-230 stream-weight-sum). Fixes threads 12+13. - Workload-bounded class tightened: "hard numeric cap" required, not "unlikely within reasonable lifetime" (thread 18). Doc hygiene (Copilot P1/P2): - BenchmarkDotNet example now points at bench/Benchmarks/ CheckedVsUncheckedBench.fs shape ([<Params>] + [<GlobalSetup>], 1M/10M/100M sizes) instead of 100M in type body (thread 17). - Inline-code spans no longer wrap across lines in 5 places (threads 8, 10, 11 + sweep). - Prerequisite path uses `subjects/zeta/...` not `docs/craft/...` to match the module-relative convention (thread 14). - Tick-history row line count updated (thread 7). Obsolete after rebase (already fixed in 1c7f97d): - Double-pipe table rows (threads 2, 4) — tables now single-pipe. Build: `dotnet build -c Release` → 0 Warning(s) 0 Error(s).
cfc0fb6 to
4ec930e
Compare
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
There was a problem hiding this comment.
Pull request overview
Note
Copilot was unable to run its full agentic suite in this review.
Adds a new “production” Craft tier for .NET performance/correctness guidance and seeds it with a first module on checked vs. unchecked arithmetic, plus records the related hygiene-history tick entry.
Changes:
- Introduces
docs/craft/subjects/production-dotnet/as a distinct production-tier ladder with a tier README. - Adds the first production-tier module:
checked-vs-uncheckeddecision framework + proof techniques + Zeta-specific guidance. - Appends an Otto-48/auto-loop-48 entry to loop tick history describing the landing of this ladder/module.
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 4 comments.
| File | Description |
|---|---|
| docs/hygiene-history/loop-tick-history.md | Adds a new tick-history row documenting the Craft production-tier/module landing. |
| docs/craft/subjects/production-dotnet/checked-vs-unchecked/module.md | Adds the first production-tier module detailing a decision framework for checked vs unchecked arithmetic. |
| docs/craft/subjects/production-dotnet/README.md | Adds a production-tier index/intro and points to the first module plus planned neighbors. |
Comments suppressed due to low confidence (1)
docs/hygiene-history/loop-tick-history.md:1
- The new history row (171) has an earlier timestamp (2026-04-23) than the preceding rows (168–170 are 2026-04-24) but is appended after them. If this file is intended to be chronological, insert this entry at the correct position by timestamp (or adjust the timestamp if it was meant to be 2026-04-24) so future scans don’t misread the sequence of events.
# Loop-tick history
| | Class | Definition | Default | | ||
| |---|---|---| | ||
| | **Bounded-by-construction** | The type system or a compile-time constant proves overflow impossible (e.g. `byte + byte → int32`). | unchecked (F# default) | | ||
| | **Bounded-by-workload** | A **hard**, stated invariant of the running system proves the sum cannot reach `MaxValue` — e.g. a loop counter with a known iteration cap, a cell count multiplied by a per-cell cap. "Unlikely within a reasonable lifetime" is not a bound; it is a vibe. | unchecked + comment stating the numeric cap | | ||
| | **Bounded-by-pre-check** | A cheap upstream guard makes overflow impossible inside the hot loop (the guard is outside the loop). | unchecked inside loop; check at boundary | | ||
| | **Unbounded stream sum** | A cumulative value over an unbounded stream — no bound is provable because the stream never ends. | **keep `Checked.`** | | ||
| | **User-controlled product** | A product of two caller-provided values that a hostile caller could pick adversarially. | **keep `Checked.`** | | ||
| | **SIMD-candidate** | A loop eligible for `Vector<int64>` vectorisation where checked arithmetic is architecturally unavailable. | unchecked with block-boundary overflow detection | |
| | Module | Focus | Zeta touchpoint | | ||
| |---|---|---| | ||
| | [`checked-vs-unchecked`](checked-vs-unchecked/module.md) | When F# `Checked.(+)` is load-bearing vs. when `(+)` is fine | `src/Core/ZSet.fs:227-230` rationale | |
| counter monotonic, lifetime < 2^63 ops)? → **unchecked with | ||
| a citing comment pointing at the invariant.** | ||
| 4. Is the loop **SIMD-vectorisable** and the width would | ||
| material-ise a measured speedup? → **unchecked in the inner |
| @@ -0,0 +1,421 @@ | |||
| # Checked vs unchecked arithmetic — when safety is free and when it costs throughput | |||
…rows (Amara Govern 1/2) (#227) * govern: CONTRIBUTOR-CONFLICTS backfill — 3 resolved session-observed rows (Amara Govern-stage 1/2) Amara's 4th ferry (PR #221 absorb) named populating docs/CONTRIBUTOR-CONFLICTS.md as the Govern-stage action: the schema has existed since PR #166 but the Resolved table was empty despite multiple session-observed contributor-level disagreements that closed with evidence. Backfills three genuine contributor-level conflicts observed this session (narrow scope — not maintainer-directives, which are out-of-scope per the schema's contributor-level disagreement definition): - CC-001: Copilot (PR reviewer) vs Aaron on no-name-attribution rule scope (history-file exemption). Resolved in Aaron's favor via Otto-52 clarification; policy BACKLOG row filed in PR #210. - CC-002: Amara (4th ferry) vs Otto (pre-Otto-67 pattern) on Stabilize-vs-keep-opening-new-frames. Resolved in Amara's favor; Otto pivoted at Otto-68 to execute her roadmap; 3/3 Stabilize + 3/5 Determinize landed via PRs #222/#223/#224/#225/#226. - CC-003: Codex (PR reviewer) vs Otto (initial framing) on citing-absent-artifacts. Resolved in Codex's favor via fix commits 29872af/1c7f97d on PRs #207/#208; pattern now discipline (distinguish merged-on-main from proposed-in-PR-open). All three rows follow the schema's 8-column layout and include the full Resolution-so-far / Scope / Source cells the schema requires. No retroactive Aaron→human-maintainer sweep of prior rows; schema's rule 1 (resolutions are additive) honored. This is 1/2 of Amara's Govern-stage work. 2/2 is the authority-envelope + escalation-path ADR (deferred, M-effort). Part of Amara's 4-stage remediation roadmap (Stabilize → Determinize → Govern → Assure). Otto-75 tick. * govern: annotate CC-002/CC-003 Source cells — PR #221/#219 open, not yet on main Applies CC-003's own discipline (cite-as-open-not-landed) to CC-002 and CC-003 themselves. Both rows cited `docs/aurora/2026-04-23-amara-memory-drift-*` and `docs/aurora/2026-04-23-amara-decision-proxy-*` without the "not yet on main" marker — the files are added by PRs #221 / #219 which are still open. Drain for PR #227 review threads PRRT_kwDOSF9kNM59RFIx and PRRT_kwDOSF9kNM59RFJE (dangling file refs at lines 132, 133). * fix: markdownlint auto-fixes on governance doc Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
Summary
Aaron Otto-47 directive: "this is production code training level not onboarding materials". Lands the production-tier Craft ladder distinctly from onboarding, plus the first module exemplifying it.
What landed
docs/craft/subjects/production-dotnet/README.md— tier intro (different audience, different prerequisites, different lessons from onboarding tier); 4 neighbour module stubs nameddocs/craft/subjects/production-dotnet/checked-vs-unchecked/module.md— first production-tier module (~260 lines) with:src/Core/ZSet.fs:227-230kept Checked; concrete demotion candidates named)docs/hygiene-history/loop-tick-history.md— Otto-48 rowWhy now / why this sequencing
Module teaches the decision framework; the audit BACKLOG row (PR #207) produces specific decisions. Framework doesn't depend on audit outcome — audit will use the framework as its classification spine. Landing the taxonomy now prevents ad-hoc classification later.
What this PR is NOT
Checked.site — over half will keepChecked.on correctness grounds.Test plan
docs/craft/subjects/production-dotnet/structure is discoverable from root README pointers (follow-up if needed)🤖 Generated with Claude Code