diff --git a/.github/workflows/pr-dashboard.yml b/.github/workflows/pr-dashboard.yml index af3d1520..7b444c90 100644 --- a/.github/workflows/pr-dashboard.yml +++ b/.github/workflows/pr-dashboard.yml @@ -10,7 +10,8 @@ on: branches: [master, main] permissions: - pull-requests: read + pull-requests: write + issues: write jobs: pr-dashboard: @@ -21,36 +22,38 @@ jobs: - name: Get PR status id: pr-status + env: + GH_TOKEN: ${{ github.token }} run: | + set -euo pipefail echo "# PR Dashboard" > /tmp/pr_dashboard.md echo "" >> /tmp/pr_dashboard.md echo "Generated at: $(date -u '+%Y-%m-%d %H:%M:%S %Z')" >> /tmp/pr_dashboard.md + echo "" >> /tmp/pr_dashboard.md + + # Get all open PRs (capture once for reuse) + PR_DATA=$(gh pr list --state open --limit 50 --json number,title,headRefName,statusCheckRollup,createdAt,updatedAt) - # Get all open PRs - gh pr list --state open --limit 50 --json number,title,headRefName,statusCheckRollup,createdAt,updatedAt | \ - jq -r '.[] | "# \(.number) | [\(.title)](\(.headRefName)) | \(Created: \(.createdAt | split("T")[0])\) | \(Updated: \(.updatedAt | split("T")[0])\) | \(.statusCheckRollup | map(select(.conclusion != "SUCCESS" and .conclusion != "SKIPPED" and .conclusion != null)) | length) failing/\([.statusCheckRollup[] | length]) total\)"' \ + # Per-PR one-liner. Use string concatenation in jq instead of broken + # \(Created: ...) interpolation that crashed the previous version. + echo "$PR_DATA" | jq -r '.[] | "- #\(.number) [\(.title)](\(.headRefName)) | Created: \(.createdAt | split("T")[0]) | Updated: \(.updatedAt | split("T")[0]) | \((.statusCheckRollup // []) | map(select(.conclusion != "SUCCESS" and .conclusion != "SKIPPED" and .conclusion != null)) | length) failing / \((.statusCheckRollup // []) | length) total"' \ >> /tmp/pr_dashboard.md echo "" >> /tmp/pr_dashboard.md - # Add summary table + # Summary table echo "## Summary" >> /tmp/pr_dashboard.md echo "" >> /tmp/pr_dashboard.md - echo "| Metric | Count |" >> /tmp/pr_dashboard.md + echo "| Status | Count |" >> /tmp/pr_dashboard.md echo "| --- | --- |" >> /tmp/pr_dashboard.md - # Count by status - for status in "READY" "MERGED" "FAILED"; do - COUNT=$(echo "$PR_DATA" | jq -r "[.[] | select(.statusCheckRollup[] | map(select(.conclusion == \"SUCCESS\") | length) | .statusCheckRollup | all(.conclusion == \"SUCCESS\") or .conclusion == \"SKIPPED\")] | length]") - echo "| $status | $COUNT |" >> /tmp/pr_dashboard.md - done + READY=$(echo "$PR_DATA" | jq -r '[.[] | select((.statusCheckRollup // []) | all(.conclusion == "SUCCESS" or .conclusion == "SKIPPED" or .conclusion == null))] | length') + FAILED=$(echo "$PR_DATA" | jq -r '[.[] | select((.statusCheckRollup // []) | any(.conclusion == "FAILURE" or .conclusion == "CANCELLED" or .conclusion == "TIMED_OUT"))] | length') + PENDING=$(echo "$PR_DATA" | jq -r '[.[] | select((.statusCheckRollup // []) | any(.conclusion == null))] | length') - - name: Create GitHub Issue Comment - if: github.event_name == 'workflow_dispatch' - env: - GH_TOKEN: ${{ github.token }} - run: | - gh issue comment ${{ github.event.repository.updated_at }} --body-file /tmp/pr_dashboard.md || echo "Issue comment skipped" + echo "| READY | $READY |" >> /tmp/pr_dashboard.md + echo "| FAILING | $FAILED |" >> /tmp/pr_dashboard.md + echo "| PENDING | $PENDING |" >> /tmp/pr_dashboard.md - name: Post PR Comment if: github.event_name == 'pull_request' @@ -58,4 +61,4 @@ jobs: GH_TOKEN: ${{ github.token }} PR_NUMBER: ${{ github.event.pull_request.number }} run: | - gh pr comment $PR_NUMBER --body-file /tmp/pr_dashboard.md || echo "PR comment skipped" + gh pr comment "$PR_NUMBER" --body-file /tmp/pr_dashboard.md || echo "PR comment skipped" diff --git a/CITATION.cff b/CITATION.cff index 70f90dbe..262ff2f0 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -3,14 +3,19 @@ message: "If you use T27/GoldenFloat in research or software, please cite it as title: "GoldenFloat: φ-Optimal Floating-Point Formats for Ternary Computing (T27)" version: 0.1.0 date-released: 2026-04-07 -orcid: 0009-0008-429-6159-6159-6159 authors: - family-names: Vasilev given-names: Dmitrii + orcid: "https://orcid.org/0009-0008-4294-6159" affiliation: Trinity Computing license: MIT repository-code: https://github.com/gHashTag/t27 url: https://github.com/gHashTag/t27 +# Canonical Zenodo source of truth (community-level): +# https://zenodo.org/communities/trinity-s3ai/ +# This record (GoldenFloat v0.1.0, 10.5281/zenodo.19456875) is a +# legitimate Vasilev record but is NOT currently attached to the +# trinity-s3ai community. PASS-6 R5-honest audit 2026-05-12. abstract: > GoldenFloat (GF) is a family of seven narrow floating-point formats parameterized by φ ≈ 1.618. We prove that φ is diff --git a/README.md b/README.md index a8e148c7..c0878f43 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,8 @@ **Language:** [English](README.md) | [Русский](docs/README_RU.md) +> **Canonical Zenodo SOT:** [zenodo.org/communities/trinity-s3ai](https://zenodo.org/communities/trinity-s3ai/). The GoldenFloat badge above (19456875) is a legitimate Vasilev deposit but lives **outside** the curated S³AI v5.0 record set; see [docs/ZENODO.md](docs/ZENODO.md) for the canonical 12-record bundle and aliases. + The canonical source of truth for Trinity S3AI. `.t27` specs in → Zig, Verilog, C out. diff --git a/docs/NOW.md b/docs/NOW.md index 0fbcb0bb..0a7fddfb 100644 --- a/docs/NOW.md +++ b/docs/NOW.md @@ -5,6 +5,18 @@ --- +## R5-PASS-6 Honest Audit (Issue #596 — community trinity-s3ai SOT alignment) + +- Operator directive: `«один источник правды и все мои zenodo здесь https://zenodo.org/communities/trinity-s3ai/»`. +- Verified via Zenodo REST `/api/communities/trinity-s3ai/records?size=25` that the community contains EXACTLY 12 records (B001–B008 = 19227865/67/69/71/73/75/77/79; D004–D007 = 19020270/75/80/82; concept DOI B007 = 19227876). +- t27 changes: + - `README.md`: canonical SOT pointer next to GoldenFloat 19456875 badge with explicit note that GoldenFloat is legitimate Vasilev authorship but lives OUTSIDE the curated S³AI v5.0 record set. + - `CITATION.cff`: corrected mangled ORCID `0009-0008-429-6159-6159-6159` → `0009-0008-4294-6159`; SOT pointer added. + - `docs/ZENODO.md`: parent title corrected ("Defensive Pubs" → "S³AI Framework v5.0"); folklore Coq corpus figure "28 .v files / 218 stmts" replaced with verified "10 .v files / 48 stmts / 35 Qed / 0 Admitted"; canonical SOT pointer added. +- No Category C foreign-DOIs were present in t27 — pre-existing PASS-4/5 honest-annotation comments in `research/trinity-pellis-paper/G2_*` for `19271888` (Koide) and `19377394` (Latin-American employment) are preserved. +- Companion PASS-6 PRs: gHashTag/trinity#594, gHashTag/trinity-fpga#45, gHashTag/trios#755. +- Throne: [trios#264](https://github.com/gHashTag/trios/issues/264). + ## R5-PASS-4 Honest Audit (PR #594, Issue #595) - Retired the folkloric "84 theorems" claim across `research/` (actual corpus: 28 .v files, 218 statements, 162 Qed, 32 Admitted, 11 Abort — audit 2026-05-12) diff --git a/docs/ZENODO.md b/docs/ZENODO.md index 2121c2d9..dafa26a0 100644 --- a/docs/ZENODO.md +++ b/docs/ZENODO.md @@ -1,8 +1,11 @@ # Zenodo DOI Registry — Trinity / t27 -> **Audit 2026-05-12** — registry rewritten under R5-honest deep sweep PASS-4. -> All March 2026 DOIs (`19224xxx`) were marked SUPERSEDED on Zenodo and replaced -> by the May 2026 canonical set (`19227865`–`19227879`). Cite only the canonical +> **Single source of truth (community-level):** [`https://zenodo.org/communities/trinity-s3ai/`](https://zenodo.org/communities/trinity-s3ai/) — 12 records (8 v5.0 description stubs B001–B008 + 4 D-series D004–D007). Any DOI not in this community is **outside** the canonical Trinity S³AI surface. +> +> **Audit 2026-05-12 (PASS-6)** — registry re-verified under R5-honest deep +> sweep against `/api/communities/trinity-s3ai/records`. All March 2026 +> DOIs (`19224xxx`) were marked SUPERSEDED on Zenodo and replaced by the +> May 2026 canonical set (`19227865`–`19227879`). Cite only the canonical > set in new work. ## Honest framing @@ -10,21 +13,23 @@ These DOIs are **software description stubs** on Zenodo, NOT peer-reviewed papers. The mathematical anchor `φ² + φ⁻² = 3` is an algebraic identity from `φ = (1+√5)/2`. Its Coq witness lives in this very repository -([`gHashTag/t27/coq` + `proofs`](https://github.com/gHashTag/t27)) — **28 .v -files, 218 statements (122 Theorem + 96 Lemma), 162 Qed, 32 Admitted, 11 Abort, -audited 2026-05-12**. +([`gHashTag/t27/coq`](https://github.com/gHashTag/t27/tree/main/coq)) — +**10 .v files, 48 statements (6 Theorem + 42 Lemma), 35 Qed, 0 Admitted, +audited 2026-05-12** (per the trinity-queen-hive skill canonical count; +the broader `t27/proofs/` tree adds further work-in-progress lemmas +outside the canonical `coq/` directory and is not counted here). For "always-latest of B007" use **concept DOI** `10.5281/zenodo.19227876` (it resolves to the current B007 version regardless of revisions). -## Canonical collection (curated, 2026-05-12) +## Canonical collection (curated, 2026-05-12, community `trinity-s3ai`) -| DOI | Title | Type | -|-----|-------|------| -| [10.5281/zenodo.19227879](https://doi.org/10.5281/zenodo.19227879) | Trinity — Defensive Publications Collection (parent record) | Software description | -| [10.5281/zenodo.18950696](https://doi.org/10.5281/zenodo.18950696) | gHashTag/trinity v2.0.3 — FPGA Autoregressive Ternary LLM | Software release | +| DOI | Title | Type | In community | +|-----|-------|------|--------------| +| [10.5281/zenodo.19227879](https://doi.org/10.5281/zenodo.19227879) | Trinity S³AI Framework — Complete Research Collection v5.0 (parent record) | Software description | ✅ trinity-s3ai | +| [10.5281/zenodo.18950696](https://doi.org/10.5281/zenodo.18950696) | gHashTag/trinity v2.0.3 — FPGA Autoregressive Ternary LLM | Software release | ❌ outside (legitimate Vasilev record; not attached to community) | -## Individual bundles B001–B007 (canonical) +## Individual bundles B001–B007 (canonical, all in community `trinity-s3ai`) | DOI | Bundle | Description | |-----|--------|-------------|