docs: Pillar E paper — Evaluation section (clears [EXPAND])#84
Merged
Conversation
Fills the Evaluation and discussion stub in paper.adoc with: a per-pillar proof-size table (LOC / top decls / subst+rewrite / postulates); an honest reading of the common-upper-bound idiom (it removes subst BECAUSE the equations carry no comonadic coherence, not as a clever saving); explicit "where it does not extend" bounds (EI-2 negative, funext-relative mediator, thinness-only content); and threats to validity including the Gate-2 audit's single-recipe finding. Adds an [#ordinal-appendix] anchor for the remaining EXPAND cross-reference. Source data (verified against the modules at this commit): - Pillar A EchoFiberBridge.agda 56 LOC, 0 postulates, 0 subst/rewrite - Pillar B EchoPullback.agda 143 LOC; one subst in IsMediator.coherent shape (definitional, not a transport workaround) - Pillar B EchoGradedComonad.agda 159 LOC; 0 substs, coassoc proof is 17 lines of ≡-Reasoning at lines 135–158 - Pillar B EchoGraded.agda 169 LOC; 1 rewrite (in degrade-compose, by ≤g-prop) - Pillar C EchoSeparating.agda 139 LOC; 0 substs, refutation is two lines via checked true ≢ false - Pillar D EchoRelModel.agda 261 LOC; 1 rewrite Prose only. agda proofs/agda/All.agda and Smoke.agda still exit 0 under --safe --without-K, zero postulates introduced. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
hyperpolymath
added a commit
that referenced
this pull request
May 20, 2026
…landed (#89) Updates the `Current rung state (2026-05-20)` block to record Wave 3 of today's swarm and refresh the next-Claude plan. ## What this captures * 5 Wave-3 PRs (`#80` EchoSearch, `#81` provenance, `#82` absint, `#83` parser, `#85` EchoCost) and 2 parallel-session merges (`#84` Pillar E Evaluation, `#86` F1 gc-coassoc). * Axis 8 is now 4-of-4 (decidability + graded access + cost + search). * Next-Claude plan refreshed: ordinal-track unbudgeted WF is the named next bottleneck; EchoApprox examples 6/8 still open; EchoSearch sequential/product composition deferred. ## Two minor lessons memorialised * Per-lane Smoke `open import ... using ( ... )` blocks should be separate (with header comments), not shared paren-blocks — cuts swarm merge-conflict noise. * During swarm-merge sequences, re-fetch the branch before any force-push: parallel claude sessions may be concurrently rebasing the same PR (observed on `#82`). ## Invariants * Doc-only change; no Agda touched. * `--safe --without-K` invariant unchanged. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
11 tasks
hyperpolymath
added a commit
that referenced
this pull request
May 20, 2026
…nstances (#88) ## Summary Gate **F3** of the earn-back plan (`docs/echo-types/earn-back-plan.adoc §F3`) now passes. Two non-isomorphic-grade-monoid instances of an abstract graded-comonad interface, with no `⊑-prop`-equivalent field in the interface itself, are mechanised: * **`nat-instance`** at the **commutative** monoid `(ℕ, +, 0)` — packages the F1 (#86) iterated-residue construction. * **`list-instance`** at the **non-commutative** free monoid `(List Tag, ++, [])` over a two-element `Tag` with per-element residue layers `R smol A = A × Bool`, `R big A = A × ℕ`. All three graded-comonad laws proved. The non-isomorphism is constructively witnessed by `tag-list-non-commutative` (one direction: only a non-commutative monoid satisfies it). The two earn-back gates F1 and F3 — both landed today — close the comonad-side earn-back programme as specified. ## Three new modules ### `EchoGradedComonadInterface.agda` — abstract record `GradedComonadStructure` fields: * Grade monoid: `G`, `1G`, `_·G_`, the three monoid laws. * Graded carrier: `D : G → Set → Set`, `mapD`, functor laws. * Counit `ε : D 1G A → A` at the unit grade. * **Nested** comultiplication `δ : D (g ·G h) A → D g (D h A)`. * The three graded-comonad laws stated against `subst` along the monoid's propositional identities. **No `⊑-prop`-equivalent field** — F3 guardrail honoured by construction. Inspect the field list at the top of the module. ### `EchoGradedComonadInstance1.agda` — F1 packaged `nat-instance : GradedComonadStructure` reuses `EchoGradedComonadF1.D / mapD / ε / δ / gc-counit-l / gc-counit-r / gc-coassoc` verbatim; stdlib's `+-identityˡ / +-identityʳ / +-assoc` supply the monoid laws. No adapter lemma needed — F1's signatures already use `subst` along the corresponding ℕ-equation proofs. ### `EchoGradedComonadInstance2.agda` — free-monoid instance `list-instance : GradedComonadStructure` at `(List Tag, ++, [])`. Construction parallels F1: * `D [] A = A`; `D (x ∷ xs) A = R x (D xs A)`. * `mapD-id`, `mapD-∘` by structural induction (per Tag). * `D-++` proves the type equality `D (xs ++ ys) A ≡ D xs (D ys A)` inductively; `δ = coe (D-++ xs ys A)`. * `gc-counit-r`: definitional (`++-identityˡ _ = refl` in stdlib). * `gc-counit-l` / `gc-coassoc`: structural induction on the grade list, cons step splitting on the head `Tag`. Same `δ`-naturality + `subst`-over-residue factoring as F1's `gc-coassoc`. * `D-nontrivial`: separating witness that `D (smol ∷ big ∷ []) Bool` is not collapsing to `⊤` / a prop. ## Build invariant * `agda proofs/agda/All.agda` exit 0 under `--safe --without-K` * `agda proofs/agda/Smoke.agda` exit 0 under `--safe --without-K` * **zero postulates, no funext, no escape pragmas** anywhere in the three new modules * both instances wired into `All.agda`; record + both instances + non-isomorphism witness + non-triviality witness pinned in `Smoke.agda` ## Scope (please re-read with care) F3 earns back the two-models claim **for the graded-comonad witness introduced by F1** — there are two genuinely non-isomorphic grade-monoid models of the `GradedComonadStructure` interface, the laws hold at each, the interface itself is `⊑-prop`-free. That is exactly what the gate asked for. F3 does **NOT** earn back the older `EchoRelModel`/`GCLaws` two-models claim retracted at R-2026-05-18 finding 3. That retraction concerned `set-model` and `rel-model` (both at the same grade poset, with `⊑-prop` baked in as a field, `rel-model = set-model × ⊤`, agreement by `refl`). The `GradedLossModel` interface there still has `⊑-prop`; that situation is unchanged. F3 here is about a **different** abstract interface and a **different** pair of models. The two earn-backs are not interconvertible — do not cite one as evidence for the other. `paper.adoc`, `types-abstract.adoc`, and `conservativity.adoc` remain untouched. Their bodies are about `EchoGraded`'s thin-poset structure, which neither F1 nor F3 changes. The combined F1+F3 result strengthens the case for a bounded "new contribution" paragraph, but the title / thesis / reindexing-modality framing should not move on these gates alone — owner-gated, as for F1. ## Doc updates (gated, scoped) * `docs/echo-types/earn-back-plan.adoc` — ledger row A3 (Unstarted → PASSED), Sequencing entry added, Status entry with the strict scope qualifier above. * `docs/retractions.adoc` — follow-up **F-2026-05-20b** appended (append-only revision policy preserved); the scope qualifier pinned in prose. ## Dependencies * Builds on **#86** (F1 PASSED). Branch based on `f1-coassoc-earn-back`; will rebase cleanly onto `main` once #86 lands. * Disjoint from **#82** (AbsInt) and **#84** (paper Evaluation — already merged). ## Test plan * [x] Interface module typechecks * [x] Instance 1 (nat) typechecks * [x] Instance 2 (list) typechecks — all three comonad laws * [x] Full `All.agda` build green * [x] `Smoke.agda` build green * [x] No postulates, no escape pragmas, no funext in any new module * [x] No `⊑-prop`-equivalent field in the interface record * [x] Non-commutativity witness for the second grade monoid * [x] Non-triviality witness for the second carrier * [ ] (owner) inspect field list of `GradedComonadStructure` — flag anything `⊑-prop`-shaped if present * [ ] (owner) ratify the F-2026-05-20b scope language in `retractions.adoc` 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
🔍 Hypatia Security ScanFindings: 10 issues detected
View findings[
{
"reason": "No test directory or test files found",
"type": "no_tests",
"file": "/home/runner/work/echo-types/echo-types",
"action": "flag",
"rule_module": "honest_completion",
"severity": "high",
"deduction": 20
},
{
"reason": "Issue in quality.yml",
"type": "missing_workflow",
"file": "quality.yml",
"action": "create",
"rule_module": "workflow_audit",
"severity": "high"
},
{
"reason": "Issue in security-policy.yml",
"type": "missing_workflow",
"file": "security-policy.yml",
"action": "create",
"rule_module": "workflow_audit",
"severity": "medium"
},
{
"reason": "Issue in secret-scanner.yml",
"type": "missing_workflow",
"file": "secret-scanner.yml",
"action": "create",
"rule_module": "workflow_audit",
"severity": "high"
},
{
"reason": "Action actions/cache@v4 needs attention",
"type": "unpinned_action",
"file": "agda.yml",
"action": "pin_sha",
"rule_module": "workflow_audit",
"severity": "medium"
},
{
"reason": "Action hyperpolymath/standards/.github/workflows/governance-reusable.yml@main needs attention",
"type": "unpinned_action",
"file": "governance.yml",
"action": "pin_sha",
"rule_module": "workflow_audit",
"severity": "high"
},
{
"reason": "No dependabot.yml or renovate.json found in echo-types",
"type": "DependencyUpdate",
"file": "/home/runner/work/echo-types/echo-types",
"action": "auto_fix",
"rule_module": "scorecard",
"severity": "high",
"remediation": "Add .github/dependabot.yml or renovate.json configuration.",
"scorecard_check": "Dependency-Update-Tool"
},
{
"reason": "Nominal-only SAST in echo-types: codeql.yml language matrix contains no language present in the repo and lacks `actions`, so CodeQL records zero results on every commit. Remediation: set the CodeQL matrix to `language: actions`.",
"type": "StaticAnalysis",
"file": "/home/runner/work/echo-types/echo-types",
"action": "auto_fix",
"rule_module": "scorecard",
"severity": "medium",
"remediation": "Add CodeQL or equivalent SAST workflow.",
"scorecard_check": "SAST"
},
{
"reason": "1 workflow(s) with tag-pinned (not SHA-pinned) actions in echo-types",
"type": "DependencyPinning",
"file": "/home/runner/work/echo-types/echo-types",
"action": "auto_fix",
"rule_module": "scorecard",
"severity": "medium",
"remediation": "Pin GitHub Actions and Docker base images by SHA hash.",
"scorecard_check": "Pinned-Dependencies"
},
{
"reason": "Repository has 1 non-main remote branch(es). Policy: single main branch only.",
"type": "GS007",
"file": ".",
"action": "delete_remote_branches",
"rule_module": "git_state",
"severity": "medium"
}
]Powered by Hypatia Neurosymbolic CI/CD Intelligence |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Fills the Evaluation and discussion
[EXPAND]stub indocs/echo-types/paper.adocwith the content the NOTE explicitlyasked for:
postulates) sourced from the modules at this commit.
substbecause the equations carry no comonadic coherence (themodality is thin), not as a clever encoding saving. Reading the
short proofs as a thesis-strengthening trick was retracted on
2026-05-18 (R-2026-05-18); this section keeps the honest framing.
extend): the EI-2 negative result; the funext-relative mediator
property; the thinness-only content. Stated as bounds, not
re-spun as features.
"single recipe" finding (
docs/gate-2-handoff.adocObservationG), consumer-evidence sample-size, the conservativity-is-evidence
caveat, and the gate-discipline meta-caveat.
Adds
[#ordinal-appendix]anchor + tightens the status banner tonote that the ordinal-appendix
[EXPAND]is now the only one leftand is gated on Bachmann–Howard.
Refs: paper.adoc Pillar E
[EXPAND]clear-out (CLAUDE.md priorityitem 3 — "Evaluation: proof-size/cost table; quantify
common-upper-bound idiom vs naive
subst").Test plan
agda proofs/agda/All.agdaexit 0 under--safe --without-Kagda proofs/agda/Smoke.agdaexit 0 under--safe --without-K<<ordinal-appendix>>resolves; tablecolumns match
modules — table is a fingerprint, not a comparison-with-others
claim
Non-overlap with parallel sessions
Touches only
docs/echo-types/paper.adoc. Stays well clear of:_<ᵇ⁻_/ rank-mono slices inproofs/agda/Ordinal/**(another session's Slices 1–5 territory).[EXPAND]at line ~1200 (gated onBachmann–Howard, firewalled per
roadmap.md).docs/echo-types/types-abstract.adoc(submission-ready, handsoff).
🤖 Generated with Claude Code