Skip to content

theory: EchoCost — Axis 8 cost-indexed refinement (thin slice)#85

Merged
hyperpolymath merged 1 commit into
mainfrom
theory/echo-cost-thin-slice
May 20, 2026
Merged

theory: EchoCost — Axis 8 cost-indexed refinement (thin slice)#85
hyperpolymath merged 1 commit into
mainfrom
theory/echo-cost-thin-slice

Conversation

@hyperpolymath
Copy link
Copy Markdown
Owner

Adds proofs/agda/EchoCost.agda (and EchoCostInstance.agda for
smoke pins), the cost-indexed refinement of Echo named in
docs/echo-types/taxonomy.md §Axis 8 (refinement 1: full
cost-tracking via an explicit cost algebra). Sits orthogonal to the
already-landed qualitative Axis-8 artefacts (EchoDecidable,
EchoFiberCount, EchoAccess); names the resource-budget dimension
of the axis.

What lands

  • CostAlgebra — ordered commutative-monoid-flavoured cost carrier
    (Cost, zero, _+_, _≤_, ≤-refl, ≤-trans, +-identityˡ,
    +-mono-≤). Right-identity / associativity / commutativity
    deliberately omitted — the headlines close without them; layering
    pattern matches BalancedTolerance in EchoApprox.agda.

  • EchoC cost c f y := Σ A (λ x → f x ≡ y × cost x ≤ c)

  • Headlines:

    • echo-cost-intro / -≤ — zero-budget intro
    • echo-cost-relax — monotone in budget
    • echo-cost-forget — Axis-8 → Axis-1 projection (the shadow obligation of every Axis-8 refinement)
    • echo-cost-compose — two-source additive composition (combiner + image-equation + cost-receipt triple, no funext)
    • echo-cost-compose-mono — single-source specialisation
    • echo-cost-forget-compose-mono-A — compose-then-forget agrees with the bare composite on the A-component
    • echo-cost-relax-zero(zero + c) ≡ c (the budget lever)
  • Wired into All.agda (alphabetical, between EchoApproxInstance and EchoIndexed) and Smoke.agda (per-lemma using clause on EchoCostInstance, mirroring the EchoApproxInstance pattern).

Design judgement calls

  • CostAlgebra field minimality. Took only the laws needed to
    close the four headlines (+-identityˡ for the budget round-trip,
    +-mono-≤ for compose). Right-identity / commutativity / associativity
    belong on a separate BalancedCostAlgebra record if a downstream
    proof needs them — same layering as BalancedTolerance.

  • Composition shape (echo-cost-compose). Took the more general
    two-source first-order shape with an explicit combine : A → B → A'',
    caller-supplied image-eq, and caller-supplied cost-bound. Strictly
    more general than restricting to an endomorphic outer leg
    (the EchoApprox.echo-approx-compose shape, g : B → B); the
    single-source corner falls out as echo-cost-compose-mono. No
    funext used; image equation is supplied, not derived from a
    pointwise homotopy.

  • Trivial-on-⊤ instance via EchoCostInstance.agda. Closes the
    CLAUDE.md "Working rules" invariant for parameterised modules
    (EchoCost.Cost is parameterised over K : CostAlgebra ℓ).
    Exact recipe of EchoApproxInstance.agda post-PR-hygiene: per-lemma Smoke pins for EchoApprox via concrete instance module #71.

Invariants

  • --safe --without-K on every new module
  • No postulates, no funext, no escape pragmas, no believe_me
  • Clean-worktree Agda build green: EchoCost.agda + EchoCostInstance.agda + All.agda + Smoke.agda all exit 0 (verified after find . -name '*.agdai' -delete)

🤖 Generated with Claude Code

Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com

Adds `proofs/agda/EchoCost.agda` — the cost-indexed refinement of
`Echo` named in `taxonomy.md` §Axis 8 (refinement 1: cost-tracking
via an explicit cost algebra). Sits orthogonal to the already-landed
qualitative Axis-8 artefacts (`EchoDecidable`, `EchoFiberCount`,
`EchoAccess`); names the resource-budget dimension.

  EchoC cost c f y := Σ A (λ x → f x ≡ y × cost x ≤ c)

over an ordered commutative-monoid `CostAlgebra` (zero, +, ≤,
+-identityˡ, ≤-refl, ≤-trans, +-mono-≤). Right-identity /
associativity / commutativity deliberately omitted — the four
headlines close without them; layering pattern matches
`BalancedTolerance` in `EchoApprox`.

Headlines:
  * echo-cost-intro / -≤            : zero-budget intro
  * echo-cost-relax                 : monotone in budget
  * echo-cost-forget                : Axis-8 → Axis-1 projection
  * echo-cost-compose               : two-source additive composition
  * echo-cost-compose-mono          : single-source specialisation
  * echo-cost-forget-compose-mono-A : compose-then-forget A-shadow
  * echo-cost-relax-zero            : (zero + c) ≡ c (the budget lever)

Composition shape is first-order — no funext. The combiner +
image-equation + cost-receipt triple lets two echoes over distinct
domains compose without restricting to an endomorphic outer leg.

Per CLAUDE.md "Working rules" invariant (every headline pinned in
`Smoke.agda` via `using`), the parameterised `EchoCost.Cost`
headlines are exposed top-level via `EchoCostInstance.agda`
(trivial-on-⊤ instance) — same hygiene recipe as
`EchoApproxInstance.agda`.

Build invariant held: `EchoCost.agda` + `EchoCostInstance.agda` +
`All.agda` + `Smoke.agda` all exit 0 from a clean worktree under
`--safe --without-K`. No postulates, no funext, no escape pragmas,
no believe_me.

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 e1e904c into main May 20, 2026
4 of 10 checks passed
@hyperpolymath hyperpolymath deleted the theory/echo-cost-thin-slice 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
Resolves conflicts in 4 files (CLAUDE.md, docs/echo-types/roadmap.md,
proofs/agda/All.agda, proofs/agda/Smoke.agda) by integrating main's
Wave-3 axis-8 closure work with this branch's ω-power rank-mono
unblock.

* `CLAUDE.md` — keep both session-arc sections.  Main's "2026-05-20
  daytime (theory closure waves 1+2+3)" stays; this branch's
  "2026-05-20 evening — ω-power rank-mono unblock (read this first)"
  is the new primary handoff.
* `docs/echo-types/roadmap.md` — take main's "Axis 2 + Axis 8 four
  refinements landed" entries (canonical).
* `proofs/agda/All.agda` — drop my stale `EchoExampleSignAnalysis`,
  `EchoExampleTruncation`, `EchoSearchExample` imports.  Those
  files depended on the early thin-slice `EchoCost`/`EchoSearch`
  interfaces; main's PRs #80/#85 replaced those with the abstract-
  algebra `CostAlgebra` shape, breaking the dependents.  Stale
  files left on disk for later triage (delete-or-update is a
  separate slice).
* `proofs/agda/Smoke.agda` — take main's `EchoSearch` /
  `EchoSearchInstance` / `EchoAccess` headline pins (canonical
  shape with `SearchStrategy`, `EchoS`, `Access` 5-grade enum, etc.).
* `flake.nix`, `proofs/agda/EchoAccess.agda`, `EchoCost.agda`,
  `EchoSearch.agda` — take main's versions (PRs #80/#85 canonical).

Build invariant restored: `agda proofs/agda/All.agda` and
`agda proofs/agda/Smoke.agda` exit 0 under `--safe --without-K`.
No postulates, no escape pragmas.  All Ordinal/Buchholz path-1
work from this session (Slices 1-5 + Items 1-3) intact.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
hyperpolymath added a commit that referenced this pull request May 20, 2026
…luster landed (#92)

## Summary

Three small accuracy passes through `docs/echo-types/` after the
earn-back programme, the §"Theory work — no proof assistant needed"
section, and the canonical examples cluster (5/9/10) all closed in
this session. Pure prose; no Agda changes.

### 1. `roadmap.md` §"Theory work" — two stale items refreshed

* **Axis 8** line said the *decidability-respecting* candidate had
  shipped but listed the other three as still candidate refinements.
  All four have now shipped: `EchoDecidable`, `EchoCost` (#85),
  `EchoAccess` (#68 / #75), `EchoSearch` (#80). Updated to credit all
  four.
* **Negative / co-echoes** line was `[unblocked]`; now `[landed]` —
  `AntiEcho` (#69), tropical decomposition concrete + generic (#72 +
  #91), `antiecho-partition-dec` (#90). Names the `coecho.md` §5
  obligation-5 / obligation-6 closures explicitly.

After these edits, every item in §"Theory work — no proof assistant
needed" is either `[landed]` or `[ruled out]`/`[refreshed]` — the
section is genuinely closed.

### 2. `roadmap.md` §"Example work" — three items landed

* ex. 5 (`EchoExampleProvenance`, #81) → `[landed]`
* ex. 9 (`EchoExampleParser`, #83) → `[landed]`
* ex. 10 (`EchoExampleAbsInt`, #82) → `[landed]`

Only ex. 6 (approximate-echo numeric example) remains `[unblocked]`.

### 3. `earn-back-plan.adoc` — stale `roadmap-gates.adoc` claim
corrected

* Header note used to say "the gate discipline was historically
  attributed to a `roadmap-gates.adoc`; that file does not exist
  in-tree". The file **does** exist (created 2026-05-18; see its
  preamble). Header rewritten to list `roadmap-gates.adoc` alongside
  `retractions.adoc` / this plan / `next-questions.adoc` as the four
  canonical loci.
* Ledger row D (the "doesn't exist" entry) marked **CLOSED 2026-05-20**
  with the cite reflecting current reality.

## Test plan

* [x] Pure docs / `.adoc` / `.md` edits — no Agda touched
* [x] `agda proofs/agda/All.agda` exit 0 (confirms docs match code)
* [x] `agda proofs/agda/Smoke.agda` exit 0
* [x] No retracted-claim language moved; no earned-back claim
      overclaimed; `paper.adoc` / `types-abstract.adoc` /
      `conservativity.adoc` untouched

## Scope

Disjoint from all currently-open PRs:
* #88 (F3) — touches Agda + `retractions.adoc` (different sections)
  + `earn-back-plan.adoc` Status (different section from header /
  ledger-D)
* #90 (partition-dec) — touches Agda only
* #91 (generic-codomain) — touches Agda + preamble comments

No retracted claim is moved. No earned-back claim is overclaimed.
`paper.adoc` / `types-abstract.adoc` / `conservativity.adoc` are
intentionally untouched (owner-gated, per the posture set by #86 /
#88).

🤖 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