Skip to content

feat(weave): construct eight-to-two positional degeneration candidate - #73

Merged
erinepshovel-code merged 5 commits into
mainfrom
weave-eight-to-two-positional
Oct 5, 2026
Merged

erinepshovel-code merged 5 commits into
mainfrom
weave-eight-to-two-positional

Conversation

@erinepshovel-code

Copy link
Copy Markdown
Contributor

Implements the current Weave construction without inventing additional key-selection laws.

Construction

  • full/private key set: exactly eight circles (one whole + seven derived)
  • exact 720-degree return represented with rational turns
  • each circle's relation to space is key-set data
  • public degeneration: exactly two circles at a time
  • raw-byte candidate: 8 source bits -> 16 positional witness bits

Evidence

Adds six focused tests for eight-member/full vs two-member/public boundaries, exact 720 return, variable per-key-set space relations, 2x expansion and roundtrip, malformed witness refusal, and a preserved attack witness.

Falsification

The first independent-bit two-circle projection is publicly brute-forceable: the public holder can compare the two public forward images for 0 and 1. This baseline is retained as a failing cryptographic idea, not promoted to Weave security.

The geometry survives; the next construction must use the message-scoped UCHC origin/axis relational state so the six omitted circles are causally required for inversion.

No existing transport behavior, UCNS authority, or UCHC authority is changed.

hmmm: the coupled UCHC eight-circle relation remains the live construction boundary.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 5, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-05T07:56:59.347738Z aa48511 PR opened
ℹ️ 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" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@erinepshovel-code
erinepshovel-code merged commit a3836f5 into main Oct 5, 2026
7 checks passed

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: aa48511814

ℹ️ 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".

Comment on lines +80 to +82
identities = tuple(circle.identity for circle in self.circles)
if len(set(identities)) != 8:
raise ValueError("circle identities must be unique")

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Reject unrelated circles as a derived key set

When callers provide eight arbitrary Circle objects—as the new test fixture does—this constructor accepts them solely because their labels differ, even though nothing identifies one as the whole circle or proves that the other seven derive from it. Consequently, the implementation and receipt report an eight-circle construction while testing only tuple cardinality; because the derivation law is unresolved, this boundary should remain hmmm or require explicit derivation provenance rather than accepting unrelated circles.

AGENTS.md reference: AGENTS.md:L22-L26

Useful? React with 👍 / 👎.

Comment on lines +103 to +106
if type(self.circles) is not tuple or len(self.circles) != 2:
raise ValueError("public degeneration exposes exactly two circles")
if any(type(circle) is not Circle for circle in self.circles):
raise TypeError("public circles must be Circle instances")

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Require two distinct circles in PublicPair

When PublicPair is instantiated directly, PublicPair((0, 1), (circle, circle)) passes validation and is accepted by encode_byte, so a single circle can masquerade as the promised two-circle public degeneration. Validate distinct circle identities (or prevent direct construction) in addition to distinct indices so the public-pair invariant holds for every accepted encoder input.

Useful? React with 👍 / 👎.

Comment on lines +59 to +62
def position(self, bit: int, origin: Fraction) -> Fraction:
"""Exact key-set position relative to this circle's space attachment."""
_bit(bit)
return _phase((self.one if bit else self.zero) - self.space + _phase(origin))

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Leave the circle-space relation unresolved

When the intended UCHC circle/space relation is anything other than an additive scalar offset, this formula silently replaces it with bit_position - space + origin (mod 2), even though EIGHT_CIRCLE.md says no rule for those relations has been supplied and the existing Weave specification leaves native origin/axis binding open. The resulting round-trip and attack evidence therefore measures an invented geometry; this operation should remain hmmm or be supplied explicitly by a source-backed construction instance.

AGENTS.md reference: AGENTS.md:L22-L26

Useful? React with 👍 / 👎.

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