Skip to content

docs: Pillar E paper — Evaluation section (clears [EXPAND])#84

Merged
hyperpolymath merged 2 commits into
mainfrom
paper-evaluation-section
May 20, 2026
Merged

docs: Pillar E paper — Evaluation section (clears [EXPAND])#84
hyperpolymath merged 2 commits into
mainfrom
paper-evaluation-section

Conversation

@hyperpolymath
Copy link
Copy Markdown
Owner

Summary

Fills the Evaluation and discussion [EXPAND] stub in
docs/echo-types/paper.adoc with the content the NOTE explicitly
asked for:

  • Per-pillar proof-size table (LOC / top decls / subst+rewrite /
    postulates) sourced from the modules at this commit.
  • An honest reading of the common-upper-bound idiom — it removes
    subst because the equations carry no comonadic coherence (the
    modality 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.
  • Three honest bounds (where the construction does not
    extend): the EI-2 negative result; the funext-relative mediator
    property; the thinness-only content. Stated as bounds, not
    re-spun as features.
  • Threats to validity, including the Gate-2 audit's own
    "single recipe" finding (docs/gate-2-handoff.adoc Observation
    G), consumer-evidence sample-size, the conservativity-is-evidence
    caveat, and the gate-discipline meta-caveat.

Adds [#ordinal-appendix] anchor + tightens the status banner to
note that the ordinal-appendix [EXPAND] is now the only one left
and is gated on Bachmann–Howard.

Refs: paper.adoc Pillar E [EXPAND] clear-out (CLAUDE.md priority
item 3 — "Evaluation: proof-size/cost table; quantify
common-upper-bound idiom vs naive subst").

Test plan

  • agda proofs/agda/All.agda exit 0 under --safe --without-K
  • agda proofs/agda/Smoke.agda exit 0 under --safe --without-K
  • No postulates introduced (prose-only change)
  • AsciiDoc renders: anchor <<ordinal-appendix>> resolves; table
    columns match
  • (owner) review the proof-size numbers against the actual
    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:

  • The Brouwer-arithmetic / _<ᵇ⁻_ / rank-mono slices in
    proofs/agda/Ordinal/** (another session's Slices 1–5 territory).
  • The ordinal-appendix [EXPAND] at line ~1200 (gated on
    Bachmann–Howard, firewalled per roadmap.md).
  • docs/echo-types/types-abstract.adoc (submission-ready, hands
    off).

🤖 Generated with Claude Code

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 hyperpolymath marked this pull request as ready for review May 20, 2026 17:28
@hyperpolymath hyperpolymath merged commit d0f21fe into main May 20, 2026
2 of 10 checks passed
@hyperpolymath hyperpolymath deleted the paper-evaluation-section branch May 20, 2026 17:29
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>
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>
@github-actions
Copy link
Copy Markdown

🔍 Hypatia Security Scan

Findings: 10 issues detected

Severity Count
🔴 Critical 0
🟠 High 5
🟡 Medium 5
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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant